salix/front/core/components/input-time/index.js

56 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-09-19 13:05:07 +00:00
import ngModule from '../../module';
2019-04-02 09:02:59 +00:00
import Input from '../../lib/input';
2018-09-19 13:05:07 +00:00
import './style.scss';
2019-04-02 09:02:59 +00:00
export default class InputTime extends Input {
get value() {
return this._value;
}
2018-09-19 13:05:07 +00:00
set value(value) {
2018-09-24 08:43:54 +00:00
if (!value) return;
2019-04-02 09:02:59 +00:00
let newDate = new Date(value);
newDate.setSeconds(0);
newDate.setMilliseconds(0);
this._value = newDate;
this.hasValue = this._value !== null;
2019-04-04 09:53:13 +00:00
this.input.value = this._value;
2018-09-19 13:05:07 +00:00
if (this.hasValue) this.element.classList.add('not-empty');
this.element.querySelector('.infix').classList.remove('invalid', 'validated');
}
get step() {
2018-09-24 08:43:54 +00:00
return parseInt(this.input.step);
2018-09-19 13:05:07 +00:00
}
set step(value) {
this.input.step = value;
}
}
2018-09-24 08:43:54 +00:00
InputTime.$inject = ['$element', '$scope', '$attrs', 'vnTemplate', '$transclude'];
2018-09-19 13:05:07 +00:00
ngModule.component('vnInputTime', {
template: require('./index.html'),
controller: InputTime,
transclude: {
leftIcons: '?tLeftIcons',
rightIcons: '?tRightIcons'
},
bindings: {
label: '@?',
disabled: '<?',
readonly: '<?',
step: '<?',
rule: '@?',
value: '=model',
vnTabIndex: '@?',
onChange: '&',
onClear: '&'
}
});