UNPKG

persiandate-picker

Version:
149 lines (129 loc) 3.46 kB
'use strict'; /** * @desc Instantiate in {@link ClassDatepicker} * @class * @type {{cssClass: {datpickerHeader: string, btnNext: string, btnSwitch: string, btnPrev: string}, relation: string, switchRelation: switchRelation, updateSwitchBtn: updateSwitchBtn, _next: _next, _prev: _prev, _switch: _switch, _render: _render, _attachEvents: _attachEvents, init: init}} */ var ClassNavigator = { /** * @desc enabled * @type {Function} */ enabled: true, /** * @desc text */ text: { btnNextText: "<", btnPrevText: ">" }, /** * @desc cssClass */ cssClass: { datpickerHeader: "datepicker-header", btnNext: "btn-next", btnSwitch: "btn-switch", btnPrev: "btn-prev" }, /** * @desc Defnine wich picker related to navigator * @desc relation */ relation: "day", /** * @desc switchRelation * @param string * @returns {ClassNavigator} */ switchRelation: function (string) { this.relation = string; this.onSwitch(string); return this; }, /** * @desc updateSwitchBtn * @param val * @returns {ClassNavigator} */ updateSwitchBtn: function (val) { $(this.element).children('.' + this.cssClass.btnSwitch).text(val); return this; }, /** * @desc _next * @returns {ClassNavigator} * @private */ _next: function () { this.datepicker[this.relation + 'Picker'].next(); this.onNext(this); return this; }, /** * @desc _prev * @returns {ClassNavigator} * @private */ _prev: function () { this.datepicker[this.relation + 'Picker'].prev(); this.onPrev(this); return this; }, /** * @desc _switch * @returns {ClassNavigator} * @private */ _switch: function () { this.datepicker.changeView(this.relation, 'prev'); return this; }, /** * @desc _render * @private */ _render: function () { var self = this; self.viewData = { css: self.cssClass, btnNextText: self.text.btnNextText, btnPrevText: self.text.btnPrevText }; self.element = $.tmplMustache(TEMPLATE.navigator, self.viewData).appendTo(self.$container); }, /** * @desc _attachEvents * @private */ _attachEvents: function () { var self = this; self.element.children("." + self.cssClass.btnPrev).click(function () { self._prev(); return false; }); self.element.children("." + self.cssClass.btnNext).click(function () { self._next(); return false; }); self.element.children("." + self.cssClass.btnSwitch).click(function () { self._switch(); return false; }); }, /** * @desc init * @returns {ClassNavigator} */ init: function () { var self = this; self._render(); self._attachEvents(); return this; } }; var Navigator = function (options, container) { return inherit(this, [ClassSprite, ClassNavigator, options, { $container: container }]); };