/*global define*/ define( [ 'jquery', 'knockout', './bindingHandler', './utils', 'jquery-ui/tabs' ], function ($, ko, BindingHandler, utils) { 'use strict'; var postInitHandler18, postInitHandler, Tabs; postInitHandler18 = function (element, valueAccessor) { /// Keeps the active binding property in sync with the tabs' state. /// /// /// var value = valueAccessor(); if (ko.isWriteableObservable(value.selected)) { /*jslint unparam:true*/ this.on(element, 'show', function (ev, ui) { if ($(element)[0] === ev.target) { // Only activate if this is the right tab widget. value.selected(ui.index); } }); /*jslint unparam:false*/ } }; postInitHandler = function (element, valueAccessor) { /// Keeps the active binding property in sync with the tabs' state. /// /// /// var value = valueAccessor(); if (ko.isWriteableObservable(value.active)) { /*jslint unparam:true*/ this.on(element, 'activate', function (ev, ui) { if ($(element)[0] === ev.target) { // Only activate if this is the right tab widget. value.active(ui.newTab.index()); } }); /*jslint unparam:false*/ } }; Tabs = function () { /// Constructor. BindingHandler.call(this, 'tabs'); this.version = utils.uiVersion; if (this.version.major === 1 && this.version.minor === 8) { this.options = ['ajaxOptions', 'cache', 'collapsible', 'cookie', 'disabled', 'event', 'fx', 'idPrefix', 'panelTemplate', 'selected', 'spinner', 'tabTemplate']; this.events = ['add', 'create', 'disable', 'enable', 'load', 'remove', 'select', 'show']; this.hasRefresh = false; } else { this.options = ['active', 'collapsible', 'disabled', 'event', 'heightStyle', 'hide', 'show']; this.events = ['activate', 'beforeActivate', 'beforeLoad', 'create', 'load']; this.hasRefresh = true; } }; Tabs.prototype = utils.createObject(BindingHandler.prototype); Tabs.prototype.constructor = Tabs; Tabs.prototype.init = function (element, valueAccessor) { /// Keeps the active binding property in sync with the tabs' state. /// /// /// var result = BindingHandler.prototype.init.apply(this, arguments); if (this.version.major === 1 && this.version.minor === 8) { postInitHandler18.call(this, element, valueAccessor); } else { postInitHandler.call(this, element, valueAccessor); } return result; }; utils.register(Tabs); return Tabs; } );