@tsi-developpement/tsi-shared-ui 1.9.13 → 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 (25) 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/tsi-components/input-components/editable-grid/editable-grid.component.mjs +3 -3
  4. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +49 -28
  5. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +46 -28
  6. package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +37 -10
  7. package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +33 -40
  8. package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +3 -3
  9. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +3 -3
  10. package/esm2022/lib/tsi-components/poc/locale-poc/locale-poc.component.mjs +68 -36
  11. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +1 -1
  12. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +1 -1
  13. package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +1 -1
  14. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +595 -319
  15. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  16. package/lib/consts/app-providers.d.ts +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/providers/shared-ui-tsi.provider.d.ts +1 -1
  20. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +15 -10
  21. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +13 -10
  22. package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +16 -6
  23. package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +12 -13
  24. package/lib/tsi-components/poc/locale-poc/locale-poc.component.d.ts +39 -21
  25. package/package.json +1 -1
@@ -1,69 +1,101 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, inject } from '@angular/core';
2
+ import { AppSettingsService } from '../../../services/settings/app-settings.service';
3
+ import { DefaultSocieteDevise } from '../../../consts/tsi-consts';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "primeng/api";
4
6
  import * as i2 from "primeng/table";
5
- import * as i3 from "../../input-components/tsi-currency-other-input/tsi-currency-other-input.component";
6
- import * as i4 from "../../input-components/tsi-currency-societe-input/tsi-currency-societe-input.component";
7
- import * as i5 from "../../input-components/tsi-decimal-input/tsi-decimal-input.component";
8
- import * as i6 from "../../input-components/tsi-integer/tsi-integer.component";
9
- import * as i7 from "../../input-components/tsi-rate-input/tsi-rate-input.component";
10
- import * as i8 from "../../output-components/tsi-currency-other-display/tsi-currency-other-display.component";
11
- import * as i9 from "../../output-components/tsi-currency-societe-display/tsi-currency-societe-display.component";
12
- import * as i10 from "../../output-components/tsi-decimal-display/tsi-decimal-display.component";
13
- import * as i11 from "../../output-components/tsi-integer-display/tsi-integer-display.component";
14
- import * as i12 from "../../output-components/tsi-rate-display/tsi-rate-display.component";
7
+ import * as i3 from "../../input-components/tsi-search-combo/tsi-search-combo.component";
8
+ import * as i4 from "../../input-components/tsi-currency-other-input/tsi-currency-other-input.component";
9
+ import * as i5 from "../../input-components/tsi-currency-societe-input/tsi-currency-societe-input.component";
10
+ import * as i6 from "../../input-components/tsi-decimal-input/tsi-decimal-input.component";
11
+ import * as i7 from "../../input-components/tsi-integer/tsi-integer.component";
12
+ import * as i8 from "../../input-components/tsi-rate-input/tsi-rate-input.component";
13
+ import * as i9 from "../../output-components/tsi-currency-other-display/tsi-currency-other-display.component";
14
+ import * as i10 from "../../output-components/tsi-currency-societe-display/tsi-currency-societe-display.component";
15
+ import * as i11 from "../../output-components/tsi-decimal-display/tsi-decimal-display.component";
16
+ import * as i12 from "../../output-components/tsi-integer-display/tsi-integer-display.component";
17
+ import * as i13 from "../../output-components/tsi-rate-display/tsi-rate-display.component";
15
18
  /**
16
- * POC component used to validate and demonstrate the library's
17
- * locale integration and numeric formatting behavior.
19
+ * Proof-of-concept (POC) component used to validate and demonstrate
20
+ * the library's locale handling and numeric formatting behavior.
18
21
  *
19
- * The page allows testers to:
20
- * - Enter values using the library input components
21
- * - Immediately observe the formatted output using display components
22
+ * This page allows testers and developers to:
23
+ * - Enter values through input components
24
+ * - Instantly observe formatted results via display components
22
25
  *
23
- * This component is intended for:
24
- * - manual QA testing
25
- * - locale formatting validation
26
- * - development debugging
26
+ * Main purposes:
27
+ * - Manual QA validation
28
+ * - Locale and formatting verification
29
+ * - Development and debugging support
27
30
  *
28
- * Tested formatting types:
31
+ * Covered formatting scenarios:
29
32
  * - Company currency
30
33
  * - External currency
31
34
  * - Decimal numbers
32
35
  * - Rates / percentages
33
- * - Integers
36
+ * - Integers (with grouping)
34
37
  */
35
38
  export class LocalePocComponent {
39
+ // Ctor
36
40
  constructor() {
37
41
  /**
38
- * Company currency value.
42
+ * Available currencies used for testing currency inputs and displays.
43
+ */
44
+ this.currencies = [
45
+ { key: 'USD', value: 'United States Dollar' },
46
+ { key: 'CAD', value: 'Canadian dollar' },
47
+ { key: 'EUR', value: 'Euro' },
48
+ { key: 'TND', value: 'Dinar tunisien' },
49
+ { key: 'MAD', value: 'Moroccan Dirham' },
50
+ { key: 'ABCD', value: 'Devise - Code non ISO' }
51
+ ];
52
+ /**
53
+ * Company currency code.
54
+ * Bound to the `Tsi-Currency-Societe-Input` component.
55
+ */
56
+ this.currencySocieteCode = DefaultSocieteDevise.codeDevise;
57
+ /**
58
+ * Company currency amount.
39
59
  * Bound to the `Tsi-Currency-Societe-Input` component.
40
60
  */
41
- this.currencySociete = 12345.25;
61
+ this.currencySocieteValue = 12345.25;
62
+ /**
63
+ * External currency code.
64
+ * Bound to the `Tsi-Currency-Other-Input` component.
65
+ */
66
+ this.currencyOtherCode = 'EUR';
42
67
  /**
43
- * External currency value.
68
+ * External currency amount.
44
69
  * Bound to the `Tsi-Currency-Other-Input` component.
45
70
  */
46
- this.currencyOther = 987654.32;
71
+ this.currencyOtherValue = 987654.32;
47
72
  /**
48
- * Decimal value used to validate locale-specific
49
- * decimal separators and grouping behavior.
73
+ * Decimal value used to validate locale-specific:
74
+ * - decimal separators
75
+ * - digit grouping behavior
50
76
  */
51
- this.decimal = 192837.5;
77
+ this.decimalValue = 192837.5;
52
78
  /**
53
79
  * Rate value used to test percentage / rate formatting.
54
80
  */
55
- this.rate = 12.3;
81
+ this.rateValue = 12.3;
56
82
  /**
57
83
  * Integer value used to validate thousands grouping
58
- * without decimal digits.
84
+ * without decimal precision.
59
85
  */
60
- this.integer = 123456789;
86
+ this.integerValue = 123456789;
87
+ // DI
88
+ this._appSettingsService = inject(AppSettingsService);
89
+ this.currencySocieteCode = this._appSettingsService
90
+ .appSettings
91
+ .deviseSociete
92
+ .codeDevise ?? DefaultSocieteDevise.codeDevise;
61
93
  }
62
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalePocComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocalePocComponent, selector: "lib-locale-poc", ngImport: i0, template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 35%\">Input Component</th>\r\n <th style=\"width: 40%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySociete\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySociete\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integer\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integer\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i3.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i4.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i5.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i6.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i7.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: i9.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i10.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i11.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i12.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocalePocComponent, selector: "lib-locale-poc", ngImport: i0, template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 25%\">Currency</th>\r\n <th style=\"width: 25%\">Input Component</th>\r\n <th style=\"width: 25%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencySocieteCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencySocieteCode'\"\r\n [inputId]=\"'currencySocieteCode'\"\r\n [disabled]=\"true\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySocieteValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySocieteValue\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencyOtherCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencyOtherCode'\"\r\n [inputId]=\"'currencyOtherCode'\"\r\n [disabled]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integerValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integerValue\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i3.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i4.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i5.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i6.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["currency", "inputData"] }, { kind: "component", type: i10.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i11.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i12.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i13.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }] }); }
64
96
  }
