@libs-ui/components-inputs-add 0.2.10-6.2

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 ADDED
@@ -0,0 +1,3 @@
1
+ # inputs-add
2
+
3
+ This library was generated with [Nx](https://nx.dev).
@@ -0,0 +1,104 @@
1
+ import { OnInit, TemplateRef } from '@angular/core';
2
+ import { IButton } from '@libs-ui/components-buttons-button';
3
+ import { IInputValidFunctionControlEvent, IInputValidUnitConfig, IValid, IValidLength, IValidPattern, IValidRequired, TYPE_FUNCTION_INPUT_VALID } from '@libs-ui/components-inputs-valid';
4
+ import { ILabel } from '@libs-ui/components-label';
5
+ import { ISwitchEvent } from '@libs-ui/components-switch';
6
+ import { IEmitValueChange, IInputAdd, ITemplateRightLeftItem } from './interfaces';
7
+ import { IInputAddFunctionControlEvent } from './interfaces/function-control-event.interface';
8
+ import * as i0 from "@angular/core";
9
+ export declare class LibsUiComponentsInputsAddComponent implements OnInit {
10
+ private timeOutKeyUp;
11
+ readonly fieldNameBind: import("@angular/core").InputSignal<string>;
12
+ readonly items: import("@angular/core").ModelSignal<IInputAdd[]>;
13
+ readonly readonly: import("@angular/core").InputSignal<boolean>;
14
+ readonly disable: import("@angular/core").InputSignal<boolean>;
15
+ readonly addItemButtonConfig: import("@angular/core").InputSignal<IButton | undefined>;
16
+ readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
17
+ readonly labelConfig: import("@angular/core").InputSignal<ILabel | undefined>;
18
+ readonly formInputSpacing: import("@angular/core").InputSignal<number>;
19
+ readonly configItemAddToItems: import("@angular/core").InputSignal<IInputAdd | undefined>;
20
+ readonly rightTemplateItems: import("@angular/core").InputSignal<ITemplateRightLeftItem>;
21
+ readonly leftTemplateItems: import("@angular/core").InputSignal<ITemplateRightLeftItem>;
22
+ readonly templateLeftOutlet: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
23
+ readonly templateRightOutlet: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
24
+ readonly ignoreWidthInput100: import("@angular/core").InputSignal<boolean | undefined>;
25
+ readonly classIncludeInput: import("@angular/core").InputSignal<string | undefined>;
26
+ readonly classContainerInput: import("@angular/core").InputSignal<string | undefined>;
27
+ readonly showCount: import("@angular/core").InputSignal<boolean | undefined>;
28
+ readonly ignoreValidEmptyField: import("@angular/core").InputSignal<boolean | undefined>;
29
+ readonly emitEmptyInDataTypeNumber: import("@angular/core").InputSignal<boolean | undefined>;
30
+ readonly tagInput: import("@angular/core").InputSignal<"input" | "textarea" | undefined>;
31
+ readonly dataType: import("@angular/core").InputSignal<"string" | "bigint" | "int" | "float" | undefined>;
32
+ readonly fixedFloat: import("@angular/core").InputSignal<number | undefined>;
33
+ readonly acceptNegativeValue: import("@angular/core").InputSignal<boolean | undefined>;
34
+ readonly valueUpDownNumber: import("@angular/core").InputSignal<number | undefined>;
35
+ readonly resetAutoCompletePassword: import("@angular/core").InputSignal<boolean | undefined>;
36
+ readonly hiddenContent: import("@angular/core").InputSignal<boolean | undefined>;
37
+ readonly noBorder: import("@angular/core").InputSignal<boolean | undefined>;
38
+ readonly backgroundNone: import("@angular/core").InputSignal<boolean | undefined>;
39
+ readonly useColorModeExist: import("@angular/core").InputSignal<boolean | undefined>;
40
+ readonly keepPlaceholderOnly: import("@angular/core").InputSignal<boolean | undefined>;
41
+ readonly classContainerBottomInput: import("@angular/core").InputSignal<string | undefined>;
42
+ readonly autoRemoveEmoji: import("@angular/core").InputSignal<boolean | undefined>;
43
+ readonly defaultHeight: import("@angular/core").InputSignal<number | undefined>;
44
+ readonly ignoreShowError: import("@angular/core").InputSignal<boolean | undefined>;
45
+ readonly borderError: import("@angular/core").InputSignal<boolean | undefined>;
46
+ readonly unitsLeft: import("@angular/core").InputSignal<any[] | undefined>;
47
+ readonly configUnitLeft: import("@angular/core").InputSignal<IInputValidUnitConfig>;
48
+ readonly keySelectedUnitLeft: import("@angular/core").InputSignal<any>;
49
+ readonly unitsRight: import("@angular/core").InputSignal<any[] | undefined>;
50
+ readonly configUnitRight: import("@angular/core").InputSignal<IInputValidUnitConfig>;
51
+ readonly keySelectedUnitRight: import("@angular/core").InputSignal<any>;
52
+ readonly maxValueNumber: import("@angular/core").InputSignal<number>;
53
+ readonly minValueNumber: import("@angular/core").InputSignal<number | undefined>;
54
+ readonly isBaselineStyle: import("@angular/core").InputSignal<boolean | undefined>;
55
+ readonly valuePatternShowError: import("@angular/core").InputSignal<boolean | undefined>;
56
+ readonly validPattern: import("@angular/core").InputSignal<IValidPattern[] | undefined>;
57
+ readonly validRequired: import("@angular/core").InputSignal<IValidRequired | undefined>;
58
+ readonly validMinLength: import("@angular/core").InputSignal<IValidLength | undefined>;
59
+ readonly validMinValue: import("@angular/core").InputSignal<IValid | undefined>;
60
+ readonly validMaxValue: import("@angular/core").InputSignal<IValid | undefined>;
61
+ readonly validMaxLength: import("@angular/core").InputSignal<IValid | undefined>;
62
+ readonly validDuplicate: import("@angular/core").InputSignal<IValid | undefined>;
63
+ readonly functionValid: import("@angular/core").InputSignal<TYPE_FUNCTION_INPUT_VALID | undefined>;
64
+ readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
65
+ readonly positionMessageErrorStartInput: import("@angular/core").InputSignal<boolean | undefined>;
66
+ readonly classInclude: import("@angular/core").InputSignal<string | undefined>;
67
+ readonly resize: import("@angular/core").InputSignal<"auto" | "none" | undefined>;
68
+ readonly templateLeftBottomInput: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
69
+ readonly templateRightBottomInput: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
70
+ readonly onlyAcceptNegativeValue: import("@angular/core").InputSignal<boolean | undefined>;
71
+ readonly autoAddZeroLessThan10InTypeInt: import("@angular/core").InputSignal<boolean | undefined>;
72
+ readonly maxLengthNumberCount: import("@angular/core").InputSignal<number | undefined>;
73
+ readonly classMessageErrorInclude: import("@angular/core").InputSignal<string | undefined>;
74
+ readonly ignoreStopPropagationEvent: import("@angular/core").InputSignal<boolean | undefined>;
75
+ readonly ignoreUnitRightClassReadOnly: import("@angular/core").InputSignal<boolean | undefined>;
76
+ readonly paddingRightCustomSpecific: import("@angular/core").InputSignal<number | undefined>;
77
+ readonly focusTimeOut: import("@angular/core").InputSignal<number | undefined>;
78
+ readonly ignoreAddItem: import("@angular/core").InputSignal<boolean>;
79
+ readonly ignoreRemove: import("@angular/core").InputSignal<boolean>;
80
+ readonly maxItems: import("@angular/core").InputSignal<number>;
81
+ readonly minItems: import("@angular/core").InputSignal<number>;
82
+ readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IInputAddFunctionControlEvent>;
83
+ readonly outRemove: import("@angular/core").OutputEmitterRef<IInputAdd>;
84
+ readonly outAddItem: import("@angular/core").OutputEmitterRef<IInputAdd>;
85
+ readonly outClickButtonLabel: import("@angular/core").OutputEmitterRef<IButton>;
86
+ readonly outSwitchEventLabel: import("@angular/core").OutputEmitterRef<ISwitchEvent>;
87
+ readonly outLabelRightClick: import("@angular/core").OutputEmitterRef<boolean>;
88
+ readonly outLabelLeftClick: import("@angular/core").OutputEmitterRef<MouseEvent>;
89
+ readonly outValueChange: import("@angular/core").OutputEmitterRef<IEmitValueChange>;
90
+ ngOnInit(): void;
91
+ private setMessageError;
92
+ private checkIsValid;
93
+ private checkValidRequired;
94
+ protected handlerAddItem(event: Event): void;
95
+ protected handlerRemove(event: Event, item: IInputAdd, index: number): void;
96
+ protected handlerClickButtonLabel(button: IButton): void;
97
+ protected handlerSwitchLabel(event: ISwitchEvent): void;
98
+ protected handlerEventLabelLeftLabel(event: MouseEvent): void;
99
+ protected handlerEventLabelRightLabel(): void;
100
+ protected handlerFunctionsControl(event: IInputValidFunctionControlEvent, item: IInputAdd): void;
101
+ protected handlerValueChange(value: string | number, item: IInputAdd): void;
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsAddComponent, never>;
103
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsAddComponent, "libs_ui-components-inputs-add", never, { "fieldNameBind": { "alias": "fieldNameBind"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "addItemButtonConfig": { "alias": "addItemButtonConfig"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "labelConfig": { "alias": "labelConfig"; "required": false; "isSignal": true; }; "formInputSpacing": { "alias": "formInputSpacing"; "required": false; "isSignal": true; }; "configItemAddToItems": { "alias": "configItemAddToItems"; "required": false; "isSignal": true; }; "rightTemplateItems": { "alias": "rightTemplateItems"; "required": false; "isSignal": true; }; "leftTemplateItems": { "alias": "leftTemplateItems"; "required": false; "isSignal": true; }; "templateLeftOutlet": { "alias": "templateLeftOutlet"; "required": false; "isSignal": true; }; "templateRightOutlet": { "alias": "templateRightOutlet"; "required": false; "isSignal": true; }; "ignoreWidthInput100": { "alias": "ignoreWidthInput100"; "required": false; "isSignal": true; }; "classIncludeInput": { "alias": "classIncludeInput"; "required": false; "isSignal": true; }; "classContainerInput": { "alias": "classContainerInput"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "ignoreValidEmptyField": { "alias": "ignoreValidEmptyField"; "required": false; "isSignal": true; }; "emitEmptyInDataTypeNumber": { "alias": "emitEmptyInDataTypeNumber"; "required": false; "isSignal": true; }; "tagInput": { "alias": "tagInput"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "fixedFloat": { "alias": "fixedFloat"; "required": false; "isSignal": true; }; "acceptNegativeValue": { "alias": "acceptNegativeValue"; "required": false; "isSignal": true; }; "valueUpDownNumber": { "alias": "valueUpDownNumber"; "required": false; "isSignal": true; }; "resetAutoCompletePassword": { "alias": "resetAutoCompletePassword"; "required": false; "isSignal": true; }; "hiddenContent": { "alias": "hiddenContent"; "required": false; "isSignal": true; }; "noBorder": { "alias": "noBorder"; "required": false; "isSignal": true; }; "backgroundNone": { "alias": "backgroundNone"; "required": false; "isSignal": true; }; "useColorModeExist": { "alias": "useColorModeExist"; "required": false; "isSignal": true; }; "keepPlaceholderOnly": { "alias": "keepPlaceholderOnly"; "required": false; "isSignal": true; }; "classContainerBottomInput": { "alias": "classContainerBottomInput"; "required": false; "isSignal": true; }; "autoRemoveEmoji": { "alias": "autoRemoveEmoji"; "required": false; "isSignal": true; }; "defaultHeight": { "alias": "defaultHeight"; "required": false; "isSignal": true; }; "ignoreShowError": { "alias": "ignoreShowError"; "required": false; "isSignal": true; }; "borderError": { "alias": "borderError"; "required": false; "isSignal": true; }; "unitsLeft": { "alias": "unitsLeft"; "required": false; "isSignal": true; }; "configUnitLeft": { "alias": "configUnitLeft"; "required": false; "isSignal": true; }; "keySelectedUnitLeft": { "alias": "keySelectedUnitLeft"; "required": false; "isSignal": true; }; "unitsRight": { "alias": "unitsRight"; "required": false; "isSignal": true; }; "configUnitRight": { "alias": "configUnitRight"; "required": false; "isSignal": true; }; "keySelectedUnitRight": { "alias": "keySelectedUnitRight"; "required": false; "isSignal": true; }; "maxValueNumber": { "alias": "maxValueNumber"; "required": false; "isSignal": true; }; "minValueNumber": { "alias": "minValueNumber"; "required": false; "isSignal": true; }; "isBaselineStyle": { "alias": "isBaselineStyle"; "required": false; "isSignal": true; }; "valuePatternShowError": { "alias": "valuePatternShowError"; "required": false; "isSignal": true; }; "validPattern": { "alias": "validPattern"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; "validMinLength": { "alias": "validMinLength"; "required": false; "isSignal": true; }; "validMinValue": { "alias": "validMinValue"; "required": false; "isSignal": true; }; "validMaxValue": { "alias": "validMaxValue"; "required": false; "isSignal": true; }; "validMaxLength": { "alias": "validMaxLength"; "required": false; "isSignal": true; }; "validDuplicate": { "alias": "validDuplicate"; "required": false; "isSignal": true; }; "functionValid": { "alias": "functionValid"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "positionMessageErrorStartInput": { "alias": "positionMessageErrorStartInput"; "required": false; "isSignal": true; }; "classInclude": { "alias": "classInclude"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "templateLeftBottomInput": { "alias": "templateLeftBottomInput"; "required": false; "isSignal": true; }; "templateRightBottomInput": { "alias": "templateRightBottomInput"; "required": false; "isSignal": true; }; "onlyAcceptNegativeValue": { "alias": "onlyAcceptNegativeValue"; "required": false; "isSignal": true; }; "autoAddZeroLessThan10InTypeInt": { "alias": "autoAddZeroLessThan10InTypeInt"; "required": false; "isSignal": true; }; "maxLengthNumberCount": { "alias": "maxLengthNumberCount"; "required": false; "isSignal": true; }; "classMessageErrorInclude": { "alias": "classMessageErrorInclude"; "required": false; "isSignal": true; }; "ignoreStopPropagationEvent": { "alias": "ignoreStopPropagationEvent"; "required": false; "isSignal": true; }; "ignoreUnitRightClassReadOnly": { "alias": "ignoreUnitRightClassReadOnly"; "required": false; "isSignal": true; }; "paddingRightCustomSpecific": { "alias": "paddingRightCustomSpecific"; "required": false; "isSignal": true; }; "focusTimeOut": { "alias": "focusTimeOut"; "required": false; "isSignal": true; }; "ignoreAddItem": { "alias": "ignoreAddItem"; "required": false; "isSignal": true; }; "ignoreRemove": { "alias": "ignoreRemove"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "minItems": { "alias": "minItems"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "outFunctionsControl": "outFunctionsControl"; "outRemove": "outRemove"; "outAddItem": "outAddItem"; "outClickButtonLabel": "outClickButtonLabel"; "outSwitchEventLabel": "outSwitchEventLabel"; "outLabelRightClick": "outLabelRightClick"; "outLabelLeftClick": "outLabelLeftClick"; "outValueChange": "outValueChange"; }, never, never, true, never>;
104
+ }
@@ -0,0 +1,3 @@
1
+ import { ITemplateRightLeftItem } from "../interfaces/input-add.interface";
2
+ export declare const rightTemplateItems: () => ITemplateRightLeftItem;
3
+ export declare const leftTemplateItems: () => ITemplateRightLeftItem;
@@ -0,0 +1,228 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { NgTemplateOutlet } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, input, model, output, signal } from '@angular/core';
4
+ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
5
+ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';
6
+ import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
7
+ import { cloneDeep, uuid } from '@libs-ui/utils';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+ import { leftTemplateItems, rightTemplateItems } from './defines/add.define';
10
+ import * as i0 from "@angular/core";
11
+ export class LibsUiComponentsInputsAddComponent {
12
+ /* PROPERTY */
13
+ timeOutKeyUp = signal(0);
14
+ /* INPUT */
15
+ fieldNameBind = input.required();
16
+ items = model.required();
17
+ readonly = input(false);
18
+ disable = input(false);
19
+ addItemButtonConfig = input();
20
+ placeholder = input();
21
+ labelConfig = input();
22
+ formInputSpacing = input(8); // khoảng cách giữa hai ô input
23
+ configItemAddToItems = input();
24
+ rightTemplateItems = input(rightTemplateItems());
25
+ leftTemplateItems = input(leftTemplateItems());
26
+ templateLeftOutlet = input();
27
+ templateRightOutlet = input();
28
+ ignoreWidthInput100 = input();
29
+ classIncludeInput = input();
30
+ classContainerInput = input();
31
+ showCount = input();
32
+ ignoreValidEmptyField = input(); // chỉ cần có ít nhất 1 field có giá trị là valid
33
+ emitEmptyInDataTypeNumber = input();
34
+ tagInput = input();
35
+ dataType = input();
36
+ fixedFloat = input();
37
+ acceptNegativeValue = input();
38
+ valueUpDownNumber = input();
39
+ resetAutoCompletePassword = input();
40
+ hiddenContent = input(); // sử dụng để set type cho input dạng text hay password
41
+ noBorder = input();
42
+ backgroundNone = input();
43
+ useColorModeExist = input();
44
+ keepPlaceholderOnly = input();
45
+ classContainerBottomInput = input();
46
+ autoRemoveEmoji = input();
47
+ defaultHeight = input();
48
+ ignoreShowError = input();
49
+ borderError = input();
50
+ unitsLeft = input();
51
+ configUnitLeft = input({
52
+ fieldKey: 'id',
53
+ fieldLabel: 'label',
54
+ });
55
+ keySelectedUnitLeft = input();
56
+ unitsRight = input();
57
+ configUnitRight = input({
58
+ fieldKey: 'id',
59
+ fieldLabel: 'label',
60
+ });
61
+ keySelectedUnitRight = input();
62
+ maxValueNumber = input(Number.MAX_SAFE_INTEGER);
63
+ minValueNumber = input();
64
+ isBaselineStyle = input(); // align-items-baseline dùng khi căn input thẳng hàng với tất cả các phần khác dù có validate hay bất cứ 1 cái gì
65
+ valuePatternShowError = input(); // mặc định khi test pattern trả tề giá trị bằng false sẽ báo lỗi
66
+ validPattern = input();
67
+ validRequired = input();
68
+ validMinLength = input();
69
+ validMinValue = input();
70
+ validMaxValue = input();
71
+ validMaxLength = input();
72
+ validDuplicate = input();
73
+ functionValid = input();
74
+ maxLength = input();
75
+ positionMessageErrorStartInput = input(); // khi có template left và right mà muốn mesage error xuất hiện bắt đầu từ ô input thay vì bắt đầu từ template trái
76
+ classInclude = input();
77
+ resize = input();
78
+ templateLeftBottomInput = input();
79
+ templateRightBottomInput = input();
80
+ onlyAcceptNegativeValue = input();
81
+ autoAddZeroLessThan10InTypeInt = input();
82
+ maxLengthNumberCount = input();
83
+ classMessageErrorInclude = input();
84
+ ignoreStopPropagationEvent = input();
85
+ ignoreUnitRightClassReadOnly = input();
86
+ paddingRightCustomSpecific = input(); // fix paddingRight count ko auto tính #52185
87
+ focusTimeOut = input();
88
+ ignoreAddItem = input(false);
89
+ ignoreRemove = input(false);
90
+ maxItems = input(5); // số lượng input tối đa
91
+ minItems = input(1); // không được phép xóa nếu số lượng items <= minItems.length
92
+ /* OUTPUT */
93
+ outFunctionsControl = output();
94
+ outRemove = output();
95
+ outAddItem = output();
96
+ outClickButtonLabel = output();
97
+ outSwitchEventLabel = output();
98
+ outLabelRightClick = output();
99
+ outLabelLeftClick = output();
100
+ outValueChange = output();
101
+ ngOnInit() {
102
+ if (!this.items().length) {
103
+ this.items.set([{ [this.fieldNameBind()]: '' }]);
104
+ }
105
+ this.items.update(items => items.map(item => {
106
+ return { ...item, uniqKey: uuid() };
107
+ }));
108
+ this.outFunctionsControl.emit({
109
+ checkIsValid: this.checkIsValid.bind(this),
110
+ setMessageError: this.setMessageError.bind(this)
111
+ });
112
+ }
113
+ /* FUNCTIONS */
114
+ async setMessageError(message) {
115
+ for (const item of this.items()) {
116
+ await item.functionControl?.setMessageError(message);
117
+ }
118
+ }
119
+ async checkIsValid(checkValidRequired = true, currentItem) {
120
+ let valid = true;
121
+ if (this.disable() || this.readonly()) {
122
+ return true;
123
+ }
124
+ for (const input of this.items()) {
125
+ if (input.readonly || input.disable) {
126
+ continue;
127
+ }
128
+ if (checkValidRequired) {
129
+ if (!(await this.checkValidRequired(input))) {
130
+ valid = false;
131
+ }
132
+ continue;
133
+ }
134
+ if (currentItem?.uniqKey === input.uniqKey) {
135
+ valid = await input.functionControl?.checkIsValid() ?? false;
136
+ }
137
+ if (!this.validDuplicate()) {
138
+ continue;
139
+ }
140
+ if (!input[this.fieldNameBind()]) {
141
+ continue;
142
+ }
143
+ if (typeof input[this.fieldNameBind()] === 'string' && !input[this.fieldNameBind()].trim()) {
144
+ continue;
145
+ }
146
+ const fieldsDuplicate = this.items().filter(element => element[this.fieldNameBind()] === input[this.fieldNameBind()]);
147
+ if (!fieldsDuplicate || !fieldsDuplicate.length) {
148
+ input.functionControl?.setMessageError('');
149
+ continue;
150
+ }
151
+ if (fieldsDuplicate.length < 2) {
152
+ input.functionControl?.setMessageError('');
153
+ continue;
154
+ }
155
+ valid = false;
156
+ input.functionControl?.setMessageError(this.validDuplicate()?.message || 'i18n_valid_duplicate_msg');
157
+ }
158
+ return valid;
159
+ }
160
+ async checkValidRequired(input) {
161
+ let valid = true;
162
+ const validIfAtLeastOneValue = this.ignoreValidEmptyField() && this.items().find(item => !!item[this.fieldNameBind()]?.trim());
163
+ if (validIfAtLeastOneValue) {
164
+ input.functionControl?.setMessageError('');
165
+ return true;
166
+ }
167
+ if (!(await input.functionControl?.checkIsValid())) {
168
+ valid = false;
169
+ }
170
+ return valid;
171
+ }
172
+ handlerAddItem(event) {
173
+ event.stopPropagation();
174
+ if (!this.configItemAddToItems()) {
175
+ const newItem = { uniqKey: uuid(), [this.fieldNameBind()]: '' };
176
+ this.items.update(items => [...items, newItem]);
177
+ this.outAddItem.emit(newItem);
178
+ return;
179
+ }
180
+ const newItem = { ...cloneDeep(this.configItemAddToItems), uniqKey: uuid(), [this.fieldNameBind()]: '' };
181
+ this.items.update(items => [...items, newItem]);
182
+ this.outAddItem.emit(newItem);
183
+ }
184
+ handlerRemove(event, item, index) {
185
+ event.stopPropagation();
186
+ this.items.update(currentItems => currentItems.filter((_, i) => i !== index));
187
+ this.outRemove.emit(item);
188
+ this.timeOutKeyUp.set(setTimeout(() => {
189
+ clearTimeout(this.timeOutKeyUp());
190
+ this.checkIsValid(false);
191
+ }, 250));
192
+ }
193
+ handlerClickButtonLabel(button) {
194
+ this.outClickButtonLabel.emit(button);
195
+ }
196
+ handlerSwitchLabel(event) {
197
+ this.outSwitchEventLabel.emit(event);
198
+ }
199
+ handlerEventLabelLeftLabel(event) {
200
+ this.outLabelLeftClick.emit(event);
201
+ }
202
+ handlerEventLabelRightLabel() {
203
+ this.outLabelRightClick.emit(true);
204
+ }
205
+ handlerFunctionsControl(event, item) {
206
+ item.functionControl = event;
207
+ }
208
+ handlerValueChange(value, item) {
209
+ item[this.fieldNameBind()] = value;
210
+ this.outValueChange.emit({ value, item });
211
+ this.timeOutKeyUp.set(setTimeout(() => {
212
+ clearTimeout(this.timeOutKeyUp());
213
+ this.checkIsValid(false, item);
214
+ }, 250));
215
+ }
216
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsAddComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
217
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsAddComponent, isStandalone: true, selector: "libs_ui-components-inputs-add", inputs: { fieldNameBind: { classPropertyName: "fieldNameBind", publicName: "fieldNameBind", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, addItemButtonConfig: { classPropertyName: "addItemButtonConfig", publicName: "addItemButtonConfig", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, formInputSpacing: { classPropertyName: "formInputSpacing", publicName: "formInputSpacing", isSignal: true, isRequired: false, transformFunction: null }, configItemAddToItems: { classPropertyName: "configItemAddToItems", publicName: "configItemAddToItems", isSignal: true, isRequired: false, transformFunction: null }, rightTemplateItems: { classPropertyName: "rightTemplateItems", publicName: "rightTemplateItems", isSignal: true, isRequired: false, transformFunction: null }, leftTemplateItems: { classPropertyName: "leftTemplateItems", publicName: "leftTemplateItems", isSignal: true, isRequired: false, transformFunction: null }, templateLeftOutlet: { classPropertyName: "templateLeftOutlet", publicName: "templateLeftOutlet", isSignal: true, isRequired: false, transformFunction: null }, templateRightOutlet: { classPropertyName: "templateRightOutlet", publicName: "templateRightOutlet", isSignal: true, isRequired: false, transformFunction: null }, ignoreWidthInput100: { classPropertyName: "ignoreWidthInput100", publicName: "ignoreWidthInput100", isSignal: true, isRequired: false, transformFunction: null }, classIncludeInput: { classPropertyName: "classIncludeInput", publicName: "classIncludeInput", isSignal: true, isRequired: false, transformFunction: null }, classContainerInput: { classPropertyName: "classContainerInput", publicName: "classContainerInput", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, ignoreValidEmptyField: { classPropertyName: "ignoreValidEmptyField", publicName: "ignoreValidEmptyField", isSignal: true, isRequired: false, transformFunction: null }, emitEmptyInDataTypeNumber: { classPropertyName: "emitEmptyInDataTypeNumber", publicName: "emitEmptyInDataTypeNumber", isSignal: true, isRequired: false, transformFunction: null }, tagInput: { classPropertyName: "tagInput", publicName: "tagInput", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, fixedFloat: { classPropertyName: "fixedFloat", publicName: "fixedFloat", isSignal: true, isRequired: false, transformFunction: null }, acceptNegativeValue: { classPropertyName: "acceptNegativeValue", publicName: "acceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null }, valueUpDownNumber: { classPropertyName: "valueUpDownNumber", publicName: "valueUpDownNumber", isSignal: true, isRequired: false, transformFunction: null }, resetAutoCompletePassword: { classPropertyName: "resetAutoCompletePassword", publicName: "resetAutoCompletePassword", isSignal: true, isRequired: false, transformFunction: null }, hiddenContent: { classPropertyName: "hiddenContent", publicName: "hiddenContent", isSignal: true, isRequired: false, transformFunction: null }, noBorder: { classPropertyName: "noBorder", publicName: "noBorder", isSignal: true, isRequired: false, transformFunction: null }, backgroundNone: { classPropertyName: "backgroundNone", publicName: "backgroundNone", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, keepPlaceholderOnly: { classPropertyName: "keepPlaceholderOnly", publicName: "keepPlaceholderOnly", isSignal: true, isRequired: false, transformFunction: null }, classContainerBottomInput: { classPropertyName: "classContainerBottomInput", publicName: "classContainerBottomInput", isSignal: true, isRequired: false, transformFunction: null }, autoRemoveEmoji: { classPropertyName: "autoRemoveEmoji", publicName: "autoRemoveEmoji", isSignal: true, isRequired: false, transformFunction: null }, defaultHeight: { classPropertyName: "defaultHeight", publicName: "defaultHeight", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowError: { classPropertyName: "ignoreShowError", publicName: "ignoreShowError", isSignal: true, isRequired: false, transformFunction: null }, borderError: { classPropertyName: "borderError", publicName: "borderError", isSignal: true, isRequired: false, transformFunction: null }, unitsLeft: { classPropertyName: "unitsLeft", publicName: "unitsLeft", isSignal: true, isRequired: false, transformFunction: null }, configUnitLeft: { classPropertyName: "configUnitLeft", publicName: "configUnitLeft", isSignal: true, isRequired: false, transformFunction: null }, keySelectedUnitLeft: { classPropertyName: "keySelectedUnitLeft", publicName: "keySelectedUnitLeft", isSignal: true, isRequired: false, transformFunction: null }, unitsRight: { classPropertyName: "unitsRight", publicName: "unitsRight", isSignal: true, isRequired: false, transformFunction: null }, configUnitRight: { classPropertyName: "configUnitRight", publicName: "configUnitRight", isSignal: true, isRequired: false, transformFunction: null }, keySelectedUnitRight: { classPropertyName: "keySelectedUnitRight", publicName: "keySelectedUnitRight", isSignal: true, isRequired: false, transformFunction: null }, maxValueNumber: { classPropertyName: "maxValueNumber", publicName: "maxValueNumber", isSignal: true, isRequired: false, transformFunction: null }, minValueNumber: { classPropertyName: "minValueNumber", publicName: "minValueNumber", isSignal: true, isRequired: false, transformFunction: null }, isBaselineStyle: { classPropertyName: "isBaselineStyle", publicName: "isBaselineStyle", isSignal: true, isRequired: false, transformFunction: null }, valuePatternShowError: { classPropertyName: "valuePatternShowError", publicName: "valuePatternShowError", isSignal: true, isRequired: false, transformFunction: null }, validPattern: { classPropertyName: "validPattern", publicName: "validPattern", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, validMinLength: { classPropertyName: "validMinLength", publicName: "validMinLength", isSignal: true, isRequired: false, transformFunction: null }, validMinValue: { classPropertyName: "validMinValue", publicName: "validMinValue", isSignal: true, isRequired: false, transformFunction: null }, validMaxValue: { classPropertyName: "validMaxValue", publicName: "validMaxValue", isSignal: true, isRequired: false, transformFunction: null }, validMaxLength: { classPropertyName: "validMaxLength", publicName: "validMaxLength", isSignal: true, isRequired: false, transformFunction: null }, validDuplicate: { classPropertyName: "validDuplicate", publicName: "validDuplicate", isSignal: true, isRequired: false, transformFunction: null }, functionValid: { classPropertyName: "functionValid", publicName: "functionValid", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, positionMessageErrorStartInput: { classPropertyName: "positionMessageErrorStartInput", publicName: "positionMessageErrorStartInput", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, templateLeftBottomInput: { classPropertyName: "templateLeftBottomInput", publicName: "templateLeftBottomInput", isSignal: true, isRequired: false, transformFunction: null }, templateRightBottomInput: { classPropertyName: "templateRightBottomInput", publicName: "templateRightBottomInput", isSignal: true, isRequired: false, transformFunction: null }, onlyAcceptNegativeValue: { classPropertyName: "onlyAcceptNegativeValue", publicName: "onlyAcceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null }, autoAddZeroLessThan10InTypeInt: { classPropertyName: "autoAddZeroLessThan10InTypeInt", publicName: "autoAddZeroLessThan10InTypeInt", isSignal: true, isRequired: false, transformFunction: null }, maxLengthNumberCount: { classPropertyName: "maxLengthNumberCount", publicName: "maxLengthNumberCount", isSignal: true, isRequired: false, transformFunction: null }, classMessageErrorInclude: { classPropertyName: "classMessageErrorInclude", publicName: "classMessageErrorInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreUnitRightClassReadOnly: { classPropertyName: "ignoreUnitRightClassReadOnly", publicName: "ignoreUnitRightClassReadOnly", isSignal: true, isRequired: false, transformFunction: null }, paddingRightCustomSpecific: { classPropertyName: "paddingRightCustomSpecific", publicName: "paddingRightCustomSpecific", isSignal: true, isRequired: false, transformFunction: null }, focusTimeOut: { classPropertyName: "focusTimeOut", publicName: "focusTimeOut", isSignal: true, isRequired: false, transformFunction: null }, ignoreAddItem: { classPropertyName: "ignoreAddItem", publicName: "ignoreAddItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreRemove: { classPropertyName: "ignoreRemove", publicName: "ignoreRemove", isSignal: true, isRequired: false, transformFunction: null }, maxItems: { classPropertyName: "maxItems", publicName: "maxItems", isSignal: true, isRequired: false, transformFunction: null }, minItems: { classPropertyName: "minItems", publicName: "minItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", outFunctionsControl: "outFunctionsControl", outRemove: "outRemove", outAddItem: "outAddItem", outClickButtonLabel: "outClickButtonLabel", outSwitchEventLabel: "outSwitchEventLabel", outLabelRightClick: "outLabelRightClick", outLabelLeftClick: "outLabelLeftClick", outValueChange: "outValueChange" }, ngImport: i0, template: "@if (fieldNameBind() && items(); as items) {\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [labelLeft]=\"labelConfig.labelLeft\"\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [labelLeftBehindToggleButton]=\"labelConfig.labelLeftBehindToggleButton\"\n [popover]=\"labelConfig.popover\"\n [required]=\"labelConfig.required\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [labelRightRequired]=\"labelConfig.labelRightRequired\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleSize]=\"labelConfig.toggleSize || 'default'\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [zIndexPopover]=\"labelConfig.zIndexPopover || 10\"\n [timerDestroyPopover]=\"labelConfig.timerDestroyPopover || 0\"\n [count]=\"labelConfig.count\"\n [limitLength]=\"labelConfig.limitLength\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelLeftClick)=\"handlerEventLabelLeftLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n }\n @for (item of items; track item.uniqKey; let first = $first; let index = $index) {\n <div class=\"flex\"\n [style.marginTop.px]=\"!first ? formInputSpacing() : 0\">\n\n @if (leftTemplateItems(); as leftTemplateItems) {\n <div class=\"flex {{ leftTemplateItems.classInclude }}\">\n @for (rightItem of leftTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('template') {\n @if (item.templateLeftOutlet || templateLeftOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateLeftOutlet || templateLeftOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n <libs_ui-components-inputs-valid [item]=\"item\"\n [fieldNameBind]=\"fieldNameBind()\"\n [placeholder]=\"item.placeholder ?? placeholder()\"\n [emitEmptyInDataTypeNumber]=\"emitEmptyInDataTypeNumber()\"\n [tagInput]=\"tagInput()\"\n [dataType]=\"dataType()\"\n [fixedFloat]=\"fixedFloat()\"\n [readonly]=\"readonly() || item.readonly\"\n [disable]=\"disable() || item.disable\"\n [classContainerInput]=\"classContainerInput()\"\n [classIncludeInput]=\"classIncludeInput()\"\n [acceptNegativeValue]=\"acceptNegativeValue()\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [ignoreWidthInput100]=\"ignoreWidthInput100()\"\n [showCount]=\"showCount()\"\n [resetAutoCompletePassword]=\"resetAutoCompletePassword()\"\n [hiddenContent]=\"hiddenContent()\"\n [noBorder]=\"noBorder()\"\n [backgroundNone]=\"backgroundNone()\"\n [useColorModeExist]=\"useColorModeExist()\"\n [keepPlaceholderOnly]=\"keepPlaceholderOnly()\"\n [classContainerBottomInput]=\"classContainerBottomInput()\"\n [autoRemoveEmoji]=\"autoRemoveEmoji()\"\n [defaultHeight]=\"defaultHeight()\"\n [ignoreShowError]=\"ignoreShowError()\"\n [borderError]=\"borderError()\"\n [unitsLeft]=\"item.unitsLeft || unitsLeft()\"\n [configUnitLeft]=\"item.configUnitLeft || configUnitLeft()\"\n [keySelectedUnitLeft]=\"item.keySelectedUnitLeft || keySelectedUnitLeft()\"\n [unitsRight]=\"item.unitsRight || unitsRight()\"\n [configUnitRight]=\"item.configUnitRight || configUnitRight()\"\n [keySelectedUnitRight]=\"item.keySelectedUnitRight || keySelectedUnitRight()\"\n [maxValueNumber]=\"item.maxValueNumber || maxValueNumber()\"\n [minValueNumber]=\"item.minValueNumber || minValueNumber()\"\n [isBaselineStyle]=\"isBaselineStyle()\"\n [valuePatternShowError]=\"valuePatternShowError()\"\n [validPattern]=\"validPattern()\"\n [validRequired]=\"validRequired()\"\n [validMinLength]=\"validMinLength()\"\n [validMinValue]=\"validMinValue()\"\n [validMaxValue]=\"validMaxValue()\"\n [validMaxLength]=\"validMaxLength()\"\n [functionValid]=\"functionValid()\"\n [maxLength]=\"item.maxLength || maxLength()\"\n [positionMessageErrorStartInput]=\"positionMessageErrorStartInput()\"\n [classInclude]=\"classInclude()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [autoAddZeroLessThan10InTypeInt]=\"autoAddZeroLessThan10InTypeInt()\"\n [maxLengthNumberCount]=\"maxLengthNumberCount()\"\n [classMessageErrorInclude]=\"classMessageErrorInclude()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [ignoreUnitRightClassReadOnly]=\"ignoreUnitRightClassReadOnly()\"\n [paddingRightCustomSpecific]=\"paddingRightCustomSpecific()\"\n [focusTimeOut]=\"focusTimeOut()\"\n (outValueChange)=\"handlerValueChange($event, item)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event, item)\" />\n\n @if (rightTemplateItems(); as rightTemplateItems) {\n <div class=\"flex items-center {{ rightTemplateItems.classInclude }}\"\n [style.height.px]=\"defaultHeight() || 32\">\n @for (rightItem of rightTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('remove') {\n @if (!ignoreRemove() && !item.ignoreRemove && items.length > minItems()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-remove mr-[0px]'\"\n classInclude=\"libs-ui-icon-hover-danger !p-[2px] ml-[16px] {{ rightItem.classInclude }}\"\n (outClick)=\"handlerRemove($event, item, index)\" />\n }\n }\n\n @case ('template') {\n @if (item.templateRightOutlet || templateRightOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateRightOutlet || templateRightOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n </div>\n }\n}\n\n@if (!ignoreAddItem() && (!maxItems() || items().length < maxItems())) {\n <libs_ui-components-buttons-button [type]=\"addItemButtonConfig()?.type || 'button-link-primary'\"\n [label]=\"addItemButtonConfig()?.label || 'i18n_add_new'\"\n [classLabel]=\"addItemButtonConfig()?.classLabel || 'libs-uifont-head-5m'\"\n [classIconLeft]=\"addItemButtonConfig()?.classIconLeft || 'libs-ui-icon-add text-[10px] mr-[8px]'\"\n [classInclude]=\"addItemButtonConfig()?.classInclude || '!pb-0 !pl-0 !py-[2px] mt-[8px]'\"\n [disable]=\"disable() || false\"\n (outClick)=\"handlerAddItem($event)\" />\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "hiddenContent", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
218
+ }
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsAddComponent, decorators: [{
220
+ type: Component,
221
+ args: [{ selector: 'libs_ui-components-inputs-add', standalone: true, imports: [
222
+ TranslateModule, NgTemplateOutlet,
223
+ LibsUiComponentsButtonsButtonComponent,
224
+ LibsUiComponentsInputsValidComponent,
225
+ LibsUiComponentsLabelComponent
226
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (fieldNameBind() && items(); as items) {\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [labelLeft]=\"labelConfig.labelLeft\"\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [labelLeftBehindToggleButton]=\"labelConfig.labelLeftBehindToggleButton\"\n [popover]=\"labelConfig.popover\"\n [required]=\"labelConfig.required\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [labelRightRequired]=\"labelConfig.labelRightRequired\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleSize]=\"labelConfig.toggleSize || 'default'\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [zIndexPopover]=\"labelConfig.zIndexPopover || 10\"\n [timerDestroyPopover]=\"labelConfig.timerDestroyPopover || 0\"\n [count]=\"labelConfig.count\"\n [limitLength]=\"labelConfig.limitLength\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelLeftClick)=\"handlerEventLabelLeftLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n }\n @for (item of items; track item.uniqKey; let first = $first; let index = $index) {\n <div class=\"flex\"\n [style.marginTop.px]=\"!first ? formInputSpacing() : 0\">\n\n @if (leftTemplateItems(); as leftTemplateItems) {\n <div class=\"flex {{ leftTemplateItems.classInclude }}\">\n @for (rightItem of leftTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('template') {\n @if (item.templateLeftOutlet || templateLeftOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateLeftOutlet || templateLeftOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n <libs_ui-components-inputs-valid [item]=\"item\"\n [fieldNameBind]=\"fieldNameBind()\"\n [placeholder]=\"item.placeholder ?? placeholder()\"\n [emitEmptyInDataTypeNumber]=\"emitEmptyInDataTypeNumber()\"\n [tagInput]=\"tagInput()\"\n [dataType]=\"dataType()\"\n [fixedFloat]=\"fixedFloat()\"\n [readonly]=\"readonly() || item.readonly\"\n [disable]=\"disable() || item.disable\"\n [classContainerInput]=\"classContainerInput()\"\n [classIncludeInput]=\"classIncludeInput()\"\n [acceptNegativeValue]=\"acceptNegativeValue()\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [ignoreWidthInput100]=\"ignoreWidthInput100()\"\n [showCount]=\"showCount()\"\n [resetAutoCompletePassword]=\"resetAutoCompletePassword()\"\n [hiddenContent]=\"hiddenContent()\"\n [noBorder]=\"noBorder()\"\n [backgroundNone]=\"backgroundNone()\"\n [useColorModeExist]=\"useColorModeExist()\"\n [keepPlaceholderOnly]=\"keepPlaceholderOnly()\"\n [classContainerBottomInput]=\"classContainerBottomInput()\"\n [autoRemoveEmoji]=\"autoRemoveEmoji()\"\n [defaultHeight]=\"defaultHeight()\"\n [ignoreShowError]=\"ignoreShowError()\"\n [borderError]=\"borderError()\"\n [unitsLeft]=\"item.unitsLeft || unitsLeft()\"\n [configUnitLeft]=\"item.configUnitLeft || configUnitLeft()\"\n [keySelectedUnitLeft]=\"item.keySelectedUnitLeft || keySelectedUnitLeft()\"\n [unitsRight]=\"item.unitsRight || unitsRight()\"\n [configUnitRight]=\"item.configUnitRight || configUnitRight()\"\n [keySelectedUnitRight]=\"item.keySelectedUnitRight || keySelectedUnitRight()\"\n [maxValueNumber]=\"item.maxValueNumber || maxValueNumber()\"\n [minValueNumber]=\"item.minValueNumber || minValueNumber()\"\n [isBaselineStyle]=\"isBaselineStyle()\"\n [valuePatternShowError]=\"valuePatternShowError()\"\n [validPattern]=\"validPattern()\"\n [validRequired]=\"validRequired()\"\n [validMinLength]=\"validMinLength()\"\n [validMinValue]=\"validMinValue()\"\n [validMaxValue]=\"validMaxValue()\"\n [validMaxLength]=\"validMaxLength()\"\n [functionValid]=\"functionValid()\"\n [maxLength]=\"item.maxLength || maxLength()\"\n [positionMessageErrorStartInput]=\"positionMessageErrorStartInput()\"\n [classInclude]=\"classInclude()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [autoAddZeroLessThan10InTypeInt]=\"autoAddZeroLessThan10InTypeInt()\"\n [maxLengthNumberCount]=\"maxLengthNumberCount()\"\n [classMessageErrorInclude]=\"classMessageErrorInclude()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [ignoreUnitRightClassReadOnly]=\"ignoreUnitRightClassReadOnly()\"\n [paddingRightCustomSpecific]=\"paddingRightCustomSpecific()\"\n [focusTimeOut]=\"focusTimeOut()\"\n (outValueChange)=\"handlerValueChange($event, item)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event, item)\" />\n\n @if (rightTemplateItems(); as rightTemplateItems) {\n <div class=\"flex items-center {{ rightTemplateItems.classInclude }}\"\n [style.height.px]=\"defaultHeight() || 32\">\n @for (rightItem of rightTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('remove') {\n @if (!ignoreRemove() && !item.ignoreRemove && items.length > minItems()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-remove mr-[0px]'\"\n classInclude=\"libs-ui-icon-hover-danger !p-[2px] ml-[16px] {{ rightItem.classInclude }}\"\n (outClick)=\"handlerRemove($event, item, index)\" />\n }\n }\n\n @case ('template') {\n @if (item.templateRightOutlet || templateRightOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateRightOutlet || templateRightOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n </div>\n }\n}\n\n@if (!ignoreAddItem() && (!maxItems() || items().length < maxItems())) {\n <libs_ui-components-buttons-button [type]=\"addItemButtonConfig()?.type || 'button-link-primary'\"\n [label]=\"addItemButtonConfig()?.label || 'i18n_add_new'\"\n [classLabel]=\"addItemButtonConfig()?.classLabel || 'libs-uifont-head-5m'\"\n [classIconLeft]=\"addItemButtonConfig()?.classIconLeft || 'libs-ui-icon-add text-[10px] mr-[8px]'\"\n [classInclude]=\"addItemButtonConfig()?.classInclude || '!pb-0 !pl-0 !py-[2px] mt-[8px]'\"\n [disable]=\"disable() || false\"\n (outClick)=\"handlerAddItem($event)\" />\n}\n" }]
227
+ }] });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvYWRkL3NyYy9hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9hZGQvc3JjL2FkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFHdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFXLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckcsT0FBTyxFQUErRyxvQ0FBb0MsRUFBNkIsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoTyxPQUFPLEVBQVUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUduRixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQjdFLE1BQU0sT0FBTyxrQ0FBa0M7SUFDN0MsY0FBYztJQUNOLFlBQVksR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFFekMsV0FBVztJQUNGLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDekMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW9CLENBQUM7SUFDM0MsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqQyxPQUFPLEdBQUcs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SUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO3dHQXZQVSxrQ0FBa0M7NEZBQWxDLGtDQUFrQywrK1ZDOUIvQyxnbFBBb0pBLHlERDdISSxlQUFlLCtCQUFFLGdCQUFnQixvSkFDakMsc0NBQXNDLGloQkFDdEMsb0NBQW9DLHF6REFDcEMsOEJBQThCOzs0RkFJckIsa0NBQWtDO2tCQWQ5QyxTQUFTOytCQUVFLCtCQUErQixjQUc3QixJQUFJLFdBQ1A7d0JBQ1AsZUFBZSxFQUFFLGdCQUFnQjt3QkFDakMsc0NBQXNDO3dCQUN0QyxvQ0FBb0M7d0JBQ3BDLDhCQUE4QjtxQkFDL0IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgbW9kZWwsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQnV0dG9uLCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSUlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2xFdmVudCwgSUlucHV0VmFsaWRVbml0Q29uZmlnLCBJVmFsaWQsIElWYWxpZExlbmd0aCwgSVZhbGlkUGF0dGVybiwgSVZhbGlkUmVxdWlyZWQsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNWYWxpZENvbXBvbmVudCwgVFlQRV9GVU5DVElPTl9JTlBVVF9WQUxJRCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkJztcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJU3dpdGNoRXZlbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXN3aXRjaCc7XG5pbXBvcnQgeyBUWVBFX1RFTVBMQVRFX1JFRiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCB1dWlkIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBsZWZ0VGVtcGxhdGVJdGVtcywgcmlnaHRUZW1wbGF0ZUl0ZW1zIH0gZnJvbSAnLi9kZWZpbmVzL2FkZC5kZWZpbmUnO1xuaW1wb3J0IHsgSUVtaXRWYWx1ZUNoYW5nZSwgSUlucHV0QWRkLCBJVGVtcGxhdGVSaWdodExlZnRJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IElJbnB1dEFkZEZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Z1bmN0aW9uLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1hZGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0lucHV0c1ZhbGlkQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzQWRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyogUFJPUEVSVFkgKi9cbiAgcHJpdmF0ZSB0aW1lT3V0S2V5VXAgPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBmaWVsZE5hbWVCaW5kID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpdGVtcyA9IG1vZGVsLnJlcXVpcmVkPEFycmF5PElJbnB1dEFkZD4+KCk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhZGRJdGVtQnV0dG9uQ29uZmlnID0gaW5wdXQ8SUJ1dHRvbj4oKTtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGxhYmVsQ29uZmlnID0gaW5wdXQ8SUxhYmVsPigpO1xuICByZWFkb25seSBmb3JtSW5wdXRTcGFjaW5nID0gaW5wdXQ8bnVtYmVyPig4KTsgLy8ga2hv4bqjbmcgY8OhY2ggZ2nhu69hIGhhaSDDtCBpbnB1dFxuICByZWFkb25seSBjb25maWdJdGVtQWRkVG9JdGVtcyA9IGlucHV0PElJbnB1dEFkZD4oKTtcbiAgcmVhZG9ubHkgcmlnaHRUZW1wbGF0ZUl0ZW1zID0gaW5wdXQ8SVRlbXBsYXRlUmlnaHRMZWZ0SXRlbT4ocmlnaHRUZW1wbGF0ZUl0ZW1zKCkpO1xuICByZWFkb25seSBsZWZ0VGVtcGxhdGVJdGVtcyA9IGlucHV0PElUZW1wbGF0ZVJpZ2h0TGVmdEl0ZW0+KGxlZnRUZW1wbGF0ZUl0ZW1zKCkpO1xuICByZWFkb25seSB0ZW1wbGF0ZUxlZnRPdXRsZXQgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4+KCk7XG4gIHJlYWRvbmx5IHRlbXBsYXRlUmlnaHRPdXRsZXQgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZVdpZHRoSW5wdXQxMDAgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjbGFzc0luY2x1ZGVJbnB1dCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY2xhc3NDb250YWluZXJJbnB1dCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2hvd0NvdW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlVmFsaWRFbXB0eUZpZWxkID0gaW5wdXQ8Ym9vbGVhbj4oKTsgLy8gY2jhu4kgY+G6p24gY8OzIMOtdCBuaOG6pXQgMSBmaWVsZCBjw7MgZ2nDoSB0cuG7iyBsw6AgdmFsaWRcblxuICByZWFkb25seSBlbWl0RW1wdHlJbkRhdGFUeXBlTnVtYmVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgdGFnSW5wdXQgPSBpbnB1dDwnaW5wdXQnIHwgJ3RleHRhcmVhJyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGF0YVR5cGUgPSBpbnB1dDwnc3RyaW5nJyB8ICdpbnQnIHwgJ2Zsb2F0JyB8ICdiaWdpbnQnIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBmaXhlZEZsb2F0ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBhY2NlcHROZWdhdGl2ZVZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgdmFsdWVVcERvd25OdW1iZXIgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHJlc2V0QXV0b0NvbXBsZXRlUGFzc3dvcmQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoaWRkZW5Db250ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTsgLy8gc+G7rSBk4bulbmcgxJHhu4Mgc2V0IHR5cGUgY2hvIGlucHV0IGThuqFuZyB0ZXh0IGhheSBwYXNzd29yZFxuICByZWFkb25seSBub0JvcmRlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGJhY2tncm91bmROb25lID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgdXNlQ29sb3JNb2RlRXhpc3QgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBrZWVwUGxhY2Vob2xkZXJPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBjbGFzc0NvbnRhaW5lckJvdHRvbUlucHV0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBhdXRvUmVtb3ZlRW1vamkgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkZWZhdWx0SGVpZ2h0ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBpZ25vcmVTaG93RXJyb3IgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBib3JkZXJFcnJvciA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgdW5pdHNMZWZ0ID0gaW5wdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgY29uZmlnVW5pdExlZnQgPSBpbnB1dDxJSW5wdXRWYWxpZFVuaXRDb25maWc+KHtcbiAgICBmaWVsZEtleTogJ2lkJyxcbiAgICBmaWVsZExhYmVsOiAnbGFiZWwnLFxuICB9KTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWRVbml0TGVmdCA9IGlucHV0PGFueT4oKTtcblxuICByZWFkb25seSB1bml0c1JpZ2h0ID0gaW5wdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgY29uZmlnVW5pdFJpZ2h0ID0gaW5wdXQ8SUlucHV0VmFsaWRVbml0Q29uZmlnPih7XG4gICAgZmllbGRLZXk6ICdpZCcsXG4gICAgZmllbGRMYWJlbDogJ2xhYmVsJyxcbiAgfSk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkVW5pdFJpZ2h0ID0gaW5wdXQ8YW55PigpO1xuXG4gIHJlYWRvbmx5IG1heFZhbHVlTnVtYmVyID0gaW5wdXQ8bnVtYmVyPihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7XG4gIHJlYWRvbmx5IG1pblZhbHVlTnVtYmVyID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBpc0Jhc2VsaW5lU3R5bGUgPSBpbnB1dDxib29sZWFuPigpOyAvLyBhbGlnbi1pdGVtcy1iYXNlbGluZSBkw7luZyBraGkgY8SDbiBpbnB1dCB0aOG6s25nIGjDoG5nIHbhu5tpIHThuqV0IGPhuqMgY8OhYyBwaOG6p24ga2jDoWMgZMO5IGPDsyB2YWxpZGF0ZSBoYXkgYuG6pXQgY+G7qSAxIGPDoWkgZ8OsXG5cbiAgcmVhZG9ubHkgdmFsdWVQYXR0ZXJuU2hvd0Vycm9yID0gaW5wdXQ8Ym9vbGVhbj4oKTsgLy8gbeG6t2MgxJHhu4tuaCBraGkgdGVzdCBwYXR0ZXJuIHRy4bqjIHThu4EgZ2nDoSB0cuG7iyBi4bqxbmcgZmFsc2Ugc+G6vSBiw6FvIGzhu5dpXG4gIHJlYWRvbmx5IHZhbGlkUGF0dGVybiA9IGlucHV0PEFycmF5PElWYWxpZFBhdHRlcm4+PigpO1xuICByZWFkb25seSB2YWxpZFJlcXVpcmVkID0gaW5wdXQ8SVZhbGlkUmVxdWlyZWQ+KCk7XG4gIHJlYWRvbmx5IHZhbGlkTWluTGVuZ3RoID0gaW5wdXQ8SVZhbGlkTGVuZ3RoPigpO1xuICByZWFkb25seSB2YWxpZE1pblZhbHVlID0gaW5wdXQ8SVZhbGlkPigpO1xuICByZWFkb25seSB2YWxpZE1heFZhbHVlID0gaW5wdXQ8SVZhbGlkPigpO1xuICByZWFkb25seSB2YWxpZE1heExlbmd0aCA9IGlucHV0PElWYWxpZD4oKTtcbiAgcmVhZG9ubHkgdmFsaWREdXBsaWNhdGUgPSBpbnB1dDxJVmFsaWQ+KCk7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uVmFsaWQgPSBpbnB1dDxUWVBFX0ZVTkNUSU9OX0lOUFVUX1ZBTElEPigpO1xuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IHBvc2l0aW9uTWVzc2FnZUVycm9yU3RhcnRJbnB1dCA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIGtoaSBjw7MgdGVtcGxhdGUgbGVmdCB2w6AgcmlnaHQgbcOgIG114buRbiBtZXNhZ2UgZXJyb3IgeHXhuqV0IGhp4buHbiBi4bqvdCDEkeG6p3UgdOG7qyDDtCBpbnB1dCB0aGF5IHbDrCBi4bqvdCDEkeG6p3UgdOG7qyB0ZW1wbGF0ZSAgdHLDoWlcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSByZXNpemUgPSBpbnB1dDwnYXV0bycgfCAnbm9uZSc+KCk7XG4gIHJlYWRvbmx5IHRlbXBsYXRlTGVmdEJvdHRvbUlucHV0ID0gaW5wdXQ8VGVtcGxhdGVSZWY8VFlQRV9URU1QTEFURV9SRUY+PigpO1xuICByZWFkb25seSB0ZW1wbGF0ZVJpZ2h0Qm90dG9tSW5wdXQgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4+KCk7XG4gIHJlYWRvbmx5IG9ubHlBY2NlcHROZWdhdGl2ZVZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgYXV0b0FkZFplcm9MZXNzVGhhbjEwSW5UeXBlSW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoTnVtYmVyQ291bnQgPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGNsYXNzTWVzc2FnZUVycm9ySW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVVbml0UmlnaHRDbGFzc1JlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgcGFkZGluZ1JpZ2h0Q3VzdG9tU3BlY2lmaWMgPSBpbnB1dDxudW1iZXI+KCk7IC8vIGZpeCBwYWRkaW5nUmlnaHQgY291bnQga28gYXV0byB0w61uaCAjNTIxODVcbiAgcmVhZG9ubHkgZm9jdXNUaW1lT3V0ID0gaW5wdXQ8bnVtYmVyPigpO1xuXG4gIHJlYWRvbmx5IGlnbm9yZUFkZEl0ZW0gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlnbm9yZVJlbW92ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWF4SXRlbXMgPSBpbnB1dDxudW1iZXI+KDUpOyAvLyBz4buRIGzGsOG7o25nIGlucHV0IHThu5FpIMSRYVxuICByZWFkb25seSBtaW5JdGVtcyA9IGlucHV0PG51bWJlcj4oMSk7IC8vIGtow7RuZyDEkcaw4bujYyBwaMOpcCB4w7NhIG7hur91IHPhu5EgbMaw4bujbmcgaXRlbXMgPD0gbWluSXRlbXMubGVuZ3RoXG5cbiAgLyogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SUlucHV0QWRkRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dFJlbW92ZSA9IG91dHB1dDxJSW5wdXRBZGQ+KCk7XG4gIHJlYWRvbmx5IG91dEFkZEl0ZW0gPSBvdXRwdXQ8SUlucHV0QWRkPigpO1xuICByZWFkb25seSBvdXRDbGlja0J1dHRvbkxhYmVsID0gb3V0cHV0PElCdXR0b24+KCk7XG4gIHJlYWRvbmx5IG91dFN3aXRjaEV2ZW50TGFiZWwgPSBvdXRwdXQ8SVN3aXRjaEV2ZW50PigpO1xuICByZWFkb25seSBvdXRMYWJlbFJpZ2h0Q2xpY2sgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0TGFiZWxMZWZ0Q2xpY2sgPSBvdXRwdXQ8TW91c2VFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0VmFsdWVDaGFuZ2UgPSBvdXRwdXQ8SUVtaXRWYWx1ZUNoYW5nZT4oKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KFt7IFt0aGlzLmZpZWxkTmFtZUJpbmQoKV06ICcnIH1dKTtcbiAgICB9XG5cbiAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5pdGVtLCB1bmlxS2V5OiB1dWlkKCkgfVxuICAgIH0pKTtcblxuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHtcbiAgICAgIGNoZWNrSXNWYWxpZDogdGhpcy5jaGVja0lzVmFsaWQuYmluZCh0aGlzKSxcbiAgICAgIHNldE1lc3NhZ2VFcnJvcjogdGhpcy5zZXRNZXNzYWdlRXJyb3IuYmluZCh0aGlzKVxuICAgIH0pO1xuICB9XG5cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSBhc3luYyBzZXRNZXNzYWdlRXJyb3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMoKSkge1xuICAgICAgYXdhaXQgaXRlbS5mdW5jdGlvbkNvbnRyb2w/LnNldE1lc3NhZ2VFcnJvcihtZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tJc1ZhbGlkKGNoZWNrVmFsaWRSZXF1aXJlZCA9IHRydWUsIGN1cnJlbnRJdGVtPzogSUlucHV0QWRkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmRpc2FibGUoKSB8fCB0aGlzLnJlYWRvbmx5KCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdGhpcy5pdGVtcygpKSB7XG4gICAgICBpZiAoaW5wdXQucmVhZG9ubHkgfHwgaW5wdXQuZGlzYWJsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoZWNrVmFsaWRSZXF1aXJlZCkge1xuICAgICAgICBpZiAoIShhd2FpdCB0aGlzLmNoZWNrVmFsaWRSZXF1aXJlZChpbnB1dCkpKSB7XG4gICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRJdGVtPy51bmlxS2V5ID09PSBpbnB1dC51bmlxS2V5KSB7XG4gICAgICAgIHZhbGlkID0gYXdhaXQgaW5wdXQuZnVuY3Rpb25Db250cm9sPy5jaGVja0lzVmFsaWQoKSA/PyBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnZhbGlkRHVwbGljYXRlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaW5wdXRbdGhpcy5maWVsZE5hbWVCaW5kKCldKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGlucHV0W3RoaXMuZmllbGROYW1lQmluZCgpXSA9PT0gJ3N0cmluZycgJiYgIWlucHV0W3RoaXMuZmllbGROYW1lQmluZCgpXS50cmltKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpZWxkc0R1cGxpY2F0ZSA9IHRoaXMuaXRlbXMoKS5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50W3RoaXMuZmllbGROYW1lQmluZCgpXSA9PT0gaW5wdXRbdGhpcy5maWVsZE5hbWVCaW5kKCldKTtcbiAgICAgIGlmICghZmllbGRzRHVwbGljYXRlIHx8ICFmaWVsZHNEdXBsaWNhdGUubGVuZ3RoKSB7XG4gICAgICAgIGlucHV0LmZ1bmN0aW9uQ29udHJvbD8uc2V0TWVzc2FnZUVycm9yKCcnKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkc0R1cGxpY2F0ZS5sZW5ndGggPCAyKSB7XG4gICAgICAgIGlucHV0LmZ1bmN0aW9uQ29udHJvbD8uc2V0TWVzc2FnZUVycm9yKCcnKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICBpbnB1dC5mdW5jdGlvbkNvbnRyb2w/LnNldE1lc3NhZ2VFcnJvcih0aGlzLnZhbGlkRHVwbGljYXRlKCk/Lm1lc3NhZ2UgfHwgJ2kxOG5fdmFsaWRfZHVwbGljYXRlX21zZycpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tWYWxpZFJlcXVpcmVkKGlucHV0OiBJSW5wdXRBZGQpIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGNvbnN0IHZhbGlkSWZBdExlYXN0T25lVmFsdWUgPSB0aGlzLmlnbm9yZVZhbGlkRW1wdHlGaWVsZCgpICYmIHRoaXMuaXRlbXMoKS5maW5kKGl0ZW0gPT4gISFpdGVtW3RoaXMuZmllbGROYW1lQmluZCgpXT8udHJpbSgpKTtcblxuICAgIGlmICh2YWxpZElmQXRMZWFzdE9uZVZhbHVlKSB7XG4gICAgICBpbnB1dC5mdW5jdGlvbkNvbnRyb2w/LnNldE1lc3NhZ2VFcnJvcignJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIShhd2FpdCBpbnB1dC5mdW5jdGlvbkNvbnRyb2w/LmNoZWNrSXNWYWxpZCgpKSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckFkZEl0ZW0oZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnSXRlbUFkZFRvSXRlbXMoKSkge1xuICAgICAgY29uc3QgbmV3SXRlbTogSUlucHV0QWRkID0geyB1bmlxS2V5OiB1dWlkKCksIFt0aGlzLmZpZWxkTmFtZUJpbmQoKV06ICcnIH07XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXMsIG5ld0l0ZW1dKTtcbiAgICAgIHRoaXMub3V0QWRkSXRlbS5lbWl0KG5ld0l0ZW0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0l0ZW06IElJbnB1dEFkZCA9IHsgLi4uY2xvbmVEZWVwKHRoaXMuY29uZmlnSXRlbUFkZFRvSXRlbXMpLCB1bmlxS2V5OiB1dWlkKCksIFt0aGlzLmZpZWxkTmFtZUJpbmQoKV06ICcnIH07XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zLCBuZXdJdGVtXSk7XG4gICAgdGhpcy5vdXRBZGRJdGVtLmVtaXQobmV3SXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclJlbW92ZShldmVudDogRXZlbnQsIGl0ZW06IElJbnB1dEFkZCwgaW5kZXg6IG51bWJlcikge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXRlbXMudXBkYXRlKGN1cnJlbnRJdGVtcyA9PiBjdXJyZW50SXRlbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCkpO1xuICAgIHRoaXMub3V0UmVtb3ZlLmVtaXQoaXRlbSk7XG4gICAgdGhpcy50aW1lT3V0S2V5VXAuc2V0KHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dEtleVVwKCkpO1xuICAgICAgdGhpcy5jaGVja0lzVmFsaWQoZmFsc2UpO1xuICAgIH0sIDI1MCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja0J1dHRvbkxhYmVsKGJ1dHRvbjogSUJ1dHRvbikge1xuICAgIHRoaXMub3V0Q2xpY2tCdXR0b25MYWJlbC5lbWl0KGJ1dHRvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclN3aXRjaExhYmVsKGV2ZW50OiBJU3dpdGNoRXZlbnQpIHtcbiAgICB0aGlzLm91dFN3aXRjaEV2ZW50TGFiZWwuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckV2ZW50TGFiZWxMZWZ0TGFiZWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm91dExhYmVsTGVmdENsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJFdmVudExhYmVsUmlnaHRMYWJlbCgpIHtcbiAgICB0aGlzLm91dExhYmVsUmlnaHRDbGljay5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbnNDb250cm9sKGV2ZW50OiBJSW5wdXRWYWxpZEZ1bmN0aW9uQ29udHJvbEV2ZW50LCBpdGVtOiBJSW5wdXRBZGQpIHtcbiAgICBpdGVtLmZ1bmN0aW9uQ29udHJvbCA9IGV2ZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBpdGVtOiBJSW5wdXRBZGQpIHtcbiAgICBpdGVtW3RoaXMuZmllbGROYW1lQmluZCgpXSA9IHZhbHVlO1xuXG4gICAgdGhpcy5vdXRWYWx1ZUNoYW5nZS5lbWl0KHsgdmFsdWUsIGl0ZW0gfSk7XG5cbiAgICB0aGlzLnRpbWVPdXRLZXlVcC5zZXQoc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lT3V0S2V5VXAoKSk7XG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZChmYWxzZSwgaXRlbSk7XG4gICAgfSwgMjUwKSk7XG4gIH1cbn0iLCJAaWYgKGZpZWxkTmFtZUJpbmQoKSAmJiBpdGVtcygpOyBhcyBpdGVtcykge1xuICBAaWYgKGxhYmVsQ29uZmlnKCk7IGFzIGxhYmVsQ29uZmlnKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbCBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgICBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0Q2xhc3NcIlxuICAgICAgW2ljb25Qb3BvdmVyQ2xhc3NdPVwibGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICBbbGFiZWxMZWZ0QmVoaW5kVG9nZ2xlQnV0dG9uXT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdEJlaGluZFRvZ2dsZUJ1dHRvblwiXG4gICAgICBbcG9wb3Zlcl09XCJsYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJsYWJlbENvbmZpZy5yZXF1aXJlZFwiXG4gICAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnRcIlxuICAgICAgW2J1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zUmlnaHRdPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNSaWdodFwiXG4gICAgICBbbGFiZWxSaWdodF09XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0XCJcbiAgICAgIFtsYWJlbFJpZ2h0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgIFtsYWJlbFJpZ2h0UmVxdWlyZWRdPVwibGFiZWxDb25maWcubGFiZWxSaWdodFJlcXVpcmVkXCJcbiAgICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVTaXplXT1cImxhYmVsQ29uZmlnLnRvZ2dsZVNpemUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgIFt0b2dnbGVBY3RpdmVdPVwibGFiZWxDb25maWcudG9nZ2xlQWN0aXZlXCJcbiAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGVcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbkNsYXNzXT1cImxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uQ2xhc3NcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NdPVwibGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbekluZGV4UG9wb3Zlcl09XCJsYWJlbENvbmZpZy56SW5kZXhQb3BvdmVyIHx8IDEwXCJcbiAgICAgIFt0aW1lckRlc3Ryb3lQb3BvdmVyXT1cImxhYmVsQ29uZmlnLnRpbWVyRGVzdHJveVBvcG92ZXIgfHwgMFwiXG4gICAgICBbY291bnRdPVwibGFiZWxDb25maWcuY291bnRcIlxuICAgICAgW2xpbWl0TGVuZ3RoXT1cImxhYmVsQ29uZmlnLmxpbWl0TGVuZ3RoXCJcbiAgICAgIChvdXRDbGlja0J1dHRvbik9XCJoYW5kbGVyQ2xpY2tCdXR0b25MYWJlbCgkZXZlbnQpXCJcbiAgICAgIChvdXRTd2l0Y2hFdmVudCk9XCJoYW5kbGVyU3dpdGNoTGFiZWwoJGV2ZW50KVwiXG4gICAgICAob3V0TGFiZWxMZWZ0Q2xpY2spPVwiaGFuZGxlckV2ZW50TGFiZWxMZWZ0TGFiZWwoJGV2ZW50KVwiXG4gICAgICAob3V0TGFiZWxSaWdodENsaWNrKT1cImhhbmRsZXJFdmVudExhYmVsUmlnaHRMYWJlbCgpXCIgLz5cbiAgfVxuICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLnVuaXFLZXk7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIlxuICAgICAgW3N0eWxlLm1hcmdpblRvcC5weF09XCIhZmlyc3QgPyBmb3JtSW5wdXRTcGFjaW5nKCkgOiAwXCI+XG5cbiAgICAgIEBpZiAobGVmdFRlbXBsYXRlSXRlbXMoKTsgYXMgbGVmdFRlbXBsYXRlSXRlbXMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgge3sgbGVmdFRlbXBsYXRlSXRlbXMuY2xhc3NJbmNsdWRlIH19XCI+XG4gICAgICAgICAgQGZvciAocmlnaHRJdGVtIG9mIGxlZnRUZW1wbGF0ZUl0ZW1zLml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIEBzd2l0Y2ggKHJpZ2h0SXRlbS50eXBlKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLnRlbXBsYXRlTGVmdE91dGxldCB8fCB0ZW1wbGF0ZUxlZnRPdXRsZXQoKSkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIihpdGVtLnRlbXBsYXRlTGVmdE91dGxldCB8fCB0ZW1wbGF0ZUxlZnRPdXRsZXQoKSB8fCBudWxsKTtjb250ZXh0OntpdGVtOiBpdGVtLCBpbmRleDogaW5kZXh9XCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtdmFsaWQgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgIFtmaWVsZE5hbWVCaW5kXT1cImZpZWxkTmFtZUJpbmQoKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyID8/IHBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbZW1pdEVtcHR5SW5EYXRhVHlwZU51bWJlcl09XCJlbWl0RW1wdHlJbkRhdGFUeXBlTnVtYmVyKClcIlxuICAgICAgICBbdGFnSW5wdXRdPVwidGFnSW5wdXQoKVwiXG4gICAgICAgIFtkYXRhVHlwZV09XCJkYXRhVHlwZSgpXCJcbiAgICAgICAgW2ZpeGVkRmxvYXRdPVwiZml4ZWRGbG9hdCgpXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KCkgfHwgaXRlbS5yZWFkb25seVwiXG4gICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKSB8fCBpdGVtLmRpc2FibGVcIlxuICAgICAgICBbY2xhc3NDb250YWluZXJJbnB1dF09XCJjbGFzc0NvbnRhaW5lcklucHV0KClcIlxuICAgICAgICBbY2xhc3NJbmNsdWRlSW5wdXRdPVwiY2xhc3NJbmNsdWRlSW5wdXQoKVwiXG4gICAgICAgIFthY2NlcHROZWdhdGl2ZVZhbHVlXT1cImFjY2VwdE5lZ2F0aXZlVmFsdWUoKVwiXG4gICAgICAgIFt2YWx1ZVVwRG93bk51bWJlcl09XCJ2YWx1ZVVwRG93bk51bWJlcigpIHx8IDFcIlxuICAgICAgICBbaWdub3JlV2lkdGhJbnB1dDEwMF09XCJpZ25vcmVXaWR0aElucHV0MTAwKClcIlxuICAgICAgICBbc2hvd0NvdW50XT1cInNob3dDb3VudCgpXCJcbiAgICAgICAgW3Jlc2V0QXV0b0NvbXBsZXRlUGFzc3dvcmRdPVwicmVzZXRBdXRvQ29tcGxldGVQYXNzd29yZCgpXCJcbiAgICAgICAgW2hpZGRlbkNvbnRlbnRdPVwiaGlkZGVuQ29udGVudCgpXCJcbiAgICAgICAgW25vQm9yZGVyXT1cIm5vQm9yZGVyKClcIlxuICAgICAgICBbYmFja2dyb3VuZE5vbmVdPVwiYmFja2dyb3VuZE5vbmUoKVwiXG4gICAgICAgIFt1c2VDb2xvck1vZGVFeGlzdF09XCJ1c2VDb2xvck1vZGVFeGlzdCgpXCJcbiAgICAgICAgW2tlZXBQbGFjZWhvbGRlck9ubHldPVwia2VlcFBsYWNlaG9sZGVyT25seSgpXCJcbiAgICAgICAgW2NsYXNzQ29udGFpbmVyQm90dG9tSW5wdXRdPVwiY2xhc3NDb250YWluZXJCb3R0b21JbnB1dCgpXCJcbiAgICAgICAgW2F1dG9SZW1vdmVFbW9qaV09XCJhdXRvUmVtb3ZlRW1vamkoKVwiXG4gICAgICAgIFtkZWZhdWx0SGVpZ2h0XT1cImRlZmF1bHRIZWlnaHQoKVwiXG4gICAgICAgIFtpZ25vcmVTaG93RXJyb3JdPVwiaWdub3JlU2hvd0Vycm9yKClcIlxuICAgICAgICBbYm9yZGVyRXJyb3JdPVwiYm9yZGVyRXJyb3IoKVwiXG4gICAgICAgIFt1bml0c0xlZnRdPVwiaXRlbS51bml0c0xlZnQgfHwgdW5pdHNMZWZ0KClcIlxuICAgICAgICBbY29uZmlnVW5pdExlZnRdPVwiaXRlbS5jb25maWdVbml0TGVmdCB8fCBjb25maWdVbml0TGVmdCgpXCJcbiAgICAgICAgW2tleVNlbGVjdGVkVW5pdExlZnRdPVwiaXRlbS5rZXlTZWxlY3RlZFVuaXRMZWZ0IHx8IGtleVNlbGVjdGVkVW5pdExlZnQoKVwiXG4gICAgICAgIFt1bml0c1JpZ2h0XT1cIml0ZW0udW5pdHNSaWdodCB8fCB1bml0c1JpZ2h0KClcIlxuICAgICAgICBbY29uZmlnVW5pdFJpZ2h0XT1cIml0ZW0uY29uZmlnVW5pdFJpZ2h0IHx8IGNvbmZpZ1VuaXRSaWdodCgpXCJcbiAgICAgICAgW2tleVNlbGVjdGVkVW5pdFJpZ2h0XT1cIml0ZW0ua2V5U2VsZWN0ZWRVbml0UmlnaHQgfHwga2V5U2VsZWN0ZWRVbml0UmlnaHQoKVwiXG4gICAgICAgIFttYXhWYWx1ZU51bWJlcl09XCJpdGVtLm1heFZhbHVlTnVtYmVyIHx8IG1heFZhbHVlTnVtYmVyKClcIlxuICAgICAgICBbbWluVmFsdWVOdW1iZXJdPVwiaXRlbS5taW5WYWx1ZU51bWJlciB8fCBtaW5WYWx1ZU51bWJlcigpXCJcbiAgICAgICAgW2lzQmFzZWxpbmVTdHlsZV09XCJpc0Jhc2VsaW5lU3R5bGUoKVwiXG4gICAgICAgIFt2YWx1ZVBhdHRlcm5TaG93RXJyb3JdPVwidmFsdWVQYXR0ZXJuU2hvd0Vycm9yKClcIlxuICAgICAgICBbdmFsaWRQYXR0ZXJuXT1cInZhbGlkUGF0dGVybigpXCJcbiAgICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwidmFsaWRSZXF1aXJlZCgpXCJcbiAgICAgICAgW3ZhbGlkTWluTGVuZ3RoXT1cInZhbGlkTWluTGVuZ3RoKClcIlxuICAgICAgICBbdmFsaWRNaW5WYWx1ZV09XCJ2YWxpZE1pblZhbHVlKClcIlxuICAgICAgICBbdmFsaWRNYXhWYWx1ZV09XCJ2YWxpZE1heFZhbHVlKClcIlxuICAgICAgICBbdmFsaWRNYXhMZW5ndGhdPVwidmFsaWRNYXhMZW5ndGgoKVwiXG4gICAgICAgIFtmdW5jdGlvblZhbGlkXT1cImZ1bmN0aW9uVmFsaWQoKVwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiaXRlbS5tYXhMZW5ndGggfHwgbWF4TGVuZ3RoKClcIlxuICAgICAgICBbcG9zaXRpb25NZXNzYWdlRXJyb3JTdGFydElucHV0XT1cInBvc2l0aW9uTWVzc2FnZUVycm9yU3RhcnRJbnB1dCgpXCJcbiAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJjbGFzc0luY2x1ZGUoKVwiXG4gICAgICAgIFtvbmx5QWNjZXB0TmVnYXRpdmVWYWx1ZV09XCJvbmx5QWNjZXB0TmVnYXRpdmVWYWx1ZSgpXCJcbiAgICAgICAgW2F1dG9BZGRaZXJvTGVzc1RoYW4xMEluVHlwZUludF09XCJhdXRvQWRkWmVyb0xlc3NUaGFuMTBJblR5cGVJbnQoKVwiXG4gICAgICAgIFttYXhMZW5ndGhOdW1iZXJDb3VudF09XCJtYXhMZW5ndGhOdW1iZXJDb3VudCgpXCJcbiAgICAgICAgW2NsYXNzTWVzc2FnZUVycm9ySW5jbHVkZV09XCJjbGFzc01lc3NhZ2VFcnJvckluY2x1ZGUoKVwiXG4gICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpXCJcbiAgICAgICAgW2lnbm9yZVVuaXRSaWdodENsYXNzUmVhZE9ubHldPVwiaWdub3JlVW5pdFJpZ2h0Q2xhc3NSZWFkT25seSgpXCJcbiAgICAgICAgW3BhZGRpbmdSaWdodEN1c3RvbVNwZWNpZmljXT1cInBhZGRpbmdSaWdodEN1c3RvbVNwZWNpZmljKClcIlxuICAgICAgICBbZm9jdXNUaW1lT3V0XT1cImZvY3VzVGltZU91dCgpXCJcbiAgICAgICAgKG91dFZhbHVlQ2hhbmdlKT1cImhhbmRsZXJWYWx1ZUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woJGV2ZW50LCBpdGVtKVwiIC8+XG5cbiAgICAgIEBpZiAocmlnaHRUZW1wbGF0ZUl0ZW1zKCk7IGFzIHJpZ2h0VGVtcGxhdGVJdGVtcykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIge3sgcmlnaHRUZW1wbGF0ZUl0ZW1zLmNsYXNzSW5jbHVkZSB9fVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJkZWZhdWx0SGVpZ2h0KCkgfHwgMzJcIj5cbiAgICAgICAgICBAZm9yIChyaWdodEl0ZW0gb2YgcmlnaHRUZW1wbGF0ZUl0ZW1zLml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIEBzd2l0Y2ggKHJpZ2h0SXRlbS50eXBlKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgncmVtb3ZlJykge1xuICAgICAgICAgICAgICAgIEBpZiAoIWlnbm9yZVJlbW92ZSgpICYmICFpdGVtLmlnbm9yZVJlbW92ZSAmJiBpdGVtcy5sZW5ndGggPiBtaW5JdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cIididXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLXJlbW92ZSBtci1bMHB4XSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc0luY2x1ZGU9XCJsaWJzLXVpLWljb24taG92ZXItZGFuZ2VyICFwLVsycHhdIG1sLVsxNnB4XSB7eyByaWdodEl0ZW0uY2xhc3NJbmNsdWRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJSZW1vdmUoJGV2ZW50LCBpdGVtLCBpbmRleClcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIEBjYXNlICgndGVtcGxhdGUnKSB7XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLnRlbXBsYXRlUmlnaHRPdXRsZXQgfHwgdGVtcGxhdGVSaWdodE91dGxldCgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiKGl0ZW0udGVtcGxhdGVSaWdodE91dGxldCB8fCB0ZW1wbGF0ZVJpZ2h0T3V0bGV0KCkgfHwgbnVsbCk7Y29udGV4dDp7aXRlbTogaXRlbSwgaW5kZXg6IGluZGV4fVwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxufVxuXG5AaWYgKCFpZ25vcmVBZGRJdGVtKCkgJiYgKCFtYXhJdGVtcygpIHx8IGl0ZW1zKCkubGVuZ3RoIDwgbWF4SXRlbXMoKSkpIHtcbiAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJhZGRJdGVtQnV0dG9uQ29uZmlnKCk/LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXByaW1hcnknXCJcbiAgICBbbGFiZWxdPVwiYWRkSXRlbUJ1dHRvbkNvbmZpZygpPy5sYWJlbCB8fCAnaTE4bl9hZGRfbmV3J1wiXG4gICAgW2NsYXNzTGFiZWxdPVwiYWRkSXRlbUJ1dHRvbkNvbmZpZygpPy5jbGFzc0xhYmVsIHx8ICdsaWJzLXVpZm9udC1oZWFkLTVtJ1wiXG4gICAgW2NsYXNzSWNvbkxlZnRdPVwiYWRkSXRlbUJ1dHRvbkNvbmZpZygpPy5jbGFzc0ljb25MZWZ0IHx8ICdsaWJzLXVpLWljb24tYWRkIHRleHQtWzEwcHhdIG1yLVs4cHhdJ1wiXG4gICAgW2NsYXNzSW5jbHVkZV09XCJhZGRJdGVtQnV0dG9uQ29uZmlnKCk/LmNsYXNzSW5jbHVkZSB8fCAnIXBiLTAgIXBsLTAgIXB5LVsycHhdIG10LVs4cHhdJ1wiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZSgpIHx8IGZhbHNlXCJcbiAgICAob3V0Q2xpY2spPVwiaGFuZGxlckFkZEl0ZW0oJGV2ZW50KVwiIC8+XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ export const rightTemplateItems = () => {
2
+ return {
3
+ classInclude: '',
4
+ items: [
5
+ {
6
+ type: 'remove',
7
+ classInclude: ''
8
+ },
9
+ {
10
+ type: 'template',
11
+ classInclude: ''
12
+ }
13
+ ]
14
+ };
15
+ };
16
+ export const leftTemplateItems = () => {
17
+ return {
18
+ classInclude: '',
19
+ items: [
20
+ {
21
+ type: 'remove',
22
+ classInclude: ''
23
+ },
24
+ {
25
+ type: 'template',
26
+ classInclude: ''
27
+ }
28
+ ]
29
+ };
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvYWRkL3NyYy9kZWZpbmVzL2FkZC5kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBMkIsRUFBRTtJQUM3RCxPQUFPO1FBQ0wsWUFBWSxFQUFFLEVBQUU7UUFDaEIsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLEVBQUU7YUFDakI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsWUFBWSxFQUFFLEVBQUU7YUFDakI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUEyQixFQUFFO0lBQzVELE9BQU87UUFDTCxZQUFZLEVBQUUsRUFBRTtRQUNoQixLQUFLLEVBQUU7WUFDTDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxZQUFZLEVBQUUsRUFBRTthQUNqQjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixZQUFZLEVBQUUsRUFBRTthQUNqQjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUZW1wbGF0ZVJpZ2h0TGVmdEl0ZW0gfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9pbnB1dC1hZGQuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBjb25zdCByaWdodFRlbXBsYXRlSXRlbXMgPSAoKTogSVRlbXBsYXRlUmlnaHRMZWZ0SXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgY2xhc3NJbmNsdWRlOiAnJyxcbiAgICBpdGVtczogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAncmVtb3ZlJyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3RlbXBsYXRlJyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnJ1xuICAgICAgfVxuICAgIF1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsZWZ0VGVtcGxhdGVJdGVtcyA9ICgpOiBJVGVtcGxhdGVSaWdodExlZnRJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICBjbGFzc0luY2x1ZGU6ICcnLFxuICAgIGl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndGVtcGxhdGUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICcnXG4gICAgICB9XG4gICAgXVxuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './add.component';
2
+ export * from './interfaces';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2FkZC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnOyJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29udHJvbC1ldmVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2FkZC9zcmMvaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLWV2ZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUlucHV0RnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRBZGRGdW5jdGlvbkNvbnRyb2xFdmVudCB7XG4gIGNoZWNrSXNWYWxpZDogKCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgc2V0TWVzc2FnZUVycm9yOiAobWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from "./input-add.interface";
2
+ export * from "./function-control-event.interface";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2FkZC9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pbnB1dC1hZGQuaW50ZXJmYWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mdW5jdGlvbi1jb250cm9sLWV2ZW50LmludGVyZmFjZVwiOyJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYWRkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvYWRkL3NyYy9pbnRlcmZhY2VzL2lucHV0LWFkZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElJbnB1dFZhbGlkRnVuY3Rpb25Db250cm9sRXZlbnQsIElJbnB1dFZhbGlkVW5pdENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy12YWxpZFwiO1xuaW1wb3J0IHsgSUxhYmVsIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IFRZUEVfVEVNUExBVEVfUkVGIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRBZGRDb25maWcge1xuICBjb3VudD86IG51bWJlcjtcbiAgbWF4Q291bnQ/OiBudW1iZXI7XG4gIGNsYXNzQ2lyY2xlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dEFkZCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICB1bmlxS2V5Pzogc3RyaW5nO1xuICBkaXNhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBpZ25vcmVSZW1vdmU/OiBib29sZWFuO1xuICBsYWJlbENvbmZpZz86IElMYWJlbDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heFZhbHVlTnVtYmVyPzogbnVtYmVyO1xuICBtaW5WYWx1ZU51bWJlcj86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIHVuaXRzTGVmdD86IEFycmF5PGFueT47XG4gIGNvbmZpZ1VuaXRMZWZ0PzogSUlucHV0VmFsaWRVbml0Q29uZmlnO1xuICBrZXlTZWxlY3RlZFVuaXRMZWZ0PzogYW55O1xuXG4gIHVuaXRzUmlnaHQ/OiBBcnJheTxhbnk+O1xuICBjb25maWdVbml0UmlnaHQ/OiBJSW5wdXRWYWxpZFVuaXRDb25maWc7XG4gIGtleVNlbGVjdGVkVW5pdFJpZ2h0PzogYW55O1xuXG4gIHRlbXBsYXRlTGVmdE91dGxldD86IFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPjtcbiAgdGVtcGxhdGVSaWdodE91dGxldD86IFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPjtcbiAgZnVuY3Rpb25Db250cm9sPzogSUlucHV0VmFsaWRGdW5jdGlvbkNvbnRyb2xFdmVudDtcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRlbXBsYXRlUmlnaHRMZWZ0SXRlbSB7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgaXRlbXM6IEFycmF5PHtcbiAgICB0eXBlOiAncmVtb3ZlJyB8ICd0ZW1wbGF0ZSc7XG4gICAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB9PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFbWl0VmFsdWVDaGFuZ2Uge1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBpdGVtOiBJSW5wdXRBZGQ7XG59Il19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWlucHV0cy1hZGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL2FkZC9zcmMvbGlicy11aS1jb21wb25lbnRzLWlucHV0cy1hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,265 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { signal, input, model, output, Component, ChangeDetectionStrategy } from '@angular/core';
4
+ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
5
+ import { LibsUiComponentsInputsValidComponent } from '@libs-ui/components-inputs-valid';
6
+ import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
7
+ import { uuid, cloneDeep } from '@libs-ui/utils';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+
10
+ const rightTemplateItems = () => {
11
+ return {
12
+ classInclude: '',
13
+ items: [
14
+ {
15
+ type: 'remove',
16
+ classInclude: ''
17
+ },
18
+ {
19
+ type: 'template',
20
+ classInclude: ''
21
+ }
22
+ ]
23
+ };
24
+ };
25
+ const leftTemplateItems = () => {
26
+ return {
27
+ classInclude: '',
28
+ items: [
29
+ {
30
+ type: 'remove',
31
+ classInclude: ''
32
+ },
33
+ {
34
+ type: 'template',
35
+ classInclude: ''
36
+ }
37
+ ]
38
+ };
39
+ };
40
+
41
+ /* eslint-disable @typescript-eslint/no-explicit-any */
42
+ class LibsUiComponentsInputsAddComponent {
43
+ /* PROPERTY */
44
+ timeOutKeyUp = signal(0);
45
+ /* INPUT */
46
+ fieldNameBind = input.required();
47
+ items = model.required();
48
+ readonly = input(false);
49
+ disable = input(false);
50
+ addItemButtonConfig = input();
51
+ placeholder = input();
52
+ labelConfig = input();
53
+ formInputSpacing = input(8); // khoảng cách giữa hai ô input
54
+ configItemAddToItems = input();
55
+ rightTemplateItems = input(rightTemplateItems());
56
+ leftTemplateItems = input(leftTemplateItems());
57
+ templateLeftOutlet = input();
58
+ templateRightOutlet = input();
59
+ ignoreWidthInput100 = input();
60
+ classIncludeInput = input();
61
+ classContainerInput = input();
62
+ showCount = input();
63
+ ignoreValidEmptyField = input(); // chỉ cần có ít nhất 1 field có giá trị là valid
64
+ emitEmptyInDataTypeNumber = input();
65
+ tagInput = input();
66
+ dataType = input();
67
+ fixedFloat = input();
68
+ acceptNegativeValue = input();
69
+ valueUpDownNumber = input();
70
+ resetAutoCompletePassword = input();
71
+ hiddenContent = input(); // sử dụng để set type cho input dạng text hay password
72
+ noBorder = input();
73
+ backgroundNone = input();
74
+ useColorModeExist = input();
75
+ keepPlaceholderOnly = input();
76
+ classContainerBottomInput = input();
77
+ autoRemoveEmoji = input();
78
+ defaultHeight = input();
79
+ ignoreShowError = input();
80
+ borderError = input();
81
+ unitsLeft = input();
82
+ configUnitLeft = input({
83
+ fieldKey: 'id',
84
+ fieldLabel: 'label',
85
+ });
86
+ keySelectedUnitLeft = input();
87
+ unitsRight = input();
88
+ configUnitRight = input({
89
+ fieldKey: 'id',
90
+ fieldLabel: 'label',
91
+ });
92
+ keySelectedUnitRight = input();
93
+ maxValueNumber = input(Number.MAX_SAFE_INTEGER);
94
+ minValueNumber = input();
95
+ isBaselineStyle = input(); // align-items-baseline dùng khi căn input thẳng hàng với tất cả các phần khác dù có validate hay bất cứ 1 cái gì
96
+ valuePatternShowError = input(); // mặc định khi test pattern trả tề giá trị bằng false sẽ báo lỗi
97
+ validPattern = input();
98
+ validRequired = input();
99
+ validMinLength = input();
100
+ validMinValue = input();
101
+ validMaxValue = input();
102
+ validMaxLength = input();
103
+ validDuplicate = input();
104
+ functionValid = input();
105
+ maxLength = input();
106
+ positionMessageErrorStartInput = input(); // khi có template left và right mà muốn mesage error xuất hiện bắt đầu từ ô input thay vì bắt đầu từ template trái
107
+ classInclude = input();
108
+ resize = input();
109
+ templateLeftBottomInput = input();
110
+ templateRightBottomInput = input();
111
+ onlyAcceptNegativeValue = input();
112
+ autoAddZeroLessThan10InTypeInt = input();
113
+ maxLengthNumberCount = input();
114
+ classMessageErrorInclude = input();
115
+ ignoreStopPropagationEvent = input();
116
+ ignoreUnitRightClassReadOnly = input();
117
+ paddingRightCustomSpecific = input(); // fix paddingRight count ko auto tính #52185
118
+ focusTimeOut = input();
119
+ ignoreAddItem = input(false);
120
+ ignoreRemove = input(false);
121
+ maxItems = input(5); // số lượng input tối đa
122
+ minItems = input(1); // không được phép xóa nếu số lượng items <= minItems.length
123
+ /* OUTPUT */
124
+ outFunctionsControl = output();
125
+ outRemove = output();
126
+ outAddItem = output();
127
+ outClickButtonLabel = output();
128
+ outSwitchEventLabel = output();
129
+ outLabelRightClick = output();
130
+ outLabelLeftClick = output();
131
+ outValueChange = output();
132
+ ngOnInit() {
133
+ if (!this.items().length) {
134
+ this.items.set([{ [this.fieldNameBind()]: '' }]);
135
+ }
136
+ this.items.update(items => items.map(item => {
137
+ return { ...item, uniqKey: uuid() };
138
+ }));
139
+ this.outFunctionsControl.emit({
140
+ checkIsValid: this.checkIsValid.bind(this),
141
+ setMessageError: this.setMessageError.bind(this)
142
+ });
143
+ }
144
+ /* FUNCTIONS */
145
+ async setMessageError(message) {
146
+ for (const item of this.items()) {
147
+ await item.functionControl?.setMessageError(message);
148
+ }
149
+ }
150
+ async checkIsValid(checkValidRequired = true, currentItem) {
151
+ let valid = true;
152
+ if (this.disable() || this.readonly()) {
153
+ return true;
154
+ }
155
+ for (const input of this.items()) {
156
+ if (input.readonly || input.disable) {
157
+ continue;
158
+ }
159
+ if (checkValidRequired) {
160
+ if (!(await this.checkValidRequired(input))) {
161
+ valid = false;
162
+ }
163
+ continue;
164
+ }
165
+ if (currentItem?.uniqKey === input.uniqKey) {
166
+ valid = await input.functionControl?.checkIsValid() ?? false;
167
+ }
168
+ if (!this.validDuplicate()) {
169
+ continue;
170
+ }
171
+ if (!input[this.fieldNameBind()]) {
172
+ continue;
173
+ }
174
+ if (typeof input[this.fieldNameBind()] === 'string' && !input[this.fieldNameBind()].trim()) {
175
+ continue;
176
+ }
177
+ const fieldsDuplicate = this.items().filter(element => element[this.fieldNameBind()] === input[this.fieldNameBind()]);
178
+ if (!fieldsDuplicate || !fieldsDuplicate.length) {
179
+ input.functionControl?.setMessageError('');
180
+ continue;
181
+ }
182
+ if (fieldsDuplicate.length < 2) {
183
+ input.functionControl?.setMessageError('');
184
+ continue;
185
+ }
186
+ valid = false;
187
+ input.functionControl?.setMessageError(this.validDuplicate()?.message || 'i18n_valid_duplicate_msg');
188
+ }
189
+ return valid;
190
+ }
191
+ async checkValidRequired(input) {
192
+ let valid = true;
193
+ const validIfAtLeastOneValue = this.ignoreValidEmptyField() && this.items().find(item => !!item[this.fieldNameBind()]?.trim());
194
+ if (validIfAtLeastOneValue) {
195
+ input.functionControl?.setMessageError('');
196
+ return true;
197
+ }
198
+ if (!(await input.functionControl?.checkIsValid())) {
199
+ valid = false;
200
+ }
201
+ return valid;
202
+ }
203
+ handlerAddItem(event) {
204
+ event.stopPropagation();
205
+ if (!this.configItemAddToItems()) {
206
+ const newItem = { uniqKey: uuid(), [this.fieldNameBind()]: '' };
207
+ this.items.update(items => [...items, newItem]);
208
+ this.outAddItem.emit(newItem);
209
+ return;
210
+ }
211
+ const newItem = { ...cloneDeep(this.configItemAddToItems), uniqKey: uuid(), [this.fieldNameBind()]: '' };
212
+ this.items.update(items => [...items, newItem]);
213
+ this.outAddItem.emit(newItem);
214
+ }
215
+ handlerRemove(event, item, index) {
216
+ event.stopPropagation();
217
+ this.items.update(currentItems => currentItems.filter((_, i) => i !== index));
218
+ this.outRemove.emit(item);
219
+ this.timeOutKeyUp.set(setTimeout(() => {
220
+ clearTimeout(this.timeOutKeyUp());
221
+ this.checkIsValid(false);
222
+ }, 250));
223
+ }
224
+ handlerClickButtonLabel(button) {
225
+ this.outClickButtonLabel.emit(button);
226
+ }
227
+ handlerSwitchLabel(event) {
228
+ this.outSwitchEventLabel.emit(event);
229
+ }
230
+ handlerEventLabelLeftLabel(event) {
231
+ this.outLabelLeftClick.emit(event);
232
+ }
233
+ handlerEventLabelRightLabel() {
234
+ this.outLabelRightClick.emit(true);
235
+ }
236
+ handlerFunctionsControl(event, item) {
237
+ item.functionControl = event;
238
+ }
239
+ handlerValueChange(value, item) {
240
+ item[this.fieldNameBind()] = value;
241
+ this.outValueChange.emit({ value, item });
242
+ this.timeOutKeyUp.set(setTimeout(() => {
243
+ clearTimeout(this.timeOutKeyUp());
244
+ this.checkIsValid(false, item);
245
+ }, 250));
246
+ }
247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsAddComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
248
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsInputsAddComponent, isStandalone: true, selector: "libs_ui-components-inputs-add", inputs: { fieldNameBind: { classPropertyName: "fieldNameBind", publicName: "fieldNameBind", isSignal: true, isRequired: true, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, addItemButtonConfig: { classPropertyName: "addItemButtonConfig", publicName: "addItemButtonConfig", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, formInputSpacing: { classPropertyName: "formInputSpacing", publicName: "formInputSpacing", isSignal: true, isRequired: false, transformFunction: null }, configItemAddToItems: { classPropertyName: "configItemAddToItems", publicName: "configItemAddToItems", isSignal: true, isRequired: false, transformFunction: null }, rightTemplateItems: { classPropertyName: "rightTemplateItems", publicName: "rightTemplateItems", isSignal: true, isRequired: false, transformFunction: null }, leftTemplateItems: { classPropertyName: "leftTemplateItems", publicName: "leftTemplateItems", isSignal: true, isRequired: false, transformFunction: null }, templateLeftOutlet: { classPropertyName: "templateLeftOutlet", publicName: "templateLeftOutlet", isSignal: true, isRequired: false, transformFunction: null }, templateRightOutlet: { classPropertyName: "templateRightOutlet", publicName: "templateRightOutlet", isSignal: true, isRequired: false, transformFunction: null }, ignoreWidthInput100: { classPropertyName: "ignoreWidthInput100", publicName: "ignoreWidthInput100", isSignal: true, isRequired: false, transformFunction: null }, classIncludeInput: { classPropertyName: "classIncludeInput", publicName: "classIncludeInput", isSignal: true, isRequired: false, transformFunction: null }, classContainerInput: { classPropertyName: "classContainerInput", publicName: "classContainerInput", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, ignoreValidEmptyField: { classPropertyName: "ignoreValidEmptyField", publicName: "ignoreValidEmptyField", isSignal: true, isRequired: false, transformFunction: null }, emitEmptyInDataTypeNumber: { classPropertyName: "emitEmptyInDataTypeNumber", publicName: "emitEmptyInDataTypeNumber", isSignal: true, isRequired: false, transformFunction: null }, tagInput: { classPropertyName: "tagInput", publicName: "tagInput", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, fixedFloat: { classPropertyName: "fixedFloat", publicName: "fixedFloat", isSignal: true, isRequired: false, transformFunction: null }, acceptNegativeValue: { classPropertyName: "acceptNegativeValue", publicName: "acceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null }, valueUpDownNumber: { classPropertyName: "valueUpDownNumber", publicName: "valueUpDownNumber", isSignal: true, isRequired: false, transformFunction: null }, resetAutoCompletePassword: { classPropertyName: "resetAutoCompletePassword", publicName: "resetAutoCompletePassword", isSignal: true, isRequired: false, transformFunction: null }, hiddenContent: { classPropertyName: "hiddenContent", publicName: "hiddenContent", isSignal: true, isRequired: false, transformFunction: null }, noBorder: { classPropertyName: "noBorder", publicName: "noBorder", isSignal: true, isRequired: false, transformFunction: null }, backgroundNone: { classPropertyName: "backgroundNone", publicName: "backgroundNone", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, keepPlaceholderOnly: { classPropertyName: "keepPlaceholderOnly", publicName: "keepPlaceholderOnly", isSignal: true, isRequired: false, transformFunction: null }, classContainerBottomInput: { classPropertyName: "classContainerBottomInput", publicName: "classContainerBottomInput", isSignal: true, isRequired: false, transformFunction: null }, autoRemoveEmoji: { classPropertyName: "autoRemoveEmoji", publicName: "autoRemoveEmoji", isSignal: true, isRequired: false, transformFunction: null }, defaultHeight: { classPropertyName: "defaultHeight", publicName: "defaultHeight", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowError: { classPropertyName: "ignoreShowError", publicName: "ignoreShowError", isSignal: true, isRequired: false, transformFunction: null }, borderError: { classPropertyName: "borderError", publicName: "borderError", isSignal: true, isRequired: false, transformFunction: null }, unitsLeft: { classPropertyName: "unitsLeft", publicName: "unitsLeft", isSignal: true, isRequired: false, transformFunction: null }, configUnitLeft: { classPropertyName: "configUnitLeft", publicName: "configUnitLeft", isSignal: true, isRequired: false, transformFunction: null }, keySelectedUnitLeft: { classPropertyName: "keySelectedUnitLeft", publicName: "keySelectedUnitLeft", isSignal: true, isRequired: false, transformFunction: null }, unitsRight: { classPropertyName: "unitsRight", publicName: "unitsRight", isSignal: true, isRequired: false, transformFunction: null }, configUnitRight: { classPropertyName: "configUnitRight", publicName: "configUnitRight", isSignal: true, isRequired: false, transformFunction: null }, keySelectedUnitRight: { classPropertyName: "keySelectedUnitRight", publicName: "keySelectedUnitRight", isSignal: true, isRequired: false, transformFunction: null }, maxValueNumber: { classPropertyName: "maxValueNumber", publicName: "maxValueNumber", isSignal: true, isRequired: false, transformFunction: null }, minValueNumber: { classPropertyName: "minValueNumber", publicName: "minValueNumber", isSignal: true, isRequired: false, transformFunction: null }, isBaselineStyle: { classPropertyName: "isBaselineStyle", publicName: "isBaselineStyle", isSignal: true, isRequired: false, transformFunction: null }, valuePatternShowError: { classPropertyName: "valuePatternShowError", publicName: "valuePatternShowError", isSignal: true, isRequired: false, transformFunction: null }, validPattern: { classPropertyName: "validPattern", publicName: "validPattern", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, validMinLength: { classPropertyName: "validMinLength", publicName: "validMinLength", isSignal: true, isRequired: false, transformFunction: null }, validMinValue: { classPropertyName: "validMinValue", publicName: "validMinValue", isSignal: true, isRequired: false, transformFunction: null }, validMaxValue: { classPropertyName: "validMaxValue", publicName: "validMaxValue", isSignal: true, isRequired: false, transformFunction: null }, validMaxLength: { classPropertyName: "validMaxLength", publicName: "validMaxLength", isSignal: true, isRequired: false, transformFunction: null }, validDuplicate: { classPropertyName: "validDuplicate", publicName: "validDuplicate", isSignal: true, isRequired: false, transformFunction: null }, functionValid: { classPropertyName: "functionValid", publicName: "functionValid", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, positionMessageErrorStartInput: { classPropertyName: "positionMessageErrorStartInput", publicName: "positionMessageErrorStartInput", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, templateLeftBottomInput: { classPropertyName: "templateLeftBottomInput", publicName: "templateLeftBottomInput", isSignal: true, isRequired: false, transformFunction: null }, templateRightBottomInput: { classPropertyName: "templateRightBottomInput", publicName: "templateRightBottomInput", isSignal: true, isRequired: false, transformFunction: null }, onlyAcceptNegativeValue: { classPropertyName: "onlyAcceptNegativeValue", publicName: "onlyAcceptNegativeValue", isSignal: true, isRequired: false, transformFunction: null }, autoAddZeroLessThan10InTypeInt: { classPropertyName: "autoAddZeroLessThan10InTypeInt", publicName: "autoAddZeroLessThan10InTypeInt", isSignal: true, isRequired: false, transformFunction: null }, maxLengthNumberCount: { classPropertyName: "maxLengthNumberCount", publicName: "maxLengthNumberCount", isSignal: true, isRequired: false, transformFunction: null }, classMessageErrorInclude: { classPropertyName: "classMessageErrorInclude", publicName: "classMessageErrorInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreUnitRightClassReadOnly: { classPropertyName: "ignoreUnitRightClassReadOnly", publicName: "ignoreUnitRightClassReadOnly", isSignal: true, isRequired: false, transformFunction: null }, paddingRightCustomSpecific: { classPropertyName: "paddingRightCustomSpecific", publicName: "paddingRightCustomSpecific", isSignal: true, isRequired: false, transformFunction: null }, focusTimeOut: { classPropertyName: "focusTimeOut", publicName: "focusTimeOut", isSignal: true, isRequired: false, transformFunction: null }, ignoreAddItem: { classPropertyName: "ignoreAddItem", publicName: "ignoreAddItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreRemove: { classPropertyName: "ignoreRemove", publicName: "ignoreRemove", isSignal: true, isRequired: false, transformFunction: null }, maxItems: { classPropertyName: "maxItems", publicName: "maxItems", isSignal: true, isRequired: false, transformFunction: null }, minItems: { classPropertyName: "minItems", publicName: "minItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", outFunctionsControl: "outFunctionsControl", outRemove: "outRemove", outAddItem: "outAddItem", outClickButtonLabel: "outClickButtonLabel", outSwitchEventLabel: "outSwitchEventLabel", outLabelRightClick: "outLabelRightClick", outLabelLeftClick: "outLabelLeftClick", outValueChange: "outValueChange" }, ngImport: i0, template: "@if (fieldNameBind() && items(); as items) {\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [labelLeft]=\"labelConfig.labelLeft\"\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [labelLeftBehindToggleButton]=\"labelConfig.labelLeftBehindToggleButton\"\n [popover]=\"labelConfig.popover\"\n [required]=\"labelConfig.required\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [labelRightRequired]=\"labelConfig.labelRightRequired\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleSize]=\"labelConfig.toggleSize || 'default'\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [zIndexPopover]=\"labelConfig.zIndexPopover || 10\"\n [timerDestroyPopover]=\"labelConfig.timerDestroyPopover || 0\"\n [count]=\"labelConfig.count\"\n [limitLength]=\"labelConfig.limitLength\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelLeftClick)=\"handlerEventLabelLeftLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n }\n @for (item of items; track item.uniqKey; let first = $first; let index = $index) {\n <div class=\"flex\"\n [style.marginTop.px]=\"!first ? formInputSpacing() : 0\">\n\n @if (leftTemplateItems(); as leftTemplateItems) {\n <div class=\"flex {{ leftTemplateItems.classInclude }}\">\n @for (rightItem of leftTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('template') {\n @if (item.templateLeftOutlet || templateLeftOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateLeftOutlet || templateLeftOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n <libs_ui-components-inputs-valid [item]=\"item\"\n [fieldNameBind]=\"fieldNameBind()\"\n [placeholder]=\"item.placeholder ?? placeholder()\"\n [emitEmptyInDataTypeNumber]=\"emitEmptyInDataTypeNumber()\"\n [tagInput]=\"tagInput()\"\n [dataType]=\"dataType()\"\n [fixedFloat]=\"fixedFloat()\"\n [readonly]=\"readonly() || item.readonly\"\n [disable]=\"disable() || item.disable\"\n [classContainerInput]=\"classContainerInput()\"\n [classIncludeInput]=\"classIncludeInput()\"\n [acceptNegativeValue]=\"acceptNegativeValue()\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [ignoreWidthInput100]=\"ignoreWidthInput100()\"\n [showCount]=\"showCount()\"\n [resetAutoCompletePassword]=\"resetAutoCompletePassword()\"\n [hiddenContent]=\"hiddenContent()\"\n [noBorder]=\"noBorder()\"\n [backgroundNone]=\"backgroundNone()\"\n [useColorModeExist]=\"useColorModeExist()\"\n [keepPlaceholderOnly]=\"keepPlaceholderOnly()\"\n [classContainerBottomInput]=\"classContainerBottomInput()\"\n [autoRemoveEmoji]=\"autoRemoveEmoji()\"\n [defaultHeight]=\"defaultHeight()\"\n [ignoreShowError]=\"ignoreShowError()\"\n [borderError]=\"borderError()\"\n [unitsLeft]=\"item.unitsLeft || unitsLeft()\"\n [configUnitLeft]=\"item.configUnitLeft || configUnitLeft()\"\n [keySelectedUnitLeft]=\"item.keySelectedUnitLeft || keySelectedUnitLeft()\"\n [unitsRight]=\"item.unitsRight || unitsRight()\"\n [configUnitRight]=\"item.configUnitRight || configUnitRight()\"\n [keySelectedUnitRight]=\"item.keySelectedUnitRight || keySelectedUnitRight()\"\n [maxValueNumber]=\"item.maxValueNumber || maxValueNumber()\"\n [minValueNumber]=\"item.minValueNumber || minValueNumber()\"\n [isBaselineStyle]=\"isBaselineStyle()\"\n [valuePatternShowError]=\"valuePatternShowError()\"\n [validPattern]=\"validPattern()\"\n [validRequired]=\"validRequired()\"\n [validMinLength]=\"validMinLength()\"\n [validMinValue]=\"validMinValue()\"\n [validMaxValue]=\"validMaxValue()\"\n [validMaxLength]=\"validMaxLength()\"\n [functionValid]=\"functionValid()\"\n [maxLength]=\"item.maxLength || maxLength()\"\n [positionMessageErrorStartInput]=\"positionMessageErrorStartInput()\"\n [classInclude]=\"classInclude()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [autoAddZeroLessThan10InTypeInt]=\"autoAddZeroLessThan10InTypeInt()\"\n [maxLengthNumberCount]=\"maxLengthNumberCount()\"\n [classMessageErrorInclude]=\"classMessageErrorInclude()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [ignoreUnitRightClassReadOnly]=\"ignoreUnitRightClassReadOnly()\"\n [paddingRightCustomSpecific]=\"paddingRightCustomSpecific()\"\n [focusTimeOut]=\"focusTimeOut()\"\n (outValueChange)=\"handlerValueChange($event, item)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event, item)\" />\n\n @if (rightTemplateItems(); as rightTemplateItems) {\n <div class=\"flex items-center {{ rightTemplateItems.classInclude }}\"\n [style.height.px]=\"defaultHeight() || 32\">\n @for (rightItem of rightTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('remove') {\n @if (!ignoreRemove() && !item.ignoreRemove && items.length > minItems()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-remove mr-[0px]'\"\n classInclude=\"libs-ui-icon-hover-danger !p-[2px] ml-[16px] {{ rightItem.classInclude }}\"\n (outClick)=\"handlerRemove($event, item, index)\" />\n }\n }\n\n @case ('template') {\n @if (item.templateRightOutlet || templateRightOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateRightOutlet || templateRightOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n </div>\n }\n}\n\n@if (!ignoreAddItem() && (!maxItems() || items().length < maxItems())) {\n <libs_ui-components-buttons-button [type]=\"addItemButtonConfig()?.type || 'button-link-primary'\"\n [label]=\"addItemButtonConfig()?.label || 'i18n_add_new'\"\n [classLabel]=\"addItemButtonConfig()?.classLabel || 'libs-uifont-head-5m'\"\n [classIconLeft]=\"addItemButtonConfig()?.classIconLeft || 'libs-ui-icon-add text-[10px] mr-[8px]'\"\n [classInclude]=\"addItemButtonConfig()?.classInclude || '!pb-0 !pl-0 !py-[2px] mt-[8px]'\"\n [disable]=\"disable() || false\"\n (outClick)=\"handlerAddItem($event)\" />\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "hiddenContent", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsInputsAddComponent, decorators: [{
251
+ type: Component,
252
+ args: [{ selector: 'libs_ui-components-inputs-add', standalone: true, imports: [
253
+ TranslateModule, NgTemplateOutlet,
254
+ LibsUiComponentsButtonsButtonComponent,
255
+ LibsUiComponentsInputsValidComponent,
256
+ LibsUiComponentsLabelComponent
257
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (fieldNameBind() && items(); as items) {\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [labelLeft]=\"labelConfig.labelLeft\"\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [labelLeftBehindToggleButton]=\"labelConfig.labelLeftBehindToggleButton\"\n [popover]=\"labelConfig.popover\"\n [required]=\"labelConfig.required\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [labelRightRequired]=\"labelConfig.labelRightRequired\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleSize]=\"labelConfig.toggleSize || 'default'\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [zIndexPopover]=\"labelConfig.zIndexPopover || 10\"\n [timerDestroyPopover]=\"labelConfig.timerDestroyPopover || 0\"\n [count]=\"labelConfig.count\"\n [limitLength]=\"labelConfig.limitLength\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelLeftClick)=\"handlerEventLabelLeftLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n }\n @for (item of items; track item.uniqKey; let first = $first; let index = $index) {\n <div class=\"flex\"\n [style.marginTop.px]=\"!first ? formInputSpacing() : 0\">\n\n @if (leftTemplateItems(); as leftTemplateItems) {\n <div class=\"flex {{ leftTemplateItems.classInclude }}\">\n @for (rightItem of leftTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('template') {\n @if (item.templateLeftOutlet || templateLeftOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateLeftOutlet || templateLeftOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n <libs_ui-components-inputs-valid [item]=\"item\"\n [fieldNameBind]=\"fieldNameBind()\"\n [placeholder]=\"item.placeholder ?? placeholder()\"\n [emitEmptyInDataTypeNumber]=\"emitEmptyInDataTypeNumber()\"\n [tagInput]=\"tagInput()\"\n [dataType]=\"dataType()\"\n [fixedFloat]=\"fixedFloat()\"\n [readonly]=\"readonly() || item.readonly\"\n [disable]=\"disable() || item.disable\"\n [classContainerInput]=\"classContainerInput()\"\n [classIncludeInput]=\"classIncludeInput()\"\n [acceptNegativeValue]=\"acceptNegativeValue()\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [ignoreWidthInput100]=\"ignoreWidthInput100()\"\n [showCount]=\"showCount()\"\n [resetAutoCompletePassword]=\"resetAutoCompletePassword()\"\n [hiddenContent]=\"hiddenContent()\"\n [noBorder]=\"noBorder()\"\n [backgroundNone]=\"backgroundNone()\"\n [useColorModeExist]=\"useColorModeExist()\"\n [keepPlaceholderOnly]=\"keepPlaceholderOnly()\"\n [classContainerBottomInput]=\"classContainerBottomInput()\"\n [autoRemoveEmoji]=\"autoRemoveEmoji()\"\n [defaultHeight]=\"defaultHeight()\"\n [ignoreShowError]=\"ignoreShowError()\"\n [borderError]=\"borderError()\"\n [unitsLeft]=\"item.unitsLeft || unitsLeft()\"\n [configUnitLeft]=\"item.configUnitLeft || configUnitLeft()\"\n [keySelectedUnitLeft]=\"item.keySelectedUnitLeft || keySelectedUnitLeft()\"\n [unitsRight]=\"item.unitsRight || unitsRight()\"\n [configUnitRight]=\"item.configUnitRight || configUnitRight()\"\n [keySelectedUnitRight]=\"item.keySelectedUnitRight || keySelectedUnitRight()\"\n [maxValueNumber]=\"item.maxValueNumber || maxValueNumber()\"\n [minValueNumber]=\"item.minValueNumber || minValueNumber()\"\n [isBaselineStyle]=\"isBaselineStyle()\"\n [valuePatternShowError]=\"valuePatternShowError()\"\n [validPattern]=\"validPattern()\"\n [validRequired]=\"validRequired()\"\n [validMinLength]=\"validMinLength()\"\n [validMinValue]=\"validMinValue()\"\n [validMaxValue]=\"validMaxValue()\"\n [validMaxLength]=\"validMaxLength()\"\n [functionValid]=\"functionValid()\"\n [maxLength]=\"item.maxLength || maxLength()\"\n [positionMessageErrorStartInput]=\"positionMessageErrorStartInput()\"\n [classInclude]=\"classInclude()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [autoAddZeroLessThan10InTypeInt]=\"autoAddZeroLessThan10InTypeInt()\"\n [maxLengthNumberCount]=\"maxLengthNumberCount()\"\n [classMessageErrorInclude]=\"classMessageErrorInclude()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [ignoreUnitRightClassReadOnly]=\"ignoreUnitRightClassReadOnly()\"\n [paddingRightCustomSpecific]=\"paddingRightCustomSpecific()\"\n [focusTimeOut]=\"focusTimeOut()\"\n (outValueChange)=\"handlerValueChange($event, item)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event, item)\" />\n\n @if (rightTemplateItems(); as rightTemplateItems) {\n <div class=\"flex items-center {{ rightTemplateItems.classInclude }}\"\n [style.height.px]=\"defaultHeight() || 32\">\n @for (rightItem of rightTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('remove') {\n @if (!ignoreRemove() && !item.ignoreRemove && items.length > minItems()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-remove mr-[0px]'\"\n classInclude=\"libs-ui-icon-hover-danger !p-[2px] ml-[16px] {{ rightItem.classInclude }}\"\n (outClick)=\"handlerRemove($event, item, index)\" />\n }\n }\n\n @case ('template') {\n @if (item.templateRightOutlet || templateRightOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateRightOutlet || templateRightOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n </div>\n }\n}\n\n@if (!ignoreAddItem() && (!maxItems() || items().length < maxItems())) {\n <libs_ui-components-buttons-button [type]=\"addItemButtonConfig()?.type || 'button-link-primary'\"\n [label]=\"addItemButtonConfig()?.label || 'i18n_add_new'\"\n [classLabel]=\"addItemButtonConfig()?.classLabel || 'libs-uifont-head-5m'\"\n [classIconLeft]=\"addItemButtonConfig()?.classIconLeft || 'libs-ui-icon-add text-[10px] mr-[8px]'\"\n [classInclude]=\"addItemButtonConfig()?.classInclude || '!pb-0 !pl-0 !py-[2px] mt-[8px]'\"\n [disable]=\"disable() || false\"\n (outClick)=\"handlerAddItem($event)\" />\n}\n" }]
258
+ }] });
259
+
260
+ /**
261
+ * Generated bundle index. Do not edit.
262
+ */
263
+
264
+ export { LibsUiComponentsInputsAddComponent };
265
+ //# sourceMappingURL=libs-ui-components-inputs-add.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libs-ui-components-inputs-add.mjs","sources":["../../../../../../libs-ui/components/inputs/add/src/defines/add.define.ts","../../../../../../libs-ui/components/inputs/add/src/add.component.ts","../../../../../../libs-ui/components/inputs/add/src/add.component.html","../../../../../../libs-ui/components/inputs/add/src/libs-ui-components-inputs-add.ts"],"sourcesContent":["import { ITemplateRightLeftItem } from \"../interfaces/input-add.interface\";\n\nexport const rightTemplateItems = (): ITemplateRightLeftItem => {\n return {\n classInclude: '',\n items: [\n {\n type: 'remove',\n classInclude: ''\n },\n {\n type: 'template',\n classInclude: ''\n }\n ]\n };\n};\n\nexport const leftTemplateItems = (): ITemplateRightLeftItem => {\n return {\n classInclude: '',\n items: [\n {\n type: 'remove',\n classInclude: ''\n },\n {\n type: 'template',\n classInclude: ''\n }\n ]\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, model, OnInit, output, signal, TemplateRef } from '@angular/core';\nimport { IButton, LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IInputValidFunctionControlEvent, IInputValidUnitConfig, IValid, IValidLength, IValidPattern, IValidRequired, LibsUiComponentsInputsValidComponent, TYPE_FUNCTION_INPUT_VALID } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { ISwitchEvent } from '@libs-ui/components-switch';\nimport { TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { cloneDeep, uuid } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { leftTemplateItems, rightTemplateItems } from './defines/add.define';\nimport { IEmitValueChange, IInputAdd, ITemplateRightLeftItem } from './interfaces';\nimport { IInputAddFunctionControlEvent } from './interfaces/function-control-event.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-add',\n templateUrl: './add.component.html',\n styleUrls: ['./add.component.scss'],\n standalone: true,\n imports: [\n TranslateModule, NgTemplateOutlet,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsInputsValidComponent,\n LibsUiComponentsLabelComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LibsUiComponentsInputsAddComponent implements OnInit {\n /* PROPERTY */\n private timeOutKeyUp = signal<number>(0);\n\n /* INPUT */\n readonly fieldNameBind = input.required<string>();\n readonly items = model.required<Array<IInputAdd>>();\n readonly readonly = input<boolean>(false);\n readonly disable = input<boolean>(false);\n readonly addItemButtonConfig = input<IButton>();\n readonly placeholder = input<string>();\n readonly labelConfig = input<ILabel>();\n readonly formInputSpacing = input<number>(8); // khoảng cách giữa hai ô input\n readonly configItemAddToItems = input<IInputAdd>();\n readonly rightTemplateItems = input<ITemplateRightLeftItem>(rightTemplateItems());\n readonly leftTemplateItems = input<ITemplateRightLeftItem>(leftTemplateItems());\n readonly templateLeftOutlet = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly templateRightOutlet = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly ignoreWidthInput100 = input<boolean>();\n readonly classIncludeInput = input<string>();\n readonly classContainerInput = input<string>();\n readonly showCount = input<boolean>();\n readonly ignoreValidEmptyField = input<boolean>(); // chỉ cần có ít nhất 1 field có giá trị là valid\n\n readonly emitEmptyInDataTypeNumber = input<boolean>();\n readonly tagInput = input<'input' | 'textarea' | undefined>();\n readonly dataType = input<'string' | 'int' | 'float' | 'bigint' | undefined>();\n readonly fixedFloat = input<number>();\n readonly acceptNegativeValue = input<boolean>();\n readonly valueUpDownNumber = input<number | undefined>();\n readonly resetAutoCompletePassword = input<boolean>();\n readonly hiddenContent = input<boolean>(); // sử dụng để set type cho input dạng text hay password\n readonly noBorder = input<boolean>();\n readonly backgroundNone = input<boolean>();\n readonly useColorModeExist = input<boolean>();\n readonly keepPlaceholderOnly = input<boolean>();\n\n readonly classContainerBottomInput = input<string>();\n readonly autoRemoveEmoji = input<boolean>();\n readonly defaultHeight = input<number>();\n readonly ignoreShowError = input<boolean>();\n readonly borderError = input<boolean>();\n\n readonly unitsLeft = input<Array<any>>();\n readonly configUnitLeft = input<IInputValidUnitConfig>({\n fieldKey: 'id',\n fieldLabel: 'label',\n });\n readonly keySelectedUnitLeft = input<any>();\n\n readonly unitsRight = input<Array<any>>();\n readonly configUnitRight = input<IInputValidUnitConfig>({\n fieldKey: 'id',\n fieldLabel: 'label',\n });\n readonly keySelectedUnitRight = input<any>();\n\n readonly maxValueNumber = input<number>(Number.MAX_SAFE_INTEGER);\n readonly minValueNumber = input<number>();\n readonly isBaselineStyle = input<boolean>(); // align-items-baseline dùng khi căn input thẳng hàng với tất cả các phần khác dù có validate hay bất cứ 1 cái gì\n\n readonly valuePatternShowError = input<boolean>(); // mặc định khi test pattern trả tề giá trị bằng false sẽ báo lỗi\n readonly validPattern = input<Array<IValidPattern>>();\n readonly validRequired = input<IValidRequired>();\n readonly validMinLength = input<IValidLength>();\n readonly validMinValue = input<IValid>();\n readonly validMaxValue = input<IValid>();\n readonly validMaxLength = input<IValid>();\n readonly validDuplicate = input<IValid>();\n readonly functionValid = input<TYPE_FUNCTION_INPUT_VALID>();\n readonly maxLength = input<number>();\n readonly positionMessageErrorStartInput = input<boolean>(); // khi có template left và right mà muốn mesage error xuất hiện bắt đầu từ ô input thay vì bắt đầu từ template trái\n readonly classInclude = input<string>();\n readonly resize = input<'auto' | 'none'>();\n readonly templateLeftBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly templateRightBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly onlyAcceptNegativeValue = input<boolean>();\n readonly autoAddZeroLessThan10InTypeInt = input<boolean>();\n readonly maxLengthNumberCount = input<number>();\n readonly classMessageErrorInclude = input<string>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly ignoreUnitRightClassReadOnly = input<boolean>();\n readonly paddingRightCustomSpecific = input<number>(); // fix paddingRight count ko auto tính #52185\n readonly focusTimeOut = input<number>();\n\n readonly ignoreAddItem = input<boolean>(false);\n readonly ignoreRemove = input<boolean>(false);\n readonly maxItems = input<number>(5); // số lượng input tối đa\n readonly minItems = input<number>(1); // không được phép xóa nếu số lượng items <= minItems.length\n\n /* OUTPUT */\n readonly outFunctionsControl = output<IInputAddFunctionControlEvent>();\n readonly outRemove = output<IInputAdd>();\n readonly outAddItem = output<IInputAdd>();\n readonly outClickButtonLabel = output<IButton>();\n readonly outSwitchEventLabel = output<ISwitchEvent>();\n readonly outLabelRightClick = output<boolean>();\n readonly outLabelLeftClick = output<MouseEvent>();\n readonly outValueChange = output<IEmitValueChange>();\n\n ngOnInit() {\n if (!this.items().length) {\n this.items.set([{ [this.fieldNameBind()]: '' }]);\n }\n\n this.items.update(items => items.map(item => {\n return { ...item, uniqKey: uuid() }\n }));\n\n this.outFunctionsControl.emit({\n checkIsValid: this.checkIsValid.bind(this),\n setMessageError: this.setMessageError.bind(this)\n });\n }\n\n\n /* FUNCTIONS */\n private async setMessageError(message: string) {\n for (const item of this.items()) {\n await item.functionControl?.setMessageError(message)\n }\n }\n\n private async checkIsValid(checkValidRequired = true, currentItem?: IInputAdd): Promise<boolean> {\n let valid = true;\n\n if (this.disable() || this.readonly()) {\n return true;\n }\n\n for (const input of this.items()) {\n if (input.readonly || input.disable) {\n continue;\n }\n\n if (checkValidRequired) {\n if (!(await this.checkValidRequired(input))) {\n valid = false;\n }\n continue;\n }\n\n if (currentItem?.uniqKey === input.uniqKey) {\n valid = await input.functionControl?.checkIsValid() ?? false;\n }\n\n if (!this.validDuplicate()) {\n continue;\n }\n\n if (!input[this.fieldNameBind()]) {\n continue;\n }\n\n if (typeof input[this.fieldNameBind()] === 'string' && !input[this.fieldNameBind()].trim()) {\n continue;\n }\n\n const fieldsDuplicate = this.items().filter(element => element[this.fieldNameBind()] === input[this.fieldNameBind()]);\n if (!fieldsDuplicate || !fieldsDuplicate.length) {\n input.functionControl?.setMessageError('');\n\n continue;\n }\n\n if (fieldsDuplicate.length < 2) {\n input.functionControl?.setMessageError('');\n\n continue;\n }\n valid = false;\n input.functionControl?.setMessageError(this.validDuplicate()?.message || 'i18n_valid_duplicate_msg');\n }\n\n return valid;\n }\n\n private async checkValidRequired(input: IInputAdd) {\n let valid = true;\n const validIfAtLeastOneValue = this.ignoreValidEmptyField() && this.items().find(item => !!item[this.fieldNameBind()]?.trim());\n\n if (validIfAtLeastOneValue) {\n input.functionControl?.setMessageError('');\n return true;\n }\n\n if (!(await input.functionControl?.checkIsValid())) {\n valid = false;\n }\n\n return valid;\n }\n\n protected handlerAddItem(event: Event) {\n event.stopPropagation();\n\n if (!this.configItemAddToItems()) {\n const newItem: IInputAdd = { uniqKey: uuid(), [this.fieldNameBind()]: '' };\n this.items.update(items => [...items, newItem]);\n this.outAddItem.emit(newItem);\n\n return;\n }\n const newItem: IInputAdd = { ...cloneDeep(this.configItemAddToItems), uniqKey: uuid(), [this.fieldNameBind()]: '' };\n this.items.update(items => [...items, newItem]);\n this.outAddItem.emit(newItem);\n }\n\n protected handlerRemove(event: Event, item: IInputAdd, index: number) {\n event.stopPropagation();\n this.items.update(currentItems => currentItems.filter((_, i) => i !== index));\n this.outRemove.emit(item);\n this.timeOutKeyUp.set(setTimeout(() => {\n clearTimeout(this.timeOutKeyUp());\n this.checkIsValid(false);\n }, 250));\n }\n\n protected handlerClickButtonLabel(button: IButton) {\n this.outClickButtonLabel.emit(button);\n }\n\n protected handlerSwitchLabel(event: ISwitchEvent) {\n this.outSwitchEventLabel.emit(event);\n }\n\n protected handlerEventLabelLeftLabel(event: MouseEvent) {\n this.outLabelLeftClick.emit(event);\n }\n\n protected handlerEventLabelRightLabel() {\n this.outLabelRightClick.emit(true);\n }\n\n protected handlerFunctionsControl(event: IInputValidFunctionControlEvent, item: IInputAdd) {\n item.functionControl = event;\n }\n\n protected handlerValueChange(value: string | number, item: IInputAdd) {\n item[this.fieldNameBind()] = value;\n\n this.outValueChange.emit({ value, item });\n\n this.timeOutKeyUp.set(setTimeout(() => {\n clearTimeout(this.timeOutKeyUp());\n this.checkIsValid(false, item);\n }, 250));\n }\n}","@if (fieldNameBind() && items(); as items) {\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [labelLeft]=\"labelConfig.labelLeft\"\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [labelLeftBehindToggleButton]=\"labelConfig.labelLeftBehindToggleButton\"\n [popover]=\"labelConfig.popover\"\n [required]=\"labelConfig.required\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [labelRightRequired]=\"labelConfig.labelRightRequired\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleSize]=\"labelConfig.toggleSize || 'default'\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [zIndexPopover]=\"labelConfig.zIndexPopover || 10\"\n [timerDestroyPopover]=\"labelConfig.timerDestroyPopover || 0\"\n [count]=\"labelConfig.count\"\n [limitLength]=\"labelConfig.limitLength\"\n (outClickButton)=\"handlerClickButtonLabel($event)\"\n (outSwitchEvent)=\"handlerSwitchLabel($event)\"\n (outLabelLeftClick)=\"handlerEventLabelLeftLabel($event)\"\n (outLabelRightClick)=\"handlerEventLabelRightLabel()\" />\n }\n @for (item of items; track item.uniqKey; let first = $first; let index = $index) {\n <div class=\"flex\"\n [style.marginTop.px]=\"!first ? formInputSpacing() : 0\">\n\n @if (leftTemplateItems(); as leftTemplateItems) {\n <div class=\"flex {{ leftTemplateItems.classInclude }}\">\n @for (rightItem of leftTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('template') {\n @if (item.templateLeftOutlet || templateLeftOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateLeftOutlet || templateLeftOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n <libs_ui-components-inputs-valid [item]=\"item\"\n [fieldNameBind]=\"fieldNameBind()\"\n [placeholder]=\"item.placeholder ?? placeholder()\"\n [emitEmptyInDataTypeNumber]=\"emitEmptyInDataTypeNumber()\"\n [tagInput]=\"tagInput()\"\n [dataType]=\"dataType()\"\n [fixedFloat]=\"fixedFloat()\"\n [readonly]=\"readonly() || item.readonly\"\n [disable]=\"disable() || item.disable\"\n [classContainerInput]=\"classContainerInput()\"\n [classIncludeInput]=\"classIncludeInput()\"\n [acceptNegativeValue]=\"acceptNegativeValue()\"\n [valueUpDownNumber]=\"valueUpDownNumber() || 1\"\n [ignoreWidthInput100]=\"ignoreWidthInput100()\"\n [showCount]=\"showCount()\"\n [resetAutoCompletePassword]=\"resetAutoCompletePassword()\"\n [hiddenContent]=\"hiddenContent()\"\n [noBorder]=\"noBorder()\"\n [backgroundNone]=\"backgroundNone()\"\n [useColorModeExist]=\"useColorModeExist()\"\n [keepPlaceholderOnly]=\"keepPlaceholderOnly()\"\n [classContainerBottomInput]=\"classContainerBottomInput()\"\n [autoRemoveEmoji]=\"autoRemoveEmoji()\"\n [defaultHeight]=\"defaultHeight()\"\n [ignoreShowError]=\"ignoreShowError()\"\n [borderError]=\"borderError()\"\n [unitsLeft]=\"item.unitsLeft || unitsLeft()\"\n [configUnitLeft]=\"item.configUnitLeft || configUnitLeft()\"\n [keySelectedUnitLeft]=\"item.keySelectedUnitLeft || keySelectedUnitLeft()\"\n [unitsRight]=\"item.unitsRight || unitsRight()\"\n [configUnitRight]=\"item.configUnitRight || configUnitRight()\"\n [keySelectedUnitRight]=\"item.keySelectedUnitRight || keySelectedUnitRight()\"\n [maxValueNumber]=\"item.maxValueNumber || maxValueNumber()\"\n [minValueNumber]=\"item.minValueNumber || minValueNumber()\"\n [isBaselineStyle]=\"isBaselineStyle()\"\n [valuePatternShowError]=\"valuePatternShowError()\"\n [validPattern]=\"validPattern()\"\n [validRequired]=\"validRequired()\"\n [validMinLength]=\"validMinLength()\"\n [validMinValue]=\"validMinValue()\"\n [validMaxValue]=\"validMaxValue()\"\n [validMaxLength]=\"validMaxLength()\"\n [functionValid]=\"functionValid()\"\n [maxLength]=\"item.maxLength || maxLength()\"\n [positionMessageErrorStartInput]=\"positionMessageErrorStartInput()\"\n [classInclude]=\"classInclude()\"\n [onlyAcceptNegativeValue]=\"onlyAcceptNegativeValue()\"\n [autoAddZeroLessThan10InTypeInt]=\"autoAddZeroLessThan10InTypeInt()\"\n [maxLengthNumberCount]=\"maxLengthNumberCount()\"\n [classMessageErrorInclude]=\"classMessageErrorInclude()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [ignoreUnitRightClassReadOnly]=\"ignoreUnitRightClassReadOnly()\"\n [paddingRightCustomSpecific]=\"paddingRightCustomSpecific()\"\n [focusTimeOut]=\"focusTimeOut()\"\n (outValueChange)=\"handlerValueChange($event, item)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event, item)\" />\n\n @if (rightTemplateItems(); as rightTemplateItems) {\n <div class=\"flex items-center {{ rightTemplateItems.classInclude }}\"\n [style.height.px]=\"defaultHeight() || 32\">\n @for (rightItem of rightTemplateItems.items; track $index) {\n @switch (rightItem.type) {\n @case ('remove') {\n @if (!ignoreRemove() && !item.ignoreRemove && items.length > minItems()) {\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-remove mr-[0px]'\"\n classInclude=\"libs-ui-icon-hover-danger !p-[2px] ml-[16px] {{ rightItem.classInclude }}\"\n (outClick)=\"handlerRemove($event, item, index)\" />\n }\n }\n\n @case ('template') {\n @if (item.templateRightOutlet || templateRightOutlet()) {\n <ng-container\n *ngTemplateOutlet=\"(item.templateRightOutlet || templateRightOutlet() || null);context:{item: item, index: index}\" />\n }\n }\n }\n }\n </div>\n }\n </div>\n }\n}\n\n@if (!ignoreAddItem() && (!maxItems() || items().length < maxItems())) {\n <libs_ui-components-buttons-button [type]=\"addItemButtonConfig()?.type || 'button-link-primary'\"\n [label]=\"addItemButtonConfig()?.label || 'i18n_add_new'\"\n [classLabel]=\"addItemButtonConfig()?.classLabel || 'libs-uifont-head-5m'\"\n [classIconLeft]=\"addItemButtonConfig()?.classIconLeft || 'libs-ui-icon-add text-[10px] mr-[8px]'\"\n [classInclude]=\"addItemButtonConfig()?.classInclude || '!pb-0 !pl-0 !py-[2px] mt-[8px]'\"\n [disable]=\"disable() || false\"\n (outClick)=\"handlerAddItem($event)\" />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './add.component';
2
+ export * from './interfaces';
@@ -0,0 +1,4 @@
1
+ export interface IInputAddFunctionControlEvent {
2
+ checkIsValid: () => Promise<boolean>;
3
+ setMessageError: (message: string) => Promise<void>;
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./input-add.interface";
2
+ export * from "./function-control-event.interface";
@@ -0,0 +1,41 @@
1
+ import { TemplateRef } from "@angular/core";
2
+ import { IInputValidFunctionControlEvent, IInputValidUnitConfig } from "@libs-ui/components-inputs-valid";
3
+ import { ILabel } from "@libs-ui/components-label";
4
+ import { TYPE_TEMPLATE_REF } from "@libs-ui/interfaces-types";
5
+ export interface IInputAddConfig {
6
+ count?: number;
7
+ maxCount?: number;
8
+ classCircle?: string;
9
+ }
10
+ export interface IInputAdd extends Record<string, any> {
11
+ uniqKey?: string;
12
+ disable?: boolean;
13
+ readonly?: boolean;
14
+ ignoreRemove?: boolean;
15
+ labelConfig?: ILabel;
16
+ placeholder?: string;
17
+ maxValueNumber?: number;
18
+ minValueNumber?: number;
19
+ maxLength?: number;
20
+ unitsLeft?: Array<any>;
21
+ configUnitLeft?: IInputValidUnitConfig;
22
+ keySelectedUnitLeft?: any;
23
+ unitsRight?: Array<any>;
24
+ configUnitRight?: IInputValidUnitConfig;
25
+ keySelectedUnitRight?: any;
26
+ templateLeftOutlet?: TemplateRef<TYPE_TEMPLATE_REF>;
27
+ templateRightOutlet?: TemplateRef<TYPE_TEMPLATE_REF>;
28
+ functionControl?: IInputValidFunctionControlEvent;
29
+ [key: string]: any;
30
+ }
31
+ export interface ITemplateRightLeftItem {
32
+ classInclude?: string;
33
+ items: Array<{
34
+ type: 'remove' | 'template';
35
+ classInclude?: string;
36
+ }>;
37
+ }
38
+ export interface IEmitValueChange {
39
+ value: string | number;
40
+ item: IInputAdd;
41
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@libs-ui/components-inputs-add",
3
+ "version": "0.2.106.2",
4
+ "peerDependencies": {
5
+ "@angular/common": "^18.2.0",
6
+ "@angular/core": "^18.2.0"
7
+ },
8
+ "sideEffects": false,
9
+ "module": "fesm2022/libs-ui-components-inputs-add.mjs",
10
+ "typings": "index.d.ts",
11
+ "exports": {
12
+ "./package.json": {
13
+ "default": "./package.json"
14
+ },
15
+ ".": {
16
+ "types": "./index.d.ts",
17
+ "esm2022": "./esm2022/libs-ui-components-inputs-add.mjs",
18
+ "esm": "./esm2022/libs-ui-components-inputs-add.mjs",
19
+ "default": "./fesm2022/libs-ui-components-inputs-add.mjs"
20
+ }
21
+ },
22
+ "dependencies": {
23
+ "tslib": "^2.3.0"
24
+ }
25
+ }