@porscheinformatik/material-addons 18.0.4 → 19.0.1
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/fesm2022/porscheinformatik-material-addons.mjs +291 -260
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
- package/lib/alert/alert.component.d.ts.map +1 -1
- package/lib/button/danger-button/danger-button.component.d.ts.map +1 -1
- package/lib/button/flat-button/link-button.component.d.ts.map +1 -1
- package/lib/button/icon-button/icon-button.component.d.ts.map +1 -1
- package/lib/button/mad-basic-button.d.ts.map +1 -1
- package/lib/button/outline-button/outline-button.component.d.ts.map +1 -1
- package/lib/button/primary-button/primary-button.component.d.ts.map +1 -1
- package/lib/card/card.component.d.ts.map +1 -1
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts.map +1 -1
- package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.d.ts.map +1 -1
- package/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.d.ts.map +1 -1
- package/lib/data-table/data-table.component.d.ts.map +1 -1
- package/lib/file-upload/file-upload.component.d.ts +12 -5
- package/lib/file-upload/file-upload.component.d.ts.map +1 -1
- package/lib/layout/flowbar/flowbar.component.d.ts.map +1 -1
- package/lib/layout/sidebar/sidebar.component.d.ts.map +1 -1
- package/lib/layout/sidebar-layout/sidebar-layout.component.d.ts.map +1 -1
- package/lib/layout/toolbar/toolbar.component.d.ts.map +1 -1
- package/lib/material-action-button/material-action-button.component.d.ts.map +1 -1
- package/lib/numeric-field/number-format.service.d.ts +5 -0
- package/lib/numeric-field/number-format.service.d.ts.map +1 -1
- package/lib/numeric-field/numeric-field.module.d.ts.map +1 -1
- package/lib/quick-list/base-quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts.map +1 -1
- package/lib/quick-list/quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.d.ts.map +1 -1
- package/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.d.ts.map +1 -1
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -1
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts.map +1 -1
- package/lib/stepper/step-header/step-header.component.d.ts.map +1 -1
- package/lib/stepper/stepper.component.d.ts.map +1 -1
- package/lib/table/table.component.d.ts.map +1 -1
- package/package.json +3 -5
- package/version.d.ts +1 -1
- package/esm2022/lib/alert/alert-configuration.mjs +0 -12
- package/esm2022/lib/alert/alert.component.mjs +0 -65
- package/esm2022/lib/alert/alert.mjs +0 -3
- package/esm2022/lib/button/button.mjs +0 -9
- package/esm2022/lib/button/button.module.mjs +0 -74
- package/esm2022/lib/button/danger-button/danger-button.component.mjs +0 -27
- package/esm2022/lib/button/flat-button/link-button.component.mjs +0 -27
- package/esm2022/lib/button/icon-button/icon-button.component.mjs +0 -27
- package/esm2022/lib/button/mad-basic-button.mjs +0 -39
- package/esm2022/lib/button/mad-button/mad-button.directive.mjs +0 -61
- package/esm2022/lib/button/mad-button-group/mad-button-group.component.mjs +0 -21
- package/esm2022/lib/button/outline-button/outline-button.component.mjs +0 -30
- package/esm2022/lib/button/primary-button/primary-button.component.mjs +0 -27
- package/esm2022/lib/card/card.component.mjs +0 -139
- package/esm2022/lib/card/card.mjs +0 -2
- package/esm2022/lib/card/card.module.mjs +0 -22
- package/esm2022/lib/data-table/configuration/data-table-action-type.mjs +0 -6
- package/esm2022/lib/data-table/configuration/data-table-action.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-column-definition.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-column.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-filter-mode.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-global-configuration.mjs +0 -16
- package/esm2022/lib/data-table/configuration/data-table-header-type.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-persistence-configuration.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-row.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-emit-mode.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-emit-type.mjs +0 -2
- package/esm2022/lib/data-table/configuration/data-table-selection-mode.mjs +0 -2
- package/esm2022/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.mjs +0 -107
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.mjs +0 -43
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.mjs +0 -41
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-header.directive.mjs +0 -128
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-object.mjs +0 -2
- package/esm2022/lib/data-table/data-table-filter/data-table-filter-options.mjs +0 -2
- package/esm2022/lib/data-table/data-table-filter/data-table-filter.directive.mjs +0 -46
- package/esm2022/lib/data-table/data-table-persistence.service.mjs +0 -61
- package/esm2022/lib/data-table/data-table-template/data-table-template-cell-definition.directive.mjs +0 -28
- package/esm2022/lib/data-table/data-table-template/data-table-template-column-definition.directive.mjs +0 -22
- package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-cell-definition.directive.mjs +0 -28
- package/esm2022/lib/data-table/data-table-template/data-table-template-expandable-column-definition.directive.mjs +0 -22
- package/esm2022/lib/data-table/data-table.component.mjs +0 -765
- package/esm2022/lib/data-table/data-table.mjs +0 -11
- package/esm2022/lib/data-table/util/data-table-action-util.mjs +0 -40
- package/esm2022/lib/data-table/util/data-table-data-util.mjs +0 -49
- package/esm2022/lib/data-table/util/data-table-filter-util.mjs +0 -24
- package/esm2022/lib/data-table/util/data-table-sort-util.mjs +0 -80
- package/esm2022/lib/file-upload/drag-and-drop-directive.directive.mjs +0 -61
- package/esm2022/lib/file-upload/file-upload.component.mjs +0 -78
- package/esm2022/lib/layout/content-panel/content-header/content-header.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container/content-panel-container.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.mjs +0 -11
- package/esm2022/lib/layout/content-panel/content-panel.module.mjs +0 -48
- package/esm2022/lib/layout/content-panel/main-container/main-container.component.mjs +0 -11
- package/esm2022/lib/layout/flowbar/flowbar.component.mjs +0 -191
- package/esm2022/lib/layout/flowbar/flowbar.module.mjs +0 -18
- package/esm2022/lib/layout/sidebar/sidebar-item/sidebar-item.component.mjs +0 -11
- package/esm2022/lib/layout/sidebar/sidebar.component.mjs +0 -23
- package/esm2022/lib/layout/sidebar/sidebar.module.mjs +0 -20
- package/esm2022/lib/layout/sidebar-layout/sidebar-layout.component.mjs +0 -67
- package/esm2022/lib/layout/toolbar/toolbar-action.interface.mjs +0 -2
- package/esm2022/lib/layout/toolbar/toolbar.component.mjs +0 -98
- package/esm2022/lib/layout/toolbar/toolbar.module.mjs +0 -58
- package/esm2022/lib/layout/toolbar/toolbar.service.mjs +0 -124
- package/esm2022/lib/material-action-button/material-action-button.component.mjs +0 -37
- package/esm2022/lib/material-action-button/material-action-button.module.mjs +0 -21
- package/esm2022/lib/material-addons.module.mjs +0 -49
- package/esm2022/lib/numeric-field/number-format.service.mjs +0 -139
- package/esm2022/lib/numeric-field/numeric-field.directive.mjs +0 -299
- package/esm2022/lib/numeric-field/numeric-field.mjs +0 -2
- package/esm2022/lib/numeric-field/numeric-field.module.mjs +0 -24
- package/esm2022/lib/quick-list/base-quick-list.component.mjs +0 -124
- package/esm2022/lib/quick-list/quick-list-compact/quick-list-compact.component.mjs +0 -23
- package/esm2022/lib/quick-list/quick-list.component.mjs +0 -24
- package/esm2022/lib/quick-list/quick-list.mjs +0 -6
- package/esm2022/lib/quick-list/quick-list.module.mjs +0 -63
- package/esm2022/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.mjs +0 -23
- package/esm2022/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.mjs +0 -23
- package/esm2022/lib/readonly/readonly-form-field/readonly-form-field.component.mjs +0 -243
- package/esm2022/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs +0 -183
- package/esm2022/lib/readonly/readonly-form-field.module.mjs +0 -51
- package/esm2022/lib/stepper/mad-stepper-animation.mjs +0 -13
- package/esm2022/lib/stepper/step-header/step-header.component.mjs +0 -78
- package/esm2022/lib/stepper/stepper.component.mjs +0 -158
- package/esm2022/lib/stepper/stepper.module.mjs +0 -45
- package/esm2022/lib/table/column-header.mjs +0 -2
- package/esm2022/lib/table/table-action.mjs +0 -2
- package/esm2022/lib/table/table.component.mjs +0 -146
- package/esm2022/lib/table/table.mjs +0 -2
- package/esm2022/lib/table/table.module.mjs +0 -58
- package/esm2022/lib/throttle-click/throttle-click.directive.mjs +0 -39
- package/esm2022/lib/throttle-click/throttle-click.module.mjs +0 -17
- package/esm2022/porscheinformatik-material-addons.mjs +0 -5
- package/esm2022/public_api.mjs +0 -48
- package/esm2022/version.mjs +0 -2
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2018-2020 Porsche Informatik. All Rights Reserved.
|
|
3
|
-
* This software is released under MIT license.
|
|
4
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5
|
-
*/
|
|
6
|
-
import { Directive, EventEmitter, forwardRef, Input, Output, } from '@angular/core';
|
|
7
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
|
-
import { NumberFormatService } from './number-format.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./number-format.service";
|
|
11
|
-
const BACK_KEYCODE = 8;
|
|
12
|
-
const SPACE_KEYCODE = 32;
|
|
13
|
-
const DEL_KEYCODE = 46;
|
|
14
|
-
const CONTROL_KEYCODES_UPPER_BORDER = 46;
|
|
15
|
-
const OTHER_CONTROL_KEYS = new Set([224, 91, 93]);
|
|
16
|
-
export class NumericFieldDirective {
|
|
17
|
-
set numericValue(value) {
|
|
18
|
-
if (this._numericValue !== value && !(isNaN(this._numericValue) && (isNaN(value) || value === null))) {
|
|
19
|
-
this.originalValue = value;
|
|
20
|
-
// Don't roundOrTruncate if value was set to empty otherwise input value will be set to 0 instead of empty
|
|
21
|
-
// which happens when an input is being reset
|
|
22
|
-
this._numericValue = value === null || value === undefined ? value : this.roundOrTruncate(value); // eslint-disable-line
|
|
23
|
-
this.handleInputChanged();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
constructor(renderer, inputEl, numberFormatService) {
|
|
27
|
-
this.renderer = renderer;
|
|
28
|
-
this.inputEl = inputEl;
|
|
29
|
-
this.numberFormatService = numberFormatService;
|
|
30
|
-
this.textAlign = 'right';
|
|
31
|
-
this.decimalPlaces = 2;
|
|
32
|
-
this.roundValue = false;
|
|
33
|
-
this.autofillDecimals = false;
|
|
34
|
-
this.unit = null;
|
|
35
|
-
this.unitPosition = 'right';
|
|
36
|
-
this.numericValueChanged = new EventEmitter();
|
|
37
|
-
this.displayValue = '';
|
|
38
|
-
this.originalValue = NaN;
|
|
39
|
-
/* Control Values Accessor Stuff below */
|
|
40
|
-
// eslint-disable-next-line
|
|
41
|
-
this.onChange = () => { };
|
|
42
|
-
// eslint-disable-next-line
|
|
43
|
-
this.onTouched = () => { };
|
|
44
|
-
}
|
|
45
|
-
registerOnChange(fn) {
|
|
46
|
-
this.onChange = fn;
|
|
47
|
-
}
|
|
48
|
-
registerOnTouched(fn) {
|
|
49
|
-
this.onTouched = fn;
|
|
50
|
-
}
|
|
51
|
-
setDisabledState() {
|
|
52
|
-
// Dont need to implement since its just a directive
|
|
53
|
-
}
|
|
54
|
-
writeValue(value) {
|
|
55
|
-
this.numericValue = value;
|
|
56
|
-
}
|
|
57
|
-
ngOnInit() {
|
|
58
|
-
/* needs to be parsed as number explicitly as it comes as string from user input */
|
|
59
|
-
this.decimalPlaces = parseInt(this.decimalPlaces.toString(), 10);
|
|
60
|
-
this.inputChangeListener = this.renderer.listen(this.inputEl.nativeElement, 'blur', (event) => {
|
|
61
|
-
this.formatInput(event.target, true);
|
|
62
|
-
});
|
|
63
|
-
this.keyupListener = this.renderer.listen(this.inputEl.nativeElement, 'keyup', (event) => {
|
|
64
|
-
if (event.keyCode === BACK_KEYCODE || (event.keyCode >= CONTROL_KEYCODES_UPPER_BORDER && !OTHER_CONTROL_KEYS.has(event.keyCode))) {
|
|
65
|
-
this.formatInput(event.target, false);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
this.keydownListener = this.renderer.listen(this.inputEl.nativeElement, 'keydown', (event) => {
|
|
69
|
-
const value = event.target.value;
|
|
70
|
-
if (this.numberFormatService.allowedKeys.includes(event.key) ||
|
|
71
|
-
(event.keyCode <= CONTROL_KEYCODES_UPPER_BORDER && event.keyCode > 0 && event.keyCode !== SPACE_KEYCODE) ||
|
|
72
|
-
event.metaKey ||
|
|
73
|
-
event.ctrlKey ||
|
|
74
|
-
event.altKey) {
|
|
75
|
-
/* allow negative sign only as first character and none exists outside of text selection */
|
|
76
|
-
const indexNegativeSign = value.indexOf(NumberFormatService.NEGATIVE);
|
|
77
|
-
if (event.key === NumberFormatService.NEGATIVE &&
|
|
78
|
-
(event.target.selectionStart > 0 || indexNegativeSign > -1) &&
|
|
79
|
-
(event.target.selectionStart === event.target.selectionEnd ||
|
|
80
|
-
!(indexNegativeSign >= event.target.selectionStart && indexNegativeSign <= event.target.selectionEnd))) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
/* no duplicate decimal separators */
|
|
84
|
-
const indexDecimalSep = value.indexOf(this.numberFormatService.decimalSeparator);
|
|
85
|
-
if (event.key === this.numberFormatService.decimalSeparator &&
|
|
86
|
-
(indexDecimalSep > -1 || this.decimalPlaces === 0) &&
|
|
87
|
-
(event.target.selectionStart === event.target.selectionEnd ||
|
|
88
|
-
!(indexDecimalSep >= event.target.selectionStart && indexDecimalSep <= event.target.selectionEnd))) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
/* prevent too many decimal places */
|
|
92
|
-
if (NumberFormatService.NUMBERS.includes(event.key) &&
|
|
93
|
-
indexDecimalSep > -1 &&
|
|
94
|
-
indexDecimalSep < event.target.selectionStart &&
|
|
95
|
-
event.target.selectionStart === event.target.selectionEnd &&
|
|
96
|
-
value.length > indexDecimalSep + this.decimalPlaces) {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
/* when deleting thousand separator, remove the digit before or after it */
|
|
100
|
-
const cursorStart = event.target.selectionStart;
|
|
101
|
-
if (cursorStart === event.target.selectionEnd) {
|
|
102
|
-
if (event.keyCode === BACK_KEYCODE && value.substr(cursorStart - 1, 1) === this.numberFormatService.groupingSeparator) {
|
|
103
|
-
event.target.value = value.substring(0, cursorStart - 2) + value.substring(cursorStart - 1, value.length);
|
|
104
|
-
event.target.selectionStart = event.target.selectionEnd = cursorStart - 1;
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
else if (event.keyCode === DEL_KEYCODE && value.substr(cursorStart, 1) === this.numberFormatService.groupingSeparator) {
|
|
108
|
-
event.target.value = value.substring(0, cursorStart + 1) + value.substring(cursorStart + 2, value.length);
|
|
109
|
-
event.target.selectionStart = event.target.selectionEnd = cursorStart + 1;
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
this.originalValue = NaN;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
return true;
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
ngOnDestroy() {
|
|
122
|
-
this.detachListener();
|
|
123
|
-
}
|
|
124
|
-
ngAfterViewChecked() {
|
|
125
|
-
this.injectUnitSymbol();
|
|
126
|
-
}
|
|
127
|
-
handleInputChanged() {
|
|
128
|
-
// Call in set timeout to avoid Expression has changed after it has been checked error.
|
|
129
|
-
// Sometimes the value changes because we cut off decimal places
|
|
130
|
-
setTimeout(() => {
|
|
131
|
-
this.updateInput(this.numberFormatService.format(this._numericValue, {
|
|
132
|
-
decimalPlaces: this.decimalPlaces,
|
|
133
|
-
finalFormatting: true,
|
|
134
|
-
autofillDecimals: this.autofillDecimals,
|
|
135
|
-
}));
|
|
136
|
-
}, 1);
|
|
137
|
-
}
|
|
138
|
-
formatInput(element, finalFormatting) {
|
|
139
|
-
const cursorPos = element.selectionStart;
|
|
140
|
-
const length = element.value.length;
|
|
141
|
-
const setCursor = this.displayValue !== element.value;
|
|
142
|
-
const textFormatted = this.numberFormatService.formatNumber(element.value, {
|
|
143
|
-
decimalPlaces: this.decimalPlaces,
|
|
144
|
-
finalFormatting,
|
|
145
|
-
autofillDecimals: this.autofillDecimals,
|
|
146
|
-
});
|
|
147
|
-
// special handling to move unit symbol along with display value
|
|
148
|
-
if (this.textAlign === 'left' && this.unitPosition === 'right') {
|
|
149
|
-
const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);
|
|
150
|
-
this.unitSpan.style.position = 'absolute';
|
|
151
|
-
this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');
|
|
152
|
-
this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');
|
|
153
|
-
this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');
|
|
154
|
-
if (!this.textSpan) {
|
|
155
|
-
this.textSpan = document.createElement('span');
|
|
156
|
-
document.body.appendChild(this.textSpan);
|
|
157
|
-
this.textSpan.style.font = inputStyles.getPropertyValue('font');
|
|
158
|
-
this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');
|
|
159
|
-
this.textSpan.style.height = 'auto';
|
|
160
|
-
this.textSpan.style.width = 'auto';
|
|
161
|
-
this.textSpan.style.position = 'absolute';
|
|
162
|
-
this.textSpan.style.top = '0';
|
|
163
|
-
this.textSpan.style.whiteSpace = 'no-wrap';
|
|
164
|
-
this.textSpan.style.visibility = 'hidden';
|
|
165
|
-
}
|
|
166
|
-
this.textSpan.innerHTML = textFormatted;
|
|
167
|
-
const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));
|
|
168
|
-
this.unitSpan.style.left = width + 'px';
|
|
169
|
-
}
|
|
170
|
-
this.updateInput(textFormatted);
|
|
171
|
-
if (setCursor) {
|
|
172
|
-
element.selectionStart = element.selectionEnd = Math.max(cursorPos + element.value.length - length, 0);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
updateInput(value) {
|
|
176
|
-
this.displayValue = value;
|
|
177
|
-
this.inputEl.nativeElement.value = value;
|
|
178
|
-
this._numericValue = parseFloat(this.numberFormatService.strip(value, { decimalPlaces: this.decimalPlaces }).replace(this.numberFormatService.decimalSeparator, '.'));
|
|
179
|
-
if (this._numericValue !== this.roundOrTruncate(this.originalValue)) {
|
|
180
|
-
this.originalValue = this._numericValue;
|
|
181
|
-
this.numericValueChanged.emit(this._numericValue);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
getValueForFormControl() {
|
|
185
|
-
this.formatInput(this.inputEl.nativeElement, false);
|
|
186
|
-
if (isNaN(this._numericValue)) {
|
|
187
|
-
// Return undefined instead of NaN to support the default required validator.
|
|
188
|
-
return undefined; // eslint-disable-line
|
|
189
|
-
}
|
|
190
|
-
return this._numericValue;
|
|
191
|
-
}
|
|
192
|
-
injectUnitSymbol() {
|
|
193
|
-
// Need to inject the unit symbol when the input element width is set to its actual value,
|
|
194
|
-
// otherwise the icon wont show in the correct position
|
|
195
|
-
if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {
|
|
196
|
-
// Get the input wrapper and apply necessary styles
|
|
197
|
-
const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;
|
|
198
|
-
// Create the span with unit symbol and apply necessary styles
|
|
199
|
-
this.unitSpan = this.renderer.createElement('span');
|
|
200
|
-
if (this.unitPosition === 'left') {
|
|
201
|
-
this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');
|
|
202
|
-
this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');
|
|
203
|
-
this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');
|
|
207
|
-
this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');
|
|
208
|
-
this.renderer.appendChild(inputWrapper, this.unitSpan);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// do not display unit symbol if the unit should move along display value
|
|
212
|
-
if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {
|
|
213
|
-
if (NumberFormatService.valueIsSet(this.displayValue)) {
|
|
214
|
-
this.unitSpan.style.display = 'unset';
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.unitSpan.style.display = 'none';
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// always reset unit symbol
|
|
221
|
-
if (!!this.unitSpan) {
|
|
222
|
-
this.unitSpan.textContent = this.unit;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
detachListener() {
|
|
226
|
-
if (this.inputChangeListener) {
|
|
227
|
-
this.inputChangeListener();
|
|
228
|
-
delete this.inputChangeListener;
|
|
229
|
-
}
|
|
230
|
-
if (this.keydownListener) {
|
|
231
|
-
this.keydownListener();
|
|
232
|
-
delete this.keydownListener;
|
|
233
|
-
}
|
|
234
|
-
if (this.keyupListener) {
|
|
235
|
-
this.keyupListener();
|
|
236
|
-
delete this.keyupListener;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
roundOrTruncate(value) {
|
|
240
|
-
if (this.roundValue) {
|
|
241
|
-
return Math.round(value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
242
|
-
}
|
|
243
|
-
const method = value < 0 ? 'ceil' : 'floor';
|
|
244
|
-
return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toFixed(this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
245
|
-
}
|
|
246
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.NumberFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
247
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NumericFieldDirective, isStandalone: true, selector: "[madNumericField]", inputs: { textAlign: "textAlign", decimalPlaces: "decimalPlaces", roundValue: ["roundDisplayValue", "roundValue"], autofillDecimals: "autofillDecimals", unit: "unit", unitPosition: "unitPosition", numericValue: "numericValue" }, outputs: { numericValueChanged: "numericValueChange" }, host: { listeners: { "change": "onChange(getValueForFormControl())", "input": "onChange(getValueForFormControl())", "blur": "onTouched()" }, properties: { "class.text-right": "textAlign === \"right\"" } }, providers: [
|
|
248
|
-
{
|
|
249
|
-
provide: NG_VALUE_ACCESSOR,
|
|
250
|
-
useExisting: forwardRef(() => NumericFieldDirective),
|
|
251
|
-
multi: true,
|
|
252
|
-
},
|
|
253
|
-
], ngImport: i0 }); }
|
|
254
|
-
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldDirective, decorators: [{
|
|
256
|
-
type: Directive,
|
|
257
|
-
args: [{
|
|
258
|
-
selector: '[madNumericField]',
|
|
259
|
-
host: {
|
|
260
|
-
'[class.text-right]': 'textAlign === "right"',
|
|
261
|
-
'(change)': 'onChange(getValueForFormControl())',
|
|
262
|
-
'(input)': 'onChange(getValueForFormControl())',
|
|
263
|
-
'(blur)': 'onTouched()',
|
|
264
|
-
},
|
|
265
|
-
providers: [
|
|
266
|
-
{
|
|
267
|
-
provide: NG_VALUE_ACCESSOR,
|
|
268
|
-
useExisting: forwardRef(() => NumericFieldDirective),
|
|
269
|
-
multi: true,
|
|
270
|
-
},
|
|
271
|
-
],
|
|
272
|
-
standalone: true,
|
|
273
|
-
}]
|
|
274
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.NumberFormatService }], propDecorators: { textAlign: [{
|
|
275
|
-
type: Input,
|
|
276
|
-
args: ['textAlign']
|
|
277
|
-
}], decimalPlaces: [{
|
|
278
|
-
type: Input,
|
|
279
|
-
args: ['decimalPlaces']
|
|
280
|
-
}], roundValue: [{
|
|
281
|
-
type: Input,
|
|
282
|
-
args: ['roundDisplayValue']
|
|
283
|
-
}], autofillDecimals: [{
|
|
284
|
-
type: Input,
|
|
285
|
-
args: ['autofillDecimals']
|
|
286
|
-
}], unit: [{
|
|
287
|
-
type: Input,
|
|
288
|
-
args: ['unit']
|
|
289
|
-
}], unitPosition: [{
|
|
290
|
-
type: Input,
|
|
291
|
-
args: ['unitPosition']
|
|
292
|
-
}], numericValueChanged: [{
|
|
293
|
-
type: Output,
|
|
294
|
-
args: ['numericValueChange']
|
|
295
|
-
}], numericValue: [{
|
|
296
|
-
type: Input,
|
|
297
|
-
args: ['numericValue']
|
|
298
|
-
}] } });
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9udW1lcmljLWZpZWxkL251bWVyaWMtZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUU5RCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBbUJsRCxNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQiwwR0FBMEc7WUFDMUcsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFL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O3dCQUNKLG9CQUFvQixFQUFFLHVCQUF1Qjt3QkFDN0MsVUFBVSxFQUFFLG9DQUFvQzt3QkFDaEQsU0FBUyxFQUFFLG9DQUFvQzt3QkFDL0MsUUFBUSxFQUFFLGFBQWE7cUJBQ3hCO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3lJQUVxQixTQUFTO3NCQUE1QixLQUFLO3VCQUFDLFdBQVc7Z0JBQ00sYUFBYTtzQkFBcEMsS0FBSzt1QkFBQyxlQUFlO2dCQUNNLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNDLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ1YsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNVLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDUyxtQkFBbUI7c0JBQWhELE1BQU07dUJBQUMsb0JBQW9CO2dCQVV4QixZQUFZO3NCQURmLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bWJlckZvcm1hdFNlcnZpY2UgfSBmcm9tICcuL251bWJlci1mb3JtYXQuc2VydmljZSc7XG5cbmNvbnN0IEJBQ0tfS0VZQ09ERSA9IDg7XG5jb25zdCBTUEFDRV9LRVlDT0RFID0gMzI7XG5jb25zdCBERUxfS0VZQ09ERSA9IDQ2O1xuY29uc3QgQ09OVFJPTF9LRVlDT0RFU19VUFBFUl9CT1JERVIgPSA0NjtcbmNvbnN0IE9USEVSX0NPTlRST0xfS0VZUyA9IG5ldyBTZXQoWzIyNCwgOTEsIDkzXSk7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYWROdW1lcmljRmllbGRdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MudGV4dC1yaWdodF0nOiAndGV4dEFsaWduID09PSBcInJpZ2h0XCInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGlucHV0KSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1lcmljRmllbGREaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtZXJpY0ZpZWxkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCd0ZXh0QWxpZ24nKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnO1xuICBASW5wdXQoJ2RlY2ltYWxQbGFjZXMnKSBkZWNpbWFsUGxhY2VzID0gMjtcbiAgQElucHV0KCdyb3VuZERpc3BsYXlWYWx1ZScpIHJvdW5kVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCdhdXRvZmlsbERlY2ltYWxzJykgYXV0b2ZpbGxEZWNpbWFscyA9IGZhbHNlO1xuICBASW5wdXQoJ3VuaXQnKSB1bml0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCd1bml0UG9zaXRpb24nKSB1bml0UG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnO1xuICBAT3V0cHV0KCdudW1lcmljVmFsdWVDaGFuZ2UnKSBudW1lcmljVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBkaXNwbGF5VmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBvcmlnaW5hbFZhbHVlID0gTmFOO1xuICBwcml2YXRlIF9udW1lcmljVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbnB1dENoYW5nZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGtleXVwTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUga2V5ZG93bkxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBJbnB1dCgnbnVtZXJpY1ZhbHVlJylcbiAgc2V0IG51bWVyaWNWYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX251bWVyaWNWYWx1ZSAhPT0gdmFsdWUgJiYgIShpc05hTih0aGlzLl9udW1lcmljVmFsdWUpICYmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwpKSkge1xuICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgICAvLyBEb24ndCByb3VuZE9yVHJ1bmNhdGUgaWYgdmFsdWUgd2FzIHNldCB0byBlbXB0eSBvdGhlcndpc2UgaW5wdXQgdmFsdWUgd2lsbCBiZSBzZXQgdG8gMCBpbnN0ZWFkIG9mIGVtcHR5XG4gICAgICAvLyB3aGljaCBoYXBwZW5zIHdoZW4gYW4gaW5wdXQgaXMgYmVpbmcgcmVzZXRcbiAgICAgIHRoaXMuX251bWVyaWNWYWx1ZSA9IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHRoaXMucm91bmRPclRydW5jYXRlKHZhbHVlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuaXRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHByaXZhdGUgdGV4dFNwYW46IEhUTUxTcGFuRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBpbnB1dEVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbnVtYmVyRm9ybWF0U2VydmljZTogTnVtYmVyRm9ybWF0U2VydmljZSxcbiAgKSB7fVxuXG4gIC8qIENvbnRyb2wgVmFsdWVzIEFjY2Vzc29yIFN0dWZmIGJlbG93ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBEb250IG5lZWQgdG8gaW1wbGVtZW50IHNpbmNlIGl0cyBqdXN0IGEgZGlyZWN0aXZlXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWVyaWNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyogbmVlZHMgdG8gYmUgcGFyc2VkIGFzIG51bWJlciBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGFzIHN0cmluZyBmcm9tIHVzZXIgaW5wdXQgKi9cbiAgICB0aGlzLmRlY2ltYWxQbGFjZXMgPSBwYXJzZUludCh0aGlzLmRlY2ltYWxQbGFjZXMudG9TdHJpbmcoKSwgMTApO1xuXG4gICAgdGhpcy5pbnB1dENoYW5nZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsICdibHVyJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmtleXVwTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gQkFDS19LRVlDT0RFIHx8IChldmVudC5rZXlDb2RlID49IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmICFPVEhFUl9DT05UUk9MX0tFWVMuaGFzKGV2ZW50LmtleUNvZGUpKSkge1xuICAgICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5rZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5hbGxvd2VkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpIHx8XG4gICAgICAgIChldmVudC5rZXlDb2RlIDw9IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmIGV2ZW50LmtleUNvZGUgPiAwICYmIGV2ZW50LmtleUNvZGUgIT09IFNQQUNFX0tFWUNPREUpIHx8XG4gICAgICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICAgICAgZXZlbnQuY3RybEtleSB8fFxuICAgICAgICBldmVudC5hbHRLZXlcbiAgICAgICkge1xuICAgICAgICAvKiBhbGxvdyBuZWdhdGl2ZSBzaWduIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVyIGFuZCBub25lIGV4aXN0cyBvdXRzaWRlIG9mIHRleHQgc2VsZWN0aW9uICovXG4gICAgICAgIGNvbnN0IGluZGV4TmVnYXRpdmVTaWduID0gdmFsdWUuaW5kZXhPZihOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LmtleSA9PT0gTnVtYmVyRm9ybWF0U2VydmljZS5ORUdBVElWRSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiAwIHx8IGluZGV4TmVnYXRpdmVTaWduID4gLTEpICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCB8fFxuICAgICAgICAgICAgIShpbmRleE5lZ2F0aXZlU2lnbiA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhOZWdhdGl2ZVNpZ24gPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIG5vIGR1cGxpY2F0ZSBkZWNpbWFsIHNlcGFyYXRvcnMgKi9cbiAgICAgICAgY29uc3QgaW5kZXhEZWNpbWFsU2VwID0gdmFsdWUuaW5kZXhPZih0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5rZXkgPT09IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5kZWNpbWFsU2VwYXJhdG9yICYmXG4gICAgICAgICAgKGluZGV4RGVjaW1hbFNlcCA+IC0xIHx8IHRoaXMuZGVjaW1hbFBsYWNlcyA9PT0gMCkgJiZcbiAgICAgICAgICAoZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kIHx8XG4gICAgICAgICAgICAhKGluZGV4RGVjaW1hbFNlcCA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhEZWNpbWFsU2VwIDw9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBwcmV2ZW50IHRvbyBtYW55IGRlY2ltYWwgcGxhY2VzICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICBOdW1iZXJGb3JtYXRTZXJ2aWNlLk5VTUJFUlMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgICAgICAgIGluZGV4RGVjaW1hbFNlcCA+IC0xICYmXG4gICAgICAgICAgaW5kZXhEZWNpbWFsU2VwIDwgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kICYmXG4gICAgICAgICAgdmFsdWUubGVuZ3RoID4gaW5kZXhEZWNpbWFsU2VwICsgdGhpcy5kZWNpbWFsUGxhY2VzXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHdoZW4gZGVsZXRpbmcgdGhvdXNhbmQgc2VwYXJhdG9yLCByZW1vdmUgdGhlIGRpZ2l0IGJlZm9yZSBvciBhZnRlciBpdCAqL1xuICAgICAgICBjb25zdCBjdXJzb3JTdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICBpZiAoY3Vyc29yU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gQkFDS19LRVlDT0RFICYmIHZhbHVlLnN1YnN0cihjdXJzb3JTdGFydCAtIDEsIDEpID09PSB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCAtIDIpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0IC0gMSwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCAtIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBERUxfS0VZQ09ERSAmJiB2YWx1ZS5zdWJzdHIoY3Vyc29yU3RhcnQsIDEpID09PSB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCArIDEpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0ICsgMiwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0VW5pdFN5bWJvbCgpO1xuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIC8vIENhbGwgaW4gc2V0IHRpbWVvdXQgdG8gYXZvaWQgRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCBoYXMgYmVlbiBjaGVja2VkIGVycm9yLlxuICAgIC8vIFNvbWV0aW1lcyB0aGUgdmFsdWUgY2hhbmdlcyBiZWNhdXNlIHdlIGN1dCBvZmYgZGVjaW1hbCBwbGFjZXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSW5wdXQoXG4gICAgICAgIHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fbnVtZXJpY1ZhbHVlLCB7XG4gICAgICAgICAgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICAgIGZpbmFsRm9ybWF0dGluZzogdHJ1ZSxcbiAgICAgICAgICBhdXRvZmlsbERlY2ltYWxzOiB0aGlzLmF1dG9maWxsRGVjaW1hbHMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9LCAxKTtcbiAgfVxuXG4gIGZvcm1hdElucHV0KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGZpbmFsRm9ybWF0dGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnNvclBvcyA9IGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3QgbGVuZ3RoID0gZWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgY29uc3Qgc2V0Q3Vyc29yID0gdGhpcy5kaXNwbGF5VmFsdWUgIT09IGVsZW1lbnQudmFsdWU7XG4gICAgY29uc3QgdGV4dEZvcm1hdHRlZCA9IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5mb3JtYXROdW1iZXIoZWxlbWVudC52YWx1ZSwge1xuICAgICAgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzLFxuICAgICAgZmluYWxGb3JtYXR0aW5nLFxuICAgICAgYXV0b2ZpbGxEZWNpbWFsczogdGhpcy5hdXRvZmlsbERlY2ltYWxzLFxuICAgIH0pO1xuXG4gICAgLy8gc3BlY2lhbCBoYW5kbGluZyB0byBtb3ZlIHVuaXQgc3ltYm9sIGFsb25nIHdpdGggZGlzcGxheSB2YWx1ZVxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ2xlZnQnICYmIHRoaXMudW5pdFBvc2l0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBjb25zdCBpbnB1dFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIG51bGwpO1xuICAgICAgdGhpcy51bml0U3Bhbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLm1hcmdpblRvcCA9IGlucHV0U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKTtcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUucGFkZGluZ1RvcCA9IGlucHV0U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyk7XG4gICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLnBhZGRpbmdCb3R0b20gPSBpbnB1dFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpO1xuXG4gICAgICBpZiAoIXRoaXMudGV4dFNwYW4pIHtcbiAgICAgICAgdGhpcy50ZXh0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRleHRTcGFuKTtcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS5mb250ID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udCcpO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLmZvbnRTaXplID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyk7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS50b3AgPSAnMCc7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICduby13cmFwJztcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgICB0aGlzLnRleHRTcGFuLmlubmVySFRNTCA9IHRleHRGb3JtYXR0ZWQ7XG4gICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWluKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC0gdGhpcy51bml0U3Bhbi5jbGllbnRXaWR0aCwgTWF0aC5jZWlsKHRoaXMudGV4dFNwYW4uY2xpZW50V2lkdGgpKTtcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUubGVmdCA9IHdpZHRoICsgJ3B4JztcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUlucHV0KHRleHRGb3JtYXR0ZWQpO1xuICAgIGlmIChzZXRDdXJzb3IpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBlbGVtZW50LnNlbGVjdGlvbkVuZCA9IE1hdGgubWF4KGN1cnNvclBvcyArIGVsZW1lbnQudmFsdWUubGVuZ3RoIC0gbGVuZ3RoLCAwKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX251bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQoXG4gICAgICB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2Uuc3RyaXAodmFsdWUsIHsgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzIH0pLnJlcGxhY2UodGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmRlY2ltYWxTZXBhcmF0b3IsICcuJyksXG4gICAgKTtcbiAgICBpZiAodGhpcy5fbnVtZXJpY1ZhbHVlICE9PSB0aGlzLnJvdW5kT3JUcnVuY2F0ZSh0aGlzLm9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB0aGlzLl9udW1lcmljVmFsdWU7XG4gICAgICB0aGlzLm51bWVyaWNWYWx1ZUNoYW5nZWQuZW1pdCh0aGlzLl9udW1lcmljVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlRm9yRm9ybUNvbnRyb2woKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLmZvcm1hdElucHV0KHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCBmYWxzZSk7XG4gICAgaWYgKGlzTmFOKHRoaXMuX251bWVyaWNWYWx1ZSkpIHtcbiAgICAgIC8vIFJldHVybiB1bmRlZmluZWQgaW5zdGVhZCBvZiBOYU4gdG8gc3VwcG9ydCB0aGUgZGVmYXVsdCByZXF1aXJlZCB2YWxpZGF0b3IuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9udW1lcmljVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGluamVjdFVuaXRTeW1ib2woKTogdm9pZCB7XG4gICAgLy8gTmVlZCB0byBpbmplY3QgdGhlIHVuaXQgc3ltYm9sIHdoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2lkdGggaXMgc2V0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSBpY29uIHdvbnQgc2hvdyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgIGlmICghIXRoaXMudW5pdCAmJiAhdGhpcy51bml0U3BhbiAmJiB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAhPT0gMCkge1xuICAgICAgLy8gR2V0IHRoZSBpbnB1dCB3cmFwcGVyIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICBjb25zdCBpbnB1dFdyYXBwZXIgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGU7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgc3BhbiB3aXRoIHVuaXQgc3ltYm9sIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICB0aGlzLnVuaXRTcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgIGlmICh0aGlzLnVuaXRQb3NpdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudW5pdFNwYW4sICdtYXRQcmVmaXgnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy51bml0U3BhbiwgJ3BhZGRpbmctcmlnaHQnLCAnNXB4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKGlucHV0V3JhcHBlciwgdGhpcy51bml0U3BhbiwgaW5wdXRXcmFwcGVyLmNoaWxkcmVuWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudW5pdFNwYW4sICdtYXRTdWZmaXgnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy51bml0U3BhbiwgJ3BhZGRpbmctbGVmdCcsICc1cHgnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChpbnB1dFdyYXBwZXIsIHRoaXMudW5pdFNwYW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRvIG5vdCBkaXNwbGF5IHVuaXQgc3ltYm9sIGlmIHRoZSB1bml0IHNob3VsZCBtb3ZlIGFsb25nIGRpc3BsYXkgdmFsdWVcbiAgICBpZiAoISF0aGlzLnVuaXRTcGFuICYmIHRoaXMudGV4dEFsaWduID09PSAnbGVmdCcgJiYgdGhpcy51bml0UG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIGlmIChOdW1iZXJGb3JtYXRTZXJ2aWNlLnZhbHVlSXNTZXQodGhpcy5kaXNwbGF5VmFsdWUpKSB7XG4gICAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUuZGlzcGxheSA9ICd1bnNldCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGFsd2F5cyByZXNldCB1bml0IHN5bWJvbFxuICAgIGlmICghIXRoaXMudW5pdFNwYW4pIHtcbiAgICAgIHRoaXMudW5pdFNwYW4udGV4dENvbnRlbnQgPSB0aGlzLnVuaXQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dENoYW5nZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleWRvd25MaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmtleWRvd25MaXN0ZW5lcjtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5dXBMaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXl1cExpc3RlbmVyKCk7XG4gICAgICBkZWxldGUgdGhpcy5rZXl1cExpc3RlbmVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm91bmRPclRydW5jYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnJvdW5kVmFsdWUpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbFBsYWNlcykpIC8gTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbFBsYWNlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kID0gdmFsdWUgPCAwID8gJ2NlaWwnIDogJ2Zsb29yJztcbiAgICByZXR1cm4gTWF0aFttZXRob2RdKCsodmFsdWUgKiBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxQbGFjZXMpKSAvIE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { NumericFieldDirective } from './numeric-field.directive';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL251bWVyaWMtZmllbGQvbnVtZXJpYy1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE51bWVyaWNGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vbnVtZXJpYy1maWVsZC5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { NumericFieldDirective } from './numeric-field.directive';
|
|
3
|
-
import { NumberFormatService } from './number-format.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NumericFieldModule {
|
|
6
|
-
static forRoot() {
|
|
7
|
-
return {
|
|
8
|
-
ngModule: NumericFieldModule,
|
|
9
|
-
providers: [NumberFormatService],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldModule, imports: [NumericFieldDirective], exports: [NumericFieldDirective] }); }
|
|
14
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldModule, providers: [NumberFormatService] }); }
|
|
15
|
-
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
imports: [NumericFieldDirective],
|
|
20
|
-
providers: [NumberFormatService],
|
|
21
|
-
exports: [NumericFieldDirective],
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9udW1lcmljLWZpZWxkL251bWVyaWMtZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU85RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7OEdBTlUsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFKbkIscUJBQXFCLGFBRXJCLHFCQUFxQjsrR0FFcEIsa0JBQWtCLGFBSGxCLENBQUMsbUJBQW1CLENBQUM7OzJGQUdyQixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9udW1lcmljLWZpZWxkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOdW1iZXJGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnLi9udW1iZXItZm9ybWF0LnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTnVtZXJpY0ZpZWxkRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbTnVtYmVyRm9ybWF0U2VydmljZV0sXG4gIGV4cG9ydHM6IFtOdW1lcmljRmllbGREaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1lcmljRmllbGRNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE51bWVyaWNGaWVsZE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTnVtZXJpY0ZpZWxkTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbTnVtYmVyRm9ybWF0U2VydmljZV0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChildren, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/forms";
|
|
4
|
-
export class BaseQuickListComponent {
|
|
5
|
-
constructor(changeDetectorRef, formBuilder) {
|
|
6
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
7
|
-
this.formBuilder = formBuilder;
|
|
8
|
-
this.allItems = [];
|
|
9
|
-
this.addLabel = 'NOT SET';
|
|
10
|
-
this.addPossible = true;
|
|
11
|
-
this.removePossible = true;
|
|
12
|
-
this.blankItem = {};
|
|
13
|
-
this.added = new EventEmitter();
|
|
14
|
-
this.removed = new EventEmitter();
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.addEventFunction = this.addItem.bind(this);
|
|
18
|
-
if (this.minItems) {
|
|
19
|
-
for (let n = this.allItems.length; n < this.minItems; n++) {
|
|
20
|
-
this.interalAddItem();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
ngAfterViewInit() {
|
|
25
|
-
setTimeout(() => this.setFocusOnAdd(), 1);
|
|
26
|
-
}
|
|
27
|
-
addItem() {
|
|
28
|
-
const newItem = this.interalAddItem();
|
|
29
|
-
if (!!newItem) {
|
|
30
|
-
this.added.emit(newItem);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
addReactiveItem() {
|
|
34
|
-
if (this.isAddReactiveAllowed()) {
|
|
35
|
-
this.added.emit(null);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
removeItem(item) {
|
|
39
|
-
if (this.isDeleteAllowed()) {
|
|
40
|
-
this.allItems.splice(this.allItems.indexOf(item), 1);
|
|
41
|
-
this.removed.emit(item);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
removeReactiveItem(item) {
|
|
45
|
-
if (this.isDeleteReactiveAllowed()) {
|
|
46
|
-
const index = this.formArray.controls.indexOf(item);
|
|
47
|
-
if (index >= 0) {
|
|
48
|
-
this.formArray.controls.splice(index, 1);
|
|
49
|
-
this.formArray.updateValueAndValidity();
|
|
50
|
-
this.removed.emit(null);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
setFocusOnAdd() {
|
|
55
|
-
this.rowCountFocus = this.itemRows.length;
|
|
56
|
-
this.itemRows.changes.subscribe((els) => {
|
|
57
|
-
if (els.length > this.rowCountFocus && !!els.last) {
|
|
58
|
-
const firstFocusable = els.last.nativeElement.querySelector("button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])");
|
|
59
|
-
if (firstFocusable) {
|
|
60
|
-
firstFocusable.focus();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
this.rowCountFocus = els.length;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
isAddAllowed() {
|
|
67
|
-
return this.addPossible && (!this.maxItems || this.allItems?.length < this.maxItems);
|
|
68
|
-
}
|
|
69
|
-
isAddReactiveAllowed() {
|
|
70
|
-
return this.addPossible && (!this.maxItems || this.formArray?.controls.length < this.maxItems);
|
|
71
|
-
}
|
|
72
|
-
isDeleteAllowed() {
|
|
73
|
-
return this.removePossible && (!this.minItems || this.allItems?.length > this.minItems);
|
|
74
|
-
}
|
|
75
|
-
isDeleteReactiveAllowed() {
|
|
76
|
-
return this.removePossible && (!this.minItems || this.formArray?.controls.length > this.minItems);
|
|
77
|
-
}
|
|
78
|
-
interalAddItem() {
|
|
79
|
-
if (this.isAddAllowed()) {
|
|
80
|
-
const newItem = { ...this.blankItem };
|
|
81
|
-
// creates ids in the form of "n5kdz1pljl8"
|
|
82
|
-
newItem.id = Math.random().toString(36).substring(2);
|
|
83
|
-
this.allItems.push(newItem);
|
|
84
|
-
this.changeDetectorRef.detectChanges();
|
|
85
|
-
return newItem;
|
|
86
|
-
}
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BaseQuickListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: BaseQuickListComponent, isStandalone: true, selector: "mad-base-quick-list", inputs: { allItems: "allItems", addLabel: "addLabel", addPossible: "addPossible", removePossible: "removePossible", blankItem: "blankItem", readonly: "readonly", maxItems: "maxItems", minItems: "minItems", formArray: "formArray" }, outputs: { added: "added", removed: "removed" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "itemRows", predicate: ["row"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
|
|
91
|
-
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BaseQuickListComponent, decorators: [{
|
|
93
|
-
type: Component,
|
|
94
|
-
args: [{ selector: 'mad-base-quick-list', template: '', standalone: true }]
|
|
95
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormBuilder }], propDecorators: { allItems: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], addLabel: [{
|
|
98
|
-
type: Input
|
|
99
|
-
}], addPossible: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], removePossible: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], blankItem: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], readonly: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], maxItems: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], minItems: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], formArray: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], added: [{
|
|
114
|
-
type: Output
|
|
115
|
-
}], removed: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}], itemTemplate: [{
|
|
118
|
-
type: ContentChild,
|
|
119
|
-
args: [TemplateRef]
|
|
120
|
-
}], itemRows: [{
|
|
121
|
-
type: ViewChildren,
|
|
122
|
-
args: ['row']
|
|
123
|
-
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1xdWljay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL3F1aWNrLWxpc3QvYmFzZS1xdWljay1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDOzs7QUFhdkIsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsWUFDUyxpQkFBb0MsRUFDcEMsV0FBd0I7UUFEeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXBCeEIsYUFBUSxHQUFHLEVBQVMsQ0FBQztRQUNyQixhQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxFQUFTLENBQUM7UUFNckIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDOUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFVdkMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBTztRQUNoQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBMEI7UUFDM0MsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQTBCLEVBQUUsRUFBRTtZQUM3RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsRCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscUVBQXFFLENBQUMsQ0FBQztnQkFDbkksSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QywyQ0FBMkM7WUFDM0MsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0EzR1Usc0JBQXNCO2tHQUF0QixzQkFBc0Isa1pBYW5CLFdBQVcsb0lBakJmLEVBQUU7OzJGQUlELHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckIsRUFBRSxjQUVBLElBQUk7Z0hBR1AsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ29CLFlBQVk7c0JBQXRDLFlBQVk7dUJBQUMsV0FBVztnQkFDSixRQUFRO3NCQUE1QixZQUFZO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWNrTGlzdEl0ZW0ge1xuICBpZDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtYmFzZS1xdWljay1saXN0JyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZVVybHM6IFtdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlUXVpY2tMaXN0Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgYWxsSXRlbXMgPSBbXSBhcyBUW107XG4gIEBJbnB1dCgpIGFkZExhYmVsID0gJ05PVCBTRVQnO1xuICBASW5wdXQoKSBhZGRQb3NzaWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHJlbW92ZVBvc3NpYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgYmxhbmtJdGVtID0ge30gYXMgYW55O1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4SXRlbXM6IG51bWJlcjtcbiAgQElucHV0KCkgbWluSXRlbXM6IG51bWJlcjtcbiAgQElucHV0KCkgZm9ybUFycmF5OiBGb3JtQXJyYXk7XG5cbiAgQE91dHB1dCgpIGFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkcmVuKCdyb3cnKSBpdGVtUm93czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIHJvd0NvdW50Rm9jdXM6IG51bWJlcjtcbiAgYWRkRXZlbnRGdW5jdGlvbjogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRFdmVudEZ1bmN0aW9uID0gdGhpcy5hZGRJdGVtLmJpbmQodGhpcyk7XG4gICAgaWYgKHRoaXMubWluSXRlbXMpIHtcbiAgICAgIGZvciAobGV0IG4gPSB0aGlzLmFsbEl0ZW1zLmxlbmd0aDsgbiA8IHRoaXMubWluSXRlbXM7IG4rKykge1xuICAgICAgICB0aGlzLmludGVyYWxBZGRJdGVtKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb2N1c09uQWRkKCksIDEpO1xuICB9XG5cbiAgYWRkSXRlbSgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJdGVtID0gdGhpcy5pbnRlcmFsQWRkSXRlbSgpO1xuICAgIGlmICghIW5ld0l0ZW0pIHtcbiAgICAgIHRoaXMuYWRkZWQuZW1pdChuZXdJdGVtKTtcbiAgICB9XG4gIH1cblxuICBhZGRSZWFjdGl2ZUl0ZW0oKSB7XG4gICAgaWYgKHRoaXMuaXNBZGRSZWFjdGl2ZUFsbG93ZWQoKSkge1xuICAgICAgdGhpcy5hZGRlZC5lbWl0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVsZXRlQWxsb3dlZCgpKSB7XG4gICAgICB0aGlzLmFsbEl0ZW1zLnNwbGljZSh0aGlzLmFsbEl0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xuICAgICAgdGhpcy5yZW1vdmVkLmVtaXQoaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlUmVhY3RpdmVJdGVtKGl0ZW06IEFic3RyYWN0Q29udHJvbDxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNEZWxldGVSZWFjdGl2ZUFsbG93ZWQoKSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm1BcnJheS5jb250cm9scy5pbmRleE9mKGl0ZW0pO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkuY29udHJvbHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRGb2N1c09uQWRkKCk6IHZvaWQge1xuICAgIHRoaXMucm93Q291bnRGb2N1cyA9IHRoaXMuaXRlbVJvd3MubGVuZ3RoO1xuICAgIHRoaXMuaXRlbVJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKGVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSA9PiB7XG4gICAgICBpZiAoZWxzLmxlbmd0aCA+IHRoaXMucm93Q291bnRGb2N1cyAmJiAhIWVscy5sYXN0KSB7XG4gICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZWxzLmxhc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiYnV0dG9uLCBhLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSctMSddKVwiKTtcbiAgICAgICAgaWYgKGZpcnN0Rm9jdXNhYmxlKSB7XG4gICAgICAgICAgZmlyc3RGb2N1c2FibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yb3dDb3VudEZvY3VzID0gZWxzLmxlbmd0aDtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQWRkQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRQb3NzaWJsZSAmJiAoIXRoaXMubWF4SXRlbXMgfHwgdGhpcy5hbGxJdGVtcz8ubGVuZ3RoIDwgdGhpcy5tYXhJdGVtcyk7XG4gIH1cblxuICBpc0FkZFJlYWN0aXZlQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRQb3NzaWJsZSAmJiAoIXRoaXMubWF4SXRlbXMgfHwgdGhpcy5mb3JtQXJyYXk/LmNvbnRyb2xzLmxlbmd0aCA8IHRoaXMubWF4SXRlbXMpO1xuICB9XG5cbiAgaXNEZWxldGVBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZVBvc3NpYmxlICYmICghdGhpcy5taW5JdGVtcyB8fCB0aGlzLmFsbEl0ZW1zPy5sZW5ndGggPiB0aGlzLm1pbkl0ZW1zKTtcbiAgfVxuXG4gIGlzRGVsZXRlUmVhY3RpdmVBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZVBvc3NpYmxlICYmICghdGhpcy5taW5JdGVtcyB8fCB0aGlzLmZvcm1BcnJheT8uY29udHJvbHMubGVuZ3RoID4gdGhpcy5taW5JdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIGludGVyYWxBZGRJdGVtKCk6IFQge1xuICAgIGlmICh0aGlzLmlzQWRkQWxsb3dlZCgpKSB7XG4gICAgICBjb25zdCBuZXdJdGVtID0geyAuLi50aGlzLmJsYW5rSXRlbSB9O1xuICAgICAgLy8gY3JlYXRlcyBpZHMgaW4gdGhlIGZvcm0gb2YgXCJuNWtkejFwbGpsOFwiXG4gICAgICBuZXdJdGVtLmlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuICAgICAgdGhpcy5hbGxJdGVtcy5wdXNoKG5ld0l0ZW0pO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { BaseQuickListComponent } from '../base-quick-list.component';
|
|
3
|
-
import { LinkButtonComponent } from '../../button/flat-button/link-button.component';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { IconButtonComponent } from '../../button/icon-button/icon-button.component';
|
|
6
|
-
import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/forms";
|
|
9
|
-
import * as i2 from "@angular/material/icon";
|
|
10
|
-
export class QuickListCompactComponent extends BaseQuickListComponent {
|
|
11
|
-
constructor(changeDetectorRef, formBuilder) {
|
|
12
|
-
super(changeDetectorRef, formBuilder);
|
|
13
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
14
|
-
this.formBuilder = formBuilder;
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: QuickListCompactComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: QuickListCompactComponent, isStandalone: true, selector: "mad-quick-list-compact", usesInheritance: true, ngImport: i0, template: "<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n<ng-container *ngFor=\"let item of allItems; let isLast = last\">\n <div class=\"flex-container\" *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.allItems.length\"\n (click)=\"addItem()\"\n [disabled]=\"!isAddAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconButtonComponent, selector: "mad-icon-button", inputs: ["type", "disabled", "title"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LinkButtonComponent, selector: "mad-link-button", inputs: ["type", "disabled", "title"] }] }); }
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: QuickListCompactComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ selector: 'mad-quick-list-compact', standalone: true, imports: [NgFor, NgIf, NgTemplateOutlet, IconButtonComponent, MatIconModule, LinkButtonComponent], template: "<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n<ng-container *ngFor=\"let item of allItems; let isLast = last\">\n <div class=\"flex-container\" *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.allItems.length\"\n (click)=\"addItem()\"\n [disabled]=\"!isAddAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\n" }]
|
|
22
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormBuilder }] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stbGlzdC1jb21wYWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL3F1aWNrLWxpc3QvcXVpY2stbGlzdC1jb21wYWN0L3F1aWNrLWxpc3QtY29tcGFjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9xdWljay1saXN0L3F1aWNrLWxpc3QtY29tcGFjdC9xdWljay1saXN0LWNvbXBhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFpQixNQUFNLDhCQUE4QixDQUFDO0FBRXJGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBU2hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxzQkFBcUM7SUFDbEYsWUFDUyxpQkFBb0MsRUFDcEMsV0FBd0I7UUFFL0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSC9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFHakMsQ0FBQzs4R0FOVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix5R0NmdEMscTZCQXNCQSw0Q0RUWSxLQUFLLG1IQUFFLElBQUksNkZBQUUsZ0JBQWdCLG9KQUFFLG1CQUFtQixrR0FBRSxhQUFhLG9MQUFFLG1CQUFtQjs7MkZBRXJGLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FHdEIsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUXVpY2tMaXN0Q29tcG9uZW50LCBRdWlja0xpc3RJdGVtIH0gZnJvbSAnLi4vYmFzZS1xdWljay1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExpbmtCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b24vZmxhdC1idXR0b24vbGluay1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b24vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLXF1aWNrLWxpc3QtY29tcGFjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWljay1saXN0LWNvbXBhY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIEljb25CdXR0b25Db21wb25lbnQsIE1hdEljb25Nb2R1bGUsIExpbmtCdXR0b25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBRdWlja0xpc3RDb21wYWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVF1aWNrTGlzdENvbXBvbmVudDxRdWlja0xpc3RJdGVtPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgKSB7XG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3JSZWYsIGZvcm1CdWlsZGVyKTtcbiAgfVxufVxuIiwiPGgzPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJsYWJlbFwiPjwvbmctY29udGVudD5cbjwvaDM+XG48bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFsbEl0ZW1zOyBsZXQgaXNMYXN0ID0gbGFzdFwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXJcIiAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiICNyb3cgY2xhc3M9XCJxdWljay1saXN0LXJvd1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bWFkLWljb24tYnV0dG9uIGRhdGEtY3k9XCJkZWxldGUtaXRlbS1idXR0b25cIiAqbmdJZj1cIiFyZWFkb25seSAmJiBpc0RlbGV0ZUFsbG93ZWQoKVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XG4gICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICA8L21hZC1pY29uLWJ1dHRvbj5cbiAgICA8bWFkLWljb24tYnV0dG9uIGRhdGEtY3k9XCJhZGQtaXRlbS1idXR0b25cIiAqbmdJZj1cIiFyZWFkb25seSAmJiBpc0xhc3RcIiBbZGlzYWJsZWRdPVwiIWlzQWRkQWxsb3dlZCgpXCIgKGNsaWNrKT1cImFkZEl0ZW0oKVwiPlxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGVfb3V0bGluZTwvbWF0LWljb24+XG4gICAgPC9tYWQtaWNvbi1idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bWFkLWxpbmstYnV0dG9uXG4gIGRhdGEtY3k9XCJhZGQtZmlyc3QtaXRlbS1idXR0b25cIlxuICAqbmdJZj1cIiFyZWFkb25seSAmJiAhdGhpcy5hbGxJdGVtcy5sZW5ndGhcIlxuICAoY2xpY2spPVwiYWRkSXRlbSgpXCJcbiAgW2Rpc2FibGVkXT1cIiFpc0FkZEFsbG93ZWQoKVwiXG4+XG4gIHt7IGFkZExhYmVsIH19XG48L21hZC1saW5rLWJ1dHRvbj5cbiJdfQ==
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// Based on https://github.com/porscheinformatik/clarity-addons/blob/master/src/clr-addons/generic-quick-list/generic-quick-list.ts
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { BaseQuickListComponent } from './base-quick-list.component';
|
|
4
|
-
import { OutlineButtonComponent } from '../button/outline-button/outline-button.component';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { IconButtonComponent } from '../button/icon-button/icon-button.component';
|
|
7
|
-
import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@angular/material/icon";
|
|
11
|
-
export class QuickListComponent extends BaseQuickListComponent {
|
|
12
|
-
constructor(changeDetectorRef, formBuilder) {
|
|
13
|
-
super(changeDetectorRef, formBuilder);
|
|
14
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
15
|
-
this.formBuilder = formBuilder;
|
|
16
|
-
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: QuickListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: QuickListComponent, isStandalone: true, selector: "mad-quick-list", usesInheritance: true, ngImport: i0, template: "<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n<ng-container *ngFor=\"let item of allItems\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconButtonComponent, selector: "mad-icon-button", inputs: ["type", "disabled", "title"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: OutlineButtonComponent, selector: "mad-outline-button", inputs: ["type", "disabled", "title", "color"] }] }); }
|
|
19
|
-
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: QuickListComponent, decorators: [{
|
|
21
|
-
type: Component,
|
|
22
|
-
args: [{ selector: 'mad-quick-list', standalone: true, imports: [NgFor, NgIf, NgTemplateOutlet, IconButtonComponent, MatIconModule, OutlineButtonComponent], template: "<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n<ng-container *ngFor=\"let item of allItems\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\n" }]
|
|
23
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormBuilder }] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9xdWljay1saXN0L3F1aWNrLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvcXVpY2stbGlzdC9xdWljay1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1JQUFtSTtBQUVuSSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTaEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUFxQztJQUMzRSxZQUNTLGlCQUFvQyxFQUNwQyxXQUF3QjtRQUUvQixLQUFLLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFIL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUdqQyxDQUFDOzhHQU5VLGtCQUFrQjtrR0FBbEIsa0JBQWtCLGlHQ2pCL0IscXBCQWNBLDRDRENZLEtBQUssbUhBQUUsSUFBSSw2RkFBRSxnQkFBZ0Isb0pBQUUsbUJBQW1CLGtHQUFFLGFBQWEsb0xBQUUsc0JBQXNCOzsyRkFFeEYsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUCxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3BvcnNjaGVpbmZvcm1hdGlrL2NsYXJpdHktYWRkb25zL2Jsb2IvbWFzdGVyL3NyYy9jbHItYWRkb25zL2dlbmVyaWMtcXVpY2stbGlzdC9nZW5lcmljLXF1aWNrLWxpc3QudHNcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVF1aWNrTGlzdENvbXBvbmVudCwgUXVpY2tMaXN0SXRlbSB9IGZyb20gJy4vYmFzZS1xdWljay1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE91dGxpbmVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vb3V0bGluZS1idXR0b24vb3V0bGluZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWFkLXF1aWNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVpY2stbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgSWNvbkJ1dHRvbkNvbXBvbmVudCwgTWF0SWNvbk1vZHVsZSwgT3V0bGluZUJ1dHRvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFF1aWNrTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VRdWlja0xpc3RDb21wb25lbnQ8UXVpY2tMaXN0SXRlbT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yUmVmLCBmb3JtQnVpbGRlcik7XG4gIH1cbn1cbiIsIjxoMz5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFiZWxcIj48L25nLWNvbnRlbnQ+XG48L2gzPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbGxJdGVtc1wiPlxuICA8ZGl2ICpuZ0lmPVwiaXRlbVRlbXBsYXRlXCIgI3JvdyBjbGFzcz1cInF1aWNrLWxpc3Qtcm93XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxtYWQtaWNvbi1idXR0b24gZGF0YS1jeT1cImRlbGV0ZS1pdGVtLWJ1dHRvblwiICpuZ0lmPVwiIXJlYWRvbmx5ICYmIGlzRGVsZXRlQWxsb3dlZCgpXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSlcIj5cbiAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgIDwvbWFkLWljb24tYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG1hZC1vdXRsaW5lLWJ1dHRvbiBkYXRhLWN5PVwiYWRkLWl0ZW0tYnV0dG9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIiAoY2xpY2spPVwiYWRkSXRlbSgpXCIgW2Rpc2FibGVkXT1cIiFhZGRQb3NzaWJsZSB8fCAhaXNBZGRBbGxvd2VkKClcIj5cbiAge3sgYWRkTGFiZWwgfX1cbjwvbWFkLW91dGxpbmUtYnV0dG9uPlxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { QuickListCompactComponent } from './quick-list-compact/quick-list-compact.component';
|
|
2
|
-
export { BaseQuickListComponent } from './base-quick-list.component';
|
|
3
|
-
export { QuickListComponent } from './quick-list.component';
|
|
4
|
-
export { ReactiveFormQuickListComponent } from './reactive-form-quick-list/reactive-form-quick-list.component';
|
|
5
|
-
export { ReactiveFormQuickListCompactComponent } from './reactive-form-quick-list-compact/reactive-form-quick-list-compact.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL3F1aWNrLWxpc3QvcXVpY2stbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFF1aWNrTGlzdENvbXBhY3RDb21wb25lbnQgfSBmcm9tICcuL3F1aWNrLWxpc3QtY29tcGFjdC9xdWljay1saXN0LWNvbXBhY3QuY29tcG9uZW50JztcbmV4cG9ydCB7IEJhc2VRdWlja0xpc3RDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtcXVpY2stbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgUXVpY2tMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9xdWljay1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBSZWFjdGl2ZUZvcm1RdWlja0xpc3RDb21wb25lbnQgfSBmcm9tICcuL3JlYWN0aXZlLWZvcm0tcXVpY2stbGlzdC9yZWFjdGl2ZS1mb3JtLXF1aWNrLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCB7IFJlYWN0aXZlRm9ybVF1aWNrTGlzdENvbXBhY3RDb21wb25lbnQgfSBmcm9tICcuL3JlYWN0aXZlLWZvcm0tcXVpY2stbGlzdC1jb21wYWN0L3JlYWN0aXZlLWZvcm0tcXVpY2stbGlzdC1jb21wYWN0LmNvbXBvbmVudCc7XG4iXX0=
|