65
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalePocComponent, decorators: [{
66
98
  type: Component,
67
- args: [{ selector: 'lib-locale-poc', template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 35%\">Input Component</th>\r\n <th style=\"width: 40%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySociete\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySociete\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integer\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integer\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"] }]
68
- }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXBvYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPRTs7O1dBR0c7UUFDSCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUVsQzs7O1dBR0c7UUFDSCxZQUFPLEdBQVcsUUFBUSxDQUFDO1FBRTNCOztXQUVHO1FBQ0gsU0FBSSxHQUFXLElBQUksQ0FBQztRQUVwQjs7O1dBR0c7UUFDSCxZQUFPLEdBQVcsU0FBUyxDQUFDO0tBQzdCOytHQTlCWSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzREMzQi9CLHlnSkFxSE07OzRGRDFGTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogUE9DIGNvbXBvbmVudCB1c2VkIHRvIHZhbGlkYXRlIGFuZCBkZW1vbnN0cmF0ZSB0aGUgbGlicmFyeSdzXHJcbiAqIGxvY2FsZSBpbnRlZ3JhdGlvbiBhbmQgbnVtZXJpYyBmb3JtYXR0aW5nIGJlaGF2aW9yLlxyXG4gKlxyXG4gKiBUaGUgcGFnZSBhbGxvd3MgdGVzdGVycyB0bzpcclxuICogLSBFbnRlciB2YWx1ZXMgdXNpbmcgdGhlIGxpYnJhcnkgaW5wdXQgY29tcG9uZW50c1xyXG4gKiAtIEltbWVkaWF0ZWx5IG9ic2VydmUgdGhlIGZvcm1hdHRlZCBvdXRwdXQgdXNpbmcgZGlzcGxheSBjb21wb25lbnRzXHJcbiAqXHJcbiAqIFRoaXMgY29tcG9uZW50IGlzIGludGVuZGVkIGZvcjpcclxuICogLSBtYW51YWwgUUEgdGVzdGluZ1xyXG4gKiAtIGxvY2FsZSBmb3JtYXR0aW5nIHZhbGlkYXRpb25cclxuICogLSBkZXZlbG9wbWVudCBkZWJ1Z2dpbmdcclxuICpcclxuICogVGVzdGVkIGZvcm1hdHRpbmcgdHlwZXM6XHJcbiAqIC0gQ29tcGFueSBjdXJyZW5jeVxyXG4gKiAtIEV4dGVybmFsIGN1cnJlbmN5XHJcbiAqIC0gRGVjaW1hbCBudW1iZXJzXHJcbiAqIC0gUmF0ZXMgLyBwZXJjZW50YWdlc1xyXG4gKiAtIEludGVnZXJzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sb2NhbGUtcG9jJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xvY2FsZS1wb2MuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsZVBvY0NvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhbnkgY3VycmVuY3kgdmFsdWUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5U29jaWV0ZTogbnVtYmVyID0gMTIzNDUuMjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IHZhbHVlLlxyXG4gICAqIEJvdW5kIHRvIHRoZSBgVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0YCBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgY3VycmVuY3lPdGhlcjogbnVtYmVyID0gOTg3NjU0LjMyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWNpbWFsIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgbG9jYWxlLXNwZWNpZmljXHJcbiAgICogZGVjaW1hbCBzZXBhcmF0b3JzIGFuZCBncm91cGluZyBiZWhhdmlvci5cclxuICAgKi9cclxuICBkZWNpbWFsOiBudW1iZXIgPSAxOTI4MzcuNTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmF0ZSB2YWx1ZSB1c2VkIHRvIHRlc3QgcGVyY2VudGFnZSAvIHJhdGUgZm9ybWF0dGluZy5cclxuICAgKi9cclxuICByYXRlOiBudW1iZXIgPSAxMi4zO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgdGhvdXNhbmRzIGdyb3VwaW5nXHJcbiAgICogd2l0aG91dCBkZWNpbWFsIGRpZ2l0cy5cclxuICAgKi9cclxuICBpbnRlZ2VyOiBudW1iZXIgPSAxMjM0NTY3ODk7XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCB3LTEwIGxvY2FsZS1wb2MtY29udGFpbmVyXCI+XHJcblxyXG4gIDxoMyBjbGFzcz1cIm1iLTJcIj5Mb2NhbGUgRm9ybWF0dGluZyBQT0M8L2gzPlxyXG5cclxuICA8IS0tIEV4cGxhbmF0aW9uIC0tPlxyXG4gIDxwIGNsYXNzPVwidGV4dC03MDAgbGluZS1oZWlnaHQtMyBtYi00XCI+XHJcbiAgICAgIFRoaXMgcGFnZSBpcyBhIHByb29mLW9mLWNvbmNlcHQgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbG9jYWxlIGludGVncmF0aW9uIG9mIHRoZSBVSSBsaWJyYXJ5LlxyXG4gICAgICBJdCBhbGxvd3MgdGVzdGVycyBhbmQgZGV2ZWxvcGVycyB0byBlbnRlciBudW1lcmljIHZhbHVlcyB1c2luZyB0aGUgbGlicmFyeSBpbnB1dCBjb21wb25lbnRzXHJcbiAgICAgIGFuZCBpbW1lZGlhdGVseSB2ZXJpZnkgaG93IHRob3NlIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGRpc3BsYXkgY29tcG9uZW50cy5cclxuICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgIFRoZSBvYmplY3RpdmUgaXMgdG8gZW5zdXJlIHRoYXQgbnVtYmVyIGZvcm1hdHRpbmcgKGdyb3VwIHNlcGFyYXRvcnMsIGRlY2ltYWwgc2VwYXJhdG9ycyxcclxuICAgICAgY3VycmVuY3kgZm9ybWF0dGluZywgYW5kIGludGVnZXIgZ3JvdXBpbmcpIGJlaGF2ZXMgY29ycmVjdGx5IGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsb2NhbGUuXHJcbiAgICAgIFRoaXMgcGFnZSBpcyBtYWlubHkgaW50ZW5kZWQgZm9yIFFBIHRlc3RpbmcgYW5kIGRlYnVnZ2luZyBkdXJpbmcgaW50ZXJuYXRpb25hbGl6YXRpb24gZGV2ZWxvcG1lbnQuXHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIExvY2FsZSBJbmZvIFRhYmxlIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtYi00IG92ZXJmbG93LWF1dG9cIj5cclxuICAgICAgPGg0IGNsYXNzPVwibWItMlwiPlN1cHBvcnRlZCBMb2NhbGVzICYgRm9ybWF0PC9oND5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUtYXV0byB3LWZ1bGwgdGV4dC1zbSBib3JkZXItY29sbGFwc2UgYm9yZGVyIGJvcmRlci0zMDBcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJiZy1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+RnVsbCBMYWJlbDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJvcmRlciBib3JkZXItMzAwIHAtMiB0ZXh0LWxlZnRcIj5Db2RlPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPlRob3VzYW5kcyBTZXBhcmF0b3I8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+RGVjaW1hbCBTZXBhcmF0b3I8L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPkZyZW5jaCAoRnJhbmNlKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5mci1GUjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+4o69IChzcGFjZSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPiwgKGNvbW1hKTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5FbmdsaXNoIChVbml0ZWQgS2luZ2RvbSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+ZW4tR0I8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPiwgKGNvbW1hKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LiAoZG90KTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5BcmFiaWMgKFR1bmlzaWEpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPmFyLVROPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4uIChkb3QpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIElucHV0IC8gRGlzcGxheSBUYWJsZSAtLT5cclxuICA8cC10YWJsZSBbdmFsdWVdPVwiW3t9XVwiIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyNSVcIj5GaWVsZDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDM1JVwiPklucHV0IENvbXBvbmVudDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDQwJVwiPkRpc3BsYXkgQ29tcG9uZW50PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+Q3VycmVuY3kgKFNvY2lldGUpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5U29jaWV0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiY3VycmVuY3lTb2NpZXRlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkN1cnJlbmN5IChPdGhlcik8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5T3RoZXJcIiBjdXJyZW5jeT1cIkVVUlwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImN1cnJlbmN5T3RoZXJcIiBjdXJyZW5jeT1cIkVVUlwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5EZWNpbWFsPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbKGlucHV0RmllbGQpXT1cImRlY2ltYWxcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbaW5wdXREYXRhXT1cImRlY2ltYWxcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+UmF0ZTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtSW5wdXQgWyhpbnB1dEZpZWxkKV09XCJyYXRlXCIgW251bU9mRGVjaW1hbF09XCIzXCIgW2lzRnJhY3Rpb25dPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaW5wdXREYXRhXT1cInJhdGVcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiBbaXNGcmFjdGlvbl09XCJmYWxzZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5JbnRlZ2VyPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbKGlucHV0RmllbGQpXT1cImludGVnZXJcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImludGVnZXJcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPC9wLXRhYmxlPlxyXG5cclxuPC9kaXY+Il19
99
+ args: [{ selector: 'lib-locale-poc', template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 25%\">Currency</th>\r\n <th style=\"width: 25%\">Input Component</th>\r\n <th style=\"width: 25%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencySocieteCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencySocieteCode'\"\r\n [inputId]=\"'currencySocieteCode'\"\r\n [disabled]=\"true\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySocieteValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySocieteValue\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencyOtherCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencyOtherCode'\"\r\n [inputId]=\"'currencyOtherCode'\"\r\n [disabled]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integerValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integerValue\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"] }]
100
+ }], ctorParameters: () => [] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXBvYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQTJEN0IsT0FBTztJQUNQO1FBMURBOztXQUVHO1FBQ0gsZUFBVSxHQUErQjtZQUN2QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1lBQzdDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDN0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtZQUN2QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1lBQ3hDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7U0FDaEQsQ0FBQztRQUVGOzs7V0FHRztRQUNILHdCQUFtQixHQUFXLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUU5RDs7O1dBR0c7UUFDSCx5QkFBb0IsR0FBVyxRQUFRLENBQUM7UUFFeEM7OztXQUdHO1FBQ0gsc0JBQWlCLEdBQVcsS0FBSyxDQUFDO1FBRWxDOzs7V0FHRztRQUNILHVCQUFrQixHQUFXLFNBQVMsQ0FBQztRQUV2Qzs7OztXQUlHO1FBQ0gsaUJBQVksR0FBVyxRQUFRLENBQUM7UUFFaEM7O1dBRUc7UUFDSCxjQUFTLEdBQVcsSUFBSSxDQUFDO1FBRXpCOzs7V0FHRztRQUNILGlCQUFZLEdBQVcsU0FBUyxDQUFDO1FBRWpDLEtBQUs7UUFDRyx3QkFBbUIsR0FBdUIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJM0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDaEQsV0FBVzthQUNYLGFBQWE7YUFDYixVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7K0dBakVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQzlCL0IsbXBMQTZJTTs7NEZEL0dPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVmYXVsdFNvY2lldGVEZXZpc2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvdHNpLWNvbnN0cyc7XHJcblxyXG4vKipcclxuICogUHJvb2Ytb2YtY29uY2VwdCAoUE9DKSBjb21wb25lbnQgdXNlZCB0byB2YWxpZGF0ZSBhbmQgZGVtb25zdHJhdGVcclxuICogdGhlIGxpYnJhcnkncyBsb2NhbGUgaGFuZGxpbmcgYW5kIG51bWVyaWMgZm9ybWF0dGluZyBiZWhhdmlvci5cclxuICpcclxuICogVGhpcyBwYWdlIGFsbG93cyB0ZXN0ZXJzIGFuZCBkZXZlbG9wZXJzIHRvOlxyXG4gKiAtIEVudGVyIHZhbHVlcyB0aHJvdWdoIGlucHV0IGNvbXBvbmVudHNcclxuICogLSBJbnN0YW50bHkgb2JzZXJ2ZSBmb3JtYXR0ZWQgcmVzdWx0cyB2aWEgZGlzcGxheSBjb21wb25lbnRzXHJcbiAqXHJcbiAqIE1haW4gcHVycG9zZXM6XHJcbiAqIC0gTWFudWFsIFFBIHZhbGlkYXRpb25cclxuICogLSBMb2NhbGUgYW5kIGZvcm1hdHRpbmcgdmVyaWZpY2F0aW9uXHJcbiAqIC0gRGV2ZWxvcG1lbnQgYW5kIGRlYnVnZ2luZyBzdXBwb3J0XHJcbiAqXHJcbiAqIENvdmVyZWQgZm9ybWF0dGluZyBzY2VuYXJpb3M6XHJcbiAqIC0gQ29tcGFueSBjdXJyZW5jeVxyXG4gKiAtIEV4dGVybmFsIGN1cnJlbmN5XHJcbiAqIC0gRGVjaW1hbCBudW1iZXJzXHJcbiAqIC0gUmF0ZXMgLyBwZXJjZW50YWdlc1xyXG4gKiAtIEludGVnZXJzICh3aXRoIGdyb3VwaW5nKVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbG9jYWxlLXBvYycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsZS1wb2MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9sb2NhbGUtcG9jLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVQb2NDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBBdmFpbGFibGUgY3VycmVuY2llcyB1c2VkIGZvciB0ZXN0aW5nIGN1cnJlbmN5IGlucHV0cyBhbmQgZGlzcGxheXMuXHJcbiAgICovXHJcbiAgY3VycmVuY2llczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBbXHJcbiAgICB7IGtleTogJ1VTRCcsIHZhbHVlOiAnVW5pdGVkIFN0YXRlcyBEb2xsYXInIH0sXHJcbiAgICB7IGtleTogJ0NBRCcsIHZhbHVlOiAnQ2FuYWRpYW4gZG9sbGFyJyB9LFxyXG4gICAgeyBrZXk6ICdFVVInLCB2YWx1ZTogJ0V1cm8nIH0sXHJcbiAgICB7IGtleTogJ1RORCcsIHZhbHVlOiAnRGluYXIgdHVuaXNpZW4nIH0sXHJcbiAgICB7IGtleTogJ01BRCcsIHZhbHVlOiAnTW9yb2NjYW4gRGlyaGFtJyB9LFxyXG4gICAgeyBrZXk6ICdBQkNEJywgdmFsdWU6ICdEZXZpc2UgLSBDb2RlIG5vbiBJU08nIH1cclxuICBdO1xyXG5cclxuICAvKipcclxuICAgKiBDb21wYW55IGN1cnJlbmN5IGNvZGUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5U29jaWV0ZUNvZGU6IHN0cmluZyA9IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhbnkgY3VycmVuY3kgYW1vdW50LlxyXG4gICAqIEJvdW5kIHRvIHRoZSBgVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXRgIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBjdXJyZW5jeVNvY2lldGVWYWx1ZTogbnVtYmVyID0gMTIzNDUuMjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IGNvZGUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXRgIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBjdXJyZW5jeU90aGVyQ29kZTogc3RyaW5nID0gJ0VVUic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IGFtb3VudC5cclxuICAgKiBCb3VuZCB0byB0aGUgYFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5T3RoZXJWYWx1ZTogbnVtYmVyID0gOTg3NjU0LjMyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWNpbWFsIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgbG9jYWxlLXNwZWNpZmljOlxyXG4gICAqIC0gZGVjaW1hbCBzZXBhcmF0b3JzXHJcbiAgICogLSBkaWdpdCBncm91cGluZyBiZWhhdmlvclxyXG4gICAqL1xyXG4gIGRlY2ltYWxWYWx1ZTogbnVtYmVyID0gMTkyODM3LjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJhdGUgdmFsdWUgdXNlZCB0byB0ZXN0IHBlcmNlbnRhZ2UgLyByYXRlIGZvcm1hdHRpbmcuXHJcbiAgICovXHJcbiAgcmF0ZVZhbHVlOiBudW1iZXIgPSAxMi4zO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgdGhvdXNhbmRzIGdyb3VwaW5nXHJcbiAgICogd2l0aG91dCBkZWNpbWFsIHByZWNpc2lvbi5cclxuICAgKi9cclxuICBpbnRlZ2VyVmFsdWU6IG51bWJlciA9IDEyMzQ1Njc4OTtcclxuXHJcbiAgLy8gRElcclxuICBwcml2YXRlIF9hcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xyXG5cclxuICAvLyBDdG9yXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5U29jaWV0ZUNvZGUgPSB0aGlzLl9hcHBTZXR0aW5nc1NlcnZpY2VcclxuICAgICAgLmFwcFNldHRpbmdzXHJcbiAgICAgIC5kZXZpc2VTb2NpZXRlXHJcbiAgICAgIC5jb2RlRGV2aXNlID8/IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmQgdy0xMCBsb2NhbGUtcG9jLWNvbnRhaW5lclwiPlxyXG5cclxuICA8aDMgY2xhc3M9XCJtYi0yXCI+TG9jYWxlIEZvcm1hdHRpbmcgUE9DPC9oMz5cclxuXHJcbiAgPCEtLSBFeHBsYW5hdGlvbiAtLT5cclxuICA8cCBjbGFzcz1cInRleHQtNzAwIGxpbmUtaGVpZ2h0LTMgbWItNFwiPlxyXG4gICAgICBUaGlzIHBhZ2UgaXMgYSBwcm9vZi1vZi1jb25jZXB0IHVzZWQgdG8gdmFsaWRhdGUgdGhlIGxvY2FsZSBpbnRlZ3JhdGlvbiBvZiB0aGUgVUkgbGlicmFyeS5cclxuICAgICAgSXQgYWxsb3dzIHRlc3RlcnMgYW5kIGRldmVsb3BlcnMgdG8gZW50ZXIgbnVtZXJpYyB2YWx1ZXMgdXNpbmcgdGhlIGxpYnJhcnkgaW5wdXQgY29tcG9uZW50c1xyXG4gICAgICBhbmQgaW1tZWRpYXRlbHkgdmVyaWZ5IGhvdyB0aG9zZSB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5IGNvbXBvbmVudHMuXHJcbiAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICBUaGUgb2JqZWN0aXZlIGlzIHRvIGVuc3VyZSB0aGF0IG51bWJlciBmb3JtYXR0aW5nIChncm91cCBzZXBhcmF0b3JzLCBkZWNpbWFsIHNlcGFyYXRvcnMsXHJcbiAgICAgIGN1cnJlbmN5IGZvcm1hdHRpbmcsIGFuZCBpbnRlZ2VyIGdyb3VwaW5nKSBiZWhhdmVzIGNvcnJlY3RseSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbG9jYWxlLlxyXG4gICAgICBUaGlzIHBhZ2UgaXMgbWFpbmx5IGludGVuZGVkIGZvciBRQSB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcgZHVyaW5nIGludGVybmF0aW9uYWxpemF0aW9uIGRldmVsb3BtZW50LlxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBMb2NhbGUgSW5mbyBUYWJsZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwibWItNCBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm1iLTJcIj5TdXBwb3J0ZWQgTG9jYWxlcyAmIEZvcm1hdDwvaDQ+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlLWF1dG8gdy1mdWxsIHRleHQtc20gYm9yZGVyLWNvbGxhcHNlIGJvcmRlciBib3JkZXItMzAwXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiYmctZ3JheS0yMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPkZ1bGwgTGFiZWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+Q29kZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJvcmRlciBib3JkZXItMzAwIHAtMiB0ZXh0LWxlZnRcIj5UaG91c2FuZHMgU2VwYXJhdG9yPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPkRlY2ltYWwgU2VwYXJhdG9yPC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5GcmVuY2ggKEZyYW5jZSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+ZnItRlI8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPuKOvSAoc3BhY2UpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+RW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPmVuLUdCPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPi4gKGRvdCk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+QXJhYmljIChUdW5pc2lhKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5hci1UTjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LiAoZG90KTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LCAoY29tbWEpPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBJbnB1dCAvIERpc3BsYXkgVGFibGUgLS0+XHJcbiAgPHAtdGFibGUgW3ZhbHVlXT1cIlt7fV1cIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMjUlXCI+RmllbGQ8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyNSVcIj5DdXJyZW5jeTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDI1JVwiPklucHV0IENvbXBvbmVudDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDI1JVwiPkRpc3BsYXkgQ29tcG9uZW50PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+Q3VycmVuY3kgKFNvY2lldGUpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGF0YXNvdXJjZV09XCJjdXJyZW5jaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWQtZmllbGRdPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbC1maWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImN1cnJlbmN5U29jaWV0ZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidjdXJyZW5jeVNvY2lldGVDb2RlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiJ2N1cnJlbmN5U29jaWV0ZUNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5U29jaWV0ZVZhbHVlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJjdXJyZW5jeVNvY2lldGVWYWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5DdXJyZW5jeSAoT3RoZXIpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGF0YXNvdXJjZV09XCJjdXJyZW5jaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWQtZmllbGRdPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbC1maWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImN1cnJlbmN5T3RoZXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInY3VycmVuY3lPdGhlckNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCInY3VycmVuY3lPdGhlckNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLUlucHV0IFsoaW5wdXRGaWVsZCldPVwiY3VycmVuY3lPdGhlclZhbHVlXCIgW2N1cnJlbmN5XT1cImN1cnJlbmN5T3RoZXJDb2RlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiY3VycmVuY3lPdGhlclZhbHVlXCIgW2N1cnJlbmN5XT1cImN1cnJlbmN5T3RoZXJDb2RlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkRlY2ltYWw8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5SUzwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtSW5wdXQgWyhpbnB1dEZpZWxkKV09XCJkZWNpbWFsVmFsdWVcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbaW5wdXREYXRhXT1cImRlY2ltYWxWYWx1ZVwiIFtudW1PZkRlY2ltYWxdPVwiM1wiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5SYXRlPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+UlM8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLUlucHV0IFsoaW5wdXRGaWVsZCldPVwicmF0ZVZhbHVlXCIgW251bU9mRGVjaW1hbF09XCIzXCIgW2lzRnJhY3Rpb25dPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaW5wdXREYXRhXT1cInJhdGVWYWx1ZVwiIFtudW1PZkRlY2ltYWxdPVwiM1wiIFtpc0ZyYWN0aW9uXT1cImZhbHNlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkludGVnZXI8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5SUzwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgWyhpbnB1dEZpZWxkKV09XCJpbnRlZ2VyVmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImludGVnZXJWYWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L3AtdGFibGU+XHJcblxyXG48L2Rpdj4iXX0=
@@ -134,7 +134,7 @@ export class TsiGenericFormComponent extends TsiFormComponentBaseComponent {
134
134
  }
