@tsi-developpement/tsi-shared-ui 1.9.12 → 1.10.0

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.
Files changed (24) hide show
  1. package/esm2022/lib/functions/currency-state.functions.mjs +203 -0
  2. package/esm2022/lib/pipes/tsi-currency.pipe.mjs +17 -19
  3. package/esm2022/lib/services/notification/error-response-manager.service.mjs +1 -7
  4. package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +3 -3
  5. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +49 -28
  6. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +46 -28
  7. package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +37 -10
  8. package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +33 -40
  9. package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +3 -3
  10. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +3 -3
  11. package/esm2022/lib/tsi-components/poc/locale-poc/locale-poc.component.mjs +68 -36
  12. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +1 -1
  13. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +1 -1
  14. package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +1 -1
  15. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +595 -325
  16. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  17. package/lib/functions/currency-state.functions.d.ts +80 -0
  18. package/lib/pipes/tsi-currency.pipe.d.ts +6 -4
  19. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +15 -10
  20. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +13 -10
  21. package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +16 -6
  22. package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +12 -13
  23. package/lib/tsi-components/poc/locale-poc/locale-poc.component.d.ts +39 -21
  24. package/package.json +1 -1
@@ -1,26 +1,48 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
2
  import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
3
+ import { localizeCurrencyState, resolveCurrencyState } from '../../../functions/currency-state.functions';
4
+ import { LocalizePipe } from '../../../pipes/localize.pipe';
3
5
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../../pipes/localize.pipe";
6
+ import * as i1 from "@angular/common";
5
7
  import * as i2 from "@angular/forms";
