2018-04-17 10:19:40 +00:00
|
|
|
import ngModule from '../../module';
|
2018-04-17 12:49:55 +00:00
|
|
|
import './style.scss';
|
2018-04-17 10:19:40 +00:00
|
|
|
|
2018-06-21 06:46:30 +00:00
|
|
|
export default class Controller {
|
2019-01-29 07:53:29 +00:00
|
|
|
constructor($element, $translate, $attrs) {
|
2018-06-29 07:46:14 +00:00
|
|
|
this.element = $element[0];
|
|
|
|
this._ = $translate;
|
2019-01-29 07:53:29 +00:00
|
|
|
this.hasInfo = Boolean($attrs.info);
|
|
|
|
this.info = $attrs.info || null;
|
2018-06-21 06:46:30 +00:00
|
|
|
}
|
2019-02-18 11:54:33 +00:00
|
|
|
|
2018-06-29 07:46:14 +00:00
|
|
|
set label(value) {
|
|
|
|
let label = this.element.querySelector('vn-label');
|
2019-01-20 15:47:04 +00:00
|
|
|
label.textContent = this._.instant(value);
|
2018-06-29 07:46:14 +00:00
|
|
|
this._label = value;
|
|
|
|
}
|
2019-02-18 11:54:33 +00:00
|
|
|
|
2018-06-29 07:46:14 +00:00
|
|
|
get label() {
|
|
|
|
return this._label;
|
|
|
|
}
|
2019-02-18 11:54:33 +00:00
|
|
|
|
2019-09-26 07:05:54 +00:00
|
|
|
get state() {
|
|
|
|
return this._state;
|
|
|
|
}
|
|
|
|
|
|
|
|
set state(value) {
|
|
|
|
this._state = value;
|
|
|
|
this.applyTextContent();
|
2018-06-29 07:46:14 +00:00
|
|
|
}
|
2019-02-18 11:54:33 +00:00
|
|
|
|
2018-06-29 07:46:14 +00:00
|
|
|
get value() {
|
|
|
|
return this._value;
|
2018-06-21 06:46:30 +00:00
|
|
|
}
|
2019-02-18 11:54:33 +00:00
|
|
|
|
2019-09-26 07:05:54 +00:00
|
|
|
set value(value) {
|
|
|
|
this._value = value;
|
|
|
|
this.applyTextContent();
|
|
|
|
}
|
|
|
|
|
2019-02-18 11:54:33 +00:00
|
|
|
get title() {
|
|
|
|
return this._title;
|
|
|
|
}
|
|
|
|
|
|
|
|
set title(value) {
|
|
|
|
let span = this.element.querySelector('span');
|
|
|
|
span.title = value;
|
|
|
|
this._title = value;
|
|
|
|
}
|
2019-09-26 07:05:54 +00:00
|
|
|
|
|
|
|
applyTextContent() {
|
|
|
|
const targetElement = this.state ? 'a' : 'span';
|
|
|
|
const element = this.element.querySelector(targetElement);
|
|
|
|
const hasValue = this.value && this.value != '';
|
|
|
|
element.title = this.value;
|
|
|
|
element.textContent = hasValue ? this.value : '-';
|
|
|
|
}
|
2018-06-21 06:46:30 +00:00
|
|
|
}
|
2019-01-29 07:53:29 +00:00
|
|
|
Controller.$inject = ['$element', '$translate', '$attrs'];
|
2018-06-21 06:46:30 +00:00
|
|
|
|
2018-04-17 10:19:40 +00:00
|
|
|
ngModule.component('vnLabelValue', {
|
2018-06-21 06:46:30 +00:00
|
|
|
controller: Controller,
|
2018-06-29 07:46:14 +00:00
|
|
|
template: require('./label-value.html'),
|
2018-04-17 10:19:40 +00:00
|
|
|
bindings: {
|
2019-02-18 11:54:33 +00:00
|
|
|
title: '@?',
|
2018-04-17 10:19:40 +00:00
|
|
|
label: '@',
|
2019-09-26 07:05:54 +00:00
|
|
|
value: '@',
|
|
|
|
state: '@?',
|
|
|
|
stateParams: '<?'
|
2018-04-17 10:19:40 +00:00
|
|
|
}
|
|
|
|
});
|