135
135
  }
136
136
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiGenericFormComponent, deps: [{ token: i1.TsiMessageService }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericFormComponent, selector: "tsi-generic-form", inputs: { crudService: "crudService", configuration: "configuration", blocs: "blocs" }, usesInheritance: true, ngImport: i0, template: "<form class=\"form-horizontal\" autocomplete=\"off\" #editfactureAchatModal=\"ngForm\" (ngSubmit)=\"save()\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'gesc_achats_factureachat'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode()\" [busy]=\"isloading\">\r\n <div class=\"grid\">\r\n <div *ngFor=\"let bloc of blocs\">\r\n\r\n <!-- Tsi-Label -->\r\n <div *ngIf=\"bloc.type == tsiComponents.Label; else searchComboBlock\">\r\n <Tsi-Label [labelValue]=\"bloc.typeConfig['labelValue'] ? bloc.typeConfig['labelValue'] : '' | localize\">\r\n </Tsi-Label>\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.SearchCombo; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"bloc.typeConfig['elementSourceUrl']\"\r\n [listSourceUrl]=\"bloc.typeConfig['listSourceUrl']\" [(bind)]=\"item[bloc.typeConfig['bind']]\"\r\n [id-field]=\"bloc.typeConfig['id-field']\" [label-field]=\"bloc.typeConfig['label-field']\"\r\n [isFiltered]=\"bloc.typeConfig['isFiltered']\"></Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.CurrencySocieteInput; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencyOtherInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.CurrencyOtherInput; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #datePickerInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.DatePicker; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #checkBoxInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Checkbox; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #decimalInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.DecimalInput; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #integerInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Integer; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Integer>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #rateInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.RateInput; else textInputBlock\">\r\n <Tsi-Rate-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #textInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.TextBox; else paragrapheBlock\">\r\n <Tsi-Text-Box [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Paragraph -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #paragrapheBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Paragraph; else tabBlock\">\r\n <Tsi-Paragraph [paragraphName]=\"bloc.typeConfig['paragraphName']| localize\">\r\n </Tsi-Paragraph>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #tabBlock>\r\n <ng-container>\r\n <p-tabView [(activeIndex)]=\"index\">\r\n <p-tabPanel *ngFor=\"let tab of bloc.tabPanels;\"\r\n [header]=\"tab.tabHeader ? tab.tabHeader : '' | localize\">\r\n <!-- Here start -->\r\n <div class=\"grid\">\r\n <div *ngFor=\"let bloc of tab.blocs\">\r\n <!-- Tsi-Label -->\r\n <div *ngIf=\"bloc.type == tsiComponents.Label; else searchComboBlock\">\r\n <Tsi-Label [labelValue]=\"bloc.typeConfig['labelValue'] ? bloc.typeConfig['labelValue'] : '' | localize\">\r\n </Tsi-Label>\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.SearchCombo; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"bloc.typeConfig['elementSourceUrl']\"\r\n [listSourceUrl]=\"bloc.typeConfig['listSourceUrl']\" [(bind)]=\"item[bloc.typeConfig['bind']]\"\r\n [id-field]=\"bloc.typeConfig['id-field']\" [label-field]=\"bloc.typeConfig['label-field']\"\r\n [isFiltered]=\"bloc.typeConfig['isFiltered']\"></Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencySocieteInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.CurrencySocieteInput; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencyOtherInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.CurrencyOtherInput; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #datePickerInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.DatePicker; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #checkBoxInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.Checkbox; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #decimalInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.DecimalInput; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #integerInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.Integer; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Integer>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #rateInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.RateInput; else textInputBlock\">\r\n <Tsi-Rate-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #textInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.TextBox; else paragrapheBlock\">\r\n <Tsi-Text-Box [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Paragraph -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #paragrapheBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Paragraph\">\r\n <Tsi-Paragraph\r\n [paragraphName]=\"bloc.typeConfig['paragraphName']| localize\">\r\n </Tsi-Paragraph>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- Here Finish -->\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i6.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i7.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i8.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i9.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i16.TsiParagraphComponent, selector: "Tsi-Paragraph", inputs: ["paragraphName"] }, { kind: "component", type: i17.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i18.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "directive", type: i19.BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: i20.LocalizePipe, name: "localize" }, { kind: "pipe", type: i21.ModalLabelPipe, name: "modalLabel" }] }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericFormComponent, selector: "tsi-generic-form", inputs: { crudService: "crudService", configuration: "configuration", blocs: "blocs" }, usesInheritance: true, ngImport: i0, template: "<form class=\"form-horizontal\" autocomplete=\"off\" #editfactureAchatModal=\"ngForm\" (ngSubmit)=\"save()\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'gesc_achats_factureachat'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode()\" [busy]=\"isloading\">\r\n <div class=\"grid\">\r\n <div *ngFor=\"let bloc of blocs\">\r\n\r\n <!-- Tsi-Label -->\r\n <div *ngIf=\"bloc.type == tsiComponents.Label; else searchComboBlock\">\r\n <Tsi-Label [labelValue]=\"bloc.typeConfig['labelValue'] ? bloc.typeConfig['labelValue'] : '' | localize\">\r\n </Tsi-Label>\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.SearchCombo; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"bloc.typeConfig['elementSourceUrl']\"\r\n [listSourceUrl]=\"bloc.typeConfig['listSourceUrl']\" [(bind)]=\"item[bloc.typeConfig['bind']]\"\r\n [id-field]=\"bloc.typeConfig['id-field']\" [label-field]=\"bloc.typeConfig['label-field']\"\r\n [isFiltered]=\"bloc.typeConfig['isFiltered']\"></Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.CurrencySocieteInput; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencyOtherInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.CurrencyOtherInput; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #datePickerInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.DatePicker; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #checkBoxInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Checkbox; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #decimalInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.DecimalInput; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #integerInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Integer; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Integer>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #rateInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.RateInput; else textInputBlock\">\r\n <Tsi-Rate-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\" [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #textInputBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.TextBox; else paragrapheBlock\">\r\n <Tsi-Text-Box [inputName]=\"bloc.typeConfig['inputName']\" [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Paragraph -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #paragrapheBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Paragraph; else tabBlock\">\r\n <Tsi-Paragraph [paragraphName]=\"bloc.typeConfig['paragraphName']| localize\">\r\n </Tsi-Paragraph>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #tabBlock>\r\n <ng-container>\r\n <p-tabView [(activeIndex)]=\"index\">\r\n <p-tabPanel *ngFor=\"let tab of bloc.tabPanels;\"\r\n [header]=\"tab.tabHeader ? tab.tabHeader : '' | localize\">\r\n <!-- Here start -->\r\n <div class=\"grid\">\r\n <div *ngFor=\"let bloc of tab.blocs\">\r\n <!-- Tsi-Label -->\r\n <div *ngIf=\"bloc.type == tsiComponents.Label; else searchComboBlock\">\r\n <Tsi-Label [labelValue]=\"bloc.typeConfig['labelValue'] ? bloc.typeConfig['labelValue'] : '' | localize\">\r\n </Tsi-Label>\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.SearchCombo; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"bloc.typeConfig['elementSourceUrl']\"\r\n [listSourceUrl]=\"bloc.typeConfig['listSourceUrl']\" [(bind)]=\"item[bloc.typeConfig['bind']]\"\r\n [id-field]=\"bloc.typeConfig['id-field']\" [label-field]=\"bloc.typeConfig['label-field']\"\r\n [isFiltered]=\"bloc.typeConfig['isFiltered']\"></Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencySocieteInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.CurrencySocieteInput; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #currencyOtherInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.CurrencyOtherInput; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #datePickerInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.DatePicker; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #checkBoxInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.Checkbox; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #decimalInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.DecimalInput; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #integerInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.Integer; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Integer>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #rateInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.RateInput; else textInputBlock\">\r\n <Tsi-Rate-Input [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #textInputBlock>\r\n <ng-container\r\n *ngIf=\"bloc.type == tsiComponents.TextBox; else paragrapheBlock\">\r\n <Tsi-Text-Box [inputName]=\"bloc.typeConfig['inputName']\"\r\n [inputId]=\"bloc.typeConfig['inputId']\"\r\n [(inputField)]=\"item[bloc.typeConfig['inputField']]\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Paragraph -->\r\n <ng-template class=\"{{bloc.styleClass}}\" #paragrapheBlock>\r\n <ng-container *ngIf=\"bloc.type == tsiComponents.Paragraph\">\r\n <Tsi-Paragraph\r\n [paragraphName]=\"bloc.typeConfig['paragraphName']| localize\">\r\n </Tsi-Paragraph>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- Here Finish -->\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i6.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i7.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i8.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i9.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i10.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i13.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i16.TsiParagraphComponent, selector: "Tsi-Paragraph", inputs: ["paragraphName"] }, { kind: "component", type: i17.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i18.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "directive", type: i19.BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: i20.LocalizePipe, name: "localize" }, { kind: "pipe", type: i21.ModalLabelPipe, name: "modalLabel" }] }); }
138
138
  }