6
- import * as i3 from "primeng/inputnumber";
7
- import * as i4 from "../../tsi-bubble-info/tsi-bubble-info.component";
8
- import * as i5 from "../../../tsi-directives/auto-select.directive";
8
+ import * as i3 from "primeng/tooltip";
9
+ import * as i4 from "primeng/inputnumber";
10
+ import * as i5 from "../../tsi-bubble-info/tsi-bubble-info.component";
11
+ import * as i6 from "../../../tsi-directives/auto-select.directive";
9
12
  export class TsiCurrencyOtherInputComponent extends TsiInputBase {
10
- constructor(_localizationPipe) {
11
- super();
12
- this._localizationPipe = _localizationPipe;
13
- //#region inputs
14
- this.numOfDecimal = 2;
15
- // @Input() inputField?: number;
16
- this.currency = 'TND';
13
+ constructor() {
14
+ super(...arguments);
15
+ // Local props
16
+ this.currencyState = resolveCurrencyState(undefined, undefined, this.locale, 'error');
17
+ this.tooltipMessage = '';
18
+ this.isValueChanged = false;
17
19
  this.class = {};
18
- //#endregion
19
- //#region outputs
20
+ // Outputs
20
21
  this.inputFieldChange = new EventEmitter();
21
- //#endregion
22
- this.isValueChanged = false;
22
+ // DI
23
+ this._localizePipe = inject(LocalizePipe);
24
+ }
25
+ get currency() { return this._currency; }
26
+ // Inputs
27
+ set currency(value) {
28
+ this._currency = value;
29
+ this.updateCurrencyState();
30
+ }
31
+ // The value is an inherited @Input; override its accessor to recompute the
32
+ // state whenever it changes (parent binding or user typing via valueChanged).
33
+ get inputField() {
34
+ return super.inputField;
35
+ }
36
+ set inputField(value) {
37
+ super.inputField = value;
38
+ this.updateCurrencyState();
39
+ }
40
+ // Lifecycle hooks
41
+ ngOnInit() {
42
+ super.ngOnInit();
43
+ this.updateCurrencyState();
23
44
  }
45
+ // Event handlers
24
46
  valueChanged(event) {
25
47
  this.isValueChanged = true;
26
48
  this.inputField = event;
@@ -32,24 +54,23 @@ export class TsiCurrencyOtherInputComponent extends TsiInputBase {
32
54
  this.isValueChanged = false;
33
55
  }
34
56
  }
35
- ngOnInit() {
36
- super.ngOnInit();
37
- this.currency = this._localizationPipe.transform(this.currency ?? "");
57
+ // Resolves the currency/value state and the tooltip message. For inputs a
58
+ // value exceeding the currency's decimals is an error (rendered read-only).
59
+ updateCurrencyState() {
60
+ this.currencyState = resolveCurrencyState(this.currency, this.inputField, this.locale, 'error');
61
+ this.tooltipMessage = localizeCurrencyState(this.currencyState, (key) => this._localizePipe.transform(key));
38
62
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherInputComponent, deps: [{ token: i1.LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: { numOfDecimal: "numOfDecimal", currency: "currency", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i4.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i5.AutoSelectDirective, selector: "[autoSelect]" }] }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: { currency: "currency", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n mode=\"currency\"\r\n [currency]=\"currency\"\r\n [locale]=\"locale\"/>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex w-full h-2rem align-items-center p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputField }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i5.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i6.AutoSelectDirective, selector: "[autoSelect]" }] }); }
41
65
  }
42
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherInputComponent, decorators: [{
43
67
  type: Component,
44
- args: [{ selector: 'Tsi-Currency-Other-Input', standalone: false, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
45
- }], ctorParameters: () => [{ type: i1.LocalizePipe }], propDecorators: { numOfDecimal: [{
46
- type: Input
47
- }], currency: [{
68
+ args: [{ selector: 'Tsi-Currency-Other-Input', standalone: false, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n mode=\"currency\"\r\n [currency]=\"currency\"\r\n [locale]=\"locale\"/>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex w-full h-2rem align-items-center p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputField }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"] }]
69
+ }], propDecorators: { currency: [{
48
70
  type: Input
49
71
  }], class: [{
50
- type: Input,
51
- args: ['class']
72
+ type: Input
52
73
  }], inputFieldChange: [{
53
74
  type: Output
54
75
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LW90aGVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9pbnB1dC1jb21wb25lbnRzL3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC90c2ktY3VycmVuY3ktb3RoZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LW90aGVyLWlucHV0L3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7OztBQVN6RixNQUFNLE9BQU8sOEJBQStCLFNBQVEsWUFBZ0M7SUFhbEYsWUFBb0IsaUJBQStCO1FBQ2pELEtBQUssRUFBRSxDQUFBO1FBRFcsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFjO1FBWm5ELGdCQUFnQjtRQUNQLGlCQUFZLEdBQVksQ0FBQyxDQUFBO1FBQ2xDLGdDQUFnQztRQUN2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ25CLFVBQUssR0FBUSxFQUFFLENBQUM7UUFDaEMsWUFBWTtRQUVaLGlCQUFpQjtRQUNQLHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlFLFlBQVk7UUFFSixtQkFBYyxHQUFZLEtBQUssQ0FBQTtJQUd2QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVc7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7SUFDckIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBR1EsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN2RSxDQUFDOytHQWxDVSw4QkFBOEI7bUdBQTlCLDhCQUE4QiwwTkNWM0MsMHJCQWFNOzs0RkRITyw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLEtBQUs7aUZBSVIsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFJSixnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY3VycmVuY3ktb3RoZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lDdXJyZW5jeU90aGVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBUc2lJbnB1dEJhc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8jcmVnaW9uIGlucHV0c1xyXG4gIEBJbnB1dCgpIG51bU9mRGVjaW1hbD86IG51bWJlciA9IDJcclxuICAvLyBASW5wdXQoKSBpbnB1dEZpZWxkPzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGN1cnJlbmN5Pzogc3RyaW5nID0gJ1RORCc7XHJcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzOiBhbnkgPSB7fTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgaW5wdXRGaWVsZENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHJpdmF0ZSBpc1ZhbHVlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxpemF0aW9uUGlwZTogTG9jYWxpemVQaXBlKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoYW5nZWQoZXZlbnQgOiBhbnkpIHtcclxuICAgIHRoaXMuaXNWYWx1ZUNoYW5nZWQgPSB0cnVlXHJcbiAgICB0aGlzLmlucHV0RmllbGQgPSBldmVudDtcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlb2ZPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlLmVtaXQodGhpcy5pbnB1dEZpZWxkKTtcclxuICAgICAgdGhpcy5pc1ZhbHVlQ2hhbmdlZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuX2xvY2FsaXphdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuY3VycmVuY3kgPz8gXCJcIilcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggaC0ycmVtXCI+XHJcbiAgICA8cC1pbnB1dE51bWJlciBcclxuICAgICAgICBhdXRvU2VsZWN0XHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAob25CbHVyKT1cIm9uQ2hhbmdlb2ZPcHRpb25zKClcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cImlucHV0RmllbGRcIiBcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgY2xhc3M9XCJ7e215U3R5bGVDbGFzc319XCIgc3R5bGVDbGFzcz1cInt7bXlTdHlsZUNsYXNzfX0gYm9yZGVyLXJhZGl1cy03IHt7dmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzfX1cIiBcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M9XCJ7e215U3R5bGVDbGFzc319XCIgbmFtZT1cInt7aW5wdXROYW1lfX1cIlxyXG4gICAgICAgIGlkPVwie3tpbnB1dElkfX1cIiBbc3VmZml4XT1cImN1cnJlbmN5XCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIm51bU9mRGVjaW1hbCA/PyAwXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIm51bU9mRGVjaW1hbCA/PyAwXCJcclxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiPlxyXG4gICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgPFRzaS1CdWJibGUtSW5mbyBbaW5mb1RleHRdPVwiaW5mb1RleHRcIj48L1RzaS1CdWJibGUtSW5mbz5cclxuPC9kaXY+Il19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LW90aGVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9pbnB1dC1jb21wb25lbnRzL3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC90c2ktY3VycmVuY3ktb3RoZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LW90aGVyLWlucHV0L3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekYsT0FBTyxFQUFpQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7QUFRNUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFlBQWdDO0lBTnBGOztRQU9FLGNBQWM7UUFDSixrQkFBYSxHQUFrQixvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEcsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDOUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFxQi9CLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFekIsVUFBVTtRQUNBLHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTlFLEtBQUs7UUFDRyxrQkFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0E0QjVEO0lBckRDLElBQUksUUFBUSxLQUF5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRTdELFNBQVM7SUFDVCxJQUFhLFFBQVEsQ0FBQyxLQUF5QjtRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLDhFQUE4RTtJQUM5RSxJQUFhLFVBQVU7UUFDckIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxLQUF5QjtRQUMvQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBVUQsa0JBQWtCO0lBQ1QsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSw0RUFBNEU7SUFDcEUsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7K0dBMURVLDhCQUE4QjttR0FBOUIsOEJBQThCLDRMQ1gzQyxpbkNBNEJBOzs0RkRqQmEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixLQUFLOzhCQVdKLFFBQVE7c0JBQXBCLEtBQUs7Z0JBZ0JHLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1cnJlbmN5U3RhdGUsIGxvY2FsaXplQ3VycmVuY3lTdGF0ZSwgcmVzb2x2ZUN1cnJlbmN5U3RhdGUgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvY3VycmVuY3ktc3RhdGUuZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jdXJyZW5jeS1vdGhlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWN1cnJlbmN5LW90aGVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUN1cnJlbmN5T3RoZXJJbnB1dENvbXBvbmVudCBleHRlbmRzIFRzaUlucHV0QmFzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcclxuICAvLyBMb2NhbCBwcm9wc1xyXG4gIHByb3RlY3RlZCBjdXJyZW5jeVN0YXRlOiBDdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMubG9jYWxlLCAnZXJyb3InKTtcclxuICBwcm90ZWN0ZWQgdG9vbHRpcE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgaXNWYWx1ZUNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9jdXJyZW5jeT86IHN0cmluZztcclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2N1cnJlbmN5OyB9XHJcblxyXG4gIC8vIElucHV0c1xyXG4gIEBJbnB1dCgpIHNldCBjdXJyZW5jeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9jdXJyZW5jeSA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVDdXJyZW5jeVN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgdmFsdWUgaXMgYW4gaW5oZXJpdGVkIEBJbnB1dDsgb3ZlcnJpZGUgaXRzIGFjY2Vzc29yIHRvIHJlY29tcHV0ZSB0aGVcclxuICAvLyBzdGF0ZSB3aGVuZXZlciBpdCBjaGFuZ2VzIChwYXJlbnQgYmluZGluZyBvciB1c2VyIHR5cGluZyB2aWEgdmFsdWVDaGFuZ2VkKS5cclxuICBvdmVycmlkZSBnZXQgaW5wdXRGaWVsZCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHN1cGVyLmlucHV0RmllbGQ7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzZXQgaW5wdXRGaWVsZCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzdXBlci5pbnB1dEZpZWxkID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbmN5U3RhdGUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNsYXNzOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBpbnB1dEZpZWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAvLyBESVxyXG4gIHByaXZhdGUgX2xvY2FsaXplUGlwZTogTG9jYWxpemVQaXBlID0gaW5qZWN0KExvY2FsaXplUGlwZSk7XHJcblxyXG4gIC8vIExpZmVjeWNsZSBob29rc1xyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMudXBkYXRlQ3VycmVuY3lTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRXZlbnQgaGFuZGxlcnNcclxuICB2YWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pc1ZhbHVlQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB0aGlzLmlucHV0RmllbGQgPSBldmVudDtcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZW9mT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzVmFsdWVDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWVsZENoYW5nZS5lbWl0KHRoaXMuaW5wdXRGaWVsZCk7XHJcbiAgICAgIHRoaXMuaXNWYWx1ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlc29sdmVzIHRoZSBjdXJyZW5jeS92YWx1ZSBzdGF0ZSBhbmQgdGhlIHRvb2x0aXAgbWVzc2FnZS4gRm9yIGlucHV0cyBhXHJcbiAgLy8gdmFsdWUgZXhjZWVkaW5nIHRoZSBjdXJyZW5jeSdzIGRlY2ltYWxzIGlzIGFuIGVycm9yIChyZW5kZXJlZCByZWFkLW9ubHkpLlxyXG4gIHByaXZhdGUgdXBkYXRlQ3VycmVuY3lTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVuY3lTdGF0ZSA9IHJlc29sdmVDdXJyZW5jeVN0YXRlKHRoaXMuY3VycmVuY3ksIHRoaXMuaW5wdXRGaWVsZCwgdGhpcy5sb2NhbGUsICdlcnJvcicpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IGxvY2FsaXplQ3VycmVuY3lTdGF0ZSh0aGlzLmN1cnJlbmN5U3RhdGUsIChrZXkpID0+IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oa2V5KSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW5jeVN0YXRlLnNldmVyaXR5ID09PSAnb2snOyBlbHNlIGludmFsaWRTdGF0ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGgtMnJlbVwiPlxyXG4gICAgPHAtaW5wdXROdW1iZXJcclxuICAgICAgYXV0b1NlbGVjdFxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgKG9uQmx1cik9XCJvbkNoYW5nZW9mT3B0aW9ucygpXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJpbnB1dEZpZWxkXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgY2xhc3M9XCJ7e215U3R5bGVDbGFzc319XCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwie3tteVN0eWxlQ2xhc3N9fSBib3JkZXItcmFkaXVzLTcge3t2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3N9fVwiXHJcbiAgICAgICAgaW5wdXRTdHlsZUNsYXNzPVwie3tteVN0eWxlQ2xhc3N9fVwiXHJcbiAgICAgICAgbmFtZT1cInt7aW5wdXROYW1lfX1cIlxyXG4gICAgICAgIGlkPVwie3tpbnB1dElkfX1cIlxyXG4gICAgICAgIG1vZGU9XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgW2N1cnJlbmN5XT1cImN1cnJlbmN5XCJcclxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiLz5cclxuICAgIDxUc2ktQnViYmxlLUluZm8gW2luZm9UZXh0XT1cImluZm9UZXh0XCI+PC9Uc2ktQnViYmxlLUluZm8+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbnZhbGlkU3RhdGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZsZXggdy1mdWxsIGgtMnJlbSBhbGlnbi1pdGVtcy1jZW50ZXIgcC0yIHRzaS1jdXJyZW5jeS1zdGF0ZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY3VycmVuY3lTdGF0ZS5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnID8gJ3RzaS1jdXJyZW5jeS1zdGF0ZS0td2FybmluZycgOiAndHNpLWN1cnJlbmN5LXN0YXRlLS1lcnJvcidcIlxyXG4gICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwTWVzc2FnZVwiXHJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAge3sgaW5wdXRGaWVsZCB9fVxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,40 +1,53 @@
1
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
1
+ import { Component, EventEmitter, inject, Input, Output, } from '@angular/core';
2
2
  import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
3
+ import { AppSettingsService } from '../../../services/settings/app-settings.service';
3
4
  import { DefaultSocieteDevise } from '../../../consts/tsi-consts';
5
+ import { localizeCurrencyState, resolveCurrencyState } from '../../../functions/currency-state.functions';
6
+ import { LocalizePipe } from '../../../pipes/localize.pipe';
4
7
  import * as i0 from "@angular/core";
5
- import * as i1 from "../../../services/settings/app-settings.service";
6
- import * as i2 from "../../../pipes/localize.pipe";
7
- import * as i3 from "@angular/forms";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/forms";
10
+ import * as i3 from "primeng/tooltip";
8
11
  import * as i4 from "primeng/inputnumber";
9
12
  import * as i5 from "../../tsi-bubble-info/tsi-bubble-info.component";
10
13
  import * as i6 from "../../../tsi-directives/auto-select.directive";
11
14
  export class TsiCurrencySocieteInputComponent extends TsiInputBase {
12
- constructor(appSettingsService, _localizationPipe) {
15
+ // The value is an inherited @Input; override its accessor to recompute the
16
+ // state whenever it changes (parent binding or user typing via valueChanged).
17
+ get inputField() {
18
+ return super.inputField;
19
+ }
20
+ set inputField(value) {
21
+ super.inputField = value;
22
+ this.updateCurrencyState();
23
+ }
24
+ // Ctor
25
+ constructor() {
13
26
  super();
14
- this.appSettingsService = appSettingsService;
15
- this._localizationPipe = _localizationPipe;
27
+ // Local props
28
+ this.isValueChanged = false;
16
29
  this.currency = DefaultSocieteDevise.codeDevise;
17
- this.numOfDecimal = 3;
30
+ this.currencyState = resolveCurrencyState(undefined, undefined, this.locale, 'error');
31
+ this.tooltipMessage = '';
18
32
  this.style = { width: 'inherit' };
19
- //#region outputs
33
+ // Inputs
20
34
  this.class = {};
21
- //#endregion
22
- //#region outputs
35
+ // Outputs
23
36
  this.inputFieldChange = new EventEmitter();
24
- //#endregion
25
- this.isValueChanged = false;
26
- this.currency = appSettingsService.appSettings.deviseSociete.codeDevise ?? DefaultSocieteDevise.codeDevise;
27
- this.numOfDecimal =
28
- appSettingsService.appSettings.deviseSociete.nombreDecimales ??
29
- DefaultSocieteDevise.nombreDecimales;
37
+ // DI
38
+ this._appSettingsService = inject(AppSettingsService);
39
+ this._localizePipe = inject(LocalizePipe);
40
+ this.currency = this._appSettingsService
41
+ .appSettings
42
+ .deviseSociete
43
+ .codeDevise ?? DefaultSocieteDevise.codeDevise;
30
44
  }
45
+ // Lifecycle hooks
31
46
  ngOnInit() {
32
47
  super.ngOnInit();
33
- this.currency = this._localizationPipe.transform(this.currency);
34
- // if (this.inputField === undefined || this.inputField === null) {
35
- // this.inputField = 0;
36
- // }
48
+ this.updateCurrencyState();
37
49
  }
50
+ // Event handlers
38
51
  valueChanged(event) {
39
52
  this.isValueChanged = true;
40
53
  this.inputField = event;
@@ -46,16 +59,21 @@ export class TsiCurrencySocieteInputComponent extends TsiInputBase {
46
59
  this.isValueChanged = false;
47
60
  }
48
61
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteInputComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: { class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i5.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i6.AutoSelectDirective, selector: "[autoSelect]" }] }); }
62
+ // Resolves the currency/value state and the tooltip message. For inputs a
63
+ // value exceeding the currency's decimals is an error (rendered read-only).
64
+ updateCurrencyState() {
65
+ this.currencyState = resolveCurrencyState(this.currency, this.inputField, this.locale, 'error');
66
+ this.tooltipMessage = localizeCurrencyState(this.currencyState, (key) => this._localizePipe.transform(key));
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: { class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n mode=\"currency\"\r\n [currency]=\"currency\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex w-full h-2rem align-items-center p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputField }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}:host{width:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i5.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i6.AutoSelectDirective, selector: "[autoSelect]" }] }); }
51
70
  }
52
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteInputComponent, decorators: [{
53
72
  type: Component,
54
- args: [{ selector: 'Tsi-Currency-Societe-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"] }]
55
- }], ctorParameters: () => [{ type: i1.AppSettingsService }, { type: i2.LocalizePipe }], propDecorators: { class: [{
56
- type: Input,
57
- args: ['class']
73
+ args: [{ selector: 'Tsi-Currency-Societe-Input', standalone: false, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n mode=\"currency\"\r\n [currency]=\"currency\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex w-full h-2rem align-items-center p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputField }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}:host{width:inherit}\n"] }]
74
+ }], ctorParameters: () => [], propDecorators: { class: [{
75
+ type: Input
58
76
  }], inputFieldChange: [{
59
77
  type: Output
60
78
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFHekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxZQUFnQztJQWlCcEYsWUFBb0Isa0JBQXNDLEVBQ2hELGlCQUErQjtRQUN2QyxLQUFLLEVBQUUsQ0FBQztRQUZVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFjO1FBaEJ6QyxhQUFRLEdBQVcsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBQ3pDLGlCQUFZLEdBQVksQ0FBQyxDQUFDO1FBRXBDLFVBQUssR0FBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUVsQyxpQkFBaUI7UUFDRCxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hDLFlBQVk7UUFFWixpQkFBaUI7UUFDUCxxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5RSxZQUFZO1FBRUosbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFLdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7UUFDM0csSUFBSSxDQUFDLFlBQVk7WUFDZixrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGVBQWU7Z0JBQzVELG9CQUFvQixDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLG1FQUFtRTtRQUNuRSx5QkFBeUI7UUFDekIsSUFBSTtJQUNOLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7K0dBN0NVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLHdLQ2xCN0Msc3VCQW9CTTs7NEZERk8sZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLDRCQUE0QjtrSEFZdEIsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUlKLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUc2lJbnB1dEJhc2UgfSBmcm9tICcuLi8uLi8uLi90c2ktYmFzZS90c2ktaW5wdXQtYmFzZS90c2ktaW5wdXQtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy9hcHAtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBEZWZhdWx0U29jaWV0ZURldmlzZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy90c2ktY29uc3RzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY3VycmVuY3ktc29jaWV0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUN1cnJlbmN5U29jaWV0ZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgVHNpSW5wdXRCYXNlPG51bWJlciB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gIGN1cnJlbmN5OiBzdHJpbmcgPSBEZWZhdWx0U29jaWV0ZURldmlzZS5jb2RlRGV2aXNlO1xyXG4gIHByb3RlY3RlZCBudW1PZkRlY2ltYWw/OiBudW1iZXIgPSAzO1xyXG4gIFxyXG4gIHN0eWxlOiBhbnkgPSB7IHdpZHRoOiAnaW5oZXJpdCcgfTtcclxuICBcclxuICAvLyNyZWdpb24gb3V0cHV0c1xyXG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzczogYW55ID0ge307XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiBcclxuICAvLyNyZWdpb24gb3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBpbnB1dEZpZWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG4gXHJcbiAgcHJpdmF0ZSBpc1ZhbHVlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFNldHRpbmdzU2VydmljZTogQXBwU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uUGlwZTogTG9jYWxpemVQaXBlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jdXJyZW5jeSA9IGFwcFNldHRpbmdzU2VydmljZS5hcHBTZXR0aW5ncy5kZXZpc2VTb2NpZXRlLmNvZGVEZXZpc2UgPz8gRGVmYXVsdFNvY2lldGVEZXZpc2UuY29kZURldmlzZTtcclxuICAgIHRoaXMubnVtT2ZEZWNpbWFsID1cclxuICAgICAgYXBwU2V0dGluZ3NTZXJ2aWNlLmFwcFNldHRpbmdzLmRldmlzZVNvY2lldGUubm9tYnJlRGVjaW1hbGVzID8/XHJcbiAgICAgIERlZmF1bHRTb2NpZXRlRGV2aXNlLm5vbWJyZURlY2ltYWxlcztcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLl9sb2NhbGl6YXRpb25QaXBlLnRyYW5zZm9ybSh0aGlzLmN1cnJlbmN5KTtcclxuICAgIC8vIGlmICh0aGlzLmlucHV0RmllbGQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmlucHV0RmllbGQgPT09IG51bGwpIHtcclxuICAgIC8vICAgdGhpcy5pbnB1dEZpZWxkID0gMDtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZChldmVudCA6IGFueSkge1xyXG4gICAgdGhpcy5pc1ZhbHVlQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB0aGlzLmlucHV0RmllbGQgPSBldmVudDtcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZW9mT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzVmFsdWVDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWVsZENoYW5nZS5lbWl0KHRoaXMuaW5wdXRGaWVsZCk7XHJcbiAgICAgIHRoaXMuaXNWYWx1ZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggaC0ycmVtXCI+XHJcbiAgPHAtaW5wdXROdW1iZXJcclxuICAgIGF1dG9TZWxlY3RcclxuICAgIGNsYXNzPVwie3sgbXlTdHlsZUNsYXNzIH19IHt7IGNsYXNzIH19XCJcclxuICAgIHN0eWxlQ2xhc3M9XCJ7eyBteVN0eWxlQ2xhc3MgfX0gYm9yZGVyLXJhZGl1cy03IHt7dmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzfX1cIlxyXG4gICAgaW5wdXRTdHlsZUNsYXNzPVwie3sgbXlTdHlsZUNsYXNzIH19XCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbbmdNb2RlbF09XCJpbnB1dEZpZWxkXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIChvbkJsdXIpPVwib25DaGFuZ2VvZk9wdGlvbnMoKVwiXHJcbiAgICBuYW1lPVwie3sgaW5wdXROYW1lIH19XCJcclxuICAgIGlkPVwie3sgaW5wdXRJZCB9fVwiXHJcbiAgICBzdWZmaXg9XCIge3tjdXJyZW5jeX19XCIgXHJcbiAgICBsb2NhbGU9XCJlbi1VU1wiXHJcbiAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwibnVtT2ZEZWNpbWFsID8/IDBcIlxyXG4gICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIm51bU9mRGVjaW1hbCA/PyAwXCJcclxuICAgIFtsb2NhbGVdPVwibG9jYWxlXCI+XHJcbiAgPC9wLWlucHV0TnVtYmVyPlxyXG5cclxuICA8VHNpLUJ1YmJsZS1JbmZvIFtpbmZvVGV4dF09XCJpbmZvVGV4dFwiPjwvVHNpLUJ1YmJsZS1JbmZvPlxyXG48L2Rpdj4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQvdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBaUIscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBUTVELE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxZQUFnQztJQVFwRiwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLElBQWEsVUFBVTtRQUNyQixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLEtBQXlCO1FBQy9DLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFZRCxPQUFPO0lBQ1A7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQTlCVixjQUFjO1FBQ04sbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDOUIsYUFBUSxHQUFXLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNuRCxrQkFBYSxHQUFrQixvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEcsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDdEMsVUFBSyxHQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBYWxDLFNBQVM7UUFDQSxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRXpCLFVBQVU7UUFDQSxxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU5RSxLQUFLO1FBQ0csd0JBQW1CLEdBQXVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLGtCQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUt6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDckMsV0FBVzthQUNYLGFBQWE7YUFDYixVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFFRCxrQkFBa0I7SUFDVCxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUNwRSxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQzsrR0EvRFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0Msd0tDbkI3QyxrbkNBOEJBOzs0RkRYYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBRzFCLEtBQUs7d0RBc0JSLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3MvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZWZhdWx0U29jaWV0ZURldmlzZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy90c2ktY29uc3RzJztcclxuaW1wb3J0IHsgQ3VycmVuY3lTdGF0ZSwgbG9jYWxpemVDdXJyZW5jeVN0YXRlLCByZXNvbHZlQ3VycmVuY3lTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9jdXJyZW5jeS1zdGF0ZS5mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY3VycmVuY3ktc29jaWV0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWN1cnJlbmN5LXNvY2lldGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQ3VycmVuY3lTb2NpZXRlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBUc2lJbnB1dEJhc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgLy8gTG9jYWwgcHJvcHNcclxuICBwcml2YXRlIGlzVmFsdWVDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGN1cnJlbmN5OiBzdHJpbmcgPSBEZWZhdWx0U29jaWV0ZURldmlzZS5jb2RlRGV2aXNlO1xyXG4gIHByb3RlY3RlZCBjdXJyZW5jeVN0YXRlOiBDdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMubG9jYWxlLCAnZXJyb3InKTtcclxuICBwcm90ZWN0ZWQgdG9vbHRpcE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIHN0eWxlOiBhbnkgPSB7IHdpZHRoOiAnaW5oZXJpdCcgfTtcclxuXHJcbiAgLy8gVGhlIHZhbHVlIGlzIGFuIGluaGVyaXRlZCBASW5wdXQ7IG92ZXJyaWRlIGl0cyBhY2Nlc3NvciB0byByZWNvbXB1dGUgdGhlXHJcbiAgLy8gc3RhdGUgd2hlbmV2ZXIgaXQgY2hhbmdlcyAocGFyZW50IGJpbmRpbmcgb3IgdXNlciB0eXBpbmcgdmlhIHZhbHVlQ2hhbmdlZCkuXHJcbiAgb3ZlcnJpZGUgZ2V0IGlucHV0RmllbGQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBzdXBlci5pbnB1dEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGlucHV0RmllbGQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgc3VwZXIuaW5wdXRGaWVsZCA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVDdXJyZW5jeVN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBJbnB1dHNcclxuICBASW5wdXQoKSBjbGFzczogYW55ID0ge307XHJcblxyXG4gIC8vIE91dHB1dHNcclxuICBAT3V0cHV0KCkgaW5wdXRGaWVsZENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgLy8gRElcclxuICBwcml2YXRlIF9hcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgX2xvY2FsaXplUGlwZTogTG9jYWxpemVQaXBlID0gaW5qZWN0KExvY2FsaXplUGlwZSk7XHJcblxyXG4gIC8vIEN0b3JcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5fYXBwU2V0dGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5hcHBTZXR0aW5nc1xyXG4gICAgICAuZGV2aXNlU29jaWV0ZVxyXG4gICAgICAuY29kZURldmlzZSA/PyBEZWZhdWx0U29jaWV0ZURldmlzZS5jb2RlRGV2aXNlO1xyXG4gIH1cclxuXHJcbiAgLy8gTGlmZWN5Y2xlIGhvb2tzXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy51cGRhdGVDdXJyZW5jeVN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBFdmVudCBoYW5kbGVyc1xyXG4gIHZhbHVlQ2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmlzVmFsdWVDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5wdXRGaWVsZCA9IGV2ZW50O1xyXG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlb2ZPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlLmVtaXQodGhpcy5pbnB1dEZpZWxkKTtcclxuICAgICAgdGhpcy5pc1ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzb2x2ZXMgdGhlIGN1cnJlbmN5L3ZhbHVlIHN0YXRlIGFuZCB0aGUgdG9vbHRpcCBtZXNzYWdlLiBGb3IgaW5wdXRzIGFcclxuICAvLyB2YWx1ZSBleGNlZWRpbmcgdGhlIGN1cnJlbmN5J3MgZGVjaW1hbHMgaXMgYW4gZXJyb3IgKHJlbmRlcmVkIHJlYWQtb25seSkuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW5jeVN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeSwgdGhpcy5pbnB1dEZpZWxkLCB0aGlzLmxvY2FsZSwgJ2Vycm9yJyk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gbG9jYWxpemVDdXJyZW5jeVN0YXRlKHRoaXMuY3VycmVuY3lTdGF0ZSwgKGtleSkgPT4gdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybShrZXkpKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbmN5U3RhdGUuc2V2ZXJpdHkgPT09ICdvayc7IGVsc2UgaW52YWxpZFN0YXRlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaC0ycmVtXCI+XHJcbiAgICA8cC1pbnB1dE51bWJlclxyXG4gICAgICBhdXRvU2VsZWN0XHJcbiAgICAgIGNsYXNzPVwie3sgbXlTdHlsZUNsYXNzIH19IHt7IGNsYXNzIH19XCJcclxuICAgICAgc3R5bGVDbGFzcz1cInt7IG15U3R5bGVDbGFzcyB9fSBib3JkZXItcmFkaXVzLTcge3t2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3N9fVwiXHJcbiAgICAgIGlucHV0U3R5bGVDbGFzcz1cInt7IG15U3R5bGVDbGFzcyB9fVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtuZ01vZGVsXT1cImlucHV0RmllbGRcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChvbkJsdXIpPVwib25DaGFuZ2VvZk9wdGlvbnMoKVwiXHJcbiAgICAgIG5hbWU9XCJ7e2lucHV0TmFtZX19XCJcclxuICAgICAgaWQ9XCJ7e2lucHV0SWR9fVwiXHJcbiAgICAgIG1vZGU9XCJjdXJyZW5jeVwiXHJcbiAgICAgIFtjdXJyZW5jeV09XCJjdXJyZW5jeVwiXHJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCI+XHJcbiAgICA8L3AtaW5wdXROdW1iZXI+XHJcblxyXG4gICAgPFRzaS1CdWJibGUtSW5mbyBbaW5mb1RleHRdPVwiaW5mb1RleHRcIj48L1RzaS1CdWJibGUtSW5mbz5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2ludmFsaWRTdGF0ZT5cclxuICA8c3BhbiBjbGFzcz1cImZsZXggdy1mdWxsIGgtMnJlbSBhbGlnbi1pdGVtcy1jZW50ZXIgcC0yIHRzaS1jdXJyZW5jeS1zdGF0ZVwiXHJcbiAgICBbbmdDbGFzc109XCJjdXJyZW5jeVN0YXRlLnNldmVyaXR5ID09PSAnd2FybmluZycgPyAndHNpLWN1cnJlbmN5LXN0YXRlLS13YXJuaW5nJyA6ICd0c2ktY3VycmVuY3ktc3RhdGUtLWVycm9yJ1wiXHJcbiAgICBbcFRvb2x0aXBdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICB7eyBpbnB1dEZpZWxkIH19XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,24 +1,51 @@
1
1
  import { Component, inject, Input } from '@angular/core';
2
+ import { localizeCurrencyState, resolveCurrencyState } from '../../../functions/currency-state.functions';
3
+ import { LocalizePipe } from '../../../pipes/localize.pipe';
2
4
  import { LocalizationService } from '../../../services/localization/localization.service';
3
5
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../../pipes/tsi-currency.pipe";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "primeng/tooltip";
8
+ import * as i3 from "../../../pipes/tsi-currency.pipe";
5
9
  export class TsiCurrencyOtherDisplayComponent {
10
+ get currency() { return this._currency; }
11
+ get inputData() { return this._inputData; }
12
+ // Inputs
13
+ set currency(value) {
14
+ this._currency = value;
15
+ this.updateCurrencyState();
16
+ }
17
+ set inputData(value) {
18
+ this._inputData = value;
19
+ this.updateCurrencyState();
20
+ }
6
21
  constructor() {
22
+ this.tooltipMessage = '';
23
+ this._inputData = 0;
24
+ // DI
25
+ this._localizePipe = inject(LocalizePipe);
7
26
  this._localizationService = inject(LocalizationService);
8
- //#region inputs
9
- this.inputData = 0;
10
- this.currency = "TND";
11
- this.locale = this._localizationService.locale;
27
+ this._locale = this._localizationService.locale;
28
+ this.currencyState = resolveCurrencyState(undefined, undefined, this._locale, 'warning');
29
+ }
30
+ // Lifecycle hooks
31
+ ngOnInit() {
32
+ this.updateCurrencyState();
33
+ }
34
+ // Resolves the currency/value state and the tooltip message. For displays a
35
+ // value exceeding the currency's decimals is a warning (rendered raw).
36
+ updateCurrencyState() {
37
+ this.currencyState = resolveCurrencyState(this.currency, this.inputData, this._locale, 'warning');
38
+ this.tooltipMessage = localizeCurrencyState(this.currencyState, (key) => this._localizePipe.transform(key));
12
39
  }
13
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: { inputData: "inputData", currency: "currency" }, ngImport: i0, template: "<span class=\"flex row justify-content-end p-2\">\r\n {{inputData | tsiCurrency : currency ?? '' : 'code' : '' : locale}}\r\n</span>", styles: [""], dependencies: [{ kind: "pipe", type: i1.TsiCurrencyPipe, name: "tsiCurrency" }] }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: { currency: "currency", inputData: "inputData" }, ngImport: i0, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <span class=\"flex row justify-content-end p-2\">\r\n {{ inputData | tsiCurrency : currency ?? '' }}\r\n </span>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex row justify-content-end p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputData }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "pipe", type: i3.TsiCurrencyPipe, name: "tsiCurrency" }] }); }
15
42
  }
16
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherDisplayComponent, decorators: [{
17
44
  type: Component,
18
- args: [{ selector: 'Tsi-Currency-Other-Display', template: "<span class=\"flex row justify-content-end p-2\">\r\n {{inputData | tsiCurrency : currency ?? '' : 'code' : '' : locale}}\r\n</span>" }]
19
- }], ctorParameters: () => [], propDecorators: { inputData: [{
45
+ args: [{ selector: 'Tsi-Currency-Other-Display', standalone: false, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <span class=\"flex row justify-content-end p-2\">\r\n {{ inputData | tsiCurrency : currency ?? '' }}\r\n </span>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"flex row justify-content-end p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputData }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"] }]
46
+ }], ctorParameters: () => [], propDecorators: { currency: [{
20
47
  type: Input
21
- }], currency: [{
48
+ }], inputData: [{
22
49
  type: Input
23
50
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LW90aGVyLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL291dHB1dC1jb21wb25lbnRzL3RzaS1jdXJyZW5jeS1vdGhlci1kaXNwbGF5L3RzaS1jdXJyZW5jeS1vdGhlci1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktY3VycmVuY3ktb3RoZXItZGlzcGxheS90c2ktY3VycmVuY3ktb3RoZXItZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7OztBQVExRixNQUFNLE9BQU8sZ0NBQWdDO0lBSTNDO1FBSFEseUJBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBT2hGLGdCQUFnQjtRQUNQLGNBQVMsR0FBWSxDQUFDLENBQUM7UUFDdkIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUxqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQzsrR0FOVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyw0SENUN0MseUlBRU87OzRGRE9NLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEI7d0RBYTdCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxlQ29kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL0xhbmd1YWdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY3VycmVuY3ktb3RoZXItZGlzcGxheS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWN1cnJlbmN5LW90aGVyLWRpc3BsYXkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lDdXJyZW5jeU90aGVyRGlzcGxheUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgbG9jYWxlOiBMb2NhbGVDb2RlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMubG9jYWxlID0gdGhpcy5fbG9jYWxpemF0aW9uU2VydmljZS5sb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gaW5wdXRzXHJcbiAgQElucHV0KCkgaW5wdXREYXRhPzogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBjdXJyZW5jeT86IHN0cmluZyA9IFwiVE5EXCI7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPHNwYW4gY2xhc3M9XCJmbGV4IHJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMlwiPlxyXG4gICAge3tpbnB1dERhdGEgfCB0c2lDdXJyZW5jeSA6IGN1cnJlbmN5ID8/ICcnIDogJ2NvZGUnIDogJycgOiBsb2NhbGV9fVxyXG48L3NwYW4+Il19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LW90aGVyLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL291dHB1dC1jb21wb25lbnRzL3RzaS1jdXJyZW5jeS1vdGhlci1kaXNwbGF5L3RzaS1jdXJyZW5jeS1vdGhlci1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktY3VycmVuY3ktb3RoZXItZGlzcGxheS90c2ktY3VycmVuY3ktb3RoZXItZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFpQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7QUFRMUYsTUFBTSxPQUFPLGdDQUFnQztJQU0zQyxJQUFJLFFBQVEsS0FBeUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLFNBQVMsS0FBeUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUUvRCxTQUFTO0lBQ1QsSUFBYSxRQUFRLENBQUMsS0FBeUI7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFPRDtRQXRCVSxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUU5QixlQUFVLEdBQVksQ0FBQyxDQUFDO1FBZWhDLEtBQUs7UUFDRyxrQkFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQseUJBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9ELFlBQU8sR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1FBR2xFLElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQy9ELG1CQUFtQjtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDOytHQXZDVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyw0SENYN0MseWxCQWNBOzs0RkRIYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBRzFCLEtBQUs7d0RBWUosUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VycmVuY3lTdGF0ZSwgbG9jYWxpemVDdXJyZW5jeVN0YXRlLCByZXNvbHZlQ3VycmVuY3lTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9jdXJyZW5jeS1zdGF0ZS5mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLWN1cnJlbmN5LW90aGVyLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1jdXJyZW5jeS1vdGhlci1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUN1cnJlbmN5T3RoZXJEaXNwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvLyBMb2NhbCBwcm9wc1xyXG4gIHByb3RlY3RlZCBjdXJyZW5jeVN0YXRlOiBDdXJyZW5jeVN0YXRlO1xyXG4gIHByb3RlY3RlZCB0b29sdGlwTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBfY3VycmVuY3k/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaW5wdXREYXRhPzogbnVtYmVyID0gMDtcclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2N1cnJlbmN5OyB9XHJcbiAgZ2V0IGlucHV0RGF0YSgpOiBudW1iZXIgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faW5wdXREYXRhOyB9XHJcblxyXG4gIC8vIElucHV0c1xyXG4gIEBJbnB1dCgpIHNldCBjdXJyZW5jeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9jdXJyZW5jeSA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVDdXJyZW5jeVN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgaW5wdXREYXRhKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2lucHV0RGF0YSA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVDdXJyZW5jeVN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBESVxyXG4gIHByaXZhdGUgX2xvY2FsaXplUGlwZTogTG9jYWxpemVQaXBlID0gaW5qZWN0KExvY2FsaXplUGlwZSk7XHJcbiAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGU6IHN0cmluZyA9IHRoaXMuX2xvY2FsaXphdGlvblNlcnZpY2UubG9jYWxlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuY3VycmVuY3lTdGF0ZSA9IHJlc29sdmVDdXJyZW5jeVN0YXRlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzLl9sb2NhbGUsICd3YXJuaW5nJyk7XHJcbiAgfVxyXG5cclxuICAvLyBMaWZlY3ljbGUgaG9va3NcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQ3VycmVuY3lTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzb2x2ZXMgdGhlIGN1cnJlbmN5L3ZhbHVlIHN0YXRlIGFuZCB0aGUgdG9vbHRpcCBtZXNzYWdlLiBGb3IgZGlzcGxheXMgYVxyXG4gIC8vIHZhbHVlIGV4Y2VlZGluZyB0aGUgY3VycmVuY3kncyBkZWNpbWFscyBpcyBhIHdhcm5pbmcgKHJlbmRlcmVkIHJhdykuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW5jeVN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeSwgdGhpcy5pbnB1dERhdGEsIHRoaXMuX2xvY2FsZSwgJ3dhcm5pbmcnKTtcclxuICAgIHRoaXMudG9vbHRpcE1lc3NhZ2UgPSBsb2NhbGl6ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeVN0YXRlLCAoa2V5KSA9PiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGtleSkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVuY3lTdGF0ZS5zZXZlcml0eSA9PT0gJ29rJzsgZWxzZSBpbnZhbGlkU3RhdGVcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZmxleCByb3cganVzdGlmeS1jb250ZW50LWVuZCBwLTJcIj5cclxuICAgICAgICB7eyBpbnB1dERhdGEgfCB0c2lDdXJyZW5jeSA6IGN1cnJlbmN5ID8/ICcnIH19XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbnZhbGlkU3RhdGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZsZXggcm93IGp1c3RpZnktY29udGVudC1lbmQgcC0yIHRzaS1jdXJyZW5jeS1zdGF0ZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY3VycmVuY3lTdGF0ZS5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnID8gJ3RzaS1jdXJyZW5jeS1zdGF0ZS0td2FybmluZycgOiAndHNpLWN1cnJlbmN5LXN0YXRlLS1lcnJvcidcIlxyXG4gICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwTWVzc2FnZVwiXHJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAge3sgaW5wdXREYXRhIH19XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -1,56 +1,49 @@
1
1
  import { Component, inject, Input } from '@angular/core';
2
2
  import { DefaultSocieteDevise } from '../../../consts/tsi-consts';
3
+ import { AppSettingsService } from '../../../services/settings/app-settings.service';
4
+ import { localizeCurrencyState, resolveCurrencyState } from '../../../functions/currency-state.functions';
5
+ import { LocalizePipe } from '../../../pipes/localize.pipe';
3
6
  import { LocalizationService } from '../../../services/localization/localization.service';
4
7
  import * as i0 from "@angular/core";
5
- import * as i1 from "../../../pipes/localize.pipe";
6
- import * as i2 from "../../../services/settings/app-settings.service";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "primeng/tooltip";
7
10
  import * as i3 from "../../../pipes/tsi-currency.pipe";
8
11
  export class TsiCurrencySocieteDisplayComponent {
9
- constructor(localizationPipe, appSettingsService) {
10
- this.localizationPipe = localizationPipe;
11
- this.appSettingsService = appSettingsService;
12
+ get inputData() { return this._inputData; }
13
+ // Inputs
14
+ set inputData(value) {
15
+ this._inputData = value;
16
+ this.updateCurrencyState();
17
+ }
18
+ constructor() {
19
+ // Local props
12
20
  this.currency = DefaultSocieteDevise.codeDevise;
13
- this.numOfDecimal = 3;
14
- this._digitsInfo = '1.3-3';
21
+ this.tooltipMessage = '';
22
+ // DI
23
+ this._appSettingsService = inject(AppSettingsService);
24
+ this._localizePipe = inject(LocalizePipe);
15
25
  this._localizationService = inject(LocalizationService);
16
- //#endregion
17
- this.currencyTraductionKey = DefaultSocieteDevise.codeDevise;
18
- this.currency =
19
- appSettingsService.appSettings.deviseSociete.codeDevise ??
20
- DefaultSocieteDevise.codeDevise;
21
- this.numOfDecimal =
22
- appSettingsService.appSettings.deviseSociete.nombreDecimales ??
23
- DefaultSocieteDevise.nombreDecimales;
24
- this.locale = this._localizationService.locale;
25
- }
26
- getDigitsInfo() {
27
- return this._digitsInfo;
26
+ this._locale = this._localizationService.locale;
27
+ this.currency = this._appSettingsService.appSettings.deviseSociete.codeDevise ?? DefaultSocieteDevise.codeDevise;
28
+ this.currencyState = resolveCurrencyState(this.currency, undefined, this._locale, 'warning');
28
29
  }
30
+ // Lifecycle hooks
29
31
  ngOnInit() {
30
- const digits = this.numOfDecimal ?? DefaultSocieteDevise.nombreDecimales;
31
- this._digitsInfo = `1.${digits}-${digits}`;
32
- this.currency = this.localizationPipe.transform(this.currency);
33
- // TODO: Commented by @Hassen, @why: locale changes must be based on language not on rtl
34
- // this._layoutService.enableRtlModeSubject$.subscribe({
35
- // next: (data) => {
36
- // if (data && data == true) {
37
- // this.changeLocal(locals.arabicLocal);
38
- // } else {
39
- // this.changeLocal(locals.frenchLocal);
40
- // }
41
- // },
42
- // });
43
- // if (this._layoutService.isRtlModeEnabled()) {
44
- // this.changeLocal(locals.arabicLocal);
45
- // }
32
+ this.updateCurrencyState();
33
+ }
34
+ // Resolves the currency/value state and the tooltip message. For displays a
35
+ // value exceeding the currency's decimals is a warning (rendered raw).
36
+ updateCurrencyState() {
37
+ this.currencyState = resolveCurrencyState(this.currency, this.inputData, this._locale, 'warning');
38
+ this.tooltipMessage = localizeCurrencyState(this.currencyState, (key) => this._localizePipe.transform(key));
46
39
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteDisplayComponent, deps: [{ token: i1.LocalizePipe }, { token: i2.AppSettingsService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: { inputData: "inputData" }, ngImport: i0, template: "\r\n<span class=\"row flex justify-content-end p-2\">\r\n {{inputData | tsiCurrency : currency : 'code' : getDigitsInfo() : locale}}\r\n</span>\r\n ", styles: [""], dependencies: [{ kind: "pipe", type: i3.TsiCurrencyPipe, name: "tsiCurrency" }] }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: { inputData: "inputData" }, ngImport: i0, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <span class=\"row flex justify-content-end p-2\">\r\n {{ inputData | tsiCurrency : currency }}\r\n </span>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"row flex justify-content-end p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputData }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "pipe", type: i3.TsiCurrencyPipe, name: "tsiCurrency" }] }); }
49
42
  }
50
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteDisplayComponent, decorators: [{
51
44
  type: Component,
52
- args: [{ selector: 'Tsi-Currency-Societe-Display', template: "\r\n<span class=\"row flex justify-content-end p-2\">\r\n {{inputData | tsiCurrency : currency : 'code' : getDigitsInfo() : locale}}\r\n</span>\r\n " }]
53
- }], ctorParameters: () => [{ type: i1.LocalizePipe }, { type: i2.AppSettingsService }], propDecorators: { inputData: [{
45
+ args: [{ selector: 'Tsi-Currency-Societe-Display', standalone: false, template: "<ng-container *ngIf=\"currencyState.severity === 'ok'; else invalidState\">\r\n <span class=\"row flex justify-content-end p-2\">\r\n {{ inputData | tsiCurrency : currency }}\r\n </span>\r\n</ng-container>\r\n\r\n<ng-template #invalidState>\r\n <span class=\"row flex justify-content-end p-2 tsi-currency-state\"\r\n [ngClass]=\"currencyState.severity === 'warning' ? 'tsi-currency-state--warning' : 'tsi-currency-state--error'\"\r\n [pTooltip]=\"tooltipMessage\"\r\n tooltipPosition=\"top\">\r\n {{ inputData }}\r\n </span>\r\n</ng-template>\r\n", styles: [".tsi-currency-state--error{background-color:var(--tsi-currency-error-bg, rgba(255, 68, 68, .231372549))}.tsi-currency-state--warning{background-color:var(--tsi-currency-warning-bg, rgba(255, 170, 68, .431372549))}\n"] }]
46
+ }], ctorParameters: () => [], propDecorators: { inputData: [{
54
47
  type: Input
55
48
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LXNvY2lldGUtZGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtZGlzcGxheS90c2ktY3VycmVuY3ktc29jaWV0ZS1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktY3VycmVuY3ktc29jaWV0ZS1kaXNwbGF5L3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQVExRixNQUFNLE9BQU8sa0NBQWtDO0lBYTdDLFlBQ1UsZ0JBQThCLEVBQzlCLGtCQUFzQztRQUR0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWM7UUFDOUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWRoRCxhQUFRLEdBQVcsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBQ3pDLGlCQUFZLEdBQVksQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLHlCQUFvQixHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUtoRixZQUFZO1FBRVosMEJBQXFCLEdBQVcsb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBTTlELElBQUksQ0FBQyxRQUFRO1lBQ1gsa0JBQWtCLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVO2dCQUN2RCxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVk7WUFDZixrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGVBQWU7Z0JBQzVELG9CQUFvQixDQUFDLGVBQWUsQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLG9CQUFvQixDQUFDLGVBQWUsQ0FBQztRQUN6RSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0Qsd0ZBQXdGO1FBQ3hGLHdEQUF3RDtRQUN4RCxzQkFBc0I7UUFDdEIsa0NBQWtDO1FBQ2xDLDhDQUE4QztRQUM5QyxlQUFlO1FBQ2YsOENBQThDO1FBQzlDLFFBQVE7UUFDUixPQUFPO1FBQ1AsTUFBTTtRQUVOLGdEQUFnRDtRQUNoRCwwQ0FBMEM7UUFDMUMsSUFBSTtJQUNOLENBQUM7K0dBbkRVLGtDQUFrQzttR0FBbEMsa0NBQWtDLHdHQ1ovQyw2SkFJSTs7NEZEUVMsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLDhCQUE4QjtrSEFZL0IsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERlZmF1bHRTb2NpZXRlRGV2aXNlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL3RzaS1jb25zdHMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3MvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxlQ29kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL0xhbmd1YWdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQ3VycmVuY3lTb2NpZXRlRGlzcGxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY3VycmVuY3k6IHN0cmluZyA9IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcbiAgcHJvdGVjdGVkIG51bU9mRGVjaW1hbD86IG51bWJlciA9IDM7XHJcbiAgcHJpdmF0ZSBfZGlnaXRzSW5mbyA9ICcxLjMtMyc7XHJcbiAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgbG9jYWxlOiBMb2NhbGVDb2RlO1xyXG5cclxuICAvLyNyZWdpb24gaW5wdXRzXHJcbiAgQElucHV0KCkgaW5wdXREYXRhPzogbnVtYmVyO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBjdXJyZW5jeVRyYWR1Y3Rpb25LZXk6IHN0cmluZyA9IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb25QaXBlOiBMb2NhbGl6ZVBpcGUsXHJcbiAgICBwcml2YXRlIGFwcFNldHRpbmdzU2VydmljZTogQXBwU2V0dGluZ3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID1cclxuICAgICAgYXBwU2V0dGluZ3NTZXJ2aWNlLmFwcFNldHRpbmdzLmRldmlzZVNvY2lldGUuY29kZURldmlzZSA/P1xyXG4gICAgICBEZWZhdWx0U29jaWV0ZURldmlzZS5jb2RlRGV2aXNlO1xyXG4gICAgdGhpcy5udW1PZkRlY2ltYWwgPVxyXG4gICAgICBhcHBTZXR0aW5nc1NlcnZpY2UuYXBwU2V0dGluZ3MuZGV2aXNlU29jaWV0ZS5ub21icmVEZWNpbWFsZXMgPz9cclxuICAgICAgRGVmYXVsdFNvY2lldGVEZXZpc2Uubm9tYnJlRGVjaW1hbGVzO1xyXG5cclxuICAgIHRoaXMubG9jYWxlID0gdGhpcy5fbG9jYWxpemF0aW9uU2VydmljZS5sb2NhbGU7XHJcbiAgfVxyXG5cclxuICBnZXREaWdpdHNJbmZvKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlnaXRzSW5mbztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlnaXRzID0gdGhpcy5udW1PZkRlY2ltYWwgPz8gRGVmYXVsdFNvY2lldGVEZXZpc2Uubm9tYnJlRGVjaW1hbGVzO1xyXG4gICAgdGhpcy5fZGlnaXRzSW5mbyA9IGAxLiR7ZGlnaXRzfS0ke2RpZ2l0c31gO1xyXG5cclxuICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLmxvY2FsaXphdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuY3VycmVuY3kpO1xyXG5cclxuICAgIC8vIFRPRE86IENvbW1lbnRlZCBieSBASGFzc2VuLCBAd2h5OiBsb2NhbGUgY2hhbmdlcyBtdXN0IGJlIGJhc2VkIG9uIGxhbmd1YWdlIG5vdCBvbiBydGxcclxuICAgIC8vIHRoaXMuX2xheW91dFNlcnZpY2UuZW5hYmxlUnRsTW9kZVN1YmplY3QkLnN1YnNjcmliZSh7XHJcbiAgICAvLyAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRhdGEgJiYgZGF0YSA9PSB0cnVlKSB7XHJcbiAgICAvLyAgICAgICB0aGlzLmNoYW5nZUxvY2FsKGxvY2Fscy5hcmFiaWNMb2NhbCk7XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIHRoaXMuY2hhbmdlTG9jYWwobG9jYWxzLmZyZW5jaExvY2FsKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyBpZiAodGhpcy5fbGF5b3V0U2VydmljZS5pc1J0bE1vZGVFbmFibGVkKCkpIHtcclxuICAgIC8vICAgdGhpcy5jaGFuZ2VMb2NhbChsb2NhbHMuYXJhYmljTG9jYWwpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogQ29tbWVudGVkIGJ5IEBIYXNzZW4sIEB3aHk6IGxvY2FsZSBjaGFuZ2VzIG11c3QgYmUgYmFzZWQgb24gbGFuZ3VhZ2Ugbm90IG9uIHJ0bFxyXG4gIC8vIGNoYW5nZUxvY2FsKG5ld0xvY2FsVmFsdWU6IHN0cmluZykge1xyXG4gIC8vICAgdGhpcy5sb2NhbGUgPSBuZXdMb2NhbFZhbHVlO1xyXG4gIC8vICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMubG9jYWxpemF0aW9uUGlwZS50cmFuc2Zvcm0odGhpcy5jdXJyZW5jeVRyYWR1Y3Rpb25LZXkpO1xyXG4gIC8vIH1cclxufVxyXG4iLCJcclxuPHNwYW4gY2xhc3M9XCJyb3cgZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMlwiPlxyXG4gICAge3tpbnB1dERhdGEgIHwgdHNpQ3VycmVuY3kgOiBjdXJyZW5jeSA6ICdjb2RlJyA6IGdldERpZ2l0c0luZm8oKSA6IGxvY2FsZX19XHJcbjwvc3Bhbj5cclxuICAgICJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWN1cnJlbmN5LXNvY2lldGUtZGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvb3V0cHV0LWNvbXBvbmVudHMvdHNpLWN1cnJlbmN5LXNvY2lldGUtZGlzcGxheS90c2ktY3VycmVuY3ktc29jaWV0ZS1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktY3VycmVuY3ktc29jaWV0ZS1kaXNwbGF5L3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBaUIscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7O0FBUTFGLE1BQU0sT0FBTyxrQ0FBa0M7SUFNN0MsSUFBSSxTQUFTLEtBQXlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFL0QsU0FBUztJQUNULElBQWEsU0FBUyxDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFRRDtRQW5CQSxjQUFjO1FBQ0osYUFBUSxHQUFXLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUVuRCxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQVV0QyxLQUFLO1FBQ0csd0JBQW1CLEdBQXVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLGtCQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCx5QkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0QsWUFBTyxHQUFXLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFHbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDO1FBQ2pILElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUMvRCxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQzsrR0FuQ1Usa0NBQWtDO21HQUFsQyxrQ0FBa0Msd0dDYi9DLHVqQkFjQTs7NEZERGEsa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixLQUFLO3dEQVdKLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWZhdWx0U29jaWV0ZURldmlzZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy90c2ktY29uc3RzJztcclxuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3MvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVN0YXRlLCBsb2NhbGl6ZUN1cnJlbmN5U3RhdGUsIHJlc29sdmVDdXJyZW5jeVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2N1cnJlbmN5LXN0YXRlLmZ1bmN0aW9ucyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1jdXJyZW5jeS1zb2NpZXRlLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQ3VycmVuY3lTb2NpZXRlRGlzcGxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gTG9jYWwgcHJvcHNcclxuICBwcm90ZWN0ZWQgY3VycmVuY3k6IHN0cmluZyA9IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcbiAgcHJvdGVjdGVkIGN1cnJlbmN5U3RhdGU6IEN1cnJlbmN5U3RhdGU7XHJcbiAgcHJvdGVjdGVkIHRvb2x0aXBNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIF9pbnB1dERhdGE/OiBudW1iZXI7XHJcbiAgZ2V0IGlucHV0RGF0YSgpOiBudW1iZXIgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faW5wdXREYXRhOyB9XHJcblxyXG4gIC8vIElucHV0c1xyXG4gIEBJbnB1dCgpIHNldCBpbnB1dERhdGEodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faW5wdXREYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbmN5U3RhdGUoKTtcclxuICB9XHJcblxyXG4gIC8vIERJXHJcbiAgcHJpdmF0ZSBfYXBwU2V0dGluZ3NTZXJ2aWNlOiBBcHBTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoQXBwU2V0dGluZ3NTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9sb2NhbGl6ZVBpcGU6IExvY2FsaXplUGlwZSA9IGluamVjdChMb2NhbGl6ZVBpcGUpO1xyXG4gIHByaXZhdGUgX2xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxlOiBzdHJpbmcgPSB0aGlzLl9sb2NhbGl6YXRpb25TZXJ2aWNlLmxvY2FsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5fYXBwU2V0dGluZ3NTZXJ2aWNlLmFwcFNldHRpbmdzLmRldmlzZVNvY2lldGUuY29kZURldmlzZSA/PyBEZWZhdWx0U29jaWV0ZURldmlzZS5jb2RlRGV2aXNlO1xyXG4gICAgdGhpcy5jdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeSwgdW5kZWZpbmVkLCB0aGlzLl9sb2NhbGUsICd3YXJuaW5nJyk7XHJcbiAgfVxyXG5cclxuICAvLyBMaWZlY3ljbGUgaG9va3NcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQ3VycmVuY3lTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzb2x2ZXMgdGhlIGN1cnJlbmN5L3ZhbHVlIHN0YXRlIGFuZCB0aGUgdG9vbHRpcCBtZXNzYWdlLiBGb3IgZGlzcGxheXMgYVxyXG4gIC8vIHZhbHVlIGV4Y2VlZGluZyB0aGUgY3VycmVuY3kncyBkZWNpbWFscyBpcyBhIHdhcm5pbmcgKHJlbmRlcmVkIHJhdykuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW5jeVN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeVN0YXRlID0gcmVzb2x2ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeSwgdGhpcy5pbnB1dERhdGEsIHRoaXMuX2xvY2FsZSwgJ3dhcm5pbmcnKTtcclxuICAgIHRoaXMudG9vbHRpcE1lc3NhZ2UgPSBsb2NhbGl6ZUN1cnJlbmN5U3RhdGUodGhpcy5jdXJyZW5jeVN0YXRlLCAoa2V5KSA9PiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGtleSkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVuY3lTdGF0ZS5zZXZlcml0eSA9PT0gJ29rJzsgZWxzZSBpbnZhbGlkU3RhdGVcIj5cclxuICA8c3BhbiBjbGFzcz1cInJvdyBmbGV4IGp1c3RpZnktY29udGVudC1lbmQgcC0yXCI+XHJcbiAgICB7eyBpbnB1dERhdGEgfCB0c2lDdXJyZW5jeSA6IGN1cnJlbmN5IH19XHJcbiAgPC9zcGFuPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW52YWxpZFN0YXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwicm93IGZsZXgganVzdGlmeS1jb250ZW50LWVuZCBwLTIgdHNpLWN1cnJlbmN5LXN0YXRlXCJcclxuICAgIFtuZ0NsYXNzXT1cImN1cnJlbmN5U3RhdGUuc2V2ZXJpdHkgPT09ICd3YXJuaW5nJyA/ICd0c2ktY3VycmVuY3ktc3RhdGUtLXdhcm5pbmcnIDogJ3RzaS1jdXJyZW5jeS1zdGF0ZS0tZXJyb3InXCJcclxuICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwTWVzc2FnZVwiXHJcbiAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgIHt7IGlucHV0RGF0YSB9fVxyXG4gIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19