@dev-tcloud/tcloud-ui 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/esm2020/lib/_directives/directives.module.mjs +16 -0
- package/esm2020/lib/_directives/tooltip/tooltip.directive.mjs +164 -0
- package/esm2020/lib/_modules/tcloud-ui-data-list/services/data-list.service.mjs +39 -0
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.mjs +56 -0
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.mjs +250 -0
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.mjs +3 -0
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.mjs +36 -0
- package/esm2020/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.mjs +79 -0
- package/esm2020/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.mjs +20 -0
- package/esm2020/lib/_pipes/cnpj.mjs +37 -0
- package/esm2020/lib/_pipes/cpf.mjs +37 -0
- package/esm2020/lib/_pipes/index.mjs +6 -0
- package/esm2020/lib/_pipes/monthname.mjs +25 -0
- package/esm2020/lib/_pipes/respective.mjs +68 -0
- package/esm2020/lib/_pipes/statusinfo.mjs +78 -0
- package/esm2020/lib/_pipes/tcloud-pipes.module.mjs +47 -0
- package/esm2020/lib/tcloud-ui.module.mjs +47 -7
- package/esm2020/public-api.mjs +18 -1
- package/fesm2015/dev-tcloud-tcloud-ui.mjs +963 -11
- package/fesm2015/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/fesm2020/dev-tcloud-tcloud-ui.mjs +956 -11
- package/fesm2020/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/lib/_directives/directives.module.d.ts +7 -0
- package/lib/_directives/tooltip/tooltip.directive.d.ts +34 -0
- package/lib/_modules/tcloud-ui-data-list/services/data-list.service.d.ts +20 -0
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.d.ts +22 -0
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.d.ts +61 -0
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.d.ts +4 -0
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.d.ts +10 -0
- package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.d.ts +18 -0
- package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.d.ts +8 -0
- package/lib/_pipes/cnpj.d.ts +9 -0
- package/lib/_pipes/cpf.d.ts +9 -0
- package/lib/_pipes/index.d.ts +5 -0
- package/lib/_pipes/monthname.d.ts +8 -0
- package/lib/_pipes/respective.d.ts +11 -0
- package/lib/_pipes/statusinfo.d.ts +15 -0
- package/lib/_pipes/tcloud-pipes.module.d.ts +11 -0
- package/lib/tcloud-ui.module.d.ts +5 -1
- package/package.json +1 -1
- package/public-api.d.ts +9 -0
package/README.md
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { TooltipDirective } from './tooltip/tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TCloudAccessModule {
|
|
5
|
+
}
|
|
6
|
+
TCloudAccessModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudAccessModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
TCloudAccessModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: TCloudAccessModule, declarations: [TooltipDirective], exports: [TooltipDirective] });
|
|
8
|
+
TCloudAccessModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudAccessModule });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudAccessModule, decorators: [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
declarations: [TooltipDirective],
|
|
13
|
+
exports: [TooltipDirective],
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU0vRCxNQUFNLE9BQU8sa0JBQWtCOztnSEFBbEIsa0JBQWtCO2lIQUFsQixrQkFBa0IsaUJBSGQsZ0JBQWdCLGFBQ3JCLGdCQUFnQjtpSEFFZixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1Rvb2x0aXBEaXJlY3RpdmVdLFxyXG4gIGV4cG9ydHM6IFtUb29sdGlwRGlyZWN0aXZlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRDbG91ZEFjY2Vzc01vZHVsZSB7fSJdfQ==
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Directive, Input, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TooltipDirective {
|
|
4
|
+
constructor(el, renderer) {
|
|
5
|
+
this.el = el;
|
|
6
|
+
this.renderer = renderer;
|
|
7
|
+
this._direction = 'top';
|
|
8
|
+
// main
|
|
9
|
+
this.el_height = 0;
|
|
10
|
+
this.el_width = 0;
|
|
11
|
+
this.el_center = 0;
|
|
12
|
+
this.el_position = 0;
|
|
13
|
+
// tooltip
|
|
14
|
+
this.target_height = 0;
|
|
15
|
+
this.target_width = 0;
|
|
16
|
+
this.target_center = 0;
|
|
17
|
+
this.ID = '';
|
|
18
|
+
this.info_text = '';
|
|
19
|
+
}
|
|
20
|
+
onMouseOver() {
|
|
21
|
+
if (this.getElement()) {
|
|
22
|
+
const el = this.getElement();
|
|
23
|
+
el.style.display = 'inline';
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
this.el_height = this.el.nativeElement.offsetHeight;
|
|
26
|
+
this.el_width = this.el.nativeElement.offsetWidth;
|
|
27
|
+
this.el_center = this.el_width / 2;
|
|
28
|
+
const rect = this.el.nativeElement?.getBoundingClientRect();
|
|
29
|
+
this.el_position = rect?.left || 0;
|
|
30
|
+
// console.log('this.el_width', this.el_width);
|
|
31
|
+
// console.log('this.el_center', this.el_center);
|
|
32
|
+
// console.log('this.el_position', this.el_position);
|
|
33
|
+
this.target_height = el.offsetHeight;
|
|
34
|
+
this.target_width = el.offsetWidth;
|
|
35
|
+
this.target_center = this.target_width / 2;
|
|
36
|
+
// console.log('target_heigth', this.target_height);
|
|
37
|
+
// console.log('target_width', this.target_width);
|
|
38
|
+
// console.log('target_center', this.target_center);
|
|
39
|
+
// this.renderer.setStyle(el, 'bottom', `${this.el_position}px`);
|
|
40
|
+
switch (this._direction) {
|
|
41
|
+
case 'top':
|
|
42
|
+
this.to_top(el);
|
|
43
|
+
break;
|
|
44
|
+
case 'bottom':
|
|
45
|
+
this.to_bottom(el);
|
|
46
|
+
break;
|
|
47
|
+
case 'left':
|
|
48
|
+
this.to_left(el);
|
|
49
|
+
break;
|
|
50
|
+
case 'right':
|
|
51
|
+
this.to_right(el);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
onMouseOut() {
|
|
58
|
+
if (this.getElement()) {
|
|
59
|
+
const el = this.getElement();
|
|
60
|
+
el.style.display = 'none';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
set tooltip(tooltip) {
|
|
64
|
+
if (tooltip) {
|
|
65
|
+
this.check(tooltip);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
;
|
|
69
|
+
set direction(direction) {
|
|
70
|
+
if (direction) {
|
|
71
|
+
this._direction = direction;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
;
|
|
75
|
+
ngOnInit() {
|
|
76
|
+
}
|
|
77
|
+
generateID() {
|
|
78
|
+
return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}`;
|
|
79
|
+
}
|
|
80
|
+
getElement() {
|
|
81
|
+
return document.getElementById(this.ID) || undefined;
|
|
82
|
+
}
|
|
83
|
+
check(tooltip) {
|
|
84
|
+
this.ID = this.generateID();
|
|
85
|
+
this.info_text = tooltip;
|
|
86
|
+
let el = this.el.nativeElement;
|
|
87
|
+
this.main_el = el;
|
|
88
|
+
if (el) {
|
|
89
|
+
this.create_tooltip(tooltip, el);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log("TCL: tooltip -> el", this.el.nativeElement);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
setStyle(el) {
|
|
96
|
+
this.renderer.setStyle(el, 'position', 'relative');
|
|
97
|
+
this.renderer.setStyle(el, 'border', '1px');
|
|
98
|
+
this.renderer.setStyle(el, 'display', 'inline');
|
|
99
|
+
}
|
|
100
|
+
create_tooltip(tip, el) {
|
|
101
|
+
this.setStyle(el);
|
|
102
|
+
const tooltip = document.createElement("div");
|
|
103
|
+
tooltip.setAttribute('id', this.ID);
|
|
104
|
+
tooltip.setAttribute('style', `
|
|
105
|
+
position: absolute;
|
|
106
|
+
display: none;
|
|
107
|
+
padding: .5rem;
|
|
108
|
+
border-radius: 10px;
|
|
109
|
+
text-align: center;
|
|
110
|
+
width: max-content;
|
|
111
|
+
max-width: 250px;
|
|
112
|
+
background-color: transparent;
|
|
113
|
+
color: transparent;
|
|
114
|
+
z-index: 1090;
|
|
115
|
+
bottom: ${this.el_position}px;
|
|
116
|
+
left: ${this.target_center}px;
|
|
117
|
+
`);
|
|
118
|
+
tooltip.innerHTML = tip;
|
|
119
|
+
el.insertBefore(tooltip, null);
|
|
120
|
+
}
|
|
121
|
+
to_top(el) {
|
|
122
|
+
const pos = this.el_center - (this.target_center);
|
|
123
|
+
this.renderer.setStyle(el, 'left', `${(pos)}px`);
|
|
124
|
+
this.renderer.setStyle(el, 'bottom', `24px`);
|
|
125
|
+
el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-top');
|
|
126
|
+
}
|
|
127
|
+
to_bottom(el) {
|
|
128
|
+
const pos = this.el_center - (this.target_center);
|
|
129
|
+
this.renderer.setStyle(el, 'left', `${(pos)}px`);
|
|
130
|
+
this.renderer.setStyle(el, 'bottom', `-${(this.target_height + 7)}px`);
|
|
131
|
+
el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-bottom');
|
|
132
|
+
}
|
|
133
|
+
to_right(el) {
|
|
134
|
+
const pos = this.el_width;
|
|
135
|
+
this.renderer.setStyle(el, 'left', `${(pos + 11)}px`);
|
|
136
|
+
this.renderer.setStyle(el, 'bottom', `-${(((this.target_height) / 2) - (this.el_height / 2))}px`);
|
|
137
|
+
el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-right');
|
|
138
|
+
}
|
|
139
|
+
to_left(el) {
|
|
140
|
+
const pos = -((this.target_width));
|
|
141
|
+
this.renderer.setStyle(el, 'left', `${(pos - 11)}px`);
|
|
142
|
+
this.renderer.setStyle(el, 'bottom', `-${(((this.target_height) / 2) - (this.el_height / 2))}px`);
|
|
143
|
+
el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-left');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
147
|
+
TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TooltipDirective, selector: "[tooltip]", inputs: { tooltip: "tooltip", direction: "direction" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" } }, ngImport: i0 });
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
149
|
+
type: Directive,
|
|
150
|
+
args: [{
|
|
151
|
+
selector: '[tooltip]'
|
|
152
|
+
}]
|
|
153
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onMouseOver: [{
|
|
154
|
+
type: HostListener,
|
|
155
|
+
args: ['mouseover']
|
|
156
|
+
}], onMouseOut: [{
|
|
157
|
+
type: HostListener,
|
|
158
|
+
args: ['mouseout']
|
|
159
|
+
}], tooltip: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], direction: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}] } });
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLEtBQUssRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTTdGLE1BQU0sT0FBTyxnQkFBZ0I7SUE4RTNCLFlBQ1UsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBOUVyQixlQUFVLEdBQXdDLEtBQUssQ0FBQztRQUloRSxPQUFPO1FBQ1AsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFHeEIsVUFBVTtRQUNWLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUE4Q2hCLGNBQVMsR0FBVyxFQUFFLENBQUM7SUFpQmxCLENBQUM7SUE3RHFCLFdBQVc7UUFDcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckIsTUFBTSxFQUFFLEdBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsUUFBUSxH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QyxZQUFZLENBQUMsQ0FBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUM1RSxDQUFDOzs4R0F4S1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztpQkFDdEI7eUhBcUI0QixXQUFXO3NCQUFyQyxZQUFZO3VCQUFDLFdBQVc7Z0JBcUNDLFVBQVU7c0JBQW5DLFlBQVk7dUJBQUMsVUFBVTtnQkFTWCxPQUFPO3NCQUFuQixLQUFLO2dCQU1PLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyLCBJbnB1dCwgSG9zdExpc3RlbmVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0b29sdGlwXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAndG9wJztcclxuXHJcbiAgbWFpbl9lbDogYW55O1xyXG5cclxuICAvLyBtYWluXHJcbiAgZWxfaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGVsX3dpZHRoOiBudW1iZXIgPSAwO1xyXG4gIGVsX2NlbnRlcjogbnVtYmVyID0gMDtcclxuICBlbF9wb3NpdGlvbjogbnVtYmVyID0gMDtcclxuXHJcbiAgXHJcbiAgLy8gdG9vbHRpcFxyXG4gIHRhcmdldF9oZWlnaHQ6IG51bWJlciA9IDA7IFxyXG4gIHRhcmdldF93aWR0aDogbnVtYmVyID0gMDsgXHJcbiAgdGFyZ2V0X2NlbnRlcjogbnVtYmVyID0gMDtcclxuXHJcbiAgSUQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKSBvbk1vdXNlT3ZlcigpIHtcclxuICAgIGlmKCB0aGlzLmdldEVsZW1lbnQoKSApe1xyXG4gICAgICBjb25zdCBlbCA9IDxhbnk+IHRoaXMuZ2V0RWxlbWVudCgpO1xyXG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZWxfaGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICB0aGlzLmVsX3dpZHRoID0gIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB0aGlzLmVsX2NlbnRlciA9IHRoaXMuZWxfd2lkdGggLyAyO1xyXG5cclxuICAgICAgICBjb25zdCByZWN0ICA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgdGhpcy5lbF9wb3NpdGlvbiA9IHJlY3Q/LmxlZnQgfHwgMDsgXHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmVsX3dpZHRoJywgdGhpcy5lbF93aWR0aCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuZWxfY2VudGVyJywgdGhpcy5lbF9jZW50ZXIpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmVsX3Bvc2l0aW9uJywgdGhpcy5lbF9wb3NpdGlvbik7XHJcblxyXG4gICAgICAgIHRoaXMudGFyZ2V0X2hlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcclxuICAgICAgICB0aGlzLnRhcmdldF93aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0X2NlbnRlciA9IHRoaXMudGFyZ2V0X3dpZHRoIC8gMjtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3RhcmdldF9oZWlndGgnLCB0aGlzLnRhcmdldF9oZWlnaHQpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd0YXJnZXRfd2lkdGgnLCB0aGlzLnRhcmdldF93aWR0aCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3RhcmdldF9jZW50ZXInLCB0aGlzLnRhcmdldF9jZW50ZXIpO1xyXG4gICAgICAgIC8vIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICdib3R0b20nLCBgJHt0aGlzLmVsX3Bvc2l0aW9ufXB4YCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLl9kaXJlY3Rpb24pIHtcclxuICAgICAgICAgIGNhc2UgJ3RvcCc6IHRoaXMudG9fdG9wKGVsKTsgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdib3R0b20nOiB0aGlzLnRvX2JvdHRvbShlbCk7IGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbGVmdCc6IHRoaXMudG9fbGVmdChlbCk7IGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncmlnaHQnOiB0aGlzLnRvX3JpZ2h0KGVsKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnKSBvbk1vdXNlT3V0KCkge1xyXG4gICAgaWYoIHRoaXMuZ2V0RWxlbWVudCgpICl7XHJcbiAgICAgIGNvbnN0IGVsID0gPGFueT4gdGhpcy5nZXRFbGVtZW50KCk7XHJcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmZvX3RleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBzZXQgdG9vbHRpcCAodG9vbHRpcDogYW55KXtcclxuICAgIGlmICh0b29sdGlwKXtcclxuICAgICAgdGhpcy5jaGVjayh0b29sdGlwKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlyZWN0aW9uIChkaXJlY3Rpb246IGFueSl7XHJcbiAgICBpZiAoZGlyZWN0aW9uKXtcclxuICAgICAgdGhpcy5fZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUlEKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiBgdGMtdG9vbHRpcC0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpKX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZHtcclxuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLklEKSB8fCB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjaGVjayh0b29sdGlwOiBhbnkpe1xyXG4gICAgdGhpcy5JRCA9IHRoaXMuZ2VuZXJhdGVJRCgpO1xyXG5cclxuICAgIHRoaXMuaW5mb190ZXh0ID0gdG9vbHRpcDtcclxuXHJcbiAgICBsZXQgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLm1haW5fZWwgPSBlbDtcclxuICAgIGlmIChlbCl7XHJcbiAgICAgIHRoaXMuY3JlYXRlX3Rvb2x0aXAodG9vbHRpcCwgZWwpOyAgICAgICAgXHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29uc29sZS5sb2coXCJUQ0w6IHRvb2x0aXAgLT4gZWxcIiwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoZWw6IGFueSl7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICdib3JkZXInLCAnMXB4Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnZGlzcGxheScsICdpbmxpbmUnKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZV90b29sdGlwKHRpcDogYW55LCBlbDogYW55KXtcclxuXHJcbiAgICB0aGlzLnNldFN0eWxlKGVsKTtcclxuXHJcbiAgICBjb25zdCB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIHRvb2x0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuSUQpO1xyXG4gICAgdG9vbHRpcC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJyxgXHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAuNXJlbTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XHJcbiAgICAgIG1heC13aWR0aDogMjUwcHg7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHotaW5kZXg6IDEwOTA7XHJcbiAgICAgIGJvdHRvbTogJHt0aGlzLmVsX3Bvc2l0aW9ufXB4O1xyXG4gICAgICBsZWZ0OiAke3RoaXMudGFyZ2V0X2NlbnRlcn1weDtcclxuICAgIGApO1xyXG4gICAgdG9vbHRpcC5pbm5lckhUTUwgPSB0aXA7IFxyXG4gICAgXHJcbiAgICBlbC5pbnNlcnRCZWZvcmUodG9vbHRpcCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICB0b190b3AoZWw6IGFueSl7XHJcbiAgICBjb25zdCBwb3MgPSB0aGlzLmVsX2NlbnRlciAtICh0aGlzLnRhcmdldF9jZW50ZXIpIDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICdsZWZ0JywgYCR7KHBvcyl9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICdib3R0b20nLCBgMjRweGApO1xyXG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsJ3RjLWRpcmVjdGl2ZS10b29sdGlwIHRjLWRpcmVjdGl2ZS10b29sdGlwLXRvcCcpO1xyXG4gICAgXHJcbiAgfSBcclxuXHJcbiAgdG9fYm90dG9tKGVsOiBhbnkpe1xyXG4gICAgY29uc3QgcG9zID0gdGhpcy5lbF9jZW50ZXIgLSAodGhpcy50YXJnZXRfY2VudGVyKSA7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnbGVmdCcsIGAkeyhwb3MpfXB4YCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnYm90dG9tJywgYC0keyh0aGlzLnRhcmdldF9oZWlnaHQgKyA3KX1weGApO1xyXG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsJ3RjLWRpcmVjdGl2ZS10b29sdGlwIHRjLWRpcmVjdGl2ZS10b29sdGlwLWJvdHRvbScpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICB0b19yaWdodChlbDogYW55KXtcclxuICAgIGNvbnN0IHBvcyA9IHRoaXMuZWxfd2lkdGg7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnbGVmdCcsIGAkeyhwb3MgKyAxMSApfXB4YCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnYm90dG9tJywgYC0keyggKCh0aGlzLnRhcmdldF9oZWlnaHQpLzIpIC0gKHRoaXMuZWxfaGVpZ2h0LzIpICl9cHhgKTtcclxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0Yy1kaXJlY3RpdmUtdG9vbHRpcCB0Yy1kaXJlY3RpdmUtdG9vbHRpcC1yaWdodCcpOyAgICBcclxuICB9IFxyXG5cclxuICB0b19sZWZ0KGVsOiBhbnkpe1xyXG4gICAgY29uc3QgcG9zID0gLSggKHRoaXMudGFyZ2V0X3dpZHRoKSApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ2xlZnQnLCBgJHsocG9zIC0gMTEpfXB4YCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnYm90dG9tJywgYC0keyggKCh0aGlzLnRhcmdldF9oZWlnaHQpLzIpIC0gKHRoaXMuZWxfaGVpZ2h0LzIpICl9cHhgKTtcclxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0Yy1kaXJlY3RpdmUtdG9vbHRpcCB0Yy1kaXJlY3RpdmUtdG9vbHRpcC1sZWZ0Jyk7ICAgIFxyXG4gIH1cclxuXHJcbn0iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DataListService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._stateSourceValue = new Subject();
|
|
7
|
+
this.stateValue$ = this._stateSourceValue.asObservable();
|
|
8
|
+
this._stateSourceDescription = new Subject();
|
|
9
|
+
this.stateDescription$ = this._stateSourceDescription.asObservable();
|
|
10
|
+
this._stateSourceOptions = new Subject();
|
|
11
|
+
this.stateOptions$ = this._stateSourceOptions.asObservable();
|
|
12
|
+
this._stateSourceActive = new Subject();
|
|
13
|
+
this.stateActive$ = this._stateSourceActive.asObservable();
|
|
14
|
+
}
|
|
15
|
+
setItemValue(v) {
|
|
16
|
+
this.actived_value = v;
|
|
17
|
+
this._stateSourceValue.next(v);
|
|
18
|
+
}
|
|
19
|
+
setItemDescription(v) {
|
|
20
|
+
this._stateSourceDescription.next(v);
|
|
21
|
+
}
|
|
22
|
+
registerSelectionOptionsDescription(v) {
|
|
23
|
+
this._stateSourceOptions.next(v);
|
|
24
|
+
}
|
|
25
|
+
setActiveItem(v) {
|
|
26
|
+
// console.log('setActiveItem', v);
|
|
27
|
+
this._stateSourceActive.next(v);
|
|
28
|
+
}
|
|
29
|
+
getActiveItem() {
|
|
30
|
+
// console.log('getActiveItem', this.actived_value);
|
|
31
|
+
return this.actived_value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
DataListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DataListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
DataListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DataListService });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DataListService, decorators: [{
|
|
37
|
+
type: Injectable
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZGF0YS1saXN0L3NlcnZpY2VzL2RhdGEtbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFVSxzQkFBaUIsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN0RCxnQkFBVyxHQUE2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0UsNEJBQXVCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDNUQsc0JBQWlCLEdBQTZCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6Rix3QkFBbUIsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN4RCxrQkFBYSxHQUE2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFakYsdUJBQWtCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkQsaUJBQVksR0FBNkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0tBMkJ4RjtJQXZCUSxZQUFZLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxDQUFNO1FBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLG1DQUFtQyxDQUFDLENBQU07UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sYUFBYSxDQUFDLENBQU07UUFDekIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGFBQWE7UUFDbEIsb0RBQW9EO1FBQ3BELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs2R0FwQ1UsZUFBZTtpSEFBZixlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERhdGFMaXN0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfc3RhdGVTb3VyY2VWYWx1ZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHB1YmxpYyBzdGF0ZVZhbHVlJDogT2JzZXJ2YWJsZTxTdWJqZWN0PGFueT4+ID0gdGhpcy5fc3RhdGVTb3VyY2VWYWx1ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RhdGVTb3VyY2VEZXNjcmlwdGlvbjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHB1YmxpYyBzdGF0ZURlc2NyaXB0aW9uJDogT2JzZXJ2YWJsZTxTdWJqZWN0PGFueT4+ID0gdGhpcy5fc3RhdGVTb3VyY2VEZXNjcmlwdGlvbi5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RhdGVTb3VyY2VPcHRpb25zOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIHN0YXRlT3B0aW9ucyQ6IE9ic2VydmFibGU8U3ViamVjdDxhbnk+PiA9IHRoaXMuX3N0YXRlU291cmNlT3B0aW9ucy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RhdGVTb3VyY2VBY3RpdmU6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwdWJsaWMgc3RhdGVBY3RpdmUkOiBPYnNlcnZhYmxlPFN1YmplY3Q8YW55Pj4gPSB0aGlzLl9zdGF0ZVNvdXJjZUFjdGl2ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmVkX3ZhbHVlOiBhbnkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBzZXRJdGVtVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZWRfdmFsdWUgPSB2O1xyXG4gICAgdGhpcy5fc3RhdGVTb3VyY2VWYWx1ZS5uZXh0KHYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEl0ZW1EZXNjcmlwdGlvbih2OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRlU291cmNlRGVzY3JpcHRpb24ubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3RlclNlbGVjdGlvbk9wdGlvbnNEZXNjcmlwdGlvbih2OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRlU291cmNlT3B0aW9ucy5uZXh0KHYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGl2ZUl0ZW0odjogYW55KTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnc2V0QWN0aXZlSXRlbScsIHYpO1xyXG4gICAgdGhpcy5fc3RhdGVTb3VyY2VBY3RpdmUubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY3RpdmVJdGVtKCk6IGFueSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnZ2V0QWN0aXZlSXRlbScsIHRoaXMuYWN0aXZlZF92YWx1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVkX3ZhbHVlO1xyXG4gIH1cclxuIFxyXG59Il19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ISelectOptions } from './../tcloud-ui-data-list';
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/data-list.service";
|
|
5
|
+
export class TCloudUiDataListOptionComponent {
|
|
6
|
+
constructor(dataListService) {
|
|
7
|
+
this.dataListService = dataListService;
|
|
8
|
+
this.id = '';
|
|
9
|
+
this.select_options = new ISelectOptions();
|
|
10
|
+
this.selected = new EventEmitter();
|
|
11
|
+
this.subscription_active = dataListService.stateValue$.subscribe(v => { this.actived_value = v; });
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.id = this.generateID();
|
|
15
|
+
this.setSelectOptions();
|
|
16
|
+
}
|
|
17
|
+
generateID() {
|
|
18
|
+
return `data-list-option-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}`;
|
|
19
|
+
}
|
|
20
|
+
setSelectedItem(value) {
|
|
21
|
+
if (value === '') {
|
|
22
|
+
this.value = '';
|
|
23
|
+
}
|
|
24
|
+
this.dataListService.setItemValue(this.value);
|
|
25
|
+
const description = document.getElementById(this.id)?.innerText || '';
|
|
26
|
+
this.dataListService.setItemDescription(description);
|
|
27
|
+
this.setSelectOptions();
|
|
28
|
+
}
|
|
29
|
+
setSelectOptions() {
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
try {
|
|
32
|
+
const description = document.getElementById(this.id)?.innerText;
|
|
33
|
+
this.select_options.value = this.value;
|
|
34
|
+
this.select_options.description = description;
|
|
35
|
+
this.dataListService.registerSelectionOptionsDescription(this.select_options);
|
|
36
|
+
}
|
|
37
|
+
catch (error) { }
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
if (this.subscription_active) {
|
|
42
|
+
this.subscription_active.unsubscribe();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
TCloudUiDataListOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDataListOptionComponent, deps: [{ token: i1.DataListService }], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
TCloudUiDataListOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiDataListOptionComponent, selector: "tcloud-ui-data-list-option", inputs: { value: "value" }, outputs: { selected: "selected" }, ngImport: i0, template: "<button \r\n [title]=\"select_options.description\"\r\n id=\"{{id}}\"\r\n [attr.data-description]=\"select_options.description\"\r\n class=\"dropdown-item\" \r\n [class.null-value]=\"value === undefined || value === null || value === ''\"\r\n [class.active]=\"value === actived_value\" \r\n type=\"button\" \r\n [value]=\"value\"\r\n (click)=\"setSelectedItem(value)\" >\r\n <ng-content></ng-content>\r\n</button>\r\n", styles: ["button{color:#666;width:100%;padding:10px;font-size:14px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button:hover{background-color:#e5f5f9;color:#333}button.active{background-color:#ceedf5;color:#333}.null-value{height:35px}\n"] });
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDataListOptionComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'tcloud-ui-data-list-option', template: "<button \r\n [title]=\"select_options.description\"\r\n id=\"{{id}}\"\r\n [attr.data-description]=\"select_options.description\"\r\n class=\"dropdown-item\" \r\n [class.null-value]=\"value === undefined || value === null || value === ''\"\r\n [class.active]=\"value === actived_value\" \r\n type=\"button\" \r\n [value]=\"value\"\r\n (click)=\"setSelectedItem(value)\" >\r\n <ng-content></ng-content>\r\n</button>\r\n", styles: ["button{color:#666;width:100%;padding:10px;font-size:14px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button:hover{background-color:#e5f5f9;color:#333}button.active{background-color:#ceedf5;color:#333}.null-value{height:35px}\n"] }]
|
|
51
|
+
}], ctorParameters: function () { return [{ type: i1.DataListService }]; }, propDecorators: { value: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], selected: [{
|
|
54
|
+
type: Output
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWRhdGEtbGlzdC90Y2xvdWQtdWktZGF0YS1saXN0LW9wdGlvbi90Y2xvdWQtdWktZGF0YS1saXN0LW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZGF0YS1saXN0L3RjbG91ZC11aS1kYXRhLWxpc3Qtb3B0aW9uL3RjbG91ZC11aS1kYXRhLWxpc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTL0UsTUFBTSxPQUFPLCtCQUErQjtJQVcxQyxZQUFxQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFUckQsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUVoQixtQkFBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFLNUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHM0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xHLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUV4QixJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUFFO1FBRXRDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBUyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJO2dCQUNGLE1BQU0sV0FBVyxHQUFTLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMvRTtZQUFDLE9BQU8sS0FBSyxFQUFFLEdBQUc7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQUU7SUFDM0UsQ0FBQzs7NkhBL0NVLCtCQUErQjtpSEFBL0IsK0JBQStCLGlJQ1g1Qyw2YUFZQTs0RkREYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsNEJBQTRCO3NHQVc3QixLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJU2VsZWN0T3B0aW9ucyB9IGZyb20gJy4vLi4vdGNsb3VkLXVpLWRhdGEtbGlzdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGF0YS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktZGF0YS1saXN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWRhdGEtbGlzdC1vcHRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlEYXRhTGlzdE9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgaWQ6IHN0cmluZyA9ICcnOyAgXHJcbiAgYWN0aXZlZF92YWx1ZTogYW55O1xyXG4gIHNlbGVjdF9vcHRpb25zID0gbmV3IElTZWxlY3RPcHRpb25zKCk7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25fYWN0aXZlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAgXHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIGRhdGFMaXN0U2VydmljZTogRGF0YUxpc3RTZXJ2aWNlICkgeyBcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uX2FjdGl2ZSA9IGRhdGFMaXN0U2VydmljZS5zdGF0ZVZhbHVlJC5zdWJzY3JpYmUodiA9PiB7IHRoaXMuYWN0aXZlZF92YWx1ZSA9IHY7IH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkID0gdGhpcy5nZW5lcmF0ZUlEKCk7XHJcbiAgICB0aGlzLnNldFNlbGVjdE9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlSUQoKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuIGBkYXRhLWxpc3Qtb3B0aW9uLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkpfWA7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZEl0ZW0odmFsdWU6IGFueSl7XHJcblxyXG4gICAgaWYoIHZhbHVlID09PSAnJyApeyB0aGlzLnZhbHVlID0gJyc7IH1cclxuXHJcbiAgICB0aGlzLmRhdGFMaXN0U2VydmljZS5zZXRJdGVtVmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IDxhbnk+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5pbm5lclRleHQgfHwgJyc7XHJcbiAgICB0aGlzLmRhdGFMaXN0U2VydmljZS5zZXRJdGVtRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xyXG4gICAgdGhpcy5zZXRTZWxlY3RPcHRpb25zKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0T3B0aW9ucygpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSA8YW55PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKT8uaW5uZXJUZXh0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0X29wdGlvbnMudmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0X29wdGlvbnMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsgIFxyXG4gICAgICAgIHRoaXMuZGF0YUxpc3RTZXJ2aWNlLnJlZ2lzdGVyU2VsZWN0aW9uT3B0aW9uc0Rlc2NyaXB0aW9uKHRoaXMuc2VsZWN0X29wdGlvbnMpO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikgeyB9XHJcbiAgICB9KTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmKCB0aGlzLnN1YnNjcmlwdGlvbl9hY3RpdmUgKXsgdGhpcy5zdWJzY3JpcHRpb25fYWN0aXZlLnVuc3Vic2NyaWJlKCk7IH0gICAgXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YnV0dG9uIFxyXG4gIFt0aXRsZV09XCJzZWxlY3Rfb3B0aW9ucy5kZXNjcmlwdGlvblwiXHJcbiAgaWQ9XCJ7e2lkfX1cIlxyXG4gIFthdHRyLmRhdGEtZGVzY3JpcHRpb25dPVwic2VsZWN0X29wdGlvbnMuZGVzY3JpcHRpb25cIlxyXG4gIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIFxyXG4gIFtjbGFzcy5udWxsLXZhbHVlXT1cInZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnXCJcclxuICBbY2xhc3MuYWN0aXZlXT1cInZhbHVlID09PSBhY3RpdmVkX3ZhbHVlXCIgXHJcbiAgdHlwZT1cImJ1dHRvblwiIFxyXG4gIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgKGNsaWNrKT1cInNldFNlbGVjdGVkSXRlbSh2YWx1ZSlcIiA+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2J1dHRvbj5cclxuIl19
|