![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-acomp/js/MKNavigator.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ACore = _interopRequireWildcard(require("../ACore")); require("../css/mknavigator.css"); var _BoardTable = _interopRequireDefault(require("./BoardTable")); var _MKNavigatorItem = _interopRequireDefault(require("./MKNavigatorItem")); var _utils = require("./utils"); /*** * @typedef MKNavigatorItemData * @property {string} text * @property {string|number} value * @property {boolean|number=} checked */ /*** * @extends AElement * @constructor */ function MKNavigator() { this._items = []; this._value = 0; this._hiddenValues = []; this.$itemByValue = {}; this.$header = (0, _ACore.$)('.mk-nav-header', this); this.$body = (0, _ACore.$)('.mk-nav-body', this).on('orderchange', this.eventHandler.bodyOrderChange).on('dragitemstart', this.eventHandler.dragItemStart); this.$footer = (0, _ACore.$)('.mk-nav-footer', this); this.on('press', (event, sender) => { this.emit('clickitem', event, sender); }); /*** * @type {MKNavigatorItemData[]} * @name item * @memberOf MKNavigator# */ /*** * @type {number[]} * @name order * @memberOf MKNavigator# */ } MKNavigator.tag = 'MKNavigator'.toLowerCase(); MKNavigator.render = function () { return (0, _ACore._)({ class: 'mk-nav', extendEvent: ['orderchange', 'checkedchange', 'press', 'clickitem'], child: [{ class: 'mk-nav-header' }, { tag: _BoardTable.default.tag, class: 'mk-nav-body' }, { class: 'mk-nav-footer' }] }); }; MKNavigator.prototype.updateValue = function () { var value = this._value; for (var iValue in this.$itemByValue) { if (iValue + '' !== value + '') { this.$itemByValue[iValue].removeClass('mk-current'); } } var order = this.order; if (this.$itemByValue[value]) { this.$itemByValue[value].addClass('mk-current'); } else if (order.length > 0) { this.$itemByValue[order[0]].addClass('mk-current'); } var idx = order.filter(value => !this.$itemByValue[value].hasClass('as-hidden')).indexOf(value); if (idx >= 0) { this.addStyle('--mk-nav-line-top', `calc(${2 * idx}em + ${12 * idx}px)`); } else { this.removeStyle('--mk-nav-line-top'); } }; MKNavigator.prototype.setTextOfItem = function (value, text) { var itemElt = this.$itemByValue[value]; if (!itemElt) return; itemElt.data.text = text; itemElt.updateText(); }; MKNavigator.prototype.mkItem = function (data) { var self = this; return (0, _ACore._)({ tag: _MKNavigatorItem.default.tag, attr: { "data-value": data && data.value }, props: { data: data }, on: { checkedchange: function (event) { self.emit('checkedchange', { type: 'checkedchange', target: this, originalEvent: event.originalEvent, itemData: data, checked: data.checked }, self); }, press: function (event) { self.value = data.value; self.emit('press', { type: 'press', itemElt: this, itemData: data, value: data.value, target: this, originalEvent: event.originalEvent }, self); } } }); }; MKNavigator.prototype._updateHiddenValues = function () { var hiddenDict = this._hiddenValues.reduce((ac, x) => { ac[x] = true; return ac; }, {}); Object.keys(this.$itemByValue).forEach(value => { if (hiddenDict[value]) { this.$itemByValue[value].addClass('as-hidden'); } else { this.$itemByValue[value].removeClass('as-hidden'); } }); }; MKNavigator.property = {}; MKNavigator.property.items = { /*** * @this MKNavigator * @param items */ set: function (items) { items = items || []; this._items = items; this.$itemByValue = {}; var i = 0; var item; var itemElt; this.$header.clearChild(); this.$body.clearChild(); this.$footer.clearChild(); var draggable = false; var maxTextWidth = items.reduce((ac, it) => { var tw = (0, _utils.measureText)(it.text || '').width; return Math.max(ac, tw); }, 0); this.addStyle('--max-text-width', Math.ceil(maxTextWidth) + 'px'); while (i < items.length) { if (items[i].draggable) break; item = items[i]; itemElt = this.mkItem(item); this.$itemByValue[item.value] = itemElt; this.$header.addChild(itemElt); ++i; } while (i < items.length) { if (!items[i].draggable) break; draggable = true; item = items[i]; itemElt = this.mkItem(item); this.$itemByValue[item.value] = itemElt; this.$body.addChild(itemElt); ++i; } while (i < items.length) { item = items[i]; itemElt = this.mkItem(item); this.$itemByValue[item.value] = itemElt; this.$footer.addChild(itemElt); ++i; } if (draggable) { this.addClass('mk-has-draggable'); } else { this.removeClass('mk-has-draggable'); } this._updateHiddenValues(); }, get: function () { return this._items; } }; MKNavigator.property.order = { get: function () { return (0, _ACore.$$)(_MKNavigatorItem.default.tag, this).map(function (e) { return e.data.value; }); } }; MKNavigator.property.value = { set: function (value) { this._value = value; this.updateValue(); }, get: function () { if (this.$itemByValue[this._value]) return this._value; if (this._items.length > 0) return this._items[0]; return this._value; } }; MKNavigator.property.hiddenValues = { set: function (values) { values = values || []; if (!(values instanceof Array)) values = []; this._hiddenValues = values; this._updateHiddenValues(); this.updateValue(); }, get: function () { return this._hiddenValues; } }; /*** * @memberOf MKNavigator# * @type {{}} */ MKNavigator.eventHandler = {}; MKNavigator.eventHandler.bodyOrderChange = function (event) { this.updateValue(); this._items.splice(0, this._items.length); (0, _ACore.$$)(_MKNavigatorItem.default.tag, this).reduce(function (ac, cr) { ac.push(cr.data); return ac; }, this._items); this.emit('orderchange', { type: 'orderchange', target: this }, this); }; /*** * @memberOf MKNavigator# * @type {{}} */ MKNavigator.eventHandler.dragItemStart = function (event) { var bound = this.getBoundingClientRect(); this.addStyle('--mk-navigator-bound-left', bound.left + 'px'); }; _ACore.default.install(MKNavigator); _ACore.default.install('mknav', MKNavigator); var _default = MKNavigator; exports.default = _default;