UNPKG

magix-components

Version:
184 lines 5.72 kB
/* ver:1.3.1 */ /* author:xinglie.lkf@alibaba-inc.com */ let Magix = require('magix'); let $ = require('$'); Magix.applyStyle('@index.less'); module.exports = Magix.View.extend({ tmpl: '@index.html', init(extra) { let me = this; me.assign(extra); let node = $('#' + me.id); node.addClass('@scoped.style:input @index.less:wrapper'); me['@{owner.node}'] = node; }, assign(ops) { let me = this; me['@{value}'] = +ops.value || ''; me['@{step}'] = +ops.step || 1; me['@{disabled}'] = (ops.disabled + '') === 'true'; me['@{max}'] = Magix.has(ops, 'max') ? +ops.max : Number.MAX_VALUE; me['@{min}'] = Magix.has(ops, 'min') ? +ops.min : -Number.MAX_VALUE; me['@{ratio}'] = +ops.ratio || 10; let s = me['@{step}'] + ''; let i = s.indexOf('.'); if (i >= 0) { i = s.slice(i + 1).length; } else { i = 0; } me['@{tail.length}'] = i; return true; }, render() { let me = this; me['@{owner.node}'][me['@{disabled}'] ? 'addClass' : 'removeClass']('@index.less:notallowed'); me.updater.digest({ value: me['@{value}'], disabled: me['@{disabled}'] }); me['@{ctrl.input}'] = me['@{owner.node}'].find('input'); }, val(v) { v = +v; let me = this; if (v || v === 0) { let max = me['@{max}']; let min = me['@{min}']; let step = me['@{step}']; if (v > max) { v = max; } else if (v < min) { v = min; } if (v !== me['@{value}']) { v = Math.round(v / step) * step; v = v.toFixed(me['@{tail.length}']); me['@{ctrl.input}'].val(v); v = +v; me['@{owner.node}'].prop('value', me['@{value}'] = v).trigger({ type: 'input', value: v }); } } return me['@{value}']; }, '@{num.change}'(increase, enlarge) { let me = this; let value = me['@{value}']; if (value === '') value = 0; //for init let step = me['@{step}']; let c = value; if (enlarge) step *= me['@{ratio}']; if (increase) { c += step; } else { c -= step; } me.val(c); }, '@{cursor.show}'() { let me = this; let ipt = me['@{ctrl.input}'][0]; if (ipt) { ipt.focus(); ipt.selectionStart = ipt.selectionEnd = ipt.value.length; } }, '@{simulator.active}'() { let me = this; me['@{owner.node}'].addClass('@scoped.style:input-focus'); if (!Magix.has(me, '@{last.value}')) { me['@{last.value}'] = me['@{value}']; } }, '@{num.check}<change>'(e) { e.stopPropagation(); let target = e.eventTarget; let value = target.value; let me = this; if (value === '') { target.value = me['@{value}'] = ''; me['@{owner.node}'].prop('value', ''); return; } let v = parseFloat(value); if (v || v === 0) { me.val(v); } target.value = me['@{value}'].toFixed(me['@{tail.length}']); }, '@{active}<focusin>'() { this['@{simulator.active}'](); }, '@{deactive}<focusout>'() { let me = this; if (!me['@{ui.keep.active}']) { me['@{owner.node}'].removeClass('@scoped.style:input-focus'); if (me['@{last.value}'] != me['@{value}']) { me['@{owner.node}'].trigger({ type: 'change', value: me['@{value}'] }); } delete me['@{last.value}']; } }, '@{num.change}<click>'(e) { let me = this; if (!me['@{disabled}'] && !me['@{fast.change.start}']) { me['@{num.change}'](e.params.i,e.shiftKey); me['@{cursor.show}'](); } }, '@{fast.start}<mousedown>'(e) { let me = this; me['@{ui.keep.active}'] = true; me['@{simulator.active}'](); me['@{long.tap.timer}'] = setTimeout(me.wrapAsync(() => { me['@{interval.timer}'] = setInterval(me.wrapAsync(() => { me['@{fast.change.start}'] = true; me['@{num.change}'](e.params.i); me['@{cursor.show}'](); }), 80); }), 300); }, '@{press.check}<keydown>'(e) { if (e.keyCode == 38 || e.keyCode == 40) { e.preventDefault(); let me = this; if (!me['@{disabled}']) { let target = e.eventTarget; let value = target.value; if (value === '') { me['@{value}'] = ''; } else { let v = parseFloat(value); if (v || v === 0) { if (v != me['@{value}']) { me['@{value}'] = v; } } } me['@{num.change}'](e.keyCode == 38, e.shiftKey); } } }, '@{prevent}<contextmenu>'(e) { e.preventDefault(); }, '$doc<mouseup>'() { let me = this; clearTimeout(me['@{long.tap.timer}']); clearInterval(me['@{interval.timer}']); delete me['@{ui.keep.active}']; setTimeout(me.wrapAsync(() => { delete me['@{fast.change.start}']; }), 0); } });