139
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiGenericFormComponent, decorators: [{
140
140
  type: Component,
@@ -393,7 +393,7 @@ export class TsiKanbanComponent extends AppBaseComponent {
393
393
  this.buttonClicked.emit({ field: mode, key: uid, selectKeyOnly: true });
394
394
  }
395
395
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiKanbanComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EntityConfigurationService }, { token: i2.LocalizePipe }, { token: i3.EntityStatusService }, { token: i4.TsiNotificationService }, { token: i5.StatusColorService }], target: i0.ɵɵFactoryTarget.Component }); }
396
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiKanbanComponent, selector: "Tsi-kanban", inputs: { cardBusinessClass: "cardBusinessClass", header: "header", id: "id", page$: "page$", crudService: "crudService", overflowActionsMenu: "overflowActionsMenu", selectKeyOnly: "selectKeyOnly", key: "key", summaryColumns: "summaryColumns", page: "page" }, outputs: { buttonClicked: "buttonClicked", callSearch: "callSearch" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card flex justify-content-center\">\r\n <p-paginator [first]=\"first\" [rows]=\"rows\" [totalRecords]=\"totalCount\" [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\" [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div>\r\n\r\n<div class=\"kanban-board flex gap-4 overflow-auto\">\r\n <div *ngFor=\"let status of localizedStatusLabels; trackBy: trackByStatus\"\r\n class=\"kanban-column flex flex-column border-round surface-0 shadow-2\" (dragover)=\"allowDrop($event)\"\r\n (drop)=\"drop($event, status.key)\">\r\n\r\n <div class=\"column-header p-3 font-semibold\"\r\n [style.border-left-color]=\"getColumnAccentColor(status.key)\">\r\n {{ status.localized }}\r\n <span class=\"text-sm font-normal text-gray-500\">\r\n ({{ getColumnCount(status.key) }})\r\n </span>\r\n <div class=\"text-xs font-normal text-gray-500\" *ngIf=\"hasColumnSummaries\">\r\n <div *ngFor=\"let sumCol of summaryColumns\" class=\"flex align-items-center gap-1\">\r\n <span>{{ (sumCol.header ?? sumCol.field) | localize }}:</span>\r\n <ng-container [ngSwitch]=\"sumCol.type\">\r\n <Tsi-Currency-Societe-Display *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n <Tsi-Integer-Display *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Integer-Display>\r\n <Tsi-Rate-Display *ngSwitchCase=\"displayTypes.RATE_DISPLAY\"\r\n [isFraction]=\"sumCol.isFraction ?? false\" [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Rate-Display>\r\n <Tsi-Decimal-Display *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\"\r\n [formatDecimal]=\"sumCol.formatDecimal\" [numOfDecimal]=\"sumCol.numOfDecimal\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Decimal-Display>\r\n <Tsi-Currency-Other-Display *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\"\r\n [currency]=\"sumCol.currencyOtherCode\" [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Currency-Other-Display>\r\n <span *ngSwitchDefault>{{ getColumnSummaryValue(status.key, sumCol.field) }}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column-cards flex-1 overflow-auto p-3\">\r\n <div *ngFor=\"let card of cardMapByStatus.get(status.key); trackBy: trackByCard\"\r\n class=\"kanban-card p-3 border-round bg-white mb-3 shadow-1\"\r\n draggable=\"true\"\r\n (dragstart)=\"dragStart($event, card)\" \r\n (dragend)=\"dragEnd()\">\r\n\r\n <div class=\"font-bold mb-2\">{{ card.headerTitle }}</div>\r\n <div class=\"text-sm text-gray-600 mb-3\">{{ card.subHeaderTitle }}</div>\r\n <div class=\"text-sm text-gray-600 mb-3\">{{ card.description }}</div>\r\n <p-menu appendTo=\"body\" #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\" styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a pRipple class=\"flex align-items-center p-menuitem-link\" \r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(card, menuItem)\">\r\n <i *ngIf=\"menuItem.id === 'notes'\" class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\" pBadge severity=\"danger\" \r\n [value]=\"card.fullRecord.notesCount\"\r\n [badgeDisabled]=\"card.fullRecord.notesCount == null\" badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i *ngIf=\"menuItem.id !== 'notes'\" class=\"{{menuItem.iconClass}} p-menuitem-icon\"\r\n [ngClass]=\"menuItem.iconStyleClass\">\r\n </i>\r\n\r\n <span class=\"menu-label\">\r\n {{ menuItem.label | localize }}\r\n </span>\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n\r\n <div class=\"flex justify-content-end align-items-center mt-1 gap-2 p-0\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\" type=\"button\" icon=\"pi pi-pencil\"\r\n (click)=\"edit(card.uid)\">\r\n </Tsi-Button>\r\n <p-button type=\"button\" icon=\"pi pi-ellipsis-v\" styleClass=\"overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, card)\">\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block;padding:1rem}[draggable=true]{-webkit-user-select:none;user-select:none}.kanban-board{height:calc(100vh - 100px);padding:1rem}.kanban-column{width:300px;max-height:100%;display:flex;flex-direction:column;background-color:#f8f9fa}.column-header{font-size:1rem;font-weight:700;background-color:#fff;border-radius:6px 6px 0 0;border-bottom:1px solid var(--surface-border);border-left:.75rem solid transparent;transition:border-color .3s ease}.column-cards{overflow-y:auto;flex:1}.kanban-card{cursor:move}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i10.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i11.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: i12.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: i13.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i14.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i15.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i16.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: i17.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: i18.SpinnerComponent, selector: "app-spinner" }, { kind: "pipe", type: i2.LocalizePipe, name: "localize" }] }); }
396
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiKanbanComponent, selector: "Tsi-kanban", inputs: { cardBusinessClass: "cardBusinessClass", header: "header", id: "id", page$: "page$", crudService: "crudService", overflowActionsMenu: "overflowActionsMenu", selectKeyOnly: "selectKeyOnly", key: "key", summaryColumns: "summaryColumns", page: "page" }, outputs: { buttonClicked: "buttonClicked", callSearch: "callSearch" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card flex justify-content-center\">\r\n <p-paginator [first]=\"first\" [rows]=\"rows\" [totalRecords]=\"totalCount\" [rowsPerPageOptions]=\"[1, 10, 25, 50]\"\r\n (onPageChange)=\"onPageChange($event)\" [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {first} {{'to' | localize}} {last} {{ 'of' | localize }} {totalRecords}\">\r\n </p-paginator>\r\n</div>\r\n\r\n<div class=\"kanban-board flex gap-4 overflow-auto\">\r\n <div *ngFor=\"let status of localizedStatusLabels; trackBy: trackByStatus\"\r\n class=\"kanban-column flex flex-column border-round surface-0 shadow-2\" (dragover)=\"allowDrop($event)\"\r\n (drop)=\"drop($event, status.key)\">\r\n\r\n <div class=\"column-header p-3 font-semibold\"\r\n [style.border-left-color]=\"getColumnAccentColor(status.key)\">\r\n {{ status.localized }}\r\n <span class=\"text-sm font-normal text-gray-500\">\r\n ({{ getColumnCount(status.key) }})\r\n </span>\r\n <div class=\"text-xs font-normal text-gray-500\" *ngIf=\"hasColumnSummaries\">\r\n <div *ngFor=\"let sumCol of summaryColumns\" class=\"flex align-items-center gap-1\">\r\n <span>{{ (sumCol.header ?? sumCol.field) | localize }}:</span>\r\n <ng-container [ngSwitch]=\"sumCol.type\">\r\n <Tsi-Currency-Societe-Display *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n <Tsi-Integer-Display *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Integer-Display>\r\n <Tsi-Rate-Display *ngSwitchCase=\"displayTypes.RATE_DISPLAY\"\r\n [isFraction]=\"sumCol.isFraction ?? false\" [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Rate-Display>\r\n <Tsi-Decimal-Display *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\"\r\n [formatDecimal]=\"sumCol.formatDecimal\" [numOfDecimal]=\"sumCol.numOfDecimal\"\r\n [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Decimal-Display>\r\n <Tsi-Currency-Other-Display *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\"\r\n [currency]=\"sumCol.currencyOtherCode\" [inputData]=\"getColumnSummaryValue(status.key, sumCol.field)\">\r\n </Tsi-Currency-Other-Display>\r\n <span *ngSwitchDefault>{{ getColumnSummaryValue(status.key, sumCol.field) }}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column-cards flex-1 overflow-auto p-3\">\r\n <div *ngFor=\"let card of cardMapByStatus.get(status.key); trackBy: trackByCard\"\r\n class=\"kanban-card p-3 border-round bg-white mb-3 shadow-1\"\r\n draggable=\"true\"\r\n (dragstart)=\"dragStart($event, card)\" \r\n (dragend)=\"dragEnd()\">\r\n\r\n <div class=\"font-bold mb-2\">{{ card.headerTitle }}</div>\r\n <div class=\"text-sm text-gray-600 mb-3\">{{ card.subHeaderTitle }}</div>\r\n <div class=\"text-sm text-gray-600 mb-3\">{{ card.description }}</div>\r\n <p-menu appendTo=\"body\" #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\" styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a pRipple class=\"flex align-items-center p-menuitem-link\" \r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(card, menuItem)\">\r\n <i *ngIf=\"menuItem.id === 'notes'\" class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\" pBadge severity=\"danger\" \r\n [value]=\"card.fullRecord.notesCount\"\r\n [badgeDisabled]=\"card.fullRecord.notesCount == null\" badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i *ngIf=\"menuItem.id !== 'notes'\" class=\"{{menuItem.iconClass}} p-menuitem-icon\"\r\n [ngClass]=\"menuItem.iconStyleClass\">\r\n </i>\r\n\r\n <span class=\"menu-label\">\r\n {{ menuItem.label | localize }}\r\n </span>\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n\r\n <div class=\"flex justify-content-end align-items-center mt-1 gap-2 p-0\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\" type=\"button\" icon=\"pi pi-pencil\"\r\n (click)=\"edit(card.uid)\">\r\n </Tsi-Button>\r\n <p-button type=\"button\" icon=\"pi pi-ellipsis-v\" styleClass=\"overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, card)\">\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"overlay\" *ngIf=\"isLoading\">\r\n <div class=\"spinner-wrapper\">\r\n <app-spinner></app-spinner>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block;padding:1rem}[draggable=true]{-webkit-user-select:none;user-select:none}.kanban-board{height:calc(100vh - 100px);padding:1rem}.kanban-column{width:300px;max-height:100%;display:flex;flex-direction:column;background-color:#f8f9fa}.column-header{font-size:1rem;font-weight:700;background-color:#fff;border-radius:6px 6px 0 0;border-bottom:1px solid var(--surface-border);border-left:.75rem solid transparent;transition:border-color .3s ease}.column-cards{overflow-y:auto;flex:1}.kanban-card{cursor:move}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i10.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i11.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: i12.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["currency", "inputData"] }, { kind: "component", type: i13.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i14.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i15.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i16.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: i17.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: i18.SpinnerComponent, selector: "app-spinner" }, { kind: "pipe", type: i2.LocalizePipe, name: "localize" }] }); }
397
397
  }
398
398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiKanbanComponent, decorators: [{
399
399
  type: Component,
@@ -139,7 +139,7 @@ export class TsiSearchBoxComponent {
139
139
  }
140
140
  }
141
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiSearchBoxComponent, deps: [{ token: i1.EntityStatusService }, { token: i2.WorkflowConfigurationService }, { token: i3.LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiSearchBoxComponent, selector: "tsi-search-box", inputs: { searchFields: "searchFields", businessClass: "businessClass", descriminatorValue: "descriminatorValue", isRtlMode: "isRtlMode", isSearchButtonDisabled: "isSearchButtonDisabled", entityInfo: "entityInfo", statusMetadata: "statusMetadata" }, outputs: { searchFieldsChange: "searchFieldsChange", searchFieldsApplied: "searchFieldsApplied", keywordValueChanged: "keywordValueChanged", statusFilterChanged: "statusFilterChanged", workflowEtatFilterChanged: "workflowEtatFilterChanged", comboBoxLabelChanged: "comboBoxLabelChanged" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"grid p-2\" [ngClass]=\"{'p-3': isRtlMode}\">\r\n\r\n <div *ngFor=\"let searchField of searchFields\" class=\"{{searchField.styleClass}} grid no-pad\"\r\n presentationDesignerBase=\"{{searchField.field}}\">\r\n <!-- Not MaxMin === Single Filter Input -->\r\n <!-- Fake element to escape bizarre input format -->\r\n <div *ngIf=\"fakeAlwaysFalseCondition; else searchComboBlock\">\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}} pr-1\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"{{searchField.inputStyleClass}}\" [elementSourceUrl]=\"searchField.elementSourceUrl\"\r\n [listSourceUrl]=\"searchField.listSourceUrl\" [(bind)]=\"searchField.value\"\r\n id-field=\"{{searchField.idField}}\" label-field=\"{{searchField.labelField}}\"\r\n [isFiltered]=\"searchField.isFiltered\" (bindChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\" [(selectedLabel)]=\"searchField.comboboxLabel\"\r\n (selectedLabelChange)=\"getComboLabel(searchField,$event)\"\r\n [businessClass]=\"searchField.businessClass ?? ''\" [showAddButton]=\"searchField.showAddButton ?? true\" [showUpdateButton]=\"searchField.showUpdateButton ?? undefined\" [showConsultButton]=\"searchField.showConsultButton ?? undefined\"\r\n [showSearchButton]=\"searchField.showSearchButton ?? true\"\r\n [multiple]=\"searchField.multiple ?? false\"></Tsi-Search-Combo>\r\n </ng-container>\r\n\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Currency-Societe-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Currency-Other-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\"\r\n [currency]=\"searchField.currency\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DATE; else datetimePickerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datetimePickerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DATETIME; else checkBoxInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"{{searchField.inputStyleClass}}\" [showTime]=\"true\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [isBinary]=\"searchField.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Decimal-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\"\r\n [numOfDecimal]=\"searchField.numOfDecimal\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <div class=\"{{searchField?.inputStyleClass}}\">\r\n <Tsi-Integer [inputName]=\"searchField.field\" [inputId]=\"searchField.field\"\r\n [(inputField)]=\"searchField.value\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Integer>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.RATE_INPUT; else radioInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Rate-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [isFraction]=\"searchField.isFraction\"\r\n [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #radioInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.RADIO_BUTTON; else defaultTextInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Radio-Button class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\"\r\n [dataSource]=\"searchField.radioButtonDatasource\"\r\n [layoutOrientation]=\"searchField.layoutOrientation ?? layoutOrientationRef.vertical\">\r\n </Tsi-Radio-Button>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextInputBlock>\r\n <ng-container>\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}} pr-1\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n <!-- -->\r\n </div>\r\n <div class=\"w-full flex px-2\">\r\n <div [ngClass]=\"isRtlMode ? 'rtl-mode' : 'ltr-mode' \" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"keyword\" pInputText [placeholder]=\"'global_search' | localize\">\r\n\r\n <!-- Workflow etat filter -->\r\n <div *ngIf=\"businessClass && workflowEtatList && workflowEtatList.length > 0\" id=\"workflow-etat-filter\"\r\n class=\"flex align-items-center gap-2\" [presentationDesignerBase]=\"'WorkflowEtat'\">\r\n <Tsi-Search-Combo \r\n [placeHolder]=\"'Workflow Etat'\" \r\n [id-field]=\"'key'\" \r\n [label-field]=\"'value'\" \r\n [isFiltered]=\"false\"\r\n (bindChange)=\"onWorkflowEtatFilterChange($event)\"\r\n [datasource]=\"workflowEtatList\"\r\n [maxWidth]=\"'10'\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\" id=\"status-filter\"\r\n class=\"flex align-items-center gap-2\" [presentationDesignerBase]=\"entityInfo?.statusColumnName\">\r\n <Tsi-Search-Combo \r\n [placeHolder]=\"'Statut'\" \r\n [id-field]=\"'key'\" \r\n [label-field]=\"'value'\" \r\n (bindChange)=\"onStatusChange($event)\"\r\n [comboType]=\"'status'\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [datasource]=\"entityStatusList\" >\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-element ng-tns-c79583503-1221 p-button p-component p-button-icon-only\" type=\"button\"\r\n [disabled]=\"isSearchButtonDisabled\" icon=\"pi pi-search\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipText=\"shared_tsi_search_box_rechercher\" (click)=\"onSearch()\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"flex justify-content-center align-items-center px-2\">\r\n <i class=\"pi pi-info-circle\" [pTooltip]=\"tooltipText ? globalSearchTooltipContent : undefined\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipStyleClass=\"custom-tooltip\"></i>\r\n\r\n <ng-template #globalSearchTooltipContent>\r\n <div class=\"tooltip-content\">\r\n <span>{{ tooltipText }}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".no-pad{padding:0 0 0 5px!important}.pt-5{padding-top:5px}:host ::ng-deep #status-filter Tsi-Search-Combo p-dropdown .p-dropdown{width:140px!important;height:28px!important;border-left:none!important;border-radius:0!important}:host ::ng-deep #workflow-etat-filter Tsi-Search-Combo p-dropdown .p-dropdown{width:140px!important;height:28px!important;border-left:none!important;border-radius:0!important}.custom-tooltip{max-width:450px;white-space:pre-line;overflow-x:auto;overflow-y:hidden;line-height:1.4;font-size:13px;padding:.5rem}.tooltip-content{display:inline-block;white-space:pre-line}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i7.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: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i13.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i14.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiRadioButtonComponent, selector: "Tsi-Radio-Button", inputs: ["dataSource", "class", "layoutOrientation"], outputs: ["inputFieldChange"] }, { kind: "component", type: i16.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i17.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i18.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i19.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: i20.PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]:not(tsi-tab-panel)", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "pipe", type: i3.LocalizePipe, name: "localize" }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiSearchBoxComponent, selector: "tsi-search-box", inputs: { searchFields: "searchFields", businessClass: "businessClass", descriminatorValue: "descriminatorValue", isRtlMode: "isRtlMode", isSearchButtonDisabled: "isSearchButtonDisabled", entityInfo: "entityInfo", statusMetadata: "statusMetadata" }, outputs: { searchFieldsChange: "searchFieldsChange", searchFieldsApplied: "searchFieldsApplied", keywordValueChanged: "keywordValueChanged", statusFilterChanged: "statusFilterChanged", workflowEtatFilterChanged: "workflowEtatFilterChanged", comboBoxLabelChanged: "comboBoxLabelChanged" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"grid p-2\" [ngClass]=\"{'p-3': isRtlMode}\">\r\n\r\n <div *ngFor=\"let searchField of searchFields\" class=\"{{searchField.styleClass}} grid no-pad\"\r\n presentationDesignerBase=\"{{searchField.field}}\">\r\n <!-- Not MaxMin === Single Filter Input -->\r\n <!-- Fake element to escape bizarre input format -->\r\n <div *ngIf=\"fakeAlwaysFalseCondition; else searchComboBlock\">\r\n </div>\r\n <!-- Tsi-Search-Combo -->\r\n <ng-template #searchComboBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}} pr-1\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"{{searchField.inputStyleClass}}\" [elementSourceUrl]=\"searchField.elementSourceUrl\"\r\n [listSourceUrl]=\"searchField.listSourceUrl\" [(bind)]=\"searchField.value\"\r\n id-field=\"{{searchField.idField}}\" label-field=\"{{searchField.labelField}}\"\r\n [isFiltered]=\"searchField.isFiltered\" (bindChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\" [(selectedLabel)]=\"searchField.comboboxLabel\"\r\n (selectedLabelChange)=\"getComboLabel(searchField,$event)\"\r\n [businessClass]=\"searchField.businessClass ?? ''\" [showAddButton]=\"searchField.showAddButton ?? true\" [showUpdateButton]=\"searchField.showUpdateButton ?? undefined\" [showConsultButton]=\"searchField.showConsultButton ?? undefined\"\r\n [showSearchButton]=\"searchField.showSearchButton ?? true\"\r\n [multiple]=\"searchField.multiple ?? false\"></Tsi-Search-Combo>\r\n </ng-container>\r\n\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Currency-Societe-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Currency-Other-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\"\r\n [currency]=\"searchField.currency\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DATE; else datetimePickerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datetimePickerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DATETIME; else checkBoxInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"{{searchField.inputStyleClass}}\" [showTime]=\"true\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\">\r\n </Tsi-Date-Picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n [disabled]=\"searchField.disabled ?? false\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [isBinary]=\"searchField.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Decimal-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\"\r\n [numOfDecimal]=\"searchField.numOfDecimal\">\r\n </Tsi-Decimal-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <div class=\"{{searchField?.inputStyleClass}}\">\r\n <Tsi-Integer [inputName]=\"searchField.field\" [inputId]=\"searchField.field\"\r\n [(inputField)]=\"searchField.value\" (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Integer>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.RATE_INPUT; else radioInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Rate-Input class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [isFraction]=\"searchField.isFraction\"\r\n [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #radioInputBlock>\r\n <ng-container *ngIf=\"searchField.type == inputTypes.RADIO_BUTTON; else defaultTextInputBlock\">\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}}\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Radio-Button class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\"\r\n [disabled]=\"searchField.disabled ?? false\"\r\n [dataSource]=\"searchField.radioButtonDatasource\"\r\n [layoutOrientation]=\"searchField.layoutOrientation ?? layoutOrientationRef.vertical\">\r\n </Tsi-Radio-Button>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextInputBlock>\r\n <ng-container>\r\n <Tsi-Label class=\"{{searchField.labelStyleClass}} pr-1\"\r\n [labelValue]=\"searchField.labelValue | localize\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"{{searchField.inputStyleClass}}\" [inputName]=\"searchField.field\"\r\n [inputId]=\"searchField.field\" [(inputField)]=\"searchField.value\"\r\n (inputFieldChange)=\"onSearchFieldValueChange(searchField)\" [disabled]=\"searchField.disabled ?? false\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n <!-- -->\r\n </div>\r\n <div class=\"w-full flex px-2\">\r\n <div [ngClass]=\"isRtlMode ? 'rtl-mode' : 'ltr-mode' \" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"keyword\" pInputText [placeholder]=\"'global_search' | localize\">\r\n\r\n <!-- Workflow etat filter -->\r\n <div *ngIf=\"businessClass && workflowEtatList && workflowEtatList.length > 0\" id=\"workflow-etat-filter\"\r\n class=\"flex align-items-center gap-2\" [presentationDesignerBase]=\"'WorkflowEtat'\">\r\n <Tsi-Search-Combo \r\n [placeHolder]=\"'Workflow Etat'\" \r\n [id-field]=\"'key'\" \r\n [label-field]=\"'value'\" \r\n [isFiltered]=\"false\"\r\n (bindChange)=\"onWorkflowEtatFilterChange($event)\"\r\n [datasource]=\"workflowEtatList\"\r\n [maxWidth]=\"'10'\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\" id=\"status-filter\"\r\n class=\"flex align-items-center gap-2\" [presentationDesignerBase]=\"entityInfo?.statusColumnName\">\r\n <Tsi-Search-Combo \r\n [placeHolder]=\"'Statut'\" \r\n [id-field]=\"'key'\" \r\n [label-field]=\"'value'\" \r\n (bindChange)=\"onStatusChange($event)\"\r\n [comboType]=\"'status'\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [datasource]=\"entityStatusList\" >\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-element ng-tns-c79583503-1221 p-button p-component p-button-icon-only\" type=\"button\"\r\n [disabled]=\"isSearchButtonDisabled\" icon=\"pi pi-search\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipText=\"shared_tsi_search_box_rechercher\" (click)=\"onSearch()\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"flex justify-content-center align-items-center px-2\">\r\n <i class=\"pi pi-info-circle\" [pTooltip]=\"tooltipText ? globalSearchTooltipContent : undefined\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipStyleClass=\"custom-tooltip\"></i>\r\n\r\n <ng-template #globalSearchTooltipContent>\r\n <div class=\"tooltip-content\">\r\n <span>{{ tooltipText }}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".no-pad{padding:0 0 0 5px!important}.pt-5{padding-top:5px}:host ::ng-deep #status-filter Tsi-Search-Combo p-dropdown .p-dropdown{width:140px!important;height:28px!important;border-left:none!important;border-radius:0!important}:host ::ng-deep #workflow-etat-filter Tsi-Search-Combo p-dropdown .p-dropdown{width:140px!important;height:28px!important;border-left:none!important;border-radius:0!important}.custom-tooltip{max-width:450px;white-space:pre-line;overflow-x:auto;overflow-y:hidden;line-height:1.4;font-size:13px;padding:.5rem}.tooltip-content{display:inline-block;white-space:pre-line}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i7.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: i8.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i9.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i10.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i11.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i12.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i13.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i14.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiRadioButtonComponent, selector: "Tsi-Radio-Button", inputs: ["dataSource", "class", "layoutOrientation"], outputs: ["inputFieldChange"] }, { kind: "component", type: i16.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i17.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i18.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i19.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: i20.PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]:not(tsi-tab-panel)", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "pipe", type: i3.LocalizePipe, name: "localize" }] }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiSearchBoxComponent, decorators: [{
145
145
  type: Component,