@tsi-developpement/tsi-shared-ui 1.7.39 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/esm2022/lib/consts/app-providers.mjs +4 -2
  2. package/esm2022/lib/models/common/entity-properties.mjs +1 -1
  3. package/esm2022/lib/services/form/form-state.service.mjs +13 -0
  4. package/esm2022/lib/services/validation/input-registry.service.mjs +9 -1
  5. package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +44 -7
  6. package/esm2022/lib/tsi-base/tsi-input-base/tsi-input-base.component.mjs +16 -9
  7. package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +3 -3
  8. package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +3 -3
  9. package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +12 -10
  10. package/esm2022/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.mjs +2 -1
  11. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +6 -4
  12. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +6 -4
  13. package/esm2022/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.mjs +8 -5
  14. package/esm2022/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.mjs +6 -4
  15. package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +5 -1
  16. package/esm2022/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.mjs +5 -3
  17. package/esm2022/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.mjs +6 -4
  18. package/esm2022/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.mjs +2 -1
  19. package/esm2022/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.mjs +6 -4
  20. package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +2 -1
  21. package/esm2022/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.mjs +2 -1
  22. package/esm2022/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.mjs +4 -3
  23. package/esm2022/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.mjs +10 -8
  24. package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +3 -3
  25. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +3 -3
  26. package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +16 -9
  27. package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +3 -3
  28. package/esm2022/lib/tsi-components/tsi-dynamic-form/create-or-edit-dynamic-form/create-or-edit-dynamic-form.component.mjs +3 -3
  29. package/esm2022/lib/tsi-components/tsi-form/tsi-form.component.mjs +11 -3
  30. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +3 -3
  31. package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +20 -9
  32. package/esm2022/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.mjs +8 -1
  33. package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +3 -3
  34. package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +3 -3
  35. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +202 -83
  36. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  37. package/lib/consts/app-providers.d.ts +2 -1
  38. package/lib/models/common/entity-properties.d.ts +1 -0
  39. package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
  40. package/lib/services/form/form-state.service.d.ts +7 -0
  41. package/lib/services/validation/input-registry.service.d.ts +1 -0
  42. package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +15 -5
  43. package/lib/tsi-base/tsi-input-base/tsi-input-base.component.d.ts +5 -1
  44. package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +3 -4
  45. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +1 -1
  46. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +1 -1
  47. package/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.d.ts +3 -2
  48. package/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.d.ts +1 -1
  49. package/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.d.ts +1 -1
  50. package/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.d.ts +1 -1
  51. package/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.d.ts +1 -1
  52. package/lib/tsi-components/reporting/reporting.component.d.ts +4 -1
  53. package/lib/tsi-components/tsi-form/tsi-form.component.d.ts +4 -1
  54. package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +6 -2
  55. package/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.d.ts +3 -1
  56. package/package.json +1 -1
@@ -1580,6 +1580,14 @@ class InputRegistryService {
1580
1580
  getAll() {
1581
1581
  return Array.from(this._inputs);
1582
1582
  }
1583
+ resetDirtyStatusForAllInputs() {
1584
+ const inputs = this.getAll();
1585
+ if (!inputs?.length)
1586
+ return;
1587
+ for (const input of inputs) {
1588
+ input.isDirty = false;
1589
+ }
1590
+ }
1583
1591
  clear() {
1584
1592
  this._inputs.clear();
1585
1593
  }
@@ -1656,6 +1664,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1656
1664
  }], ctorParameters: () => [] });
1657
1665
 
1658
1666
  class TsiInputBase extends TsiBaseComponent {
1667
+ get isDirty() {
1668
+ return this._isDirty;
1669
+ }
1670
+ set isDirty(val) {
1671
+ this._isDirty = val;
1672
+ }
1659
1673
  get inputField() {
1660
1674
  return this._inputField;
1661
1675
  }
@@ -1667,9 +1681,10 @@ class TsiInputBase extends TsiBaseComponent {
1667
1681
  constructor(cdRef) {
1668
1682
  super(cdRef);
1669
1683
  this.cdRef = cdRef;
1670
- this._genericValidationStateService = inject(GenericValidationStateService);
1684
+ this.genericValidationStateService = inject(GenericValidationStateService);
1671
1685
  this._formState = { isValid: false, isSubmitted: false };
1672
1686
  this._layoutHelperService = inject(LayoutHelperService);
1687
+ this._isDirty = false;
1673
1688
  this._inputRegistry = inject(InputRegistryService);
1674
1689
  this._localizationService = inject(LocalizationService);
1675
1690
  this.isInputNameNotFound = false;
@@ -1704,10 +1719,10 @@ class TsiInputBase extends TsiBaseComponent {
1704
1719
  this.validationStatusCssClass = "border-cyan-300 border-3";
1705
1720
  throw new Error('no input name was provided !');
1706
1721
  }
1707
- if (!this._genericValidationStateService) {
1722
+ if (!this.genericValidationStateService) {
1708
1723
  return;
1709
1724
  }
1710
- var validationInfos = this._genericValidationStateService.getValidationInfos(this.inputName);
1725
+ var validationInfos = this.genericValidationStateService.getValidationInfos(this.inputName);
1711
1726
  if (!validationInfos) {
1712
1727
  this.isInputNameNotFound = true;
1713
1728
  return;
@@ -1716,14 +1731,14 @@ class TsiInputBase extends TsiBaseComponent {
1716
1731
  this.maxLength = validationInfos.maxLength;
1717
1732
  }
1718
1733
  registerEntityValidationInfosLoadedHandler() {
1719
- if (!this._genericValidationStateService)
1734
+ if (!this.genericValidationStateService)
1720
1735
  return;
1721
- if (this._genericValidationStateService.isEntityValidationInfosLoaded) {
1736
+ if (this.genericValidationStateService.isEntityValidationInfosLoaded) {
1722
1737
  this.calculateValidationStatus();
1723
1738
  this.calculateValidationStatusCssClass();
1724
1739
  return;
1725
1740
  }
1726
- this._entityValidationInfosLoadedSub = this._genericValidationStateService
1741
+ this._entityValidationInfosLoadedSub = this.genericValidationStateService
1727
1742
  .entityValidationInfosLoaded
1728
1743
  .subscribe(() => {
1729
1744
  this.calculateValidationStatus();
@@ -1731,9 +1746,9 @@ class TsiInputBase extends TsiBaseComponent {
1731
1746
  });
1732
1747
  }
1733
1748
  registerFormStateChangesHandler() {
1734
- if (!this._genericValidationStateService)
1749
+ if (!this.genericValidationStateService)
1735
1750
  return;
1736
- this._formStateChangeSub = this._genericValidationStateService
1751
+ this._formStateChangeSub = this.genericValidationStateService
1737
1752
  .formStateChange
1738
1753
  .subscribe((formState) => {
1739
1754
  this._formState = { ...formState };
@@ -1853,6 +1868,7 @@ class TsiCheckboxComponent extends TsiInputBase {
1853
1868
  onChangeofOptions(event) {
1854
1869
  this.toggleCheckbox();
1855
1870
  this.inputField = this.checked;
1871
+ this.isDirty = true;
1856
1872
  //console.log(">>> this.inputField:", this.inputField);
1857
1873
  this.inputFieldChange.emit(this.inputField);
1858
1874
  }
@@ -5608,6 +5624,7 @@ class TsiSearchComboComponent extends TsiInputBase {
5608
5624
  }
5609
5625
  bindValueChanged(newValue) {
5610
5626
  this.bind = newValue;
5627
+ this.isDirty = true;
5611
5628
  this.bindChange.emit(this.bind);
5612
5629
  this._handleSelectedElementsLabelChange();
5613
5630
  }
@@ -6162,8 +6179,10 @@ class TsiCurrencyOtherInputComponent extends TsiInputBase {
6162
6179
  //#endregion
6163
6180
  this.isValueChanged = false;
6164
6181
  }
6165
- valueChanged() {
6182
+ valueChanged(event) {
6166
6183
  this.isValueChanged = true;
6184
+ this.inputField = event;
6185
+ this.isDirty = true;
6167
6186
  }
6168
6187
  onChangeofOptions() {
6169
6188
  if (this.isValueChanged) {
@@ -6176,11 +6195,11 @@ class TsiCurrencyOtherInputComponent extends TsiInputBase {
6176
6195
  this.currency = this._localizationPipe.transform(this.currency ?? "");
6177
6196
  }
6178
6197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherInputComponent, deps: [{ token: LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
6179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: { numOfDecimal: "numOfDecimal", currency: "currency", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: { numOfDecimal: "numOfDecimal", currency: "currency", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6180
6199
  }
6181
6200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencyOtherInputComponent, decorators: [{
6182
6201
  type: Component,
6183
- args: [{ selector: 'Tsi-Currency-Other-Input', standalone: false, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6202
+ args: [{ selector: 'Tsi-Currency-Other-Input', standalone: false, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber \r\n autoSelect\r\n [disabled]=\"disabled\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n class=\"{{myStyleClass}}\" styleClass=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" \r\n inputStyleClass=\"{{myStyleClass}}\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" [suffix]=\"currency\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6184
6203
  }], ctorParameters: () => [{ type: LocalizePipe }], propDecorators: { numOfDecimal: [{
6185
6204
  type: Input
6186
6205
  }], currency: [{
@@ -6219,8 +6238,10 @@ class TsiCurrencySocieteInputComponent extends TsiInputBase {
6219
6238
  // this.inputField = 0;
6220
6239
  // }
6221
6240
  }
6222
- valueChanged() {
6241
+ valueChanged(event) {
6223
6242
  this.isValueChanged = true;
6243
+ this.inputField = event;
6244
+ this.isDirty = true;
6224
6245
  }
6225
6246
  onChangeofOptions() {
6226
6247
  if (this.isValueChanged) {
@@ -6229,11 +6250,11 @@ class TsiCurrencySocieteInputComponent extends TsiInputBase {
6229
6250
  }
6230
6251
  }
6231
6252
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteInputComponent, deps: [{ token: AppSettingsService }, { token: LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
6232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: { class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"inputField\"\r\n (ngModelChange)=\"valueChanged()\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: { class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6233
6254
  }
6234
6255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCurrencySocieteInputComponent, decorators: [{
6235
6256
  type: Component,
6236
- args: [{ selector: 'Tsi-Currency-Societe-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"inputField\"\r\n (ngModelChange)=\"valueChanged()\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"] }]
6257
+ args: [{ selector: 'Tsi-Currency-Societe-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber\r\n autoSelect\r\n class=\"{{ myStyleClass }} {{ class }}\"\r\n styleClass=\"{{ myStyleClass }} border-radius-7 {{validationStatusCssClass}}\"\r\n inputStyleClass=\"{{ myStyleClass }}\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"inputField\"\r\n (ngModelChange)=\"valueChanged($event)\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n name=\"{{ inputName }}\"\r\n id=\"{{ inputId }}\"\r\n suffix=\" {{currency}}\" \r\n locale=\"en-US\"\r\n [minFractionDigits]=\"numOfDecimal ?? 0\"\r\n [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [":host{width:inherit}\n"] }]
6237
6258
  }], ctorParameters: () => [{ type: AppSettingsService }, { type: LocalizePipe }], propDecorators: { class: [{
6238
6259
  type: Input,
6239
6260
  args: ['class']
@@ -6324,10 +6345,10 @@ class TsiDatePickerComponent extends TsiInputBase {
6324
6345
  }
6325
6346
  //#endregion
6326
6347
  //#region handle events
6327
- onFocusOut(event) {
6348
+ onFocusOut() {
6328
6349
  this._handleDateChange();
6329
6350
  }
6330
- onSelect(event) {
6351
+ onSelect() {
6331
6352
  this._handleDateChange();
6332
6353
  }
6333
6354
  //#endregion
@@ -6360,6 +6381,9 @@ class TsiDatePickerComponent extends TsiInputBase {
6360
6381
  : undefined;
6361
6382
  this._value = date;
6362
6383
  }
6384
+ onModelChange(event) {
6385
+ this.isDirty = true;
6386
+ }
6363
6387
  _handleDateChange() {
6364
6388
  this._updateInputFieldFromStringDate();
6365
6389
  this.inputFieldChange.emit(this.inputField);
@@ -6382,11 +6406,11 @@ class TsiDatePickerComponent extends TsiInputBase {
6382
6406
  this.calendarRef.overlayVisible = false;
6383
6407
  }
6384
6408
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiDatePickerComponent, deps: [{ token: i1$1.DatePipe }, { token: DateHelperService }, { token: i4.PrimeNGConfig }, { token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
6385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: { required: "required", showTime: "showTime", showButtonBar: "showButtonBar" }, outputs: { inputFieldChange: "inputFieldChange" }, viewQueries: [{ propertyName: "calendarRef", first: true, predicate: ["calendarRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"flex\">\r\n <p-calendar #calendarRef\r\n [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\"\r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [showTime]=\"showTime\"\r\n [showSeconds]=\"showTime\"\r\n [(ngModel)]=\"dateString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onFocus)=\"onFocusHandler($event)\"\r\n >\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#2bff00;text-align:right}.p-datepicker-trigger{border-top-right-radius:7px!important;border-bottom-right-radius:7px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }], encapsulation: i0.ViewEncapsulation.None }); }
6409
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: { required: "required", showTime: "showTime", showButtonBar: "showButtonBar" }, outputs: { inputFieldChange: "inputFieldChange" }, viewQueries: [{ propertyName: "calendarRef", first: true, predicate: ["calendarRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"flex\">\r\n <p-calendar #calendarRef\r\n [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\"\r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [showTime]=\"showTime\"\r\n [showSeconds]=\"showTime\"\r\n [(ngModel)]=\"dateString\"\r\n (onBlur)=\"onFocusOut()\"\r\n (onSelect)=\"onSelect()\"\r\n (onFocus)=\"onFocusHandler($event)\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n >\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#2bff00;text-align:right}.p-datepicker-trigger{border-top-right-radius:7px!important;border-bottom-right-radius:7px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }], encapsulation: i0.ViewEncapsulation.None }); }
6386
6410
  }
6387
6411
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiDatePickerComponent, decorators: [{
6388
6412
  type: Component,
6389
- args: [{ selector: 'Tsi-Date-Picker', encapsulation: ViewEncapsulation.None, template: "<div class=\"flex\">\r\n <p-calendar #calendarRef\r\n [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\"\r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [showTime]=\"showTime\"\r\n [showSeconds]=\"showTime\"\r\n [(ngModel)]=\"dateString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onFocus)=\"onFocusHandler($event)\"\r\n >\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#2bff00;text-align:right}.p-datepicker-trigger{border-top-right-radius:7px!important;border-bottom-right-radius:7px!important}\n"] }]
6413
+ args: [{ selector: 'Tsi-Date-Picker', encapsulation: ViewEncapsulation.None, template: "<div class=\"flex\">\r\n <p-calendar #calendarRef\r\n [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\"\r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [showTime]=\"showTime\"\r\n [showSeconds]=\"showTime\"\r\n [(ngModel)]=\"dateString\"\r\n (onBlur)=\"onFocusOut()\"\r\n (onSelect)=\"onSelect()\"\r\n (onFocus)=\"onFocusHandler($event)\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n >\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#2bff00;text-align:right}.p-datepicker-trigger{border-top-right-radius:7px!important;border-bottom-right-radius:7px!important}\n"] }]
6390
6414
  }], ctorParameters: () => [{ type: i1$1.DatePipe }, { type: DateHelperService }, { type: i4.PrimeNGConfig }, { type: LayoutService }], propDecorators: { calendarRef: [{
6391
6415
  type: ViewChild,
6392
6416
  args: ['calendarRef']
@@ -6413,8 +6437,10 @@ class TsiDecimalInputComponent extends TsiInputBase {
6413
6437
  //#endregion
6414
6438
  this.isValueChanged = false;
6415
6439
  }
6416
- valueChange() {
6440
+ valueChange(event) {
6417
6441
  this.isValueChanged = true;
6442
+ this.inputField = event;
6443
+ this.isDirty = true;
6418
6444
  }
6419
6445
  ngOnInit() {
6420
6446
  super.ngOnInit();
@@ -6430,11 +6456,11 @@ class TsiDecimalInputComponent extends TsiInputBase {
6430
6456
  }
6431
6457
  }
6432
6458
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiDecimalInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: { numOfDecimal: "numOfDecimal", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [(ngModel)]=\"inputField\" (ngModelChange)=\"valueChange()\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\" [minFractionDigits]=\"numOfDecimal ?? 2\" [maxFractionDigits]=\"numOfDecimal ?? 2\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\" \r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6459
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: { numOfDecimal: "numOfDecimal", class: "class" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [ngModel]=\"inputField\" (ngModelChange)=\"valueChange($event)\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\" [minFractionDigits]=\"numOfDecimal ?? 2\" [maxFractionDigits]=\"numOfDecimal ?? 2\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\" \r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6434
6460
  }
6435
6461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiDecimalInputComponent, decorators: [{
6436
6462
  type: Component,
6437
- args: [{ selector: 'Tsi-Decimal-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [(ngModel)]=\"inputField\" (ngModelChange)=\"valueChange()\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\" [minFractionDigits]=\"numOfDecimal ?? 2\" [maxFractionDigits]=\"numOfDecimal ?? 2\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\" \r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6463
+ args: [{ selector: 'Tsi-Decimal-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [ngModel]=\"inputField\" (ngModelChange)=\"valueChange($event)\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\" [minFractionDigits]=\"numOfDecimal ?? 2\" [maxFractionDigits]=\"numOfDecimal ?? 2\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\" \r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6438
6464
  }], propDecorators: { numOfDecimal: [{
6439
6465
  type: Input
6440
6466
  }], class: [{
@@ -6460,8 +6486,10 @@ class TsiIntegerComponent extends TsiInputBase {
6460
6486
  this.infinityRef = Infinity;
6461
6487
  this.isValueChanged = false;
6462
6488
  }
6463
- valueChanged() {
6489
+ valueChanged(event) {
6464
6490
  this.isValueChanged = true;
6491
+ this.inputField = event;
6492
+ this.isDirty = true;
6465
6493
  }
6466
6494
  onChangeofOptions() {
6467
6495
  if (this.isValueChanged) {
@@ -6471,11 +6499,11 @@ class TsiIntegerComponent extends TsiInputBase {
6471
6499
  }
6472
6500
  }
6473
6501
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiIntegerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6474
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: { class: "class", minValue: "minValue", maxValue: "maxValue", delayChangeTime: "delayChangeTime" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [(ngModel)]=\"inputField\" (ngModelChange)=\"valueChanged()\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6502
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: { class: "class", minValue: "minValue", maxValue: "maxValue", delayChangeTime: "delayChangeTime" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [ngModel]=\"inputField\" (ngModelChange)=\"valueChanged($event)\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6475
6503
  }
6476
6504
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiIntegerComponent, decorators: [{
6477
6505
  type: Component,
6478
- args: [{ selector: 'Tsi-Integer', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [(ngModel)]=\"inputField\" (ngModelChange)=\"valueChanged()\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"] }]
6506
+ args: [{ selector: 'Tsi-Integer', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect [disabled]=\"disabled\" [ngModel]=\"inputField\" (ngModelChange)=\"valueChanged($event)\"\r\n name=\"{{inputName}}\" id=\"{{inputId}}\"\r\n class=\"{{myStyleClass}}\"\r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n [locale]=\"locale\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"] }]
6479
6507
  }], propDecorators: { class: [{
6480
6508
  type: Input,
6481
6509
  args: ['class']
@@ -6512,8 +6540,10 @@ class TsiRateInputComponent extends TsiInputBase {
6512
6540
  // this.inputFieldChange.emit(this.inputField);
6513
6541
  // }
6514
6542
  }
6515
- valueChanged() {
6543
+ valueChanged(event) {
6516
6544
  this.isValueChanged = true;
6545
+ this.inputField = event;
6546
+ this.isDirty = true;
6517
6547
  }
6518
6548
  onChangeofOptions() {
6519
6549
  if (this.isValueChanged) {
@@ -6523,11 +6553,11 @@ class TsiRateInputComponent extends TsiInputBase {
6523
6553
  }
6524
6554
  }
6525
6555
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRateInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6526
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: { required: "required", isFraction: "isFraction", numOfDecimal: "numOfDecimal" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6556
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: { required: "required", isFraction: "isFraction", numOfDecimal: "numOfDecimal" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6527
6557
  }
6528
6558
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRateInputComponent, decorators: [{
6529
6559
  type: Component,
6530
- args: [{ selector: 'Tsi-Rate-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"] }]
6560
+ args: [{ selector: 'Tsi-Rate-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [ngModel]=\"inputField\" \r\n (ngModelChange)=\"valueChanged($event)\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\"\r\n [locale]=\"locale\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"] }]
6531
6561
  }], propDecorators: { required: [{
6532
6562
  type: Input
6533
6563
  }], isFraction: [{
@@ -6558,15 +6588,16 @@ class TsiTextBoxComponent extends TsiInputBase {
6558
6588
  }
6559
6589
  onChangeofOptions(input) {
6560
6590
  this.inputField = input;
6591
+ this.isDirty = true;
6561
6592
  this.newItemEvent.emit(this.inputField);
6562
6593
  this.inputFieldChange.emit(this.inputField);
6563
6594
  }
6564
6595
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTextBoxComponent, deps: [{ token: LocalizePipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6565
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: { textBoxType: "textBoxType", autocomplete: "autocomplete" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem flex-row gap-2 align-items-center\">\r\n <input autoSelect class=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" pInputText\r\n pTooltip=\"{{ isRequired ? requiredMessage + ' - ' : '' }}{{ maxLength ? maxLength + ' ' + maxLengthMessage : '' }}\" tooltipPosition=\"top\"\r\n [type]=\"textBoxType\" name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\"\r\n [required]=\"isRequired\" autocomplete=\"{{autocomplete}}\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onChangeofOptions($event)\" placeholder=\"{{placeHolder}}\"/>\r\n\r\n <span *ngIf=\"isInputNameNotFound\" (click)=\"op.toggle($event)\"\r\n class=\"pi pi-exclamation-circle text-red-500 cursor-pointer tsi-input-alert-container\"> </span>\r\n\r\n <p-overlayPanel #op>\r\n <ng-template pTemplate>\r\n <div class=\"d-flex flex-row gap-2\">\r\n <span> Input name : </span>\r\n <span class=\"text-red-500\"> {{inputName}} </span>\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n <!--<input class=\"{{myStyleClass}} border-radius-7\" styleClass=\"border-radius-7\" pInputText type=\"text\"\r\n name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\" [required]=\"required\"\r\n [disabled]=\"disabled\" (ngModelChange)=\"onChangeofOptions($event)\" [formControl]=\"myFormControl\" />-->\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>\r\n\r\n<div *ngIf=\"myFormControl.invalid && (myFormControl.dirty || myFormControl.touched)\">\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['required']\" [ngClass]=\"{'error-message': true}\">\r\n This field is required.\r\n </div>\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['maxlength']\" [ngClass]=\"{'error-message': true}\">\r\n Maximum length exceeded.\r\n </div>\r\n</div>", styles: [".ColorClass{background-color:#ff0}.error-message{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i6.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: i2$2.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6596
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: { textBoxType: "textBoxType", autocomplete: "autocomplete" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem flex-row gap-2 align-items-center\">\r\n <input autoSelect class=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" pInputText\r\n pTooltip=\"{{ isRequired ? requiredMessage + ' - ' : '' }}{{ maxLength ? maxLength + ' ' + maxLengthMessage : '' }}\" tooltipPosition=\"top\"\r\n [type]=\"textBoxType\" name=\"{{inputName}}\" id=\"{{inputName}}\" [ngModel]=\"inputField\"\r\n [required]=\"isRequired\" autocomplete=\"{{autocomplete}}\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onChangeofOptions($event)\" placeholder=\"{{placeHolder}}\"/>\r\n\r\n <span *ngIf=\"isInputNameNotFound\" (click)=\"op.toggle($event)\"\r\n class=\"pi pi-exclamation-circle text-red-500 cursor-pointer tsi-input-alert-container\"> </span>\r\n\r\n <p-overlayPanel #op>\r\n <ng-template pTemplate>\r\n <div class=\"d-flex flex-row gap-2\">\r\n <span> Input name : </span>\r\n <span class=\"text-red-500\"> {{inputName}} </span>\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n <!--<input class=\"{{myStyleClass}} border-radius-7\" styleClass=\"border-radius-7\" pInputText type=\"text\"\r\n name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\" [required]=\"required\"\r\n [disabled]=\"disabled\" (ngModelChange)=\"onChangeofOptions($event)\" [formControl]=\"myFormControl\" />-->\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>\r\n\r\n<div *ngIf=\"myFormControl.invalid && (myFormControl.dirty || myFormControl.touched)\">\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['required']\" [ngClass]=\"{'error-message': true}\">\r\n This field is required.\r\n </div>\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['maxlength']\" [ngClass]=\"{'error-message': true}\">\r\n Maximum length exceeded.\r\n </div>\r\n</div>", styles: [".ColorClass{background-color:#ff0}.error-message{color:red}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i6.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: i2$2.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: AutoSelectDirective, selector: "[autoSelect]" }] }); }
6566
6597
  }
6567
6598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTextBoxComponent, decorators: [{
6568
6599
  type: Component,
6569
- args: [{ selector: 'Tsi-Text-Box', template: "<div class=\"flex h-2rem flex-row gap-2 align-items-center\">\r\n <input autoSelect class=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" pInputText\r\n pTooltip=\"{{ isRequired ? requiredMessage + ' - ' : '' }}{{ maxLength ? maxLength + ' ' + maxLengthMessage : '' }}\" tooltipPosition=\"top\"\r\n [type]=\"textBoxType\" name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\"\r\n [required]=\"isRequired\" autocomplete=\"{{autocomplete}}\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onChangeofOptions($event)\" placeholder=\"{{placeHolder}}\"/>\r\n\r\n <span *ngIf=\"isInputNameNotFound\" (click)=\"op.toggle($event)\"\r\n class=\"pi pi-exclamation-circle text-red-500 cursor-pointer tsi-input-alert-container\"> </span>\r\n\r\n <p-overlayPanel #op>\r\n <ng-template pTemplate>\r\n <div class=\"d-flex flex-row gap-2\">\r\n <span> Input name : </span>\r\n <span class=\"text-red-500\"> {{inputName}} </span>\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n <!--<input class=\"{{myStyleClass}} border-radius-7\" styleClass=\"border-radius-7\" pInputText type=\"text\"\r\n name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\" [required]=\"required\"\r\n [disabled]=\"disabled\" (ngModelChange)=\"onChangeofOptions($event)\" [formControl]=\"myFormControl\" />-->\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>\r\n\r\n<div *ngIf=\"myFormControl.invalid && (myFormControl.dirty || myFormControl.touched)\">\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['required']\" [ngClass]=\"{'error-message': true}\">\r\n This field is required.\r\n </div>\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['maxlength']\" [ngClass]=\"{'error-message': true}\">\r\n Maximum length exceeded.\r\n </div>\r\n</div>", styles: [".ColorClass{background-color:#ff0}.error-message{color:red}\n"] }]
6600
+ args: [{ selector: 'Tsi-Text-Box', template: "<div class=\"flex h-2rem flex-row gap-2 align-items-center\">\r\n <input autoSelect class=\"{{myStyleClass}} border-radius-7 {{validationStatusCssClass}}\" pInputText\r\n pTooltip=\"{{ isRequired ? requiredMessage + ' - ' : '' }}{{ maxLength ? maxLength + ' ' + maxLengthMessage : '' }}\" tooltipPosition=\"top\"\r\n [type]=\"textBoxType\" name=\"{{inputName}}\" id=\"{{inputName}}\" [ngModel]=\"inputField\"\r\n [required]=\"isRequired\" autocomplete=\"{{autocomplete}}\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onChangeofOptions($event)\" placeholder=\"{{placeHolder}}\"/>\r\n\r\n <span *ngIf=\"isInputNameNotFound\" (click)=\"op.toggle($event)\"\r\n class=\"pi pi-exclamation-circle text-red-500 cursor-pointer tsi-input-alert-container\"> </span>\r\n\r\n <p-overlayPanel #op>\r\n <ng-template pTemplate>\r\n <div class=\"d-flex flex-row gap-2\">\r\n <span> Input name : </span>\r\n <span class=\"text-red-500\"> {{inputName}} </span>\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n <!--<input class=\"{{myStyleClass}} border-radius-7\" styleClass=\"border-radius-7\" pInputText type=\"text\"\r\n name=\"{{inputName}}\" id=\"{{inputName}}\" [(ngModel)]=\"inputField\" [required]=\"required\"\r\n [disabled]=\"disabled\" (ngModelChange)=\"onChangeofOptions($event)\" [formControl]=\"myFormControl\" />-->\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>\r\n\r\n<div *ngIf=\"myFormControl.invalid && (myFormControl.dirty || myFormControl.touched)\">\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['required']\" [ngClass]=\"{'error-message': true}\">\r\n This field is required.\r\n </div>\r\n <div *ngIf=\"myFormControl.errors && myFormControl.errors['maxlength']\" [ngClass]=\"{'error-message': true}\">\r\n Maximum length exceeded.\r\n </div>\r\n</div>", styles: [".ColorClass{background-color:#ff0}.error-message{color:red}\n"] }]
6570
6601
  }], ctorParameters: () => [{ type: LocalizePipe }, { type: i0.ChangeDetectorRef }], propDecorators: { textBoxType: [{
6571
6602
  type: Input
6572
6603
  }], autocomplete: [{
@@ -6589,6 +6620,7 @@ class TsiFormulaBoxComponent extends TsiInputBase {
6589
6620
  }
6590
6621
  onInputChange(val) {
6591
6622
  this.value = val;
6623
+ this.isDirty = true;
6592
6624
  this.valueChange.emit(this.value);
6593
6625
  // Détecter `TOTAL(` suivi de tout ce qui n'est pas une parenthèse fermante
6594
6626
  const match = /TOTAL\(([^)]*)$/i.exec(val);
@@ -6608,15 +6640,16 @@ class TsiFormulaBoxComponent extends TsiInputBase {
6608
6640
  }
6609
6641
  onSuggestionSelect(s) {
6610
6642
  this.value = this.value.replace(/TOTAL\([^\)]*$/, `TOTAL(${s}`);
6643
+ this.isDirty = true;
6611
6644
  this.valueChange.emit(this.value);
6612
6645
  this.suggestions = [];
6613
6646
  }
6614
6647
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormulaBoxComponent, deps: [{ token: FormulaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6615
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormulaBoxComponent, selector: "Tsi-Formula-Box", inputs: { value: "value", endPoint: "endPoint" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
6648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormulaBoxComponent, selector: "Tsi-Formula-Box", inputs: { value: "value", endPoint: "endPoint" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [ngModel]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
6616
6649
  }
6617
6650
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormulaBoxComponent, decorators: [{
6618
6651
  type: Component,
6619
- args: [{ selector: 'Tsi-Formula-Box', template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"] }]
6652
+ args: [{ selector: 'Tsi-Formula-Box', template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [ngModel]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"] }]
6620
6653
  }], ctorParameters: () => [{ type: FormulaService }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
6621
6654
  type: Input
6622
6655
  }], endPoint: [{
@@ -6659,28 +6692,30 @@ class TsiTimePickerComponent extends TsiInputBase {
6659
6692
  //#endregion
6660
6693
  //#region handle events
6661
6694
  onFocusOut(event) {
6662
- this._handleDateChange();
6695
+ this._handleDateChange(event);
6663
6696
  }
6664
6697
  onSelect(event) {
6665
- this._handleDateChange();
6698
+ this._handleDateChange(event);
6666
6699
  }
6667
6700
  //#endregion
6668
6701
  //#region private methods
6669
- _updateInputFieldFromStringDate() {
6702
+ _updateInputFieldFromStringDate(event) {
6703
+ this.timeOnlyString = event;
6670
6704
  let timeOnly = this.timeOnlyString && this.timeOnlyString != ''
6671
6705
  ? this._dateHelperService.parseTimeString(this.timeOnlyString) : undefined;
6706
+ this.isDirty = this._value != timeOnly;
6672
6707
  this._value = timeOnly;
6673
6708
  }
6674
- _handleDateChange() {
6675
- this._updateInputFieldFromStringDate();
6709
+ _handleDateChange(event) {
6710
+ this._updateInputFieldFromStringDate(event);
6676
6711
  this.inputFieldChange.emit(this.inputField);
6677
6712
  }
6678
6713
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTimePickerComponent, deps: [{ token: DateHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
6679
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTimePickerComponent, selector: "tsi-time-picker", outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex\">\r\n <p-calendar [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n styleClass=\"{{myStyleClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n [showTime]=\"true\"\r\n [showSeconds]=\"true\"\r\n [timeOnly]=\"true\"\r\n [(ngModel)]=\"timeOnlyString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\">\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }] }); }
6714
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTimePickerComponent, selector: "tsi-time-picker", outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex\">\r\n <p-calendar [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n styleClass=\"{{myStyleClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n [showTime]=\"true\"\r\n [showSeconds]=\"true\"\r\n [timeOnly]=\"true\"\r\n [ngModel]=\"timeOnlyString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\">\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }] }); }
6680
6715
  }
6681
6716
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTimePickerComponent, decorators: [{
6682
6717
  type: Component,
6683
- args: [{ selector: 'tsi-time-picker', template: "<div class=\"flex\">\r\n <p-calendar [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n styleClass=\"{{myStyleClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n [showTime]=\"true\"\r\n [showSeconds]=\"true\"\r\n [timeOnly]=\"true\"\r\n [(ngModel)]=\"timeOnlyString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\">\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6718
+ args: [{ selector: 'tsi-time-picker', template: "<div class=\"flex\">\r\n <p-calendar [dataType]=\"'string'\"\r\n [appendTo]=\"'body'\"\r\n [disabled]=\"disabled\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"datePickerFormat\"\r\n class=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n styleClass=\"{{myStyleClass}}\"\r\n inputStyleClass=\"{{myStyleClass}}\"\r\n [showTime]=\"true\"\r\n [showSeconds]=\"true\"\r\n [timeOnly]=\"true\"\r\n [ngModel]=\"timeOnlyString\"\r\n (onBlur)=\"onFocusOut($event)\"\r\n (onSelect)=\"onSelect($event)\">\r\n </p-calendar>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>" }]
6684
6719
  }], ctorParameters: () => [{ type: DateHelperService }], propDecorators: { inputFieldChange: [{
6685
6720
  type: Output
6686
6721
  }] } });
@@ -6874,7 +6909,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
6874
6909
  type: Input
6875
6910
  }] } });
6876
6911
 
6877
- class EditableGridComponent {
6912
+ class EditableGridComponent extends TsiInputBase {
6878
6913
  get columns() {
6879
6914
  return this._columns;
6880
6915
  }
@@ -6895,9 +6930,10 @@ class EditableGridComponent {
6895
6930
  }
6896
6931
  set editableGridBusinessClass(className) {
6897
6932
  this._editableGridBusinessClass = className;
6898
- this._genericValidationStateService?.loadEntityValidationInfos(this._editableGridBusinessClass);
6933
+ this.genericValidationStateService?.loadEntityValidationInfos(this._editableGridBusinessClass);
6899
6934
  }
6900
6935
  constructor(_localizePipe) {
6936
+ super();
6901
6937
  this._localizePipe = _localizePipe;
6902
6938
  this._isAutoRowNumber = false;
6903
6939
  this._autoRowNumberField = '';
@@ -6938,7 +6974,6 @@ class EditableGridComponent {
6938
6974
  this.selectKeyOnly = true;
6939
6975
  this.selectionMode = GridSelectionMode.None;
6940
6976
  this.showConsultButton = false;
6941
- this.disabled = false;
6942
6977
  this._editableGridBusinessClass = "";
6943
6978
  /**order */
6944
6979
  this.orderColumn = 'uid';
@@ -6962,9 +6997,9 @@ class EditableGridComponent {
6962
6997
  this.focusOutRow = new EventEmitter();
6963
6998
  this.onConsultClicked = new EventEmitter();
6964
6999
  this._entityValidationsService = inject(EntityValidationsService);
6965
- this._genericValidationStateService = inject(GenericValidationStateService);
6966
7000
  }
6967
7001
  ngOnInit() {
7002
+ super.ngOnInit();
6968
7003
  this._initSaveEventSubscription();
6969
7004
  this._verifyGridRequirements();
6970
7005
  this._initCurrentRowNumberAndOrderByRowNumber();
@@ -7048,6 +7083,7 @@ class EditableGridComponent {
7048
7083
  }
7049
7084
  }
7050
7085
  ngOnDestroy() {
7086
+ super.ngOnDestroy();
7051
7087
  this.saveEventSubscription?.unsubscribe();
7052
7088
  }
7053
7089
  inputChanged(col) {
@@ -7065,6 +7101,7 @@ class EditableGridComponent {
7065
7101
  }
7066
7102
  let newRow = this._initRow();
7067
7103
  this.gridData.push(newRow);
7104
+ this.isDirty = true;
7068
7105
  let rowAddedResult = {
7069
7106
  rowNumber: this.gridData.length - 1,
7070
7107
  data: newRow
@@ -7110,6 +7147,7 @@ class EditableGridComponent {
7110
7147
  const index = this.gridData.indexOf(item, 0);
7111
7148
  if (index > -1) {
7112
7149
  this.gridData.splice(index, 1);
7150
+ this.isDirty = true;
7113
7151
  this._onDeleteRow(item);
7114
7152
  this.rowDeletedEventEmitter.emit(this.gridData);
7115
7153
  }
@@ -7233,10 +7271,10 @@ class EditableGridComponent {
7233
7271
  // }
7234
7272
  }
7235
7273
  updateFormState(formState) {
7236
- if (!this._genericValidationStateService) {
7274
+ if (!this.genericValidationStateService) {
7237
7275
  return;
7238
7276
  }
7239
- this._genericValidationStateService.updateFormState(formState);
7277
+ this.genericValidationStateService.updateFormState(formState);
7240
7278
  }
7241
7279
  //#region private methods
7242
7280
  _initRow() {
@@ -7380,7 +7418,7 @@ class EditableGridComponent {
7380
7418
  });
7381
7419
  }
7382
7420
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditableGridComponent, deps: [{ token: LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
7383
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: { selectedItems: "selectedItems", configuration: "configuration", key: "key", items: "items", saveEvent: ["events", "saveEvent"], showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showEditButton: "showEditButton", showRowSummary: "showRowSummary", scrollHeight: "scrollHeight", rowPerPage: "rowPerPage", pageSize: "pageSize", columns: "columns", gridData: "gridData", isTableLoading: "isTableLoading", parent: "parent", events: "events", showSaveButton: "showSaveButton", showActionColumn: "showActionColumn", enableRowDisabling: "enableRowDisabling", rowSummaryConfig: "rowSummaryConfig", showHaveSumary: "showHaveSumary", showRowSumary: "showRowSumary", selectKeyOnly: "selectKeyOnly", selectionMode: "selectionMode", showConsultButton: "showConsultButton", disabled: "disabled", editableGridBusinessClass: "editableGridBusinessClass", orderColumn: "orderColumn", deleteLineButtonDisabled: "deleteLineButtonDisabled", id: "id" }, outputs: { itemsSave: "itemsSave", refreshEventEmitter: "refreshEventEmitter", saveDataEventEmitter: "saveDataEventEmitter", rowChangedEventEmitter: "rowChangedEventEmitter", selectedRowEventEmitter: "selectedRowEventEmitter", addedRowEventEmitter: "addedRowEventEmitter", focusOutEventEmitter: "focusOutEventEmitter", cellChanged: "cellChanged", rowDeletedEventEmitter: "rowDeletedEventEmitter", selectedItemsChange: "selectedItemsChange", onRowSelect: "onRowSelect", focusOutRow: "focusOutRow", onConsultClicked: "onConsultClicked" }, providers: [GenericValidationStateService], viewQueries: [{ propertyName: "editableTable", first: true, predicate: ["editableTable"], descendants: true }, { propertyName: "dt", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<div class=\"card\">\r\n <p-table #dt [selectionMode]=\"selectionMode\" [(selection)]=\"selectedItems\" editMode=\"row\"\r\n [paginator]=\"gridData.length > pageSize\" [rowsPerPageOptions]=\"rowPerPage\" [rows]=\"pageSize\"\r\n (onRowSelect)=\"onRowSelected($event)\" (onRowUnselect)=\"onRowUnselect($event)\" [scrollable]=\"true\"\r\n [resizableColumns]=\"true\" columnResizeMode=\"expand\" appendTo=\"body\" styleClass=\"p-datatable-sm\" [value]=\"gridData\"\r\n [columns]=\"selectedColumns\" [dataKey]=\"key\" [scrollHeight]=\"scrollHeight\" styleClass=\"p-datatable-gridlines\"\r\n (selectionChange)=\"selectionChange($event)\" #editableTable [totalRecords]=\"gridData.length\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <p-multiSelect [options]=\"columns\" [(ngModel)]=\"selectedColumns\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" optionLabel=\"translatedHeader\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'choose_columns' | localize }}\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.header | localize }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n\r\n <tr>\r\n <ng-container *ngIf=\"selectionMode != multipleGridSelectionMode\">\r\n <th pResizableColumn pFrozenColumn style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\"></th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <th pResizableColumn pFrozenColumn style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n </ng-container>\r\n \r\n <th pResizableColumn pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n\r\n <!-- <th pResizableColumn pFrozenColumn *ngIf=\"showEditButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th> -->\r\n \r\n <th pResizableColumn pFrozenColumn *ngIf=\"showConsultButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n <th pResizableColumn pFrozenColumn *ngIf=\"showDeleteButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n\r\n <th pResizableColumn pFrozenColumn [frozen]=\"col.isFrozen\" [style]=\"col.style\" scope=\"col\"\r\n style=\"min-width:3rem;\" pSortableColumn=\"{{col.field}}\" *ngFor=\"let col of columns\"\r\n pTooltip=\"{{col.toolTipText | localize }}\" tooltipPosition=\"top\" pReorderableColumn>{{ col.header | localize\r\n }}\r\n <p-sortIcon field=\"{{col.field}}\"></p-sortIcon>\r\n <Tsi-Bubble-Info [infoText]=\"col.infoText | localize\"></Tsi-Bubble-Info>\r\n </th>\r\n <th style=\"min-width:3rem\" *ngIf=\"showRowSummary\" scope=\"col\">{{'RowSummary' | localize}}</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-editing=\"editing\" let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n \r\n <tr [pEditableRow]=\"item\"\r\n *ngIf=\"selectionMode == multipleGridSelectionMode || selectionMode == undefined; else selectionModeBlock\"\r\n (focusOut)=\"onFocusOutRow(item)\">\r\n \r\n <td style=\"text-align: center;\">\r\n <p-tableCheckbox [value]=\"item\" ></p-tableCheckbox>\r\n </td>\r\n\r\n <!-- <td pFrozenColumn style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\"> -->\r\n\r\n\r\n <!-- <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td> -->\r\n\r\n <!-- <td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <button *ngIf=\"!editing\" pButton pRipple type=\"button\" pInitEditableRow icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-text\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n class=\"p-button-rounded p-button-text p-button-success -ml-1\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pCancelEditableRow icon=\"pi pi-times\"\r\n class=\"p-button-rounded p-button-text p-button-danger -ml-2\">\r\n </button>\r\n </div>\r\n </td> -->\r\n <td pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\"></td>\r\n\r\n <td pFrozenColumn *ngIf=\"showConsultButton\" style=\"left: -1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-consult-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-eye\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_consulter\"\r\n styleClass=\"p-button-rounded p-button-text p-button-secondary\" (click)=\"consult(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n <td pFrozenColumn *ngIf=\"showDeleteButton\" \r\n style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-delete-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [disabled]=\"isDeleteButtonDisabled(item)\" type=\"button\" icon=\"p-button-icon pi pi-trash\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_supprimer\"\r\n styleClass=\"p-element p-button-rounded p-button-text p-button-danger p-button p-component p-button-icon-only\"\r\n (click)=\"delete(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n\r\n <td class=\"ui-resizable-column\" pFrozenColumn [frozen]=\"col.isFrozen\" *ngFor=\"let col of columns\"\r\n [ngStyle]=\"isAr ? {'text-align': 'start'} : {}\">\r\n \r\n \r\n <div *ngIf=\"col.displayOnly || disabled; else ordinaryBloc\">\r\n\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteOutputBlock\">\r\n <Tsi-Search-Combo [disabled]=\"true\" [elementSourceUrl]=\"col.elementSourceUrl\"\r\n [businessClass]=\"col.businessClass\" [currentRowItem]=\"item\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" [listSourceUrl]=\"col.listSourceUrl\" label-field=\"{{col.labelField}}\"\r\n [isFiltered]=\"col.isFiltered\" [datasource]=\"col.datasource\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <ng-template #currencySocieteOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Display -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DATE; else checkBoxOutputBlock\">\r\n <Tsi-Date-Display [showTime]=\"col.showTime\" [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox-Display -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CHECKBOX; else decimalOutputBlock\">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else timeOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Display -->\r\n <ng-template #timeOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaOutputBlock\">\r\n <tsi-time-display [inputData]=\"item[col.field]\"></tsi-time-display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Formula-Display -->\r\n <ng-template #formulaOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextOutputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{item[col.field]}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n\r\n <ng-template #ordinaryBloc> \r\n \r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"col.elementSourceUrl\" (bindChange)=\"inputChanged(col)\"\r\n [businessClass]=\"col.businessClass\" [listSourceUrl]=\"col.listSourceUrl\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" label-field=\"{{col.labelField}}\" [isFiltered]=\"col.isFiltered\"\r\n [currentRowItem]=\"item\" (bindChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [datasource]=\"col.datasource\" [showSearchButton]=\"col.showSearchButton ?? true\"\r\n [showAddButton]=\"col.showAddButton ?? true\" [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"col.inputName\" [disabled]=\"col.disabled\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"col.inputName\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [numOfDecimal]=\"col.numOfDecimal\" [disabled]=\"col.disabled\">\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=\"col.type == inputTypes.DATE; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [showTime]=\"col.showTime\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [numOfDecimal]=\"col.numOfDecimal\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"col.inputName\" [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\r\n </Tsi-Integer>\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=\"col.type == inputTypes.RATE_INPUT; else timeInputBloc\">\r\n <Tsi-Rate-Input [inputName]=\"col.inputName\" [numOfDecimal]=\"col.numOfDecimal\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-picker bloc -->\r\n <ng-template #timeInputBloc>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaInputBlock\">\r\n <tsi-time-picker (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [inputName]=\"col.inputName\"\r\n [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </tsi-time-picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #formulaInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextInputBlock\">\r\n <!--<Tsi-Bubble-Info\r\n [infoText]=\"['formula_explication',\r\n ]\"></Tsi-Bubble-Info> -->\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\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-Text-Box [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\" (keydown)=\"handleKeydown($event)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [inputName]=\"col.inputName\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Text-Box>\r\n \r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n </td>\r\n\r\n <td *ngIf=\"showRowSummary\" class=\"font-bold\">\r\n {{rowSummary(item)}}\r\n </td>\r\n </tr>\r\n\r\n <ng-template #selectionModeBlock>\r\n <ng-container>\r\n <tr [pEditableRow]=\"item\" [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"rowIndex\"\r\n (focusOut)=\"onFocusOutRow(item)\">\r\n\r\n <!-- <td pFrozenColumn style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\"> -->\r\n\r\n <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\r\n\r\n <!-- <td *ngIf=\"selectionMode == multipleGridSelectionMode\" style=\"width: 2rem;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </td> -->\r\n\r\n <!-- <td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem;left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <button *ngIf=\"!editing\" pButton pRipple type=\"button\" pInitEditableRow icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-text\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n class=\"p-button-rounded p-button-text p-button-success -ml-1\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pCancelEditableRow icon=\"pi pi-times\"\r\n class=\"p-button-rounded p-button-text p-button-danger -ml-2\">\r\n </button>\r\n </div>\r\n </td> -->\r\n \r\n <td pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\">\r\n </td>\r\n \r\n <td pFrozenColumn pResizableColumn *ngIf=\"showConsultButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1 btn-consult-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-eye\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_consulter\"\r\n styleClass=\"p-button-rounded p-button-text p-button-secondary\" (click)=\"consult(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n <td pFrozenColumn pResizableColumn *ngIf=\"showDeleteButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-delete-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button type=\"button\" icon=\"p-button-icon pi pi-trash\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipText=\"shared_edittable_supprimer\"\r\n styleClass=\"p-element p-button-rounded p-button-text p-button-danger p-button p-component p-button-icon-only\"\r\n (click)=\"delete(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n \r\n <td class=\"ui-resizable-column\" pFrozenColumn [frozen]=\"col.isFrozen\" *ngFor=\"let col of columns\">\r\n\r\n <div *ngIf=\"col.displayOnly || disabled; else ordinaryBloc\">\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteOutputBlock\">\r\n <Tsi-Search-Combo [disabled]=\"true\" [elementSourceUrl]=\"col.elementSourceUrl\"\r\n [businessClass]=\"col.businessClass\" [currentRowItem]=\"item\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" [listSourceUrl]=\"col.listSourceUrl\" label-field=\"{{col.labelField}}\"\r\n [isFiltered]=\"col.isFiltered\" [datasource]=\"col.datasource\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <ng-template #currencySocieteOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Display -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DATE; else checkBoxOutputBlock\">\r\n <Tsi-Date-Display [showTime]=\"col.showTime\" [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox-Display -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CHECKBOX; else decimalOutputBlock\">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else timeOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Display -->\r\n <ng-template #timeOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaOutputBlock\">\r\n <tsi-time-display [inputData]=\"item[col.field]\"></tsi-time-display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Formula-Display -->\r\n <ng-template #formulaOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextOutputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{item[col.field]}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n \r\n <ng-template #ordinaryBloc>\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"col.elementSourceUrl\" (bindChange)=\"inputChanged(col)\"\r\n [listSourceUrl]=\"col.listSourceUrl\" [(bind)]=\"item[col.field]\" id-field=\"{{col.idField}}\"\r\n label-field=\"{{col.labelField}}\" [isFiltered]=\"col.isFiltered\" [businessClass]=\"col.businessClass\"\r\n (bindChange)=\"onCellValueChanged(col, $event, item)\" [currentRowItem]=\"item\"\r\n [datasource]=\"col.datasource\" [disabled]=\"col.disabled\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"inputChanged(col)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [disabled]=\"col.disabled\" [inputName]=\"col.inputName\"\r\n [inputId]=\"col.field\" (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [numOfDecimal]=\"col.numOfDecimal\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DATE; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [showTime]=\"col.showTime\" [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\" (inputFieldChange)=\"inputChanged(col)\"\r\n [(inputField)]=\"item[col.field]\" [numOfDecimal]=\"col.numOfDecimal\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\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=\"col.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Integer [class]=\"'max-w-4rem'\" [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\r\n </Tsi-Integer>\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=\"col.type == inputTypes.RATE_INPUT; else timeInputBloc\">\r\n <Tsi-Rate-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Picker -->\r\n <ng-template #timeInputBloc>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME else formulaInputBlock\">\r\n <tsi-time-picker (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </tsi-time-picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #formulaInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextInputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\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-Text-Box [inputId]=\"col.field\" [disabled]=\"col.disabled\" (inputFieldChange)=\"inputChanged(col)\"\r\n [(inputField)]=\"item[col.field]\" (keydown)=\"handleKeydown($event)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [inputName]=\"col.inputName\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n </td>\r\n <td *ngIf=\"showRowSummary\" class=\"font-bold\">\r\n {{rowSummary(item)}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"showHaveSumary\" pTemplate=\"footer\" let-columns>\r\n\r\n <tr class=\"tfooter\">\r\n <!-- <td pFrozenColumn scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\"></td> -->\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </td>\r\n <td pFrozenColumn scope=\"col\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\">Total</td>\r\n <td pFrozenColumn *ngIf=\"showDeleteButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <!--<td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\"> -->\r\n <td pFrozenColumn *ngIf=\"showConsultButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\r\n <td pFrozenColumn [frozen]=\"col.isFrozen\" [style]=\"col.style\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <div *ngIf=\"col.haveSummary\">\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <div *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else decimalOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"getSummary(col)\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col)\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else defaultTextOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"getSummary(col)\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Default -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{getSummary(col)}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"summary\">\r\n <tr>\r\n {{'TotalRecordsCount' | localize }} {{gridData.length}}\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div>\r\n <Tsi-Button *ngIf=\"showAddButton\" style=\"height: 20px;width: 20px;\" icon=\"p-button-icon pi pi-plus\" type=\"button\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_ajouter\"\r\n styleClass=\"p-element p-button-sm p-button-success p-button-text p-button p-component p-button-icon-only ng-star-inserted\"\r\n (click)=\"addRow()\"></Tsi-Button>\r\n </div>\r\n</div>", styles: [".tfooter{position:sticky;bottom:0;width:100%;z-index:10}::ng-deep .p-datatable .p-datatable-tfoot>tr>td{padding:1.8px!important}.p-button.p-button-icon-only.p-button-rounded{border-radius:50%}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.grid-cell{overflow:visible!important}.p-datatable .p-cell-editing{overflow:visible!important;position:relative;z-index:1}td,.p-editable-column{overflow:visible!important}.p-editable-column input{width:100%}::ng-deep .p-tabview .p-tabview-panels{overflow:visible!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.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: "directive", type: i5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i5.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "directive", type: i5.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i5.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i5.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i5.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i6.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: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiFormulaBoxComponent, selector: "Tsi-Formula-Box", inputs: ["value", "endPoint"], outputs: ["valueChange"] }, { kind: "component", type: TsiTimePickerComponent, selector: "tsi-time-picker", outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCheckboxDisplayComponent, selector: "Tsi-Checkbox-Display", inputs: ["inputData"] }, { kind: "component", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: TsiDateDisplayComponent, selector: "Tsi-Date-Display", inputs: ["inputData", "showTime"] }, { kind: "component", type: TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: TsiTimeDisplayComponent, selector: "tsi-time-display", inputs: ["inputData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
7421
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: { selectedItems: "selectedItems", configuration: "configuration", key: "key", items: "items", saveEvent: ["events", "saveEvent"], showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showEditButton: "showEditButton", showRowSummary: "showRowSummary", scrollHeight: "scrollHeight", rowPerPage: "rowPerPage", pageSize: "pageSize", columns: "columns", gridData: "gridData", isTableLoading: "isTableLoading", parent: "parent", events: "events", showSaveButton: "showSaveButton", showActionColumn: "showActionColumn", enableRowDisabling: "enableRowDisabling", rowSummaryConfig: "rowSummaryConfig", showHaveSumary: "showHaveSumary", showRowSumary: "showRowSumary", selectKeyOnly: "selectKeyOnly", selectionMode: "selectionMode", showConsultButton: "showConsultButton", editableGridBusinessClass: "editableGridBusinessClass", orderColumn: "orderColumn", deleteLineButtonDisabled: "deleteLineButtonDisabled", id: "id" }, outputs: { itemsSave: "itemsSave", refreshEventEmitter: "refreshEventEmitter", saveDataEventEmitter: "saveDataEventEmitter", rowChangedEventEmitter: "rowChangedEventEmitter", selectedRowEventEmitter: "selectedRowEventEmitter", addedRowEventEmitter: "addedRowEventEmitter", focusOutEventEmitter: "focusOutEventEmitter", cellChanged: "cellChanged", rowDeletedEventEmitter: "rowDeletedEventEmitter", selectedItemsChange: "selectedItemsChange", onRowSelect: "onRowSelect", focusOutRow: "focusOutRow", onConsultClicked: "onConsultClicked" }, providers: [GenericValidationStateService], viewQueries: [{ propertyName: "editableTable", first: true, predicate: ["editableTable"], descendants: true }, { propertyName: "dt", first: true, predicate: ["dt"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"card\">\r\n <p-table #dt [selectionMode]=\"selectionMode\" [(selection)]=\"selectedItems\" editMode=\"row\"\r\n [paginator]=\"gridData.length > pageSize\" [rowsPerPageOptions]=\"rowPerPage\" [rows]=\"pageSize\"\r\n (onRowSelect)=\"onRowSelected($event)\" (onRowUnselect)=\"onRowUnselect($event)\" [scrollable]=\"true\"\r\n [resizableColumns]=\"true\" columnResizeMode=\"expand\" appendTo=\"body\" styleClass=\"p-datatable-sm\" [value]=\"gridData\"\r\n [columns]=\"selectedColumns\" [dataKey]=\"key\" [scrollHeight]=\"scrollHeight\" styleClass=\"p-datatable-gridlines\"\r\n (selectionChange)=\"selectionChange($event)\" #editableTable [totalRecords]=\"gridData.length\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <p-multiSelect [options]=\"columns\" [(ngModel)]=\"selectedColumns\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" optionLabel=\"translatedHeader\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'choose_columns' | localize }}\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.header | localize }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n\r\n <tr>\r\n <ng-container *ngIf=\"selectionMode != multipleGridSelectionMode\">\r\n <th pResizableColumn pFrozenColumn style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\"></th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <th pResizableColumn pFrozenColumn style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n </ng-container>\r\n \r\n <th pResizableColumn pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n\r\n <!-- <th pResizableColumn pFrozenColumn *ngIf=\"showEditButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th> -->\r\n \r\n <th pResizableColumn pFrozenColumn *ngIf=\"showConsultButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n <th pResizableColumn pFrozenColumn *ngIf=\"showDeleteButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\r\n\r\n <th pResizableColumn pFrozenColumn [frozen]=\"col.isFrozen\" [style]=\"col.style\" scope=\"col\"\r\n style=\"min-width:3rem;\" pSortableColumn=\"{{col.field}}\" *ngFor=\"let col of columns\"\r\n pTooltip=\"{{col.toolTipText | localize }}\" tooltipPosition=\"top\" pReorderableColumn>{{ col.header | localize\r\n }}\r\n <p-sortIcon field=\"{{col.field}}\"></p-sortIcon>\r\n <Tsi-Bubble-Info [infoText]=\"col.infoText | localize\"></Tsi-Bubble-Info>\r\n </th>\r\n <th style=\"min-width:3rem\" *ngIf=\"showRowSummary\" scope=\"col\">{{'RowSummary' | localize}}</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-editing=\"editing\" let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n \r\n <tr [pEditableRow]=\"item\"\r\n *ngIf=\"selectionMode == multipleGridSelectionMode || selectionMode == undefined; else selectionModeBlock\"\r\n (focusOut)=\"onFocusOutRow(item)\">\r\n \r\n <td style=\"text-align: center;\">\r\n <p-tableCheckbox [value]=\"item\" ></p-tableCheckbox>\r\n </td>\r\n\r\n <!-- <td pFrozenColumn style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\"> -->\r\n\r\n\r\n <!-- <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td> -->\r\n\r\n <!-- <td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <button *ngIf=\"!editing\" pButton pRipple type=\"button\" pInitEditableRow icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-text\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n class=\"p-button-rounded p-button-text p-button-success -ml-1\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pCancelEditableRow icon=\"pi pi-times\"\r\n class=\"p-button-rounded p-button-text p-button-danger -ml-2\">\r\n </button>\r\n </div>\r\n </td> -->\r\n <td pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\"></td>\r\n\r\n <td pFrozenColumn *ngIf=\"showConsultButton\" style=\"left: -1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-consult-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-eye\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_consulter\"\r\n styleClass=\"p-button-rounded p-button-text p-button-secondary\" (click)=\"consult(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n <td pFrozenColumn *ngIf=\"showDeleteButton\" \r\n style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-delete-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [disabled]=\"isDeleteButtonDisabled(item)\" type=\"button\" icon=\"p-button-icon pi pi-trash\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_supprimer\"\r\n styleClass=\"p-element p-button-rounded p-button-text p-button-danger p-button p-component p-button-icon-only\"\r\n (click)=\"delete(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n\r\n <td class=\"ui-resizable-column\" pFrozenColumn [frozen]=\"col.isFrozen\" *ngFor=\"let col of columns\"\r\n [ngStyle]=\"isAr ? {'text-align': 'start'} : {}\">\r\n \r\n \r\n <div *ngIf=\"col.displayOnly || disabled; else ordinaryBloc\">\r\n\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteOutputBlock\">\r\n <Tsi-Search-Combo [disabled]=\"true\" [elementSourceUrl]=\"col.elementSourceUrl\"\r\n [businessClass]=\"col.businessClass\" [currentRowItem]=\"item\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" [listSourceUrl]=\"col.listSourceUrl\" label-field=\"{{col.labelField}}\"\r\n [isFiltered]=\"col.isFiltered\" [datasource]=\"col.datasource\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <ng-template #currencySocieteOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Display -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DATE; else checkBoxOutputBlock\">\r\n <Tsi-Date-Display [showTime]=\"col.showTime\" [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox-Display -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CHECKBOX; else decimalOutputBlock\">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else timeOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Display -->\r\n <ng-template #timeOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaOutputBlock\">\r\n <tsi-time-display [inputData]=\"item[col.field]\"></tsi-time-display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Formula-Display -->\r\n <ng-template #formulaOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextOutputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{item[col.field]}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n\r\n <ng-template #ordinaryBloc> \r\n \r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"col.elementSourceUrl\" (bindChange)=\"inputChanged(col)\"\r\n [businessClass]=\"col.businessClass\" [listSourceUrl]=\"col.listSourceUrl\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" label-field=\"{{col.labelField}}\" [isFiltered]=\"col.isFiltered\"\r\n [currentRowItem]=\"item\" (bindChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [datasource]=\"col.datasource\" [showSearchButton]=\"col.showSearchButton ?? true\"\r\n [showAddButton]=\"col.showAddButton ?? true\" [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"col.inputName\" [disabled]=\"col.disabled\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [inputName]=\"col.inputName\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [numOfDecimal]=\"col.numOfDecimal\" [disabled]=\"col.disabled\">\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=\"col.type == inputTypes.DATE; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [showTime]=\"col.showTime\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [numOfDecimal]=\"col.numOfDecimal\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Integer [inputName]=\"col.inputName\" [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\r\n </Tsi-Integer>\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=\"col.type == inputTypes.RATE_INPUT; else timeInputBloc\">\r\n <Tsi-Rate-Input [inputName]=\"col.inputName\" [numOfDecimal]=\"col.numOfDecimal\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-picker bloc -->\r\n <ng-template #timeInputBloc>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaInputBlock\">\r\n <tsi-time-picker (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [inputName]=\"col.inputName\"\r\n [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </tsi-time-picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #formulaInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextInputBlock\">\r\n <!--<Tsi-Bubble-Info\r\n [infoText]=\"['formula_explication',\r\n ]\"></Tsi-Bubble-Info> -->\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\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-Text-Box [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\" (keydown)=\"handleKeydown($event)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [inputName]=\"col.inputName\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Text-Box>\r\n \r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n </td>\r\n\r\n <td *ngIf=\"showRowSummary\" class=\"font-bold\">\r\n {{rowSummary(item)}}\r\n </td>\r\n </tr>\r\n\r\n <ng-template #selectionModeBlock>\r\n <ng-container>\r\n <tr [pEditableRow]=\"item\" [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"rowIndex\"\r\n (focusOut)=\"onFocusOutRow(item)\">\r\n\r\n <!-- <td pFrozenColumn style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\"> -->\r\n\r\n <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\r\n\r\n <!-- <td *ngIf=\"selectionMode == multipleGridSelectionMode\" style=\"width: 2rem;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </td> -->\r\n\r\n <!-- <td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem;left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <button *ngIf=\"!editing\" pButton pRipple type=\"button\" pInitEditableRow icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-text\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n class=\"p-button-rounded p-button-text p-button-success -ml-1\">\r\n </button>\r\n <button *ngIf=\"editing\" pButton pRipple type=\"button\" pCancelEditableRow icon=\"pi pi-times\"\r\n class=\"p-button-rounded p-button-text p-button-danger -ml-2\">\r\n </button>\r\n </div>\r\n </td> -->\r\n \r\n <td pFrozenColumn *ngIf=\"showHaveSumary\" scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\">\r\n </td>\r\n \r\n <td pFrozenColumn pResizableColumn *ngIf=\"showConsultButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1 btn-consult-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-eye\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_consulter\"\r\n styleClass=\"p-button-rounded p-button-text p-button-secondary\" (click)=\"consult(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n\r\n <td pFrozenColumn pResizableColumn *ngIf=\"showDeleteButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1 btn-delete-style\">\r\n <div class=\"p-0\">\r\n <Tsi-Button type=\"button\" icon=\"p-button-icon pi pi-trash\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n tooltipText=\"shared_edittable_supprimer\"\r\n styleClass=\"p-element p-button-rounded p-button-text p-button-danger p-button p-component p-button-icon-only\"\r\n (click)=\"delete(item)\"></Tsi-Button>\r\n </div>\r\n </td>\r\n \r\n <td class=\"ui-resizable-column\" pFrozenColumn [frozen]=\"col.isFrozen\" *ngFor=\"let col of columns\">\r\n\r\n <div *ngIf=\"col.displayOnly || disabled; else ordinaryBloc\">\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteOutputBlock\">\r\n <Tsi-Search-Combo [disabled]=\"true\" [elementSourceUrl]=\"col.elementSourceUrl\"\r\n [businessClass]=\"col.businessClass\" [currentRowItem]=\"item\" [(bind)]=\"item[col.field]\"\r\n id-field=\"{{col.idField}}\" [listSourceUrl]=\"col.listSourceUrl\" label-field=\"{{col.labelField}}\"\r\n [isFiltered]=\"col.isFiltered\" [datasource]=\"col.datasource\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <ng-template #currencySocieteOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Display -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DATE; else checkBoxOutputBlock\">\r\n <Tsi-Date-Display [showTime]=\"col.showTime\" [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox-Display -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CHECKBOX; else decimalOutputBlock\">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else timeOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Display -->\r\n <ng-template #timeOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME; else formulaOutputBlock\">\r\n <tsi-time-display [inputData]=\"item[col.field]\"></tsi-time-display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Formula-Display -->\r\n <ng-template #formulaOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextOutputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{item[col.field]}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n \r\n <ng-template #ordinaryBloc>\r\n <!-- Tsi-Search-Combo -->\r\n <div *ngIf=\"col.type == inputTypes.SEARCH_COMBO; else currencySocieteInputBlock\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"col.elementSourceUrl\" (bindChange)=\"inputChanged(col)\"\r\n [listSourceUrl]=\"col.listSourceUrl\" [(bind)]=\"item[col.field]\" id-field=\"{{col.idField}}\"\r\n label-field=\"{{col.labelField}}\" [isFiltered]=\"col.isFiltered\" [businessClass]=\"col.businessClass\"\r\n (bindChange)=\"onCellValueChanged(col, $event, item)\" [currentRowItem]=\"item\"\r\n [datasource]=\"col.datasource\" [disabled]=\"col.disabled\"\r\n [showSearchButton]=\"col.showSearchButton ?? true\" [showAddButton]=\"col.showAddButton ?? true\"\r\n [showUpdateButton]=\"col.showUpdateButton ?? undefined\"\r\n [showConsultButton]=\"col.showConsultButton ?? undefined\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [inputName]=\"col.inputName\"></Tsi-Search-Combo>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Societe-Input -->\r\n <ng-template #currencySocieteInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherInputBlock\">\r\n <Tsi-Currency-Societe-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [(inputField)]=\"item[col.field]\" (inputFieldChange)=\"inputChanged(col)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else datePickerInputBlock\">\r\n <Tsi-Currency-Other-Input [disabled]=\"col.disabled\" [inputName]=\"col.inputName\"\r\n [inputId]=\"col.field\" (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [numOfDecimal]=\"col.numOfDecimal\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DATE; else checkBoxInputBlock\">\r\n <Tsi-Date-Picker [showTime]=\"col.showTime\" [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.CHECKBOX; else decimalInputBlock\">\r\n <Tsi-CheckBox [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\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=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\" (inputFieldChange)=\"inputChanged(col)\"\r\n [(inputField)]=\"item[col.field]\" [numOfDecimal]=\"col.numOfDecimal\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\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=\"col.type == inputTypes.INTEGER; else rateInputBlock\">\r\n <Tsi-Integer [class]=\"'max-w-4rem'\" [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\">\r\n </Tsi-Integer>\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=\"col.type == inputTypes.RATE_INPUT; else timeInputBloc\">\r\n <Tsi-Rate-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n (inputFieldChange)=\"inputChanged(col)\" [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Rate-Input>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Time-Picker -->\r\n <ng-template #timeInputBloc>\r\n <ng-container *ngIf=\"col.type == inputTypes.TIME else formulaInputBlock\">\r\n <tsi-time-picker (inputFieldChange)=\"onCellValueChanged(col, $event, item)\"\r\n [inputName]=\"col.inputName\" [inputId]=\"col.field\" [(inputField)]=\"item[col.field]\"\r\n [disabled]=\"col.disabled\" [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </tsi-time-picker>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #formulaInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.FORMULA_TEXT_BOX; else defaultTextInputBlock\">\r\n <Tsi-Formula-Box [inputName]=\"col.inputName\" [(value)]=\"item[col.field]\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"></Tsi-Formula-Box>\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-Text-Box [inputId]=\"col.field\" [disabled]=\"col.disabled\" (inputFieldChange)=\"inputChanged(col)\"\r\n [(inputField)]=\"item[col.field]\" (keydown)=\"handleKeydown($event)\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [inputName]=\"col.inputName\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\">\r\n </Tsi-Text-Box>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n </td>\r\n <td *ngIf=\"showRowSummary\" class=\"font-bold\">\r\n {{rowSummary(item)}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"showHaveSumary\" pTemplate=\"footer\" let-columns>\r\n\r\n <tr class=\"tfooter\">\r\n <!-- <td pFrozenColumn scope=\"col\" style=\"left: 1rem !important; width:3rem !important;\"></td> -->\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"min-width:2rem; left: 1rem !important; width:2rem !important;\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </td>\r\n <td pFrozenColumn scope=\"col\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\">Total</td>\r\n <td pFrozenColumn *ngIf=\"showDeleteButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <td pFrozenColumn style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <!--<td pFrozenColumn *ngIf=\"showEditButton\" style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\"> -->\r\n <td pFrozenColumn *ngIf=\"showConsultButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\r\n <td pFrozenColumn [frozen]=\"col.isFrozen\" [style]=\"col.style\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <div *ngIf=\"col.haveSummary\">\r\n <!-- Tsi-Currency-Societe-Display -->\r\n <div *ngIf=\"col.type == inputTypes.CURRENCY_SOCIETE_INPUT; else currencyOtherOutputBlock\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Display -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.CURRENCY_OTHER_INPUT; else decimalOutputBlock\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"getSummary(col)\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Display -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerOutputBlock\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer-Display -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.INTEGER; else rateOutputBlock\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col)\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Display -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.RATE_INPUT; else defaultTextOutputBlock\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"getSummary(col)\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Default -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{getSummary(col)}}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"summary\">\r\n <tr>\r\n {{'TotalRecordsCount' | localize }} {{gridData.length}}\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div>\r\n <Tsi-Button *ngIf=\"showAddButton\" style=\"height: 20px;width: 20px;\" icon=\"p-button-icon pi pi-plus\" type=\"button\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_ajouter\"\r\n styleClass=\"p-element p-button-sm p-button-success p-button-text p-button p-component p-button-icon-only ng-star-inserted\"\r\n (click)=\"addRow()\"></Tsi-Button>\r\n </div>\r\n</div>", styles: [".tfooter{position:sticky;bottom:0;width:100%;z-index:10}::ng-deep .p-datatable .p-datatable-tfoot>tr>td{padding:1.8px!important}.p-button.p-button-icon-only.p-button-rounded{border-radius:50%}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.grid-cell{overflow:visible!important}.p-datatable .p-cell-editing{overflow:visible!important;position:relative;z-index:1}td,.p-editable-column{overflow:visible!important}.p-editable-column input{width:100%}::ng-deep .p-tabview .p-tabview-panels{overflow:visible!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.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: "directive", type: i5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i5.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "directive", type: i5.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i5.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i5.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i5.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i6.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: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiFormulaBoxComponent, selector: "Tsi-Formula-Box", inputs: ["value", "endPoint"], outputs: ["valueChange"] }, { kind: "component", type: TsiTimePickerComponent, selector: "tsi-time-picker", outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCheckboxDisplayComponent, selector: "Tsi-Checkbox-Display", inputs: ["inputData"] }, { kind: "component", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: TsiDateDisplayComponent, selector: "Tsi-Date-Display", inputs: ["inputData", "showTime"] }, { kind: "component", type: TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: TsiTimeDisplayComponent, selector: "tsi-time-display", inputs: ["inputData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
7384
7422
  }
7385
7423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditableGridComponent, decorators: [{
7386
7424
  type: Component,
@@ -7443,8 +7481,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7443
7481
  type: Input
7444
7482
  }], showConsultButton: [{
7445
7483
  type: Input
7446
- }], disabled: [{
7447
- type: Input
7448
7484
  }], editableGridBusinessClass: [{
7449
7485
  type: Input
7450
7486
  }], orderColumn: [{
@@ -7569,11 +7605,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7569
7605
  }]
7570
7606
  }], ctorParameters: () => [{ type: i1.HttpClient }] });
7571
7607
 
7608
+ class FormStateService {
7609
+ constructor() {
7610
+ this.closeModal = true;
7611
+ }
7612
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7613
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormStateService }); }
7614
+ }
7615
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormStateService, decorators: [{
7616
+ type: Injectable
7617
+ }], ctorParameters: () => [] });
7618
+
7572
7619
  class TsiModalFooterComponent {
7573
- constructor(_injector, dialogDataService, _layoutService, localize) {
7620
+ constructor(_injector, dialogDataService, _layoutService, _formStateService, localize) {
7574
7621
  this._injector = _injector;
7575
7622
  this.dialogDataService = dialogDataService;
7576
7623
  this._layoutService = _layoutService;
7624
+ this._formStateService = _formStateService;
7577
7625
  this.localize = localize;
7578
7626
  //#region Inputs
7579
7627
  this.cancelDisabled = false;
@@ -7587,6 +7635,7 @@ class TsiModalFooterComponent {
7587
7635
  this.additionalButtonIcon = 'p-button-icon p-button-icon-left pi pi-times';
7588
7636
  this.additionalButtonDisabled = false;
7589
7637
  this.showAdditionalButton = false;
7638
+ this.showSaveAndCloseButton = true;
7590
7639
  //#endregion
7591
7640
  //#region Outputs
7592
7641
  this.onCancelClick = new EventEmitter();
@@ -7647,8 +7696,14 @@ class TsiModalFooterComponent {
7647
7696
  onSave() {
7648
7697
  if (this.hasActiveRequests)
7649
7698
  return;
7699
+ this._formStateService.closeModal = false;
7650
7700
  this.onSaveClick.emit();
7651
7701
  }
7702
+ onSaveAndClose() {
7703
+ if (this.hasActiveRequests)
7704
+ return;
7705
+ this._formStateService.closeModal = true;
7706
+ }
7652
7707
  onCancel() {
7653
7708
  this.onCancelClick.emit();
7654
7709
  }
@@ -7671,13 +7726,13 @@ class TsiModalFooterComponent {
7671
7726
  this.hasActiveRequests = value.hasActiveRequest;
7672
7727
  });
7673
7728
  }
7674
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiModalFooterComponent, deps: [{ token: i0.EnvironmentInjector }, { token: DialogDataService }, { token: LayoutService }, { token: LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
7675
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: { cancelDisabled: "cancelDisabled", saveDisabled: "saveDisabled", cancelLabel: "cancelLabel", saveLabel: "saveLabel", isConsult: "isConsult", isDuplicate: "isDuplicate", isOnlyCreate: "isOnlyCreate", additionalButtonLabel: "additionalButtonLabel", additionalButtonIcon: "additionalButtonIcon", additionalButtonDisabled: "additionalButtonDisabled", showAdditionalButton: "showAdditionalButton" }, outputs: { onCancelClick: "onCancelClick", onSaveClick: "onSaveClick", onAdditionalButtonClick: "onAdditionalButtonClick" }, ngImport: i0, template: "<div *ngIf=\"!footerTemplateRef\" #footer class=\"p-dialog-footer {{stylePositionClass}} flex z-5\" [ngClass]=\"isOnlyCreate ? '': 'absolute bottom-0'\"\r\n style=\"direction: rtl;\">\r\n\r\n <div *ngIf=\"showFiles\">\r\n <Tsi-Button type=\"button\" text=\"Files\" icon=\"p-button-icon p-button-icon-left pi pi-paperclip\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label\" (click)=\"onFiles()\">\r\n </Tsi-Button>\r\n </div>\r\n <div [ngStyle]=\"isAr ? {'text-align': 'end'} : {}\" class=\"col p-0 m-0\">\r\n\r\n <Tsi-Button *ngIf=\"showAdditionalButton\"\r\n [text]=\"additionalButtonLabel | localize\" icon=\"{{additionalButtonIcon}}\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 additional-btn\"\r\n (click)=\"onAdditionalButton()\" [disabled]=\"additionalButtonDisabled || hasActiveRequests\"></Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"(this.isDuplicate ? 'gesc_achats_commande_dupliquer' : saveLabel) | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSave()\" [disabled]=\"saveDisabled || hasActiveRequests\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button\r\n [text]=\"cancelLabel | localize\" icon=\"p-button-icon p-button-icon-left pi pi-times\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 cancel-btn\"\r\n (click)=\"onCancel()\" [disabled]=\"cancelDisabled\"></Tsi-Button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"footerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\r\n</div>", styles: ["::ng-deep .p-dialog .p-dialog-footer{width:100%;height:2.5rem}::ng-deep .p-button .p-button-icon{margin-top:2px!important}::ng-deep .cancel-btn{background-color:#f7f7f7!important;color:#000!important}::ng-deep .save-btn{background-color:var(--primary-color)!important;color:#fff!important}::ng-deep .additional-btn{background-color:var(--primary-color)!important;color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
7729
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiModalFooterComponent, deps: [{ token: i0.EnvironmentInjector }, { token: DialogDataService }, { token: LayoutService }, { token: FormStateService }, { token: LocalizePipe }], target: i0.ɵɵFactoryTarget.Component }); }
7730
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: { cancelDisabled: "cancelDisabled", saveDisabled: "saveDisabled", cancelLabel: "cancelLabel", saveLabel: "saveLabel", isConsult: "isConsult", isDuplicate: "isDuplicate", isOnlyCreate: "isOnlyCreate", additionalButtonLabel: "additionalButtonLabel", additionalButtonIcon: "additionalButtonIcon", additionalButtonDisabled: "additionalButtonDisabled", showAdditionalButton: "showAdditionalButton", showSaveAndCloseButton: "showSaveAndCloseButton" }, outputs: { onCancelClick: "onCancelClick", onSaveClick: "onSaveClick", onAdditionalButtonClick: "onAdditionalButtonClick" }, ngImport: i0, template: "<div *ngIf=\"!footerTemplateRef\" #footer class=\"p-dialog-footer {{stylePositionClass}} flex z-5\" [ngClass]=\"isOnlyCreate ? '': 'absolute bottom-0'\"\r\n style=\"direction: rtl;\">\r\n\r\n <div *ngIf=\"showFiles\">\r\n <Tsi-Button type=\"button\" text=\"Files\" icon=\"p-button-icon p-button-icon-left pi pi-paperclip\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label\" (click)=\"onFiles()\">\r\n </Tsi-Button>\r\n </div>\r\n <div [ngStyle]=\"isAr ? {'text-align': 'end'} : {}\" class=\"col p-0 m-0\">\r\n\r\n <Tsi-Button *ngIf=\"showAdditionalButton\"\r\n [text]=\"additionalButtonLabel | localize\" icon=\"{{additionalButtonIcon}}\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 additional-btn\"\r\n (click)=\"onAdditionalButton()\" [disabled]=\"additionalButtonDisabled || hasActiveRequests\"></Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"(this.isDuplicate ? 'gesc_achats_commande_dupliquer' : saveLabel) | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSave()\" [disabled]=\"saveDisabled || hasActiveRequests\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult && showSaveAndCloseButton\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"'save_and_close_label' | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSaveAndClose()\" [disabled]=\"saveDisabled\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button\r\n [text]=\"cancelLabel | localize\" icon=\"p-button-icon p-button-icon-left pi pi-times\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 cancel-btn\"\r\n (click)=\"onCancel()\" [disabled]=\"cancelDisabled\"></Tsi-Button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"footerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\r\n</div>", styles: ["::ng-deep .p-dialog .p-dialog-footer{width:100%;height:2.5rem}::ng-deep .p-button .p-button-icon{margin-top:2px!important}::ng-deep .cancel-btn{background-color:#f7f7f7!important;color:#000!important}::ng-deep .save-btn{background-color:var(--primary-color)!important;color:#fff!important}::ng-deep .additional-btn{background-color:var(--primary-color)!important;color:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
7676
7731
  }
7677
7732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiModalFooterComponent, decorators: [{
7678
7733
  type: Component,
7679
- args: [{ selector: 'Tsi-Modal-Footer', template: "<div *ngIf=\"!footerTemplateRef\" #footer class=\"p-dialog-footer {{stylePositionClass}} flex z-5\" [ngClass]=\"isOnlyCreate ? '': 'absolute bottom-0'\"\r\n style=\"direction: rtl;\">\r\n\r\n <div *ngIf=\"showFiles\">\r\n <Tsi-Button type=\"button\" text=\"Files\" icon=\"p-button-icon p-button-icon-left pi pi-paperclip\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label\" (click)=\"onFiles()\">\r\n </Tsi-Button>\r\n </div>\r\n <div [ngStyle]=\"isAr ? {'text-align': 'end'} : {}\" class=\"col p-0 m-0\">\r\n\r\n <Tsi-Button *ngIf=\"showAdditionalButton\"\r\n [text]=\"additionalButtonLabel | localize\" icon=\"{{additionalButtonIcon}}\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 additional-btn\"\r\n (click)=\"onAdditionalButton()\" [disabled]=\"additionalButtonDisabled || hasActiveRequests\"></Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"(this.isDuplicate ? 'gesc_achats_commande_dupliquer' : saveLabel) | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSave()\" [disabled]=\"saveDisabled || hasActiveRequests\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button\r\n [text]=\"cancelLabel | localize\" icon=\"p-button-icon p-button-icon-left pi pi-times\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 cancel-btn\"\r\n (click)=\"onCancel()\" [disabled]=\"cancelDisabled\"></Tsi-Button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"footerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\r\n</div>", styles: ["::ng-deep .p-dialog .p-dialog-footer{width:100%;height:2.5rem}::ng-deep .p-button .p-button-icon{margin-top:2px!important}::ng-deep .cancel-btn{background-color:#f7f7f7!important;color:#000!important}::ng-deep .save-btn{background-color:var(--primary-color)!important;color:#fff!important}::ng-deep .additional-btn{background-color:var(--primary-color)!important;color:#fff!important}\n"] }]
7680
- }], ctorParameters: () => [{ type: i0.EnvironmentInjector }, { type: DialogDataService }, { type: LayoutService }, { type: LocalizePipe }], propDecorators: { cancelDisabled: [{
7734
+ args: [{ selector: 'Tsi-Modal-Footer', template: "<div *ngIf=\"!footerTemplateRef\" #footer class=\"p-dialog-footer {{stylePositionClass}} flex z-5\" [ngClass]=\"isOnlyCreate ? '': 'absolute bottom-0'\"\r\n style=\"direction: rtl;\">\r\n\r\n <div *ngIf=\"showFiles\">\r\n <Tsi-Button type=\"button\" text=\"Files\" icon=\"p-button-icon p-button-icon-left pi pi-paperclip\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label\" (click)=\"onFiles()\">\r\n </Tsi-Button>\r\n </div>\r\n <div [ngStyle]=\"isAr ? {'text-align': 'end'} : {}\" class=\"col p-0 m-0\">\r\n\r\n <Tsi-Button *ngIf=\"showAdditionalButton\"\r\n [text]=\"additionalButtonLabel | localize\" icon=\"{{additionalButtonIcon}}\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 additional-btn\"\r\n (click)=\"onAdditionalButton()\" [disabled]=\"additionalButtonDisabled || hasActiveRequests\"></Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"(this.isDuplicate ? 'gesc_achats_commande_dupliquer' : saveLabel) | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSave()\" [disabled]=\"saveDisabled || hasActiveRequests\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button *ngIf=\"!isConsult && showSaveAndCloseButton\"\r\n [buttonType]=\"SaveButtonType\"\r\n [text]=\"'save_and_close_label' | localize\" icon=\"pi pi-check\"\r\n styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label gap-1 save-btn\"\r\n (onClick)=\"onSaveAndClose()\" [disabled]=\"saveDisabled\">\r\n </Tsi-Button>\r\n\r\n <Tsi-Button\r\n [text]=\"cancelLabel | localize\" icon=\"p-button-icon p-button-icon-left pi pi-times\"\r\n styleClass=\"p-element p-button-text p-button p-component p-button-label gap-1 cancel-btn\"\r\n (click)=\"onCancel()\" [disabled]=\"cancelDisabled\"></Tsi-Button>\r\n </div>\r\n</div>\r\n<div *ngIf=\"footerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\r\n</div>", styles: ["::ng-deep .p-dialog .p-dialog-footer{width:100%;height:2.5rem}::ng-deep .p-button .p-button-icon{margin-top:2px!important}::ng-deep .cancel-btn{background-color:#f7f7f7!important;color:#000!important}::ng-deep .save-btn{background-color:var(--primary-color)!important;color:#fff!important}::ng-deep .additional-btn{background-color:var(--primary-color)!important;color:#fff!important}\n"] }]
7735
+ }], ctorParameters: () => [{ type: i0.EnvironmentInjector }, { type: DialogDataService }, { type: LayoutService }, { type: FormStateService }, { type: LocalizePipe }], propDecorators: { cancelDisabled: [{
7681
7736
  type: Input
7682
7737
  }], saveDisabled: [{
7683
7738
  type: Input
@@ -7699,6 +7754,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7699
7754
  type: Input
7700
7755
  }], showAdditionalButton: [{
7701
7756
  type: Input
7757
+ }], showSaveAndCloseButton: [{
7758
+ type: Input
7702
7759
  }], onCancelClick: [{
7703
7760
  type: Output
7704
7761
  }], onSaveClick: [{
@@ -7723,6 +7780,7 @@ class TsiRadioButtonComponent extends TsiInputBase {
7723
7780
  //#endregion
7724
7781
  onChangeofOptions(input) {
7725
7782
  this.inputField = input;
7783
+ this.isDirty = true;
7726
7784
  this.inputFieldChange.emit(input);
7727
7785
  }
7728
7786
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRadioButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -10797,7 +10855,7 @@ class TsiGenericGridComponent {
10797
10855
  }
10798
10856
  }
10799
10857
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiGenericGridComponent, deps: [{ token: StatusColorService }, { token: FichierService }, { token: HtmlTemplateGeneratorService }, { token: i1$1.DatePipe }, { token: TsiNotificationService }, { token: LocalizePipe }, { token: LayoutHelperService }, { token: LayoutService }, { token: i4.PrimeNGConfig }, { token: AppSettingsService }, { token: ErrorResponseManagerService }, { token: i0.EnvironmentInjector }, { token: i1$3.DynamicDialogConfig }, { token: i1$3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
10800
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericGridComponent, selector: "Tsi-Generic-Grid", inputs: { cudComponent: "cudComponent", modalSize: "modalSize", entityInfo: "entityInfo", formName: "formName", id: "id", pagedRequest: "pagedRequest", configuration: "configuration", page: "page", key: "key", columns: "columns", isSearchButtonDisabled: "isSearchButtonDisabled", filteredColumns: "filteredColumns", gridData: "gridData", isTableLoading: "isTableLoading", parent: "parent", showSearchBox: "showSearchBox", showActionColumn: "showActionColumn", showHeaderFilters: "showHeaderFilters", showFilterButton: "showFilterButton", isGridDataPagedInApi: "isGridDataPagedInApi", header: "header", ShowFilterColumns: "ShowFilterColumns", showImportExportButton: "showImportExportButton", crudService: "crudService", searchFields: "searchFields", sortMode: "sortMode", filtersHtmlTemplate: "filtersHtmlTemplate", presentationSettings: "presentationSettings", selectKeyOnly: "selectKeyOnly", selectionMode: "selectionMode", selectedItems: "selectedItems", searchOnInit: "searchOnInit", showGlobalSearch: "showGlobalSearch", showExportButton: "showExportButton", showSearchField: "showSearchField", showCalenderView: "showCalenderView", calenderSchema: "calenderSchema", showCardView: "showCardView", showKanbanView: "showKanbanView", showKanbanViewOfWorkFlowEtat: "showKanbanViewOfWorkFlowEtat", businessClass: "businessClass", page$: "page$", checkedByField: "checkedByField", selectAll: "selectAll", targetBusinessClass: "targetBusinessClass", descriminatorValue: "descriminatorValue" }, outputs: { onSave: "onSave", editRow: "editRow", deleteRow: "deleteRow", load: "load", buttonColumnClicked: "buttonColumnClicked", filtersHtmlTemplateChange: "filtersHtmlTemplateChange", selectedItemsChange: "selectedItemsChange", searchFieldsValueChanged: "searchFieldsValueChanged", calendarEventClick: "calendarEventClick", statusFilterChanged: "statusFilterChanged" }, viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "tableHeaderCheckbox", first: true, predicate: ["tableHeaderCheckbox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"grid\">\r\n\r\n <div class=\"col-12\" [@slideInOut]=\"showSearchField ? 'in' : 'out'\" *ngIf=\"showGlobalSearch\">\r\n <tsi-search-box \r\n [isRtlMode]=\"isRtlMode\" \r\n [(searchFields)]=\"searchFields\" \r\n [businessClass]=\"businessClass\"\r\n [entityInfo]=\"entityInfo\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [descriminatorValue]=\"descriminatorValue\"\r\n (searchFieldsChange)=\"searchFieldsValueChanges($event)\" \r\n (keywordValueChanged)=\"keywordValueChanged($event)\"\r\n (searchFieldsApplied)=\"search($event)\"\r\n (statusFilterChanged)=\"onStatusFilterChanged($event)\"\r\n (workflowEtatFilterChanged)=\"onWorkflowEtatFilterChanged($event)\"\r\n (comboBoxLabelChanged)=\"comboBoxLabelChanged($event)\">\r\n </tsi-search-box>\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === false && _showCardView === false && _showKanbanView === false\" class=\"col-12\">\r\n \r\n <p-table #dt \r\n [lazy]=\"isGridDataPagedInApi\" \r\n [lazyLoadOnInit]=\"searchOnInit\" \r\n [totalRecords]=\"page.totalCount\" \r\n [loading]=\"page.loading\" \r\n [reorderableColumns]=\"true\"\r\n [resizableColumns]=\"true\" \r\n [columns]=\"selectedColumns\" \r\n [value]=\"page.items\"\r\n [paginator]=\"true\" \r\n [scrollable]=\"true\" \r\n [(rows)]=\"page.pageSize\"\r\n [showCurrentPageReport]=\"true\" \r\n [globalFilterFields]=\"fields()\" \r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\" \r\n [sortMode]=\"sortMode\"\r\n [multiSortMeta]=\"sortMetas\" \r\n [selectAll]=\"selectAll\"\r\n [selectionMode]=\"selectionMode\" \r\n [(selection)]=\"selection\" \r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n (onRowUnselect)=\"onSelectedItemsChanged()\"\r\n (selectAllChange)=\"onSelectAllChange($event)\" \r\n (onRowSelect)=\"onSelectedItemsChanged()\"\r\n columnResizeMode=\"expand\" \r\n dataKey=\"{{ key }}\" \r\n scrollHeight=\"600px\" \r\n styleClass=\"p-datatable-gridlines\" \r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {{getFirstElementIndex()}} {{\r\n 'to' | localize\r\n }} {last} {{ 'of' | localize }} \r\n {totalRecords} {{ 'entries' | localize }}\" \r\n >\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex justify-content-between align-items-center\">\r\n <div class=\"ml-2\">\r\n {{ header | localize }}\r\n </div>\r\n\r\n <div class=\"p-1 flex align-items-center\">\r\n <div *ngIf=\"showFilterButton\" presentationDesignerBase=\"grid_toggle_header_filters\">\r\n <Tsi-Button [icon]=\"filterIcon\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"filterTooltip\"\r\n styleClass=\"p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"toggleHeaderFilters()\"></Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showHeaderFilters\" presentationDesignerBase=\"grid_toggle_header_filter_mode\">\r\n <Tsi-Button [icon]=\"filterModeIcon\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n [tooltipText]=\"filterModeTooltip\" [styleClass]=\"'ml-1 p-button-primary p-button-icon-only'\"\r\n (click)=\"toggleHeaderFiltersMode()\"></Tsi-Button>\r\n </div>\r\n\r\n <div presentationDesignerBase=\"grid_clear_filter_button\">\r\n <Tsi-Button [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"'icon-clear-filter'\"\r\n styleClass=\"ml-1 p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"onClearFilters()\" [iconSrc]=\"'assets/layout/images/icon/icon-clear-filter.svg'\">\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showExportButton\" presentationDesignerBase=\"grid_export_button\">\r\n <Tsi-Button icon=\"p-button-icon pi pi-file-excel\" (onClick)=\"exportExcel()\"\r\n styleClass=\"p-element p-button-success hover:shadow-6 ml-2 p-1 p-button p-component p-button-icon-only\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"XLS\"></Tsi-Button>\r\n </div>\r\n\r\n <p-multiSelect class=\"ml-1\" [options]=\"columns\" [ngModel]=\"selectedColumns\" optionLabel=\"translatedHeader\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" [style]=\"{ 'min-width': '180px' }\"\r\n placeholder=\"{{ 'choose_columns' | localize }}\" (ngModelChange)=\"onSelectedColumnsChange($event)\">\r\n </p-multiSelect>\r\n </div>\r\n\r\n <!-- <div> -->\r\n <!-- <button *ngIf=\"showGlobalSearch\" type=\"button\" pButton pRipple icon=\"pi pi-search\" (click)=\"search()\"></button> -->\r\n <!-- </div> -->\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : 'z-index-checkbox'\" *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </div>\r\n </th>\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n <th *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\"\r\n scope=\"col\" [style]=\"col.style\" pTooltip=\"{{ col.toolTipText | localize }}\" tooltipPosition=\"top\"\r\n [pSortableColumn]=\"(!col.isButton || !isOverflowColumn(col.field) || !(col.type == displayTypes.IMAGE_DISPLAY)) ? \r\n col.field : null\"\r\n [pResizableColumnDisabled]=\"col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)\"\r\n [tooltipDisabled]=\"col.isButton || isOverflowColumn(col.field)\" \r\n [pReorderableColumnDisabled]=\"col.isButton || isOverflowColumn(col.field)\" pReorderableColumn\r\n pResizableColumn [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\"\r\n [class.disabled-column]=\"col.isButton || isOverflowColumn(col.field) || col.type === displayTypes.IMAGE_DISPLAY\" \r\n [ngClass]=\"[\r\n getHeaderClassColor(col.type),\r\n (col.isButton || isOverflowColumn(col.field)) ? 'w-1rem' : '',\r\n (col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)) ? 'non-resizable-column' : '',\r\n ]\"\r\n [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\">\r\n\r\n <ng-container *ngIf=\"notInSpecifiedColumn(col.field)\">\r\n <span>\r\n <table class=\"p-0 m-0\">\r\n <tr>\r\n <td class=\"col p-0 m-0\" [ngClass]=\"{'w-1rem': col.isButton}\">\r\n {{ col.header | localize }}\r\n </td>\r\n <td class=\"col-fixed p-0 m-0\" style=\"width: 1rem\">\r\n <p-sortIcon \r\n *ngIf=\"col.type !== displayTypes.IMAGE_DISPLAY\"\r\n class=\"w-1rem m-0 p-0\"\r\n field=\"{{ col.field }}\"\r\n ></p-sortIcon>\r\n </td>\r\n </tr>\r\n </table>\r\n </span>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n\r\n <tr *ngIf=\"showHeaderFilters\">\r\n <!-- <th scope=\"col\" style=\"width:3rem\"></th>\r\n <th scope=\"col\" style=\"width:3rem\"></th> -->\r\n <th [ngClass]=\"page.loading ? 'no-z-index' : ''\" *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"width: 4rem\"></th>\r\n <th style=\"overflow: inherit\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\" [showButtons]=\"false\"\r\n [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </th>\r\n </tr>\r\n \r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\r\n <!-- CASE : multiple selection -->\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\" *ngIf=\"\r\n selectionMode == multipleGridSelectionMode;\r\n else notMultipleSelectionModeBlock\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event,item)\" (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\">\r\n <td [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n <!-- <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-pencil\" class=\"p-button-rounded p-button-text\"\r\n (click)=\"edit(item)\"></button>\r\n </div>\r\n </td>\r\n <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\"\r\n class=\"p-button-rounded p-button-text p-button-danger\" (click)=\"delete(item)\"></button>\r\n </div>\r\n </td> -->\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n >\r\n\r\n <!-- style=\"height: min-content; margin-left: -.5rem;\" -->\r\n <!-- Tsi-Currency-Societe-Input -->\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div> \r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-column -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"font-bold status-badge\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayTextEyeBlock\" >\r\n <div class=\"align-items-center frozen-column-rtl-mode justify-content-center p-2\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\"\r\n icon=\"{{ col.buttonIcon }}\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n [text]=\"col.buttonLabel ? col.buttonLabel : item[col.field]\"\r\n (click)=\"buttonClicked(item, col.field)\" ></Tsi-Button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n </tr>\r\n \r\n <!-- CASE : single or none selection -->\r\n <ng-template #notMultipleSelectionModeBlock>\r\n <ng-container>\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\"\r\n [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"index\" id=\"tsi-grid-row-{{index}}\">\r\n\r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" \r\n style=\"height: min-content; background: white;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n }\">\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-prop -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"status-badge font-bold\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"status-badge font-bold\">\r\n {{ item[col.field] }}\r\n </span>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n \r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayImage\">\r\n <div [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n class=\"flex align-items-center frozen-column-rtl-mode justify-content-center p-0\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\" icon=\"{{ col.buttonIcon }}\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n (click)=\"buttonClicked(item, col.field)\"\r\n [text]=\"col.isIconButton ? '' : (col.buttonLabel ?? item[col.field])\"></Tsi-Button>\r\n\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayTextEyeBlock\">\r\n <div class=\"h-2rem\">\r\n <tsi-image-display [headerTitles]=\"getHeaderTitles(col.headerTitles, item)\"\r\n [isRounded]=\"col.isRounded\" [src]=\"item[col.field]\" [alt]=\"col.header || 'image'\"\r\n [width]=\"'100%'\" [height]=\"'100%'\">\r\n </tsi-image-display>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n <span class=\"cursor-pointer pi pi-eye\" (click)=\"eyeClicked(item[col.field])\"></span>\r\n {{ truncateString(item[col.field], 50) }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"></td>\r\n\r\n <ng-container *ngFor=\"let col of selectedColumns\">\r\n <td class=\"pr-0\" *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\">\r\n <div *ngIf=\"col.showSummary\">\r\n <!-- CURRENCY_SOCIETE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- INTEGER_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.INTEGER_DISPLAY\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Integer-Display>\r\n </div>\r\n\r\n <!-- RATE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.RATE_DISPLAY\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction ?? false\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Rate-Display>\r\n </div>\r\n\r\n <!-- DECIMAL_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.DECIMAL_DISPLAY\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col.field)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </div>\r\n\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Other-Display>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container> \r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"summary\">\r\n {{ page.totalCount }} {{ \"records_label\" | localize }}\r\n <span *ngIf=\"colorful\">\r\n <span>View Grid</span>\r\n <span class=\"pl-2\">| SearchOnInit : {{ searchOnInit }}</span>\r\n <span class=\"pl-2\">| Pagination In Api : {{ isGridDataPagedInApi }}</span>\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === true\" class=\"col-12\">\r\n <tsi-calender [schema]=\"calenderSchema\" [eventsData]=\"page.items\" [crudService]=\"crudService\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" (eventClick)=\"handleCalendarEventClick($event)\"></tsi-calender>\r\n </div>\r\n\r\n <div *ngIf=\"_showCardView === true\" class=\"col-12\">\r\n <Tsi-card-list [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-card-list>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && !_showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\" [crudService]=\"crudService\">\r\n </Tsi-kanban>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && _showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban-workflow-etat [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" [descriminatorValue]=\"descriminatorValue\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-kanban-workflow-etat>\r\n </div>\r\n\r\n <div *ngIf=\"isAdvancedSearch && selectionMode == multipleGridSelectionMode\">\r\n <Tsi-Modal-Footer (onSaveClick)=\"onConfirmSelection()\" (onCancelClick)=\"onCancelSelection()\" />\r\n </div>\r\n</div>", styles: [".p-button.p-button-icon-only.p-button-rounded{border-radius:50%;height:1rem}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.p-inputgroup.rtl-mode .p-inputgroup-addon:last-child,.p-inputgroup.rtl-mode button:last-child,.p-inputgroup.rtl-mode input:last-child,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:6px 0 0 6px/6px 0px 0px 6px!important}.p-inputgroup.ltr-mode .p-inputgroup-addon:last-child,.p-inputgroup.ltr-mode button:last-child,.p-inputgroup.ltr-mode input:last-child,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:0 6px 6px 0/0px 6px 6px 0px!important}.p-paginator .p-dropdown{height:auto;border:none;border-bottom:1px solid}.p-datatable .frozen-column{position:sticky;left:0;z-index:1;background:#fff}.frozen-column-ltr-mode{min-width:2rem;position:sticky;left:0;background-color:#fff}.frozen-column-rtl-mode{min-width:2rem;position:sticky;right:0;background-color:#fff}.disabled-column{background-color:#f5f5f5;color:#d3d3d3;pointer-events:none}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:max-content;width:100%;text-align:center;white-space:nowrap;border-radius:.4rem;padding:.1rem .2rem;font-weight:600;line-height:1.2;color:#fff;box-shadow:0 1px 2px #0000000d;transition:all .2s ease-in-out;cursor:default;transform-origin:top center;border-top-left-radius:inherit;border-bottom-right-radius:inherit}.status-badge:hover{transform:scale(1.06);box-shadow:0 2px 4px #0000001a;filter:brightness(1.2)}td span,td div{padding:0 .5rem}.custom-button{display:flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.button-icon{width:1.5rem;height:1.5rem}.custom-button:hover{background-color:#f0f0f0}table{width:100%!important}.right-to-left{text-align:start}::ng-deep th.non-resizable-column .p-column-resizer{display:none!important;pointer-events:none!important}::ng-deep .cursor-follow{position:fixed;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:1000;pointer-events:none;white-space:nowrap}::ng-deep .overflow-menu.p-menu-overlay{border-radius:8px;border:none;padding:.4rem;min-width:0!important;background:#fff;box-shadow:0 8px 24px #0000001f;animation:fadeScaleIn .12s ease-out}::ng-deep .overflow-menu .p-menuitem-link{overflow:visible!important;position:relative;padding:0}::ng-deep .overflow-menu-item{padding:.55rem .75rem;border-radius:8px;gap:.5rem;font-size:.85rem;white-space:nowrap;transition:all .15s ease}::ng-deep .overflow-menu-item:hover{background-color:#f5f7fa}::ng-deep .menu-icon{font-size:.9rem;width:18px;text-align:center;opacity:.8}::ng-deep .menu-label{font-weight:400}::ng-deep .overflow-btn{width:28px;height:28px;padding:0}@keyframes fadeScaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}::ng-deep .overflow-menu .p-badge{font-size:.55rem;min-width:.9rem;height:.9rem;line-height:.9rem;font-family:inherit}::ng-deep .badge-icon.has-badge{transition:transform .2s ease-in-out;display:inline-block;position:relative;z-index:2}::ng-deep .badge-icon.has-badge:hover{transform:scale(1.4);z-index:10}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.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: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.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: "directive", type: i5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i5.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i5.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i5.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i5.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i16.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i6.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: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i19.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: TsiCheckboxDisplayComponent, selector: "Tsi-Checkbox-Display", inputs: ["inputData"] }, { kind: "component", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: TsiDateDisplayComponent, selector: "Tsi-Date-Display", inputs: ["inputData", "showTime"] }, { kind: "component", type: TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: TsiSearchBoxComponent, selector: "tsi-search-box", inputs: ["searchFields", "businessClass", "descriminatorValue", "isRtlMode", "isSearchButtonDisabled", "entityInfo", "statusMetadata"], outputs: ["searchFieldsChange", "searchFieldsApplied", "keywordValueChanged", "statusFilterChanged", "workflowEtatFilterChanged", "comboBoxLabelChanged"] }, { kind: "component", type: TsiCardListComponent, selector: "Tsi-card-list", inputs: ["cardBusinessClass", "header", "id", "page", "page$"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiImageDisplayComponent, selector: "tsi-image-display", inputs: ["src", "alt", "width", "height", "isRounded", "headerTitles"] }, { kind: "component", type: TsiKanbanComponent, selector: "Tsi-kanban", inputs: ["cardBusinessClass", "header", "id", "page$", "crudService", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiCalenderComponent, selector: "tsi-calender", inputs: ["crudService", "schema", "eventsData"], outputs: ["eventClick", "dateRangeChange"] }, { kind: "component", type: TsiKanbanWorkflowEtatComponent, selector: "Tsi-kanban-workflow-etat", inputs: ["cardBusinessClass", "header", "id", "page$", "descriminatorValue", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "component", type: DisplayNestedPropComponent, selector: "Tsi-Display-Nested-Prop", inputs: ["id", "displayValue", "sourceUrl"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
10858
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericGridComponent, selector: "Tsi-Generic-Grid", inputs: { cudComponent: "cudComponent", modalSize: "modalSize", entityInfo: "entityInfo", formName: "formName", id: "id", pagedRequest: "pagedRequest", configuration: "configuration", page: "page", key: "key", columns: "columns", isSearchButtonDisabled: "isSearchButtonDisabled", filteredColumns: "filteredColumns", gridData: "gridData", isTableLoading: "isTableLoading", parent: "parent", showSearchBox: "showSearchBox", showActionColumn: "showActionColumn", showHeaderFilters: "showHeaderFilters", showFilterButton: "showFilterButton", isGridDataPagedInApi: "isGridDataPagedInApi", header: "header", ShowFilterColumns: "ShowFilterColumns", showImportExportButton: "showImportExportButton", crudService: "crudService", searchFields: "searchFields", sortMode: "sortMode", filtersHtmlTemplate: "filtersHtmlTemplate", presentationSettings: "presentationSettings", selectKeyOnly: "selectKeyOnly", selectionMode: "selectionMode", selectedItems: "selectedItems", searchOnInit: "searchOnInit", showGlobalSearch: "showGlobalSearch", showExportButton: "showExportButton", showSearchField: "showSearchField", showCalenderView: "showCalenderView", calenderSchema: "calenderSchema", showCardView: "showCardView", showKanbanView: "showKanbanView", showKanbanViewOfWorkFlowEtat: "showKanbanViewOfWorkFlowEtat", businessClass: "businessClass", page$: "page$", checkedByField: "checkedByField", selectAll: "selectAll", targetBusinessClass: "targetBusinessClass", descriminatorValue: "descriminatorValue" }, outputs: { onSave: "onSave", editRow: "editRow", deleteRow: "deleteRow", load: "load", buttonColumnClicked: "buttonColumnClicked", filtersHtmlTemplateChange: "filtersHtmlTemplateChange", selectedItemsChange: "selectedItemsChange", searchFieldsValueChanged: "searchFieldsValueChanged", calendarEventClick: "calendarEventClick", statusFilterChanged: "statusFilterChanged" }, viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "tableHeaderCheckbox", first: true, predicate: ["tableHeaderCheckbox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"grid\">\r\n\r\n <div class=\"col-12\" [@slideInOut]=\"showSearchField ? 'in' : 'out'\" *ngIf=\"showGlobalSearch\">\r\n <tsi-search-box \r\n [isRtlMode]=\"isRtlMode\" \r\n [(searchFields)]=\"searchFields\" \r\n [businessClass]=\"businessClass\"\r\n [entityInfo]=\"entityInfo\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [descriminatorValue]=\"descriminatorValue\"\r\n (searchFieldsChange)=\"searchFieldsValueChanges($event)\" \r\n (keywordValueChanged)=\"keywordValueChanged($event)\"\r\n (searchFieldsApplied)=\"search($event)\"\r\n (statusFilterChanged)=\"onStatusFilterChanged($event)\"\r\n (workflowEtatFilterChanged)=\"onWorkflowEtatFilterChanged($event)\"\r\n (comboBoxLabelChanged)=\"comboBoxLabelChanged($event)\">\r\n </tsi-search-box>\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === false && _showCardView === false && _showKanbanView === false\" class=\"col-12\">\r\n \r\n <p-table #dt \r\n [lazy]=\"isGridDataPagedInApi\" \r\n [lazyLoadOnInit]=\"searchOnInit\" \r\n [totalRecords]=\"page.totalCount\" \r\n [loading]=\"page.loading\" \r\n [reorderableColumns]=\"true\"\r\n [resizableColumns]=\"true\" \r\n [columns]=\"selectedColumns\" \r\n [value]=\"page.items\"\r\n [paginator]=\"true\" \r\n [scrollable]=\"true\" \r\n [(rows)]=\"page.pageSize\"\r\n [showCurrentPageReport]=\"true\" \r\n [globalFilterFields]=\"fields()\" \r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\" \r\n [sortMode]=\"sortMode\"\r\n [multiSortMeta]=\"sortMetas\" \r\n [selectAll]=\"selectAll\"\r\n [selectionMode]=\"selectionMode\" \r\n [(selection)]=\"selection\" \r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n (onRowUnselect)=\"onSelectedItemsChanged()\"\r\n (selectAllChange)=\"onSelectAllChange($event)\" \r\n (onRowSelect)=\"onSelectedItemsChanged()\"\r\n columnResizeMode=\"expand\" \r\n dataKey=\"{{ key }}\" \r\n scrollHeight=\"600px\" \r\n styleClass=\"p-datatable-gridlines\" \r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {{getFirstElementIndex()}} {{\r\n 'to' | localize\r\n }} {last} {{ 'of' | localize }} \r\n {totalRecords} {{ 'entries' | localize }}\" \r\n >\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex justify-content-between align-items-center\">\r\n <div class=\"ml-2\">\r\n {{ header | localize }}\r\n </div>\r\n\r\n <div class=\"p-1 flex align-items-center\">\r\n <div *ngIf=\"showFilterButton\" presentationDesignerBase=\"grid_toggle_header_filters\">\r\n <Tsi-Button [icon]=\"filterIcon\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"filterTooltip\"\r\n styleClass=\"p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"toggleHeaderFilters()\"></Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showHeaderFilters\" presentationDesignerBase=\"grid_toggle_header_filter_mode\">\r\n <Tsi-Button [icon]=\"filterModeIcon\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n [tooltipText]=\"filterModeTooltip\" [styleClass]=\"'ml-1 p-button-primary p-button-icon-only'\"\r\n (click)=\"toggleHeaderFiltersMode()\"></Tsi-Button>\r\n </div>\r\n\r\n <div presentationDesignerBase=\"grid_clear_filter_button\">\r\n <Tsi-Button [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"'icon-clear-filter'\"\r\n styleClass=\"ml-1 p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"onClearFilters()\" [iconSrc]=\"'assets/layout/images/icon/icon-clear-filter.svg'\">\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showExportButton\" presentationDesignerBase=\"grid_export_button\">\r\n <Tsi-Button icon=\"p-button-icon pi pi-file-excel\" (onClick)=\"exportExcel()\"\r\n styleClass=\"p-element p-button-success hover:shadow-6 ml-2 p-1 p-button p-component p-button-icon-only\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"XLS\"></Tsi-Button>\r\n </div>\r\n\r\n <p-multiSelect class=\"ml-1\" [options]=\"columns\" [ngModel]=\"selectedColumns\" optionLabel=\"translatedHeader\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" [style]=\"{ 'min-width': '180px' }\"\r\n placeholder=\"{{ 'choose_columns' | localize }}\" (ngModelChange)=\"onSelectedColumnsChange($event)\">\r\n </p-multiSelect>\r\n </div>\r\n\r\n <!-- <div> -->\r\n <!-- <button *ngIf=\"showGlobalSearch\" type=\"button\" pButton pRipple icon=\"pi pi-search\" (click)=\"search()\"></button> -->\r\n <!-- </div> -->\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : 'z-index-checkbox'\" *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </div>\r\n </th>\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n <th *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\"\r\n scope=\"col\" [style]=\"col.style\" pTooltip=\"{{ col.toolTipText | localize }}\" tooltipPosition=\"top\"\r\n [pSortableColumn]=\"(!col.isButton || !isOverflowColumn(col.field) || !(col.type == displayTypes.IMAGE_DISPLAY)) ? \r\n col.field : null\"\r\n [pResizableColumnDisabled]=\"col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)\"\r\n [tooltipDisabled]=\"col.isButton || isOverflowColumn(col.field)\" \r\n [pReorderableColumnDisabled]=\"col.isButton || isOverflowColumn(col.field)\" pReorderableColumn\r\n pResizableColumn [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\"\r\n [class.disabled-column]=\"col.isButton || isOverflowColumn(col.field) || col.type === displayTypes.IMAGE_DISPLAY\" \r\n [ngClass]=\"[\r\n getHeaderClassColor(col.type),\r\n (col.isButton || isOverflowColumn(col.field)) ? 'w-1rem' : '',\r\n (col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)) ? 'non-resizable-column' : '',\r\n ]\"\r\n [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\">\r\n\r\n <ng-container *ngIf=\"notInSpecifiedColumn(col.field)\">\r\n <span>\r\n <table class=\"p-0 m-0\">\r\n <tr>\r\n <td class=\"col p-0 m-0\" [ngClass]=\"{'w-1rem': col.isButton}\">\r\n {{ col.header | localize }}\r\n </td>\r\n <td class=\"col-fixed p-0 m-0\" style=\"width: 1rem\">\r\n <p-sortIcon \r\n *ngIf=\"col.type !== displayTypes.IMAGE_DISPLAY\"\r\n class=\"w-1rem m-0 p-0\"\r\n field=\"{{ col.field }}\"\r\n ></p-sortIcon>\r\n </td>\r\n </tr>\r\n </table>\r\n </span>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n\r\n <tr *ngIf=\"showHeaderFilters\">\r\n <!-- <th scope=\"col\" style=\"width:3rem\"></th>\r\n <th scope=\"col\" style=\"width:3rem\"></th> -->\r\n <th [ngClass]=\"page.loading ? 'no-z-index' : ''\" *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"width: 4rem\"></th>\r\n <th style=\"overflow: inherit\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\" [showButtons]=\"false\"\r\n [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </th>\r\n </tr>\r\n \r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\r\n <!-- CASE : multiple selection -->\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\" *ngIf=\"\r\n selectionMode == multipleGridSelectionMode;\r\n else notMultipleSelectionModeBlock\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event,item)\" (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\">\r\n <td [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n <!-- <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-pencil\" class=\"p-button-rounded p-button-text\"\r\n (click)=\"edit(item)\"></button>\r\n </div>\r\n </td>\r\n <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\"\r\n class=\"p-button-rounded p-button-text p-button-danger\" (click)=\"delete(item)\"></button>\r\n </div>\r\n </td> -->\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n >\r\n\r\n <!-- style=\"height: min-content; margin-left: -.5rem;\" -->\r\n <!-- Tsi-Currency-Societe-Input -->\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div> \r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-column -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"font-bold status-badge\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayTextEyeBlock\" >\r\n <div class=\"align-items-center frozen-column-rtl-mode justify-content-center p-2\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\"\r\n icon=\"{{ col.buttonIcon }}\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n [text]=\"col.buttonLabel ? col.buttonLabel : item[col.field]\"\r\n (click)=\"buttonClicked(item, col.field)\" ></Tsi-Button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n </tr>\r\n \r\n <!-- CASE : single or none selection -->\r\n <ng-template #notMultipleSelectionModeBlock>\r\n <ng-container>\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\"\r\n [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"index\" id=\"tsi-grid-row-{{index}}\">\r\n\r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" \r\n style=\"height: min-content; background: white;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n }\">\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-prop -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"status-badge font-bold\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"status-badge font-bold\">\r\n {{ item[col.field] }}\r\n </span>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n \r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayImage\">\r\n <div [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n class=\"flex align-items-center frozen-column-rtl-mode justify-content-center p-0\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\" icon=\"{{ col.buttonIcon }}\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n (click)=\"buttonClicked(item, col.field)\"\r\n [text]=\"col.isIconButton ? '' : (col.buttonLabel ?? item[col.field])\"></Tsi-Button>\r\n\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayTextEyeBlock\">\r\n <div class=\"h-2rem\">\r\n <tsi-image-display [headerTitles]=\"getHeaderTitles(col.headerTitles, item)\"\r\n [isRounded]=\"col.isRounded\" [src]=\"item[col.field]\" [alt]=\"col.header || 'image'\"\r\n [width]=\"'100%'\" [height]=\"'100%'\">\r\n </tsi-image-display>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n <span class=\"cursor-pointer pi pi-eye\" (click)=\"eyeClicked(item[col.field])\"></span>\r\n {{ truncateString(item[col.field], 50) }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"></td>\r\n\r\n <ng-container *ngFor=\"let col of selectedColumns\">\r\n <td class=\"pr-0\" *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\">\r\n <div *ngIf=\"col.showSummary\">\r\n <!-- CURRENCY_SOCIETE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- INTEGER_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.INTEGER_DISPLAY\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Integer-Display>\r\n </div>\r\n\r\n <!-- RATE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.RATE_DISPLAY\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction ?? false\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Rate-Display>\r\n </div>\r\n\r\n <!-- DECIMAL_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.DECIMAL_DISPLAY\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col.field)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </div>\r\n\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Other-Display>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container> \r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"summary\">\r\n {{ page.totalCount }} {{ \"records_label\" | localize }}\r\n <span *ngIf=\"colorful\">\r\n <span>View Grid</span>\r\n <span class=\"pl-2\">| SearchOnInit : {{ searchOnInit }}</span>\r\n <span class=\"pl-2\">| Pagination In Api : {{ isGridDataPagedInApi }}</span>\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === true\" class=\"col-12\">\r\n <tsi-calender [schema]=\"calenderSchema\" [eventsData]=\"page.items\" [crudService]=\"crudService\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" (eventClick)=\"handleCalendarEventClick($event)\"></tsi-calender>\r\n </div>\r\n\r\n <div *ngIf=\"_showCardView === true\" class=\"col-12\">\r\n <Tsi-card-list [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-card-list>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && !_showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\" [crudService]=\"crudService\">\r\n </Tsi-kanban>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && _showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban-workflow-etat [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" [descriminatorValue]=\"descriminatorValue\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-kanban-workflow-etat>\r\n </div>\r\n\r\n <div *ngIf=\"isAdvancedSearch && selectionMode == multipleGridSelectionMode\">\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" (onSaveClick)=\"onConfirmSelection()\" (onCancelClick)=\"onCancelSelection()\" />\r\n </div>\r\n</div>", styles: [".p-button.p-button-icon-only.p-button-rounded{border-radius:50%;height:1rem}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.p-inputgroup.rtl-mode .p-inputgroup-addon:last-child,.p-inputgroup.rtl-mode button:last-child,.p-inputgroup.rtl-mode input:last-child,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:6px 0 0 6px/6px 0px 0px 6px!important}.p-inputgroup.ltr-mode .p-inputgroup-addon:last-child,.p-inputgroup.ltr-mode button:last-child,.p-inputgroup.ltr-mode input:last-child,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:0 6px 6px 0/0px 6px 6px 0px!important}.p-paginator .p-dropdown{height:auto;border:none;border-bottom:1px solid}.p-datatable .frozen-column{position:sticky;left:0;z-index:1;background:#fff}.frozen-column-ltr-mode{min-width:2rem;position:sticky;left:0;background-color:#fff}.frozen-column-rtl-mode{min-width:2rem;position:sticky;right:0;background-color:#fff}.disabled-column{background-color:#f5f5f5;color:#d3d3d3;pointer-events:none}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:max-content;width:100%;text-align:center;white-space:nowrap;border-radius:.4rem;padding:.1rem .2rem;font-weight:600;line-height:1.2;color:#fff;box-shadow:0 1px 2px #0000000d;transition:all .2s ease-in-out;cursor:default;transform-origin:top center;border-top-left-radius:inherit;border-bottom-right-radius:inherit}.status-badge:hover{transform:scale(1.06);box-shadow:0 2px 4px #0000001a;filter:brightness(1.2)}td span,td div{padding:0 .5rem}.custom-button{display:flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.button-icon{width:1.5rem;height:1.5rem}.custom-button:hover{background-color:#f0f0f0}table{width:100%!important}.right-to-left{text-align:start}::ng-deep th.non-resizable-column .p-column-resizer{display:none!important;pointer-events:none!important}::ng-deep .cursor-follow{position:fixed;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:1000;pointer-events:none;white-space:nowrap}::ng-deep .overflow-menu.p-menu-overlay{border-radius:8px;border:none;padding:.4rem;min-width:0!important;background:#fff;box-shadow:0 8px 24px #0000001f;animation:fadeScaleIn .12s ease-out}::ng-deep .overflow-menu .p-menuitem-link{overflow:visible!important;position:relative;padding:0}::ng-deep .overflow-menu-item{padding:.55rem .75rem;border-radius:8px;gap:.5rem;font-size:.85rem;white-space:nowrap;transition:all .15s ease}::ng-deep .overflow-menu-item:hover{background-color:#f5f7fa}::ng-deep .menu-icon{font-size:.9rem;width:18px;text-align:center;opacity:.8}::ng-deep .menu-label{font-weight:400}::ng-deep .overflow-btn{width:28px;height:28px;padding:0}@keyframes fadeScaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}::ng-deep .overflow-menu .p-badge{font-size:.55rem;min-width:.9rem;height:.9rem;line-height:.9rem;font-family:inherit}::ng-deep .badge-icon.has-badge{transition:transform .2s ease-in-out;display:inline-block;position:relative;z-index:2}::ng-deep .badge-icon.has-badge:hover{transform:scale(1.4);z-index:10}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2$1.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: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.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: "directive", type: i5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i5.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i5.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i5.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i5.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i16.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i6.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: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i19.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: TsiCheckboxDisplayComponent, selector: "Tsi-Checkbox-Display", inputs: ["inputData"] }, { kind: "component", type: TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: TsiDateDisplayComponent, selector: "Tsi-Date-Display", inputs: ["inputData", "showTime"] }, { kind: "component", type: TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: TsiSearchBoxComponent, selector: "tsi-search-box", inputs: ["searchFields", "businessClass", "descriminatorValue", "isRtlMode", "isSearchButtonDisabled", "entityInfo", "statusMetadata"], outputs: ["searchFieldsChange", "searchFieldsApplied", "keywordValueChanged", "statusFilterChanged", "workflowEtatFilterChanged", "comboBoxLabelChanged"] }, { kind: "component", type: TsiCardListComponent, selector: "Tsi-card-list", inputs: ["cardBusinessClass", "header", "id", "page", "page$"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiImageDisplayComponent, selector: "tsi-image-display", inputs: ["src", "alt", "width", "height", "isRounded", "headerTitles"] }, { kind: "component", type: TsiKanbanComponent, selector: "Tsi-kanban", inputs: ["cardBusinessClass", "header", "id", "page$", "crudService", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiCalenderComponent, selector: "tsi-calender", inputs: ["crudService", "schema", "eventsData"], outputs: ["eventClick", "dateRangeChange"] }, { kind: "component", type: TsiKanbanWorkflowEtatComponent, selector: "Tsi-kanban-workflow-etat", inputs: ["cardBusinessClass", "header", "id", "page$", "descriminatorValue", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "component", type: DisplayNestedPropComponent, selector: "Tsi-Display-Nested-Prop", inputs: ["id", "displayValue", "sourceUrl"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
10801
10859
  trigger('slideInOut', [
10802
10860
  state('in', style({
10803
10861
  height: '*',
@@ -10829,7 +10887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
10829
10887
  })),
10830
10888
  transition('in <=> out', animate('600ms cubic-bezier(0.25, 0.8, 0.25, 1)'))
10831
10889
  ])
10832
- ], template: "<div class=\"grid\">\r\n\r\n <div class=\"col-12\" [@slideInOut]=\"showSearchField ? 'in' : 'out'\" *ngIf=\"showGlobalSearch\">\r\n <tsi-search-box \r\n [isRtlMode]=\"isRtlMode\" \r\n [(searchFields)]=\"searchFields\" \r\n [businessClass]=\"businessClass\"\r\n [entityInfo]=\"entityInfo\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [descriminatorValue]=\"descriminatorValue\"\r\n (searchFieldsChange)=\"searchFieldsValueChanges($event)\" \r\n (keywordValueChanged)=\"keywordValueChanged($event)\"\r\n (searchFieldsApplied)=\"search($event)\"\r\n (statusFilterChanged)=\"onStatusFilterChanged($event)\"\r\n (workflowEtatFilterChanged)=\"onWorkflowEtatFilterChanged($event)\"\r\n (comboBoxLabelChanged)=\"comboBoxLabelChanged($event)\">\r\n </tsi-search-box>\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === false && _showCardView === false && _showKanbanView === false\" class=\"col-12\">\r\n \r\n <p-table #dt \r\n [lazy]=\"isGridDataPagedInApi\" \r\n [lazyLoadOnInit]=\"searchOnInit\" \r\n [totalRecords]=\"page.totalCount\" \r\n [loading]=\"page.loading\" \r\n [reorderableColumns]=\"true\"\r\n [resizableColumns]=\"true\" \r\n [columns]=\"selectedColumns\" \r\n [value]=\"page.items\"\r\n [paginator]=\"true\" \r\n [scrollable]=\"true\" \r\n [(rows)]=\"page.pageSize\"\r\n [showCurrentPageReport]=\"true\" \r\n [globalFilterFields]=\"fields()\" \r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\" \r\n [sortMode]=\"sortMode\"\r\n [multiSortMeta]=\"sortMetas\" \r\n [selectAll]=\"selectAll\"\r\n [selectionMode]=\"selectionMode\" \r\n [(selection)]=\"selection\" \r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n (onRowUnselect)=\"onSelectedItemsChanged()\"\r\n (selectAllChange)=\"onSelectAllChange($event)\" \r\n (onRowSelect)=\"onSelectedItemsChanged()\"\r\n columnResizeMode=\"expand\" \r\n dataKey=\"{{ key }}\" \r\n scrollHeight=\"600px\" \r\n styleClass=\"p-datatable-gridlines\" \r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {{getFirstElementIndex()}} {{\r\n 'to' | localize\r\n }} {last} {{ 'of' | localize }} \r\n {totalRecords} {{ 'entries' | localize }}\" \r\n >\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex justify-content-between align-items-center\">\r\n <div class=\"ml-2\">\r\n {{ header | localize }}\r\n </div>\r\n\r\n <div class=\"p-1 flex align-items-center\">\r\n <div *ngIf=\"showFilterButton\" presentationDesignerBase=\"grid_toggle_header_filters\">\r\n <Tsi-Button [icon]=\"filterIcon\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"filterTooltip\"\r\n styleClass=\"p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"toggleHeaderFilters()\"></Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showHeaderFilters\" presentationDesignerBase=\"grid_toggle_header_filter_mode\">\r\n <Tsi-Button [icon]=\"filterModeIcon\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n [tooltipText]=\"filterModeTooltip\" [styleClass]=\"'ml-1 p-button-primary p-button-icon-only'\"\r\n (click)=\"toggleHeaderFiltersMode()\"></Tsi-Button>\r\n </div>\r\n\r\n <div presentationDesignerBase=\"grid_clear_filter_button\">\r\n <Tsi-Button [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"'icon-clear-filter'\"\r\n styleClass=\"ml-1 p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"onClearFilters()\" [iconSrc]=\"'assets/layout/images/icon/icon-clear-filter.svg'\">\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showExportButton\" presentationDesignerBase=\"grid_export_button\">\r\n <Tsi-Button icon=\"p-button-icon pi pi-file-excel\" (onClick)=\"exportExcel()\"\r\n styleClass=\"p-element p-button-success hover:shadow-6 ml-2 p-1 p-button p-component p-button-icon-only\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"XLS\"></Tsi-Button>\r\n </div>\r\n\r\n <p-multiSelect class=\"ml-1\" [options]=\"columns\" [ngModel]=\"selectedColumns\" optionLabel=\"translatedHeader\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" [style]=\"{ 'min-width': '180px' }\"\r\n placeholder=\"{{ 'choose_columns' | localize }}\" (ngModelChange)=\"onSelectedColumnsChange($event)\">\r\n </p-multiSelect>\r\n </div>\r\n\r\n <!-- <div> -->\r\n <!-- <button *ngIf=\"showGlobalSearch\" type=\"button\" pButton pRipple icon=\"pi pi-search\" (click)=\"search()\"></button> -->\r\n <!-- </div> -->\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : 'z-index-checkbox'\" *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </div>\r\n </th>\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n <th *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\"\r\n scope=\"col\" [style]=\"col.style\" pTooltip=\"{{ col.toolTipText | localize }}\" tooltipPosition=\"top\"\r\n [pSortableColumn]=\"(!col.isButton || !isOverflowColumn(col.field) || !(col.type == displayTypes.IMAGE_DISPLAY)) ? \r\n col.field : null\"\r\n [pResizableColumnDisabled]=\"col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)\"\r\n [tooltipDisabled]=\"col.isButton || isOverflowColumn(col.field)\" \r\n [pReorderableColumnDisabled]=\"col.isButton || isOverflowColumn(col.field)\" pReorderableColumn\r\n pResizableColumn [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\"\r\n [class.disabled-column]=\"col.isButton || isOverflowColumn(col.field) || col.type === displayTypes.IMAGE_DISPLAY\" \r\n [ngClass]=\"[\r\n getHeaderClassColor(col.type),\r\n (col.isButton || isOverflowColumn(col.field)) ? 'w-1rem' : '',\r\n (col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)) ? 'non-resizable-column' : '',\r\n ]\"\r\n [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\">\r\n\r\n <ng-container *ngIf=\"notInSpecifiedColumn(col.field)\">\r\n <span>\r\n <table class=\"p-0 m-0\">\r\n <tr>\r\n <td class=\"col p-0 m-0\" [ngClass]=\"{'w-1rem': col.isButton}\">\r\n {{ col.header | localize }}\r\n </td>\r\n <td class=\"col-fixed p-0 m-0\" style=\"width: 1rem\">\r\n <p-sortIcon \r\n *ngIf=\"col.type !== displayTypes.IMAGE_DISPLAY\"\r\n class=\"w-1rem m-0 p-0\"\r\n field=\"{{ col.field }}\"\r\n ></p-sortIcon>\r\n </td>\r\n </tr>\r\n </table>\r\n </span>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n\r\n <tr *ngIf=\"showHeaderFilters\">\r\n <!-- <th scope=\"col\" style=\"width:3rem\"></th>\r\n <th scope=\"col\" style=\"width:3rem\"></th> -->\r\n <th [ngClass]=\"page.loading ? 'no-z-index' : ''\" *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"width: 4rem\"></th>\r\n <th style=\"overflow: inherit\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\" [showButtons]=\"false\"\r\n [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </th>\r\n </tr>\r\n \r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\r\n <!-- CASE : multiple selection -->\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\" *ngIf=\"\r\n selectionMode == multipleGridSelectionMode;\r\n else notMultipleSelectionModeBlock\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event,item)\" (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\">\r\n <td [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n <!-- <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-pencil\" class=\"p-button-rounded p-button-text\"\r\n (click)=\"edit(item)\"></button>\r\n </div>\r\n </td>\r\n <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\"\r\n class=\"p-button-rounded p-button-text p-button-danger\" (click)=\"delete(item)\"></button>\r\n </div>\r\n </td> -->\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n >\r\n\r\n <!-- style=\"height: min-content; margin-left: -.5rem;\" -->\r\n <!-- Tsi-Currency-Societe-Input -->\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div> \r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-column -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"font-bold status-badge\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayTextEyeBlock\" >\r\n <div class=\"align-items-center frozen-column-rtl-mode justify-content-center p-2\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\"\r\n icon=\"{{ col.buttonIcon }}\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n [text]=\"col.buttonLabel ? col.buttonLabel : item[col.field]\"\r\n (click)=\"buttonClicked(item, col.field)\" ></Tsi-Button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n </tr>\r\n \r\n <!-- CASE : single or none selection -->\r\n <ng-template #notMultipleSelectionModeBlock>\r\n <ng-container>\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\"\r\n [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"index\" id=\"tsi-grid-row-{{index}}\">\r\n\r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" \r\n style=\"height: min-content; background: white;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n }\">\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-prop -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"status-badge font-bold\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"status-badge font-bold\">\r\n {{ item[col.field] }}\r\n </span>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n \r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayImage\">\r\n <div [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n class=\"flex align-items-center frozen-column-rtl-mode justify-content-center p-0\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\" icon=\"{{ col.buttonIcon }}\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n (click)=\"buttonClicked(item, col.field)\"\r\n [text]=\"col.isIconButton ? '' : (col.buttonLabel ?? item[col.field])\"></Tsi-Button>\r\n\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayTextEyeBlock\">\r\n <div class=\"h-2rem\">\r\n <tsi-image-display [headerTitles]=\"getHeaderTitles(col.headerTitles, item)\"\r\n [isRounded]=\"col.isRounded\" [src]=\"item[col.field]\" [alt]=\"col.header || 'image'\"\r\n [width]=\"'100%'\" [height]=\"'100%'\">\r\n </tsi-image-display>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n <span class=\"cursor-pointer pi pi-eye\" (click)=\"eyeClicked(item[col.field])\"></span>\r\n {{ truncateString(item[col.field], 50) }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"></td>\r\n\r\n <ng-container *ngFor=\"let col of selectedColumns\">\r\n <td class=\"pr-0\" *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\">\r\n <div *ngIf=\"col.showSummary\">\r\n <!-- CURRENCY_SOCIETE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- INTEGER_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.INTEGER_DISPLAY\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Integer-Display>\r\n </div>\r\n\r\n <!-- RATE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.RATE_DISPLAY\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction ?? false\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Rate-Display>\r\n </div>\r\n\r\n <!-- DECIMAL_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.DECIMAL_DISPLAY\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col.field)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </div>\r\n\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Other-Display>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container> \r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"summary\">\r\n {{ page.totalCount }} {{ \"records_label\" | localize }}\r\n <span *ngIf=\"colorful\">\r\n <span>View Grid</span>\r\n <span class=\"pl-2\">| SearchOnInit : {{ searchOnInit }}</span>\r\n <span class=\"pl-2\">| Pagination In Api : {{ isGridDataPagedInApi }}</span>\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === true\" class=\"col-12\">\r\n <tsi-calender [schema]=\"calenderSchema\" [eventsData]=\"page.items\" [crudService]=\"crudService\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" (eventClick)=\"handleCalendarEventClick($event)\"></tsi-calender>\r\n </div>\r\n\r\n <div *ngIf=\"_showCardView === true\" class=\"col-12\">\r\n <Tsi-card-list [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-card-list>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && !_showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\" [crudService]=\"crudService\">\r\n </Tsi-kanban>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && _showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban-workflow-etat [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" [descriminatorValue]=\"descriminatorValue\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-kanban-workflow-etat>\r\n </div>\r\n\r\n <div *ngIf=\"isAdvancedSearch && selectionMode == multipleGridSelectionMode\">\r\n <Tsi-Modal-Footer (onSaveClick)=\"onConfirmSelection()\" (onCancelClick)=\"onCancelSelection()\" />\r\n </div>\r\n</div>", styles: [".p-button.p-button-icon-only.p-button-rounded{border-radius:50%;height:1rem}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.p-inputgroup.rtl-mode .p-inputgroup-addon:last-child,.p-inputgroup.rtl-mode button:last-child,.p-inputgroup.rtl-mode input:last-child,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:6px 0 0 6px/6px 0px 0px 6px!important}.p-inputgroup.ltr-mode .p-inputgroup-addon:last-child,.p-inputgroup.ltr-mode button:last-child,.p-inputgroup.ltr-mode input:last-child,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:0 6px 6px 0/0px 6px 6px 0px!important}.p-paginator .p-dropdown{height:auto;border:none;border-bottom:1px solid}.p-datatable .frozen-column{position:sticky;left:0;z-index:1;background:#fff}.frozen-column-ltr-mode{min-width:2rem;position:sticky;left:0;background-color:#fff}.frozen-column-rtl-mode{min-width:2rem;position:sticky;right:0;background-color:#fff}.disabled-column{background-color:#f5f5f5;color:#d3d3d3;pointer-events:none}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:max-content;width:100%;text-align:center;white-space:nowrap;border-radius:.4rem;padding:.1rem .2rem;font-weight:600;line-height:1.2;color:#fff;box-shadow:0 1px 2px #0000000d;transition:all .2s ease-in-out;cursor:default;transform-origin:top center;border-top-left-radius:inherit;border-bottom-right-radius:inherit}.status-badge:hover{transform:scale(1.06);box-shadow:0 2px 4px #0000001a;filter:brightness(1.2)}td span,td div{padding:0 .5rem}.custom-button{display:flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.button-icon{width:1.5rem;height:1.5rem}.custom-button:hover{background-color:#f0f0f0}table{width:100%!important}.right-to-left{text-align:start}::ng-deep th.non-resizable-column .p-column-resizer{display:none!important;pointer-events:none!important}::ng-deep .cursor-follow{position:fixed;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:1000;pointer-events:none;white-space:nowrap}::ng-deep .overflow-menu.p-menu-overlay{border-radius:8px;border:none;padding:.4rem;min-width:0!important;background:#fff;box-shadow:0 8px 24px #0000001f;animation:fadeScaleIn .12s ease-out}::ng-deep .overflow-menu .p-menuitem-link{overflow:visible!important;position:relative;padding:0}::ng-deep .overflow-menu-item{padding:.55rem .75rem;border-radius:8px;gap:.5rem;font-size:.85rem;white-space:nowrap;transition:all .15s ease}::ng-deep .overflow-menu-item:hover{background-color:#f5f7fa}::ng-deep .menu-icon{font-size:.9rem;width:18px;text-align:center;opacity:.8}::ng-deep .menu-label{font-weight:400}::ng-deep .overflow-btn{width:28px;height:28px;padding:0}@keyframes fadeScaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}::ng-deep .overflow-menu .p-badge{font-size:.55rem;min-width:.9rem;height:.9rem;line-height:.9rem;font-family:inherit}::ng-deep .badge-icon.has-badge{transition:transform .2s ease-in-out;display:inline-block;position:relative;z-index:2}::ng-deep .badge-icon.has-badge:hover{transform:scale(1.4);z-index:10}\n"] }]
10890
+ ], template: "<div class=\"grid\">\r\n\r\n <div class=\"col-12\" [@slideInOut]=\"showSearchField ? 'in' : 'out'\" *ngIf=\"showGlobalSearch\">\r\n <tsi-search-box \r\n [isRtlMode]=\"isRtlMode\" \r\n [(searchFields)]=\"searchFields\" \r\n [businessClass]=\"businessClass\"\r\n [entityInfo]=\"entityInfo\"\r\n [statusMetadata]=\"statusMetadata\"\r\n [descriminatorValue]=\"descriminatorValue\"\r\n (searchFieldsChange)=\"searchFieldsValueChanges($event)\" \r\n (keywordValueChanged)=\"keywordValueChanged($event)\"\r\n (searchFieldsApplied)=\"search($event)\"\r\n (statusFilterChanged)=\"onStatusFilterChanged($event)\"\r\n (workflowEtatFilterChanged)=\"onWorkflowEtatFilterChanged($event)\"\r\n (comboBoxLabelChanged)=\"comboBoxLabelChanged($event)\">\r\n </tsi-search-box>\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === false && _showCardView === false && _showKanbanView === false\" class=\"col-12\">\r\n \r\n <p-table #dt \r\n [lazy]=\"isGridDataPagedInApi\" \r\n [lazyLoadOnInit]=\"searchOnInit\" \r\n [totalRecords]=\"page.totalCount\" \r\n [loading]=\"page.loading\" \r\n [reorderableColumns]=\"true\"\r\n [resizableColumns]=\"true\" \r\n [columns]=\"selectedColumns\" \r\n [value]=\"page.items\"\r\n [paginator]=\"true\" \r\n [scrollable]=\"true\" \r\n [(rows)]=\"page.pageSize\"\r\n [showCurrentPageReport]=\"true\" \r\n [globalFilterFields]=\"fields()\" \r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [rowsPerPageOptions]=\"[1, 10, 25, 50]\" \r\n [sortMode]=\"sortMode\"\r\n [multiSortMeta]=\"sortMetas\" \r\n [selectAll]=\"selectAll\"\r\n [selectionMode]=\"selectionMode\" \r\n [(selection)]=\"selection\" \r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n (onRowUnselect)=\"onSelectedItemsChanged()\"\r\n (selectAllChange)=\"onSelectAllChange($event)\" \r\n (onRowSelect)=\"onSelectedItemsChanged()\"\r\n columnResizeMode=\"expand\" \r\n dataKey=\"{{ key }}\" \r\n scrollHeight=\"600px\" \r\n styleClass=\"p-datatable-gridlines\" \r\n currentPageReportTemplate=\"{{ 'Showing' | localize }} {{getFirstElementIndex()}} {{\r\n 'to' | localize\r\n }} {last} {{ 'of' | localize }} \r\n {totalRecords} {{ 'entries' | localize }}\" \r\n >\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex justify-content-between align-items-center\">\r\n <div class=\"ml-2\">\r\n {{ header | localize }}\r\n </div>\r\n\r\n <div class=\"p-1 flex align-items-center\">\r\n <div *ngIf=\"showFilterButton\" presentationDesignerBase=\"grid_toggle_header_filters\">\r\n <Tsi-Button [icon]=\"filterIcon\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"filterTooltip\"\r\n styleClass=\"p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"toggleHeaderFilters()\"></Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showHeaderFilters\" presentationDesignerBase=\"grid_toggle_header_filter_mode\">\r\n <Tsi-Button [icon]=\"filterModeIcon\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n [tooltipText]=\"filterModeTooltip\" [styleClass]=\"'ml-1 p-button-primary p-button-icon-only'\"\r\n (click)=\"toggleHeaderFiltersMode()\"></Tsi-Button>\r\n </div>\r\n\r\n <div presentationDesignerBase=\"grid_clear_filter_button\">\r\n <Tsi-Button [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"'icon-clear-filter'\"\r\n styleClass=\"ml-1 p-element hover:shadow-6 p-button-primary p-button p-component p-button-icon-only\"\r\n (click)=\"onClearFilters()\" [iconSrc]=\"'assets/layout/images/icon/icon-clear-filter.svg'\">\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div *ngIf=\"showExportButton\" presentationDesignerBase=\"grid_export_button\">\r\n <Tsi-Button icon=\"p-button-icon pi pi-file-excel\" (onClick)=\"exportExcel()\"\r\n styleClass=\"p-element p-button-success hover:shadow-6 ml-2 p-1 p-button p-component p-button-icon-only\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"XLS\"></Tsi-Button>\r\n </div>\r\n\r\n <p-multiSelect class=\"ml-1\" [options]=\"columns\" [ngModel]=\"selectedColumns\" optionLabel=\"translatedHeader\"\r\n selectedItemsLabel=\"{0} {{ 'columns_selected' | localize }}\" [style]=\"{ 'min-width': '180px' }\"\r\n placeholder=\"{{ 'choose_columns' | localize }}\" (ngModelChange)=\"onSelectedColumnsChange($event)\">\r\n </p-multiSelect>\r\n </div>\r\n\r\n <!-- <div> -->\r\n <!-- <button *ngIf=\"showGlobalSearch\" type=\"button\" pButton pRipple icon=\"pi pi-search\" (click)=\"search()\"></button> -->\r\n <!-- </div> -->\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : 'z-index-checkbox'\" *ngIf=\"selectionMode == multipleGridSelectionMode\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableHeaderCheckbox #tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </div>\r\n </th>\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n <th *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\"\r\n scope=\"col\" [style]=\"col.style\" pTooltip=\"{{ col.toolTipText | localize }}\" tooltipPosition=\"top\"\r\n [pSortableColumn]=\"(!col.isButton || !isOverflowColumn(col.field) || !(col.type == displayTypes.IMAGE_DISPLAY)) ? \r\n col.field : null\"\r\n [pResizableColumnDisabled]=\"col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)\"\r\n [tooltipDisabled]=\"col.isButton || isOverflowColumn(col.field)\" \r\n [pReorderableColumnDisabled]=\"col.isButton || isOverflowColumn(col.field)\" pReorderableColumn\r\n pResizableColumn [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\"\r\n [class.disabled-column]=\"col.isButton || isOverflowColumn(col.field) || col.type === displayTypes.IMAGE_DISPLAY\" \r\n [ngClass]=\"[\r\n getHeaderClassColor(col.type),\r\n (col.isButton || isOverflowColumn(col.field)) ? 'w-1rem' : '',\r\n (col.isButton || col.type === displayTypes.IMAGE_DISPLAY || isOverflowColumn(col.field)) ? 'non-resizable-column' : '',\r\n ]\"\r\n [ngStyle]=\"page.items.length > 0 ? col.headerColumnStyle : {}\">\r\n\r\n <ng-container *ngIf=\"notInSpecifiedColumn(col.field)\">\r\n <span>\r\n <table class=\"p-0 m-0\">\r\n <tr>\r\n <td class=\"col p-0 m-0\" [ngClass]=\"{'w-1rem': col.isButton}\">\r\n {{ col.header | localize }}\r\n </td>\r\n <td class=\"col-fixed p-0 m-0\" style=\"width: 1rem\">\r\n <p-sortIcon \r\n *ngIf=\"col.type !== displayTypes.IMAGE_DISPLAY\"\r\n class=\"w-1rem m-0 p-0\"\r\n field=\"{{ col.field }}\"\r\n ></p-sortIcon>\r\n </td>\r\n </tr>\r\n </table>\r\n </span>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n\r\n <tr *ngIf=\"showHeaderFilters\">\r\n <!-- <th scope=\"col\" style=\"width:3rem\"></th>\r\n <th scope=\"col\" style=\"width:3rem\"></th> -->\r\n <th [ngClass]=\"page.loading ? 'no-z-index' : ''\" *ngIf=\"selectionMode == multipleGridSelectionMode\"\r\n style=\"width: 4rem\"></th>\r\n <th style=\"overflow: inherit\" scope=\"col\" *ngFor=\"let col of columns\">\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\" [showButtons]=\"false\"\r\n [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </th>\r\n </tr>\r\n \r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-index=\"rowIndex\">\r\n\r\n <!-- CASE : multiple selection -->\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\" *ngIf=\"\r\n selectionMode == multipleGridSelectionMode;\r\n else notMultipleSelectionModeBlock\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event,item)\" (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\">\r\n <td [ngStyle]=\"page.items.length > 0 ? getCheckboxStyle() : {}\">\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n <!-- <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-pencil\" class=\"p-button-rounded p-button-text\"\r\n (click)=\"edit(item)\"></button>\r\n </div>\r\n </td>\r\n <td class=\"p-1\">\r\n <div class=\"flex align-items-center justify-content-center p-0\">\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\"\r\n class=\"p-button-rounded p-button-text p-button-danger\" (click)=\"delete(item)\"></button>\r\n </div>\r\n </td> -->\r\n \r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n >\r\n\r\n <!-- style=\"height: min-content; margin-left: -.5rem;\" -->\r\n <!-- Tsi-Currency-Societe-Input -->\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div> \r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-column -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"font-bold status-badge\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayTextEyeBlock\" >\r\n <div class=\"align-items-center frozen-column-rtl-mode justify-content-center p-2\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\"\r\n icon=\"{{ col.buttonIcon }}\" [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n [text]=\"col.buttonLabel ? col.buttonLabel : item[col.field]\"\r\n (click)=\"buttonClicked(item, col.field)\" ></Tsi-Button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n </tr>\r\n \r\n <!-- CASE : single or none selection -->\r\n <ng-template #notMultipleSelectionModeBlock>\r\n <ng-container>\r\n <tr [ngStyle]=\"item.color && item.color !== '' ? {'background-color': item.color} : {}\"\r\n [pSelectableRow]=\"item\" [pSelectableRowIndex]=\"index\" id=\"tsi-grid-row-{{index}}\">\r\n\r\n <ng-container *ngFor=\"let col of columns\">\r\n\r\n <td *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\" [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\" \r\n style=\"height: min-content; background: white;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n }\">\r\n\r\n <div *ngIf=\"\r\n col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY;\r\n else currencyOtherOutputBlock\r\n \">\r\n <Tsi-Currency-Societe-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- Tsi-Currency-Other-Input -->\r\n <ng-template #currencyOtherOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CURRENCY_OTHER_DISPLAY;\r\n else datePickerOutputBlock\r\n \">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyCode\" [inputData]=\"item[col.field]\">\r\n </Tsi-Currency-Other-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #datePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATE_DISPLAY;\r\n else dateTimePickerOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Date-Picker -->\r\n <ng-template #dateTimePickerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DATETIME_DISPLAY;\r\n else checkBoxOutputBlock\r\n \">\r\n <Tsi-Date-Display [inputData]=\"item[col.field]\" [showTime]=\"true\">\r\n </Tsi-Date-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <!-- Tsi-CheckBox -->\r\n <ng-template #checkBoxOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.CHECKBOX_DISPLAY;\r\n else decimalOutputBlock\r\n \">\r\n <Tsi-Checkbox-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Checkbox-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.DECIMAL_DISPLAY;\r\n else integerOutputBlock\r\n \">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"item[col.field]\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Integer -->\r\n <ng-template #integerOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.INTEGER_DISPLAY;\r\n else rateOutputBlock\r\n \">\r\n <Tsi-Integer-Display [inputData]=\"item[col.field]\">\r\n </Tsi-Integer-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Rate-Input -->\r\n <ng-template #rateOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.RATE_DISPLAY;\r\n else displayNestedPropOutputBlock\r\n \">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction\" [inputData]=\"item[col.field]\">\r\n </Tsi-Rate-Display>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-nested-prop -->\r\n <ng-template #displayNestedPropOutputBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.NESTED_PROP_DISPLAY;\r\n else displayStatusColorBlock\r\n \">\r\n <Tsi-Display-Nested-Prop [sourceUrl]=\"col.displayNestedPropertySourceUrl\" [id]=\"item[col.field]\"\r\n [displayValue]=\"col.displayNestedPropertylabelField\">\r\n </Tsi-Display-Nested-Prop>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #displayStatusColorBlock>\r\n <ng-container *ngIf=\"col.isStatusColor; else displayStatusValueColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <span\r\n class=\"px-2 py-1 rounded text-white text-sm\"\r\n [style.background-color]=\"item[col.field]\">\r\n {{item[col.field]}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n\r\n <ng-template #displayStatusValueColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumnValue; else displayStatusColumnBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && getStatusOptionForStatusHistory(item[col.field]) as opt\"\r\n class=\"px-2 py-1 font-bold status-badge\"\r\n [style.background-color]=\"opt.colorHex\"\r\n [style.color]=\"opt.colorHex ? 'white' : 'black'\"\r\n [ngClass]=\"{\r\n 'text-black bg-white': !opt.colorHex,\r\n 'text-white': opt.colorHex\r\n }\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadataForStatusHistory && !getStatusOptionForStatusHistory(item[col.field])\"\r\n class=\"px-2 py-1 font-bold status-badge\">\r\n {{ item[col.field] }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-status-prop -->\r\n <ng-template #displayStatusColumnBlock>\r\n <ng-container *ngIf=\"col.isStatusColumn; else displayButtonBlock\">\r\n <div class=\"align-items-center justify-content-center p-2\">\r\n <!--<p-tag \r\n [value]=\"item[col.field]\"\r\n [style.backgroundColor]=\"getStatusColor(item[col.field])\">\r\n </p-tag>-->\r\n\r\n <span\r\n *ngIf=\"statusMetadata && getStatusOption(item[col.field]) as opt\"\r\n class=\"status-badge font-bold\"\r\n [style.background-color]=\"lightenColor(opt.colorHex)\"\r\n [style.color]=\"getReadableTextColor(opt.colorHex)\"\r\n [style.padding-top]=\"'0.1rem'\"\r\n [style.padding-bottom]=\"'0.1rem'\"\r\n >\r\n {{ opt.translatedLabel }}\r\n </span>\r\n <span\r\n *ngIf=\"statusMetadata && !getStatusOption(item[col.field])\"\r\n class=\"status-badge font-bold\">\r\n {{ item[col.field] }}\r\n </span>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n \r\n <!-- display-nested-prop -->\r\n <ng-template #displayButtonBlock>\r\n <ng-container *ngIf=\"col.isButton; else displayImage\">\r\n <div [ngStyle]=\"page.items.length > 0 ? col.ngStyle : {}\"\r\n [ngClass]=\"page.loading ? 'no-z-index' : ''\"\r\n class=\"flex align-items-center frozen-column-rtl-mode justify-content-center p-0\">\r\n <Tsi-Button [styleClass]=\"col.styleClass\" type=\"button\" icon=\"{{ col.buttonIcon }}\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" [tooltipText]=\"col.toolTipText\"\r\n (click)=\"buttonClicked(item, col.field)\"\r\n [text]=\"col.isIconButton ? '' : (col.buttonLabel ?? item[col.field])\"></Tsi-Button>\r\n\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayTextEyeBlock\">\r\n <div class=\"h-2rem\">\r\n <tsi-image-display [headerTitles]=\"getHeaderTitles(col.headerTitles, item)\"\r\n [isRounded]=\"col.isRounded\" [src]=\"item[col.field]\" [alt]=\"col.header || 'image'\"\r\n [width]=\"'100%'\" [height]=\"'100%'\">\r\n </tsi-image-display>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- display-text-eye -->\r\n <ng-template #displayTextEyeBlock>\r\n <ng-container *ngIf=\"\r\n col.type == displayTypes.TEXT_DISPLAY;\r\n else moreActionsBlock\r\n \">\r\n <span>\r\n <span class=\"cursor-pointer pi pi-eye\" (click)=\"eyeClicked(item[col.field])\"></span>\r\n {{ truncateString(item[col.field], 50) }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- more actions -->\r\n <ng-template #moreActionsBlock>\r\n <ng-container *ngIf=\"col.field == overflowColumnField; else defaultTextOutputBlock\">\r\n\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n \r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a \r\n pRipple \r\n class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i\r\n *ngIf=\"menuItem.id === 'notes'\"\r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\"\r\n pBadge\r\n severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\"\r\n badgePosition=\"top-right\">\r\n </i>\r\n\r\n <i\r\n *ngIf=\"menuItem.id !== 'notes'\"\r\n 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 <div class=\"flex align-items-center justify-content-center p-0\">\r\n <p-button \r\n type=\"button\"\r\n icon=\"{{col.buttonIcon}}\"\r\n styleClass=\"{{col.styleClass}} overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button> \r\n </div>\r\n \r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Text-Box -->\r\n <ng-template #defaultTextOutputBlock>\r\n <ng-container>\r\n <span>\r\n {{ item[col.field] }}\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </td>\r\n\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == multipleGridSelectionMode\"></td>\r\n\r\n <ng-container *ngFor=\"let col of selectedColumns\">\r\n <td class=\"pr-0\" *ngIf=\"!(col.isButton && col.actionDisplay == actionPlacement.Overflow)\">\r\n <div *ngIf=\"col.showSummary\">\r\n <!-- CURRENCY_SOCIETE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <Tsi-Currency-Societe-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Societe-Display>\r\n </div>\r\n\r\n <!-- INTEGER_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.INTEGER_DISPLAY\">\r\n <Tsi-Integer-Display [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Integer-Display>\r\n </div>\r\n\r\n <!-- RATE_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.RATE_DISPLAY\">\r\n <Tsi-Rate-Display [isFraction]=\"col.isFraction ?? false\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Rate-Display>\r\n </div>\r\n\r\n <!-- DECIMAL_DISPLAY -->\r\n <div *ngIf=\"col.type == displayTypes.DECIMAL_DISPLAY\">\r\n <Tsi-Decimal-Display [formatDecimal]=\"col.formatDecimal\" [inputData]=\"getSummary(col.field)\"\r\n [numOfDecimal]=\"col.numOfDecimal\">\r\n </Tsi-Decimal-Display>\r\n </div>\r\n\r\n <div *ngIf=\"col.type == displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <Tsi-Currency-Other-Display [currency]=\"col.currencyOtherCode\" [inputData]=\"getSummary(col.field)\">\r\n </Tsi-Currency-Other-Display>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container> \r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"summary\">\r\n {{ page.totalCount }} {{ \"records_label\" | localize }}\r\n <span *ngIf=\"colorful\">\r\n <span>View Grid</span>\r\n <span class=\"pl-2\">| SearchOnInit : {{ searchOnInit }}</span>\r\n <span class=\"pl-2\">| Pagination In Api : {{ isGridDataPagedInApi }}</span>\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"_showCalenderView === true\" class=\"col-12\">\r\n <tsi-calender [schema]=\"calenderSchema\" [eventsData]=\"page.items\" [crudService]=\"crudService\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" (eventClick)=\"handleCalendarEventClick($event)\"></tsi-calender>\r\n </div>\r\n\r\n <div *ngIf=\"_showCardView === true\" class=\"col-12\">\r\n <Tsi-card-list [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-card-list>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && !_showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" (callSearch)=\"callSearchHandler($event)\" [crudService]=\"crudService\">\r\n </Tsi-kanban>\r\n </div>\r\n\r\n <div *ngIf=\"_showKanbanView === true && _showKanbanViewOfWorkFlowEtat\" class=\"col-12\">\r\n <Tsi-kanban-workflow-etat [cardBusinessClass]=\"businessClass\" [id]=\"id\" (buttonClicked)=\"buttonColumnClicked.emit($event)\"\r\n [page$]=\"page$\" [page]=\"page\" [descriminatorValue]=\"descriminatorValue\" (callSearch)=\"callSearchHandler($event)\">\r\n </Tsi-kanban-workflow-etat>\r\n </div>\r\n\r\n <div *ngIf=\"isAdvancedSearch && selectionMode == multipleGridSelectionMode\">\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" (onSaveClick)=\"onConfirmSelection()\" (onCancelClick)=\"onCancelSelection()\" />\r\n </div>\r\n</div>", styles: [".p-button.p-button-icon-only.p-button-rounded{border-radius:50%;height:1rem}:host ::ng-deep .p-multiselect{border-radius:13px}:host ::ng-deep .p-multiselect .p-multiselect-label{padding:.5rem .75rem!important}.p-inputgroup.rtl-mode .p-inputgroup-addon:last-child,.p-inputgroup.rtl-mode button:last-child,.p-inputgroup.rtl-mode input:last-child,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.rtl-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:6px 0 0 6px/6px 0px 0px 6px!important}.p-inputgroup.ltr-mode .p-inputgroup-addon:last-child,.p-inputgroup.ltr-mode button:last-child,.p-inputgroup.ltr-mode input:last-child,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component,.p-inputgroup.ltr-mode>.p-inputwrapper:last-child>.p-component>.p-inputtext{border-radius:0 6px 6px 0/0px 6px 6px 0px!important}.p-paginator .p-dropdown{height:auto;border:none;border-bottom:1px solid}.p-datatable .frozen-column{position:sticky;left:0;z-index:1;background:#fff}.frozen-column-ltr-mode{min-width:2rem;position:sticky;left:0;background-color:#fff}.frozen-column-rtl-mode{min-width:2rem;position:sticky;right:0;background-color:#fff}.disabled-column{background-color:#f5f5f5;color:#d3d3d3;pointer-events:none}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:max-content;width:100%;text-align:center;white-space:nowrap;border-radius:.4rem;padding:.1rem .2rem;font-weight:600;line-height:1.2;color:#fff;box-shadow:0 1px 2px #0000000d;transition:all .2s ease-in-out;cursor:default;transform-origin:top center;border-top-left-radius:inherit;border-bottom-right-radius:inherit}.status-badge:hover{transform:scale(1.06);box-shadow:0 2px 4px #0000001a;filter:brightness(1.2)}td span,td div{padding:0 .5rem}.custom-button{display:flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.button-icon{width:1.5rem;height:1.5rem}.custom-button:hover{background-color:#f0f0f0}table{width:100%!important}.right-to-left{text-align:start}::ng-deep th.non-resizable-column .p-column-resizer{display:none!important;pointer-events:none!important}::ng-deep .cursor-follow{position:fixed;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:1000;pointer-events:none;white-space:nowrap}::ng-deep .overflow-menu.p-menu-overlay{border-radius:8px;border:none;padding:.4rem;min-width:0!important;background:#fff;box-shadow:0 8px 24px #0000001f;animation:fadeScaleIn .12s ease-out}::ng-deep .overflow-menu .p-menuitem-link{overflow:visible!important;position:relative;padding:0}::ng-deep .overflow-menu-item{padding:.55rem .75rem;border-radius:8px;gap:.5rem;font-size:.85rem;white-space:nowrap;transition:all .15s ease}::ng-deep .overflow-menu-item:hover{background-color:#f5f7fa}::ng-deep .menu-icon{font-size:.9rem;width:18px;text-align:center;opacity:.8}::ng-deep .menu-label{font-weight:400}::ng-deep .overflow-btn{width:28px;height:28px;padding:0}@keyframes fadeScaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}::ng-deep .overflow-menu .p-badge{font-size:.55rem;min-width:.9rem;height:.9rem;line-height:.9rem;font-family:inherit}::ng-deep .badge-icon.has-badge{transition:transform .2s ease-in-out;display:inline-block;position:relative;z-index:2}::ng-deep .badge-icon.has-badge:hover{transform:scale(1.4);z-index:10}\n"] }]
10833
10891
  }], ctorParameters: () => [{ type: StatusColorService }, { type: FichierService }, { type: HtmlTemplateGeneratorService }, { type: i1$1.DatePipe }, { type: TsiNotificationService }, { type: LocalizePipe }, { type: LayoutHelperService }, { type: LayoutService }, { type: i4.PrimeNGConfig }, { type: AppSettingsService }, { type: ErrorResponseManagerService }, { type: i0.EnvironmentInjector }, { type: i1$3.DynamicDialogConfig }, { type: i1$3.DynamicDialogRef }], propDecorators: { cudComponent: [{
10834
10892
  type: Input
10835
10893
  }], modalSize: [{
@@ -11062,11 +11120,16 @@ class ReportingComponent {
11062
11120
  get reportingInformation() {
11063
11121
  return this._reportingInformation;
11064
11122
  }
11123
+ get enableToPrintReport() {
11124
+ return !this.fromTsiForm || this._inputRegistryService.getAll().every(x => {
11125
+ return !x.isDirty;
11126
+ });
11127
+ }
11065
11128
  get isReportForFiche() {
11066
11129
  return !this.formEndpoint?.includes('getallpaged');
11067
11130
  }
11068
11131
  //#region ctor
11069
- constructor(_tsiModalService, reportingService, identityManagerService, notificationService, messageService, recordInfoPopupService, _errorResponseManagerService, _layoutHelperService, _fichierService, _injector, _mailingService) {
11132
+ constructor(_tsiModalService, reportingService, identityManagerService, notificationService, messageService, recordInfoPopupService, _errorResponseManagerService, _layoutHelperService, _fichierService, _injector, _mailingService, _inputRegistryService) {
11070
11133
  this._tsiModalService = _tsiModalService;
11071
11134
  this.reportingService = reportingService;
11072
11135
  this.identityManagerService = identityManagerService;
@@ -11078,6 +11141,7 @@ class ReportingComponent {
11078
11141
  this._fichierService = _fichierService;
11079
11142
  this._injector = _injector;
11080
11143
  this._mailingService = _mailingService;
11144
+ this._inputRegistryService = _inputRegistryService;
11081
11145
  this.localize = inject(LocalizePipe);
11082
11146
  this.errorMessageKey = 'shared_reporting_error_occured';
11083
11147
  this.modalSize = ModalSizeEnum.Large;
@@ -11579,13 +11643,13 @@ class ReportingComponent {
11579
11643
  }
11580
11644
  return key;
11581
11645
  }
11582
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportingComponent, deps: [{ token: TsiModalService }, { token: ReportingService }, { token: IdentityManagerService }, { token: TsiNotificationService }, { token: TsiMessageService }, { token: RecordInfoPopupService }, { token: ErrorResponseManagerService }, { token: LayoutHelperService }, { token: FichierService }, { token: i0.EnvironmentInjector }, { token: MailingService }], target: i0.ɵɵFactoryTarget.Component }); }
11583
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportingComponent, selector: "app-reporting", inputs: { showImportExportButton: "showImportExportButton", showNoteButton: "showNoteButton", showInfoButton: "showInfoButton", showUploadButton: "showUploadButton", isReportingToolbarDisabled: "isReportingToolbarDisabled", formName: "formName", formEndpoint: "formEndpoint", formEndpointBody: "formEndpointBody", isFormEndpointPaged: "isFormEndpointPaged", filtersHtmlTemplate: "filtersHtmlTemplate", optionalEndpoints: "optionalEndpoints", businessClass: "businessClass", cudComponent: "cudComponent", httpMethodType: "httpMethodType", requestData: "requestData", customReportingMode: "customReportingMode", pagedRequest: "pagedRequest", reportDiscriminator: "reportDiscriminator", nombreDocumentsJoints: "nombreDocumentsJoints", id: "id", configModeButtonId: "configModeButtonId", selectedItemUids: "selectedItemUids", fromTsiForm: "fromTsiForm", customSendMailMode: "customSendMailMode", reportingInformation: "reportingInformation" }, outputs: { onSave: "onSave", refreshData: "refreshData", closedModalFileUpload: "closedModalFileUpload", toggleDesignMode: "toggleDesignMode" }, viewQueries: [{ propertyName: "wrapperRef", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex gap-2 mx-2\">\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"manage_reports_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n [iconSrc]=\"'./assets/icons/icon-printer-group-white.png'\"\r\n [iconWidth]=\"20\"\r\n [tooltipText]=\"'shared_reporting_manage_reports'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"print_default_report_button\"\r\n class=\"flex align-items-center justify-content-center btn-wrapper\"\r\n #wrapper\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-print p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_rightClick'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onPrintDefault($event)\"\r\n (rightClick)=\"onRightClick($event)\"\r\n >\r\n </Tsi-Button>\r\n <!-- `shared_reporting_print_report` key for `Imprimer` text (replace it as value or tooltip if need it) -->\r\n\r\n <div\r\n *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\"\r\n >\r\n <div\r\n *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\"\r\n >\r\n {{ report.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showUploadButton\"\r\n presentationDesignerBase=\"attachment_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-paperclip p-button-icon\"\r\n [tooltipText]=\"'shared_actions_attachment'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showUploadDialog()\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n </Tsi-Button>\r\n <span *ngIf=\"nombreDocumentsJoints && nombreDocumentsJoints > 0\" class=\"custom-badge\">\r\n {{ nombreDocumentsJoints }}\r\n </span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"send_report_by_email_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-send p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_send_mail'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onSendPdf($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"businessClass && showImportExportButton\"\r\n presentationDesignerBase=\"import_export_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-arrow-right-arrow-left p-button-icon\"\r\n [tooltipText]=\"'shared_reporting_manage_export_import'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showExportImportDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showNoteButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_notes_button\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-comment p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_gestion_des_notes'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-warning hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewNotes()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"showInfoButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_info_button\"\r\n >\r\n <Tsi-Button\r\n id=\"'show-info-button'\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-info p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_actions_info'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-info hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewInfo($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showPresentationDesignerConfigButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-eye p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_config_show_hide'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"presentationDesignerConfig()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <div *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\">\r\n <div *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\">\r\n {{report.name}}\r\n </div>\r\n</div> -->\r\n", styles: [".p-fileupload-content{display:none!important}.btn-wrapper{position:relative;display:inline-block}.context-menu{position:absolute;background:#fff;border:.125rem solid #ccc;border-radius:1rem;z-index:1000;box-shadow:0 .25rem .75rem #0003;min-width:15rem;max-height:25rem;padding:.5rem 0;overflow-y:auto}.menu-item{padding:.5rem;cursor:pointer;text-transform:capitalize}.menu-item:hover{background-color:#f0f0f0}::ng-deep .header-title{flex-shrink:1;min-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .5rem}.custom-badge{position:absolute;top:10px;right:9%;background:#e90505;color:#fff;padding:2px 6px;font-size:.75rem;border-radius:50%;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }] }); }
11646
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportingComponent, deps: [{ token: TsiModalService }, { token: ReportingService }, { token: IdentityManagerService }, { token: TsiNotificationService }, { token: TsiMessageService }, { token: RecordInfoPopupService }, { token: ErrorResponseManagerService }, { token: LayoutHelperService }, { token: FichierService }, { token: i0.EnvironmentInjector }, { token: MailingService }, { token: InputRegistryService }], target: i0.ɵɵFactoryTarget.Component }); }
11647
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportingComponent, selector: "app-reporting", inputs: { showImportExportButton: "showImportExportButton", showNoteButton: "showNoteButton", showInfoButton: "showInfoButton", showUploadButton: "showUploadButton", isReportingToolbarDisabled: "isReportingToolbarDisabled", formName: "formName", formEndpoint: "formEndpoint", formEndpointBody: "formEndpointBody", isFormEndpointPaged: "isFormEndpointPaged", filtersHtmlTemplate: "filtersHtmlTemplate", optionalEndpoints: "optionalEndpoints", businessClass: "businessClass", cudComponent: "cudComponent", httpMethodType: "httpMethodType", requestData: "requestData", customReportingMode: "customReportingMode", pagedRequest: "pagedRequest", reportDiscriminator: "reportDiscriminator", nombreDocumentsJoints: "nombreDocumentsJoints", id: "id", configModeButtonId: "configModeButtonId", selectedItemUids: "selectedItemUids", fromTsiForm: "fromTsiForm", customSendMailMode: "customSendMailMode", reportingInformation: "reportingInformation" }, outputs: { onSave: "onSave", refreshData: "refreshData", closedModalFileUpload: "closedModalFileUpload", toggleDesignMode: "toggleDesignMode" }, viewQueries: [{ propertyName: "wrapperRef", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex gap-2 mx-2\">\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"manage_reports_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n [iconSrc]=\"'./assets/icons/icon-printer-group-white.png'\"\r\n [iconWidth]=\"20\"\r\n [tooltipText]=\"'shared_reporting_manage_reports'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"print_default_report_button\"\r\n class=\"flex align-items-center justify-content-center btn-wrapper\"\r\n #wrapper\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-print p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_rightClick'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onPrintDefault($event)\"\r\n (rightClick)=\"onRightClick($event)\"\r\n >\r\n </Tsi-Button>\r\n <!-- `shared_reporting_print_report` key for `Imprimer` text (replace it as value or tooltip if need it) -->\r\n\r\n <div\r\n *ngIf=\"showContextMenu && enableToPrintReport\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\"\r\n >\r\n <div\r\n *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\"\r\n >\r\n {{ report.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"send_report_by_email_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-send p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_send_mail'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onSendPdf($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showUploadButton\"\r\n presentationDesignerBase=\"attachment_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-paperclip p-button-icon\"\r\n [tooltipText]=\"'shared_actions_attachment'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showUploadDialog()\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n </Tsi-Button>\r\n <span *ngIf=\"nombreDocumentsJoints && nombreDocumentsJoints > 0\" class=\"custom-badge\">\r\n {{ nombreDocumentsJoints }}\r\n </span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showImportExportButton\"\r\n presentationDesignerBase=\"import_export_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-arrow-right-arrow-left p-button-icon\"\r\n [tooltipText]=\"'shared_reporting_manage_export_import'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showExportImportDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showNoteButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_notes_button\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-comment p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_gestion_des_notes'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-warning hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewNotes()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"showInfoButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_info_button\"\r\n >\r\n <Tsi-Button\r\n id=\"'show-info-button'\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-info p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_actions_info'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-info hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewInfo($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showPresentationDesignerConfigButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-eye p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_config_show_hide'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"presentationDesignerConfig()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <div *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\">\r\n <div *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\">\r\n {{report.name}}\r\n </div>\r\n</div> -->\r\n", styles: [".p-fileupload-content{display:none!important}.btn-wrapper{position:relative;display:inline-block}.context-menu{position:absolute;background:#fff;border:.125rem solid #ccc;border-radius:1rem;z-index:1000;box-shadow:0 .25rem .75rem #0003;min-width:15rem;max-height:25rem;padding:.5rem 0;overflow-y:auto}.menu-item{padding:.5rem;cursor:pointer;text-transform:capitalize}.menu-item:hover{background-color:#f0f0f0}::ng-deep .header-title{flex-shrink:1;min-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .5rem}.custom-badge{position:absolute;top:10px;right:9%;background:#e90505;color:#fff;padding:2px 6px;font-size:.75rem;border-radius:50%;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }] }); }
11584
11648
  }
11585
11649
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportingComponent, decorators: [{
11586
11650
  type: Component,
11587
- args: [{ selector: 'app-reporting', template: "<div class=\"flex gap-2 mx-2\">\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"manage_reports_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n [iconSrc]=\"'./assets/icons/icon-printer-group-white.png'\"\r\n [iconWidth]=\"20\"\r\n [tooltipText]=\"'shared_reporting_manage_reports'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"print_default_report_button\"\r\n class=\"flex align-items-center justify-content-center btn-wrapper\"\r\n #wrapper\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-print p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_rightClick'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onPrintDefault($event)\"\r\n (rightClick)=\"onRightClick($event)\"\r\n >\r\n </Tsi-Button>\r\n <!-- `shared_reporting_print_report` key for `Imprimer` text (replace it as value or tooltip if need it) -->\r\n\r\n <div\r\n *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\"\r\n >\r\n <div\r\n *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\"\r\n >\r\n {{ report.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showUploadButton\"\r\n presentationDesignerBase=\"attachment_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-paperclip p-button-icon\"\r\n [tooltipText]=\"'shared_actions_attachment'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showUploadDialog()\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n </Tsi-Button>\r\n <span *ngIf=\"nombreDocumentsJoints && nombreDocumentsJoints > 0\" class=\"custom-badge\">\r\n {{ nombreDocumentsJoints }}\r\n </span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"formEndpoint || businessClass\"\r\n presentationDesignerBase=\"send_report_by_email_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-send p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_send_mail'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onSendPdf($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"businessClass && showImportExportButton\"\r\n presentationDesignerBase=\"import_export_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-arrow-right-arrow-left p-button-icon\"\r\n [tooltipText]=\"'shared_reporting_manage_export_import'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showExportImportDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showNoteButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_notes_button\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-comment p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_gestion_des_notes'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-warning hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewNotes()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"showInfoButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_info_button\"\r\n >\r\n <Tsi-Button\r\n id=\"'show-info-button'\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-info p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_actions_info'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-info hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewInfo($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showPresentationDesignerConfigButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-eye p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_config_show_hide'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"presentationDesignerConfig()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <div *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\">\r\n <div *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\">\r\n {{report.name}}\r\n </div>\r\n</div> -->\r\n", styles: [".p-fileupload-content{display:none!important}.btn-wrapper{position:relative;display:inline-block}.context-menu{position:absolute;background:#fff;border:.125rem solid #ccc;border-radius:1rem;z-index:1000;box-shadow:0 .25rem .75rem #0003;min-width:15rem;max-height:25rem;padding:.5rem 0;overflow-y:auto}.menu-item{padding:.5rem;cursor:pointer;text-transform:capitalize}.menu-item:hover{background-color:#f0f0f0}::ng-deep .header-title{flex-shrink:1;min-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .5rem}.custom-badge{position:absolute;top:10px;right:9%;background:#e90505;color:#fff;padding:2px 6px;font-size:.75rem;border-radius:50%;font-weight:700}\n"] }]
11588
- }], ctorParameters: () => [{ type: TsiModalService }, { type: ReportingService }, { type: IdentityManagerService }, { type: TsiNotificationService }, { type: TsiMessageService }, { type: RecordInfoPopupService }, { type: ErrorResponseManagerService }, { type: LayoutHelperService }, { type: FichierService }, { type: i0.EnvironmentInjector }, { type: MailingService }], propDecorators: { showImportExportButton: [{
11651
+ args: [{ selector: 'app-reporting', template: "<div class=\"flex gap-2 mx-2\">\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"manage_reports_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n [iconSrc]=\"'./assets/icons/icon-printer-group-white.png'\"\r\n [iconWidth]=\"20\"\r\n [tooltipText]=\"'shared_reporting_manage_reports'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"print_default_report_button\"\r\n class=\"flex align-items-center justify-content-center btn-wrapper\"\r\n #wrapper\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-print p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_rightClick'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onPrintDefault($event)\"\r\n (rightClick)=\"onRightClick($event)\"\r\n >\r\n </Tsi-Button>\r\n <!-- `shared_reporting_print_report` key for `Imprimer` text (replace it as value or tooltip if need it) -->\r\n\r\n <div\r\n *ngIf=\"showContextMenu && enableToPrintReport\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\"\r\n >\r\n <div\r\n *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\"\r\n >\r\n {{ report.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"(formEndpoint || businessClass) && enableToPrintReport\"\r\n presentationDesignerBase=\"send_report_by_email_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-send p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_reporting_send_mail'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"onSendPdf($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showUploadButton\"\r\n presentationDesignerBase=\"attachment_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-paperclip p-button-icon\"\r\n [tooltipText]=\"'shared_actions_attachment'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-secondary hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showUploadDialog()\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n </Tsi-Button>\r\n <span *ngIf=\"nombreDocumentsJoints && nombreDocumentsJoints > 0\" class=\"custom-badge\">\r\n {{ nombreDocumentsJoints }}\r\n </span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"businessClass && showImportExportButton\"\r\n presentationDesignerBase=\"import_export_button\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-arrow-right-arrow-left p-button-icon\"\r\n [tooltipText]=\"'shared_reporting_manage_export_import'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"showExportImportDialog()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showNoteButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_notes_button\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-comment p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_gestion_des_notes'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-warning hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewNotes()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n <div\r\n *ngIf=\"showInfoButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n presentationDesignerBase=\"shared_show_info_button\"\r\n >\r\n <Tsi-Button\r\n id=\"'show-info-button'\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-info p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_actions_info'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-info hover:shadow-6 h-2rem p-button-icon-only text-white\"\r\n (click)=\"viewInfo($event)\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showPresentationDesignerConfigButton\"\r\n class=\"flex align-items-center justify-content-center\"\r\n >\r\n <Tsi-Button\r\n id=\"{{ configModeButtonId }}\"\r\n [disabled]=\"isReportingToolbarDisabled\"\r\n type=\"button\"\r\n icon=\"pi pi-eye p-button-icon p-button-icon-left\"\r\n [tooltipText]=\"'shared_tsi_component_config_show_hide'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n styleClass=\"p-button-success hover:shadow-6 h-2rem p-button-icon-only\"\r\n (click)=\"presentationDesignerConfig()\"\r\n >\r\n </Tsi-Button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <div *ngIf=\"showContextMenu\"\r\n class=\"context-menu\"\r\n [ngStyle]=\"{\r\n 'top.px': contextMenuPosition.y,\r\n 'left.px': contextMenuPosition.x\r\n }\"\r\n (mouseleave)=\"hideContextMenu()\">\r\n <div *ngFor=\"let report of reports\"\r\n class=\"menu-item\"\r\n (click)=\"onSelectContextOption(report)\">\r\n {{report.name}}\r\n </div>\r\n</div> -->\r\n", styles: [".p-fileupload-content{display:none!important}.btn-wrapper{position:relative;display:inline-block}.context-menu{position:absolute;background:#fff;border:.125rem solid #ccc;border-radius:1rem;z-index:1000;box-shadow:0 .25rem .75rem #0003;min-width:15rem;max-height:25rem;padding:.5rem 0;overflow-y:auto}.menu-item{padding:.5rem;cursor:pointer;text-transform:capitalize}.menu-item:hover{background-color:#f0f0f0}::ng-deep .header-title{flex-shrink:1;min-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .5rem}.custom-badge{position:absolute;top:10px;right:9%;background:#e90505;color:#fff;padding:2px 6px;font-size:.75rem;border-radius:50%;font-weight:700}\n"] }]
11652
+ }], ctorParameters: () => [{ type: TsiModalService }, { type: ReportingService }, { type: IdentityManagerService }, { type: TsiNotificationService }, { type: TsiMessageService }, { type: RecordInfoPopupService }, { type: ErrorResponseManagerService }, { type: LayoutHelperService }, { type: FichierService }, { type: i0.EnvironmentInjector }, { type: MailingService }, { type: InputRegistryService }], propDecorators: { showImportExportButton: [{
11589
11653
  type: Input
11590
11654
  }], showNoteButton: [{
11591
11655
  type: Input
@@ -12092,7 +12156,8 @@ const appProviders = [
12092
12156
  PresentationDesignerBaseService,
12093
12157
  GenericValidationStateService,
12094
12158
  InputRegistryService,
12095
- DynamicFormService
12159
+ DynamicFormService,
12160
+ FormStateService
12096
12161
  ];
12097
12162
 
12098
12163
  class TsiNotesAvertirComponent {
@@ -13831,6 +13896,13 @@ class ColonnePersonnaliseeData {
13831
13896
  }
13832
13897
 
13833
13898
  class TsiModalHeaderComponent {
13899
+ //#region Inputs
13900
+ get inputTitle() {
13901
+ return this._inputTitle;
13902
+ }
13903
+ set inputTitle(value) {
13904
+ this._inputTitle = value;
13905
+ }
13834
13906
  constructor(_layoutService) {
13835
13907
  this._layoutService = _layoutService;
13836
13908
  //#endregion
@@ -14604,6 +14676,12 @@ class TsiFormComponent {
14604
14676
  set isReportingToolbarDisabled(value) {
14605
14677
  this._isReportingToolbarDisabled = value;
14606
14678
  }
14679
+ get inputTitle() {
14680
+ return this.modalHeaderComp?.inputTitle;
14681
+ }
14682
+ set inputTitle(value) {
14683
+ this._inputTitle = value;
14684
+ }
14607
14685
  get doesHaveForms() { return this._doesHaveForms; }
14608
14686
  set doesHaveForms(value) {
14609
14687
  this._doesHaveForms = value;
@@ -14632,6 +14710,7 @@ class TsiFormComponent {
14632
14710
  this.onSave = new EventEmitter();
14633
14711
  this._descriminatorValue = undefined;
14634
14712
  this.entityStatusList = [];
14713
+ this.statusColumnName = '';
14635
14714
  this.isDragOver = false;
14636
14715
  this.messagePosition = { x: 0, y: 0 };
14637
14716
  this.dragEnterCount = 0;
@@ -14891,6 +14970,7 @@ class TsiFormComponent {
14891
14970
  next: (data) => {
14892
14971
  if (!data)
14893
14972
  return;
14973
+ this.statusColumnName = data.statusColumnName ?? "";
14894
14974
  if (data.entityStatus && Array.isArray(data.entityStatus)) {
14895
14975
  this.entityStatusList = data.entityStatus;
14896
14976
  }
@@ -15061,11 +15141,11 @@ class TsiFormComponent {
15061
15141
  });
15062
15142
  }
15063
15143
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormComponent, deps: [{ token: EntityStatusService }, { token: StatusColorService }, { token: FichierService }, { token: ErrorResponseManagerService }, { token: TsiConfirmationService }, { token: TsiNotificationService }, { token: i0.ChangeDetectorRef }, { token: LayoutHelperService }, { token: WorkflowConfigurationService }, { token: ColonnePersonnaliseeService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
15064
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormComponent, selector: "tsi-form", inputs: { class: "class", autocomplete: "autocomplete", optionalEndpoints: "optionalEndpoints", disabled: "disabled", isLoading: "isLoading", modalSize: "modalSize", formEndpoint: "formEndpoint", formName: "formName", isReportingToolbarDisabled: "isReportingToolbarDisabled", isCreateOnly: "isCreateOnly" }, outputs: { onSave: "onSave", onSubmit: "onSubmit", onSubmitFormWorkflowConfiguration: "onSubmitFormWorkflowConfiguration", formRefChange: "formRefChange", onStatusChange: "onStatusChange" }, queries: [{ propertyName: "modalHeaderComp", first: true, predicate: TsiModalHeaderComponent, descendants: true }, { propertyName: "modalFooterComp", first: true, predicate: TsiModalFooterComponent, descendants: true }], viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }, { propertyName: "reportingApp", first: true, predicate: ["reportingApp"], descendants: true }, { propertyName: "toolbarTemplateRef", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "dynamicToolbarContainers", predicate: ["dynamicToolbarContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dynamicFootersContainers", predicate: ["dynamicFooterContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<form class=\"form-horizontal\" autocomplete=\"off\" (ngSubmit)=\"handleFormSubmit($event)\" #formRef=\"ngForm\">\r\n <ng-template #toolbarTemplate>\r\n <p-toolbar *ngIf=\"formEndpoint\" styleClass=\"mb-1 gap-2\" class=\"w-full\" (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\">\r\n\r\n <ng-template pTemplate=\"left\">\r\n <div class=\"mt-1 ml-2\">\r\n {{ inputTitle }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <div class=\"mt-1 mr-2\">\r\n <app-reporting *ngIf=\"formEndpoint\" [fromTsiForm]=\"true\" [id]=\"this.id\" [formEndpoint]=\"formEndpoint\"\r\n [formName]=\"formName\" [reportDiscriminator]=\"descriminatorValue\" [isFormEndpointPaged]=\"true\"\r\n [nombreDocumentsJoints]=\"nombreDocuments\" [configModeButtonId]=\"configModeButtonId\"\r\n [isReportingToolbarDisabled]=\"isReportingToolbarDisabled\" (toggleDesignMode)=\"toggleDesignMode($event)\"\r\n [businessClass]=\"businessClass\" (closedModalFileUpload)=\"getNombreFichier()\"\r\n [showImportExportButton]=\"false\" #reportingApp>\r\n </app-reporting>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n\r\n </p-toolbar>\r\n </ng-template>\r\n\r\n <div *busy=\"isLoading || hasActiveRequests\"></div>\r\n\r\n <fieldset [disabled]=\"disabled\">\r\n <div class=\"card mr\">\r\n <p-tabView>\r\n\r\n <p-tabPanel header=\"\" \r\n [headerStyle]=\"colonnesPersonnaliseeGrouped.length === 0 && !canShowForms\r\n ? { display: 'none' } \r\n : null\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <i class=\"pi pi-home mr-2\"></i>\r\n <span class=\"main-tab-text\">{{ 'shared_form_maintabTitle' | localize }}</span>\r\n </ng-template>\r\n\r\n <ng-content></ng-content>\r\n </p-tabPanel>\r\n\r\n <!-- Dynamic tabs -->\r\n <ng-container *ngIf=\"colonnesPersonnaliseeGrouped.length > 0\">\r\n <p-tabPanel *ngFor=\"let grp of colonnesPersonnaliseeGrouped\" [header]=\"grp.groupe\">\r\n\r\n <ng-template #dynamicToolbarContainer></ng-template>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.colonnes\">\r\n <div class=\"col-3 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n\r\n <!-- String -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [(inputField)]=\"col.data.valeurString\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <!-- Int -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [(inputField)]=\"col.data.valeurInt\"></Tsi-Integer>\r\n </div>\r\n </div>\r\n\r\n <!-- Decimal -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [(inputField)]=\"col.data.valeurDecimal\"></Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n\r\n <!-- Boolean -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [isBinary]=\"false\" [(inputField)]=\"col.data.valeurBoolean\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <!-- Binary -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-template #dynamicFooterContainer></ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"canShowForms\">\r\n <p-tabPanel [header]=\"'shared_form_dynamicFormsTab_Title' | localize\">\r\n <ng-template pTemplate=\"content\">\r\n <shared-dynamic-form-list\r\n [occurence]=\"id\"\r\n [occurenceBusinessClass]=\"businessClass\"\r\n [occurenceDiscriminatorValue]=\"descriminatorValue\"\r\n [ignoreDialogConfig]=\"true\" />\r\n </ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"(businessClass && entityStatusList.length > 0) ||\r\n workflowInformation?.workflowUid ||\r\n workflowConfigurationService.isDesginModeFromWorkflow\" class=\"mx-4 px-2 my-1 shared-footer-bar\">\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\">\r\n <div class=\"flex align-items-center gap-2\" presentationDesigner=\"shared_crud_status\">\r\n <Tsi-Label [labelValue]=\"'shared_crud_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo [id-field]=\"'key'\" [label-field]=\"'value'\" [datasource]=\"entityStatusList\" [(bind)]=\"status\"\r\n [comboType]=\"'status'\" [statusMetadata]=\"statusMetadataComboStatus\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div *ngIf=\"workflowInformation?.workflowUid || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n class=\"flex col-10\">\r\n <div presentationDesigner=\"shared_workflowName\" class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow'| localize\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'workflowName'\" [(inputField)]=\"workflowInformation.workflowName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n <div presentationDesigner=\"administration_workflow_workflow_current_status\"\r\n class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_current_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" [disabled]=\"true\" id-field=\"key\" label-field=\"value\"\r\n [bind]=\"workflowInformation.workflowEtat\" [isFiltered]=\"true\"\r\n [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <div class=\"col-4\">\r\n <div *ngIf=\"mode != formModes.create || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n presentationDesigner=\"administration_workflow_workflow_next_status\"\r\n class=\"flex gap-2 align-items-center no-border\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_next_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" id-field=\"key\" label-field=\"value\" [(bind)]=\"selectedWorkflowEtatUid\"\r\n [isFiltered]=\"true\" [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\"\r\n [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\" (bindChange)=\"confirmUpdateWorkflowEtat($event)\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form>", styles: [".border-black{border:solid 2px black}.no-border{border:none!important}.shared-footer-bar{display:flex;align-items:center;width:calc(100% - 300px);height:2.5rem;position:absolute;bottom:0;z-index:5}.mr{margin:0 12px 5px}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}.main-tab-text{display:inline-block}@media (max-width: 768px){.main-tab-text{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: ReportingComponent, selector: "app-reporting", inputs: ["showImportExportButton", "showNoteButton", "showInfoButton", "showUploadButton", "isReportingToolbarDisabled", "formName", "formEndpoint", "formEndpointBody", "isFormEndpointPaged", "filtersHtmlTemplate", "optionalEndpoints", "businessClass", "cudComponent", "httpMethodType", "requestData", "customReportingMode", "pagedRequest", "reportDiscriminator", "nombreDocumentsJoints", "id", "configModeButtonId", "selectedItemUids", "fromTsiForm", "customSendMailMode", "reportingInformation"], outputs: ["onSave", "refreshData", "closedModalFileUpload", "toggleDesignMode"] }, { kind: "component", type: DynamicFormListComponent, selector: "shared-dynamic-form-list", inputs: ["occurence", "occurenceBusinessClass", "occurenceDiscriminatorValue", "ignoreDialogConfig"] }, { kind: "directive", type: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
15144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormComponent, selector: "tsi-form", inputs: { class: "class", autocomplete: "autocomplete", optionalEndpoints: "optionalEndpoints", disabled: "disabled", isLoading: "isLoading", modalSize: "modalSize", formEndpoint: "formEndpoint", formName: "formName", isReportingToolbarDisabled: "isReportingToolbarDisabled", isCreateOnly: "isCreateOnly" }, outputs: { onSave: "onSave", onSubmit: "onSubmit", onSubmitFormWorkflowConfiguration: "onSubmitFormWorkflowConfiguration", formRefChange: "formRefChange", onStatusChange: "onStatusChange" }, queries: [{ propertyName: "modalHeaderComp", first: true, predicate: TsiModalHeaderComponent, descendants: true }, { propertyName: "modalFooterComp", first: true, predicate: TsiModalFooterComponent, descendants: true }], viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }, { propertyName: "reportingApp", first: true, predicate: ["reportingApp"], descendants: true }, { propertyName: "toolbarTemplateRef", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "dynamicToolbarContainers", predicate: ["dynamicToolbarContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dynamicFootersContainers", predicate: ["dynamicFooterContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<form class=\"form-horizontal\" autocomplete=\"off\" (ngSubmit)=\"handleFormSubmit($event)\" #formRef=\"ngForm\">\r\n <ng-template #toolbarTemplate>\r\n <p-toolbar *ngIf=\"formEndpoint\" styleClass=\"mb-1 gap-2\" class=\"w-full\" (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\">\r\n\r\n <ng-template pTemplate=\"left\">\r\n <div class=\"mt-1 ml-2\">\r\n {{ inputTitle }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <div class=\"mt-1 mr-2\">\r\n <app-reporting *ngIf=\"formEndpoint\" [fromTsiForm]=\"true\" [id]=\"this.id\" [formEndpoint]=\"formEndpoint\"\r\n [formName]=\"formName\" [reportDiscriminator]=\"descriminatorValue\" [isFormEndpointPaged]=\"true\"\r\n [nombreDocumentsJoints]=\"nombreDocuments\" [configModeButtonId]=\"configModeButtonId\"\r\n [isReportingToolbarDisabled]=\"isReportingToolbarDisabled\" (toggleDesignMode)=\"toggleDesignMode($event)\"\r\n [businessClass]=\"businessClass\" (closedModalFileUpload)=\"getNombreFichier()\"\r\n [showImportExportButton]=\"false\" #reportingApp>\r\n </app-reporting>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n\r\n </p-toolbar>\r\n </ng-template>\r\n\r\n <div *busy=\"isLoading || hasActiveRequests\"></div>\r\n\r\n <fieldset [disabled]=\"disabled\">\r\n <div class=\"card mr\">\r\n <p-tabView>\r\n\r\n <p-tabPanel header=\"\" \r\n [headerStyle]=\"colonnesPersonnaliseeGrouped.length === 0 && !canShowForms\r\n ? { display: 'none' } \r\n : null\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <i class=\"pi pi-home mr-2\"></i>\r\n <span class=\"main-tab-text\">{{ 'shared_form_maintabTitle' | localize }}</span>\r\n </ng-template>\r\n\r\n <ng-content></ng-content>\r\n </p-tabPanel>\r\n\r\n <!-- Dynamic tabs -->\r\n <ng-container *ngIf=\"colonnesPersonnaliseeGrouped.length > 0\">\r\n <p-tabPanel *ngFor=\"let grp of colonnesPersonnaliseeGrouped\" [header]=\"grp.groupe\">\r\n\r\n <ng-template #dynamicToolbarContainer></ng-template>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.colonnes\">\r\n <div class=\"col-3 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n\r\n <!-- String -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [(inputField)]=\"col.data.valeurString\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <!-- Int -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [(inputField)]=\"col.data.valeurInt\"></Tsi-Integer>\r\n </div>\r\n </div>\r\n\r\n <!-- Decimal -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [(inputField)]=\"col.data.valeurDecimal\"></Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n\r\n <!-- Boolean -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [isBinary]=\"false\" [(inputField)]=\"col.data.valeurBoolean\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <!-- Binary -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-template #dynamicFooterContainer></ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"canShowForms\">\r\n <p-tabPanel [header]=\"'shared_form_dynamicFormsTab_Title' | localize\">\r\n <ng-template pTemplate=\"content\">\r\n <shared-dynamic-form-list\r\n [occurence]=\"id\"\r\n [occurenceBusinessClass]=\"businessClass\"\r\n [occurenceDiscriminatorValue]=\"descriminatorValue\"\r\n [ignoreDialogConfig]=\"true\" />\r\n </ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"(businessClass && entityStatusList.length > 0) ||\r\n workflowInformation?.workflowUid ||\r\n workflowConfigurationService.isDesginModeFromWorkflow\" class=\"mx-4 px-2 my-1 shared-footer-bar\">\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\">\r\n <div class=\"flex align-items-center gap-2\" presentationDesigner=\"shared_crud_status\">\r\n <Tsi-Label [labelValue]=\"'shared_crud_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo [id-field]=\"'key'\" [label-field]=\"'value'\" [datasource]=\"entityStatusList\" [(bind)]=\"status\"\r\n [comboType]=\"'status'\" [statusMetadata]=\"statusMetadataComboStatus\" [inputName]=\"statusColumnName\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div *ngIf=\"workflowInformation?.workflowUid || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n class=\"flex col-10\">\r\n <div presentationDesigner=\"shared_workflowName\" class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow'| localize\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'workflowName'\" [(inputField)]=\"workflowInformation.workflowName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n <div presentationDesigner=\"administration_workflow_workflow_current_status\"\r\n class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_current_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" [disabled]=\"true\" id-field=\"key\" label-field=\"value\"\r\n [bind]=\"workflowInformation.workflowEtat\" [isFiltered]=\"true\" [inputName]=\"'WorkflowEtat'\"\r\n [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <div class=\"col-4\">\r\n <div *ngIf=\"mode != formModes.create || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n presentationDesigner=\"administration_workflow_workflow_next_status\"\r\n class=\"flex gap-2 align-items-center no-border\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_next_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" id-field=\"key\" label-field=\"value\" [(bind)]=\"selectedWorkflowEtatUid\"\r\n [isFiltered]=\"true\" [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [inputName]=\"'WorkflowEtat'\"\r\n [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\" (bindChange)=\"confirmUpdateWorkflowEtat($event)\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form>", styles: [".border-black{border:solid 2px black}.no-border{border:none!important}.shared-footer-bar{display:flex;align-items:center;width:calc(100% - 33rem);height:2.5rem;position:absolute;bottom:0;z-index:5}.mr{margin:0 12px 5px}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}.main-tab-text{display:inline-block}@media (max-width: 768px){.main-tab-text{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: ReportingComponent, selector: "app-reporting", inputs: ["showImportExportButton", "showNoteButton", "showInfoButton", "showUploadButton", "isReportingToolbarDisabled", "formName", "formEndpoint", "formEndpointBody", "isFormEndpointPaged", "filtersHtmlTemplate", "optionalEndpoints", "businessClass", "cudComponent", "httpMethodType", "requestData", "customReportingMode", "pagedRequest", "reportDiscriminator", "nombreDocumentsJoints", "id", "configModeButtonId", "selectedItemUids", "fromTsiForm", "customSendMailMode", "reportingInformation"], outputs: ["onSave", "refreshData", "closedModalFileUpload", "toggleDesignMode"] }, { kind: "component", type: DynamicFormListComponent, selector: "shared-dynamic-form-list", inputs: ["occurence", "occurenceBusinessClass", "occurenceDiscriminatorValue", "ignoreDialogConfig"] }, { kind: "directive", type: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
15065
15145
  }
15066
15146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormComponent, decorators: [{
15067
15147
  type: Component,
15068
- args: [{ selector: 'tsi-form', template: "<form class=\"form-horizontal\" autocomplete=\"off\" (ngSubmit)=\"handleFormSubmit($event)\" #formRef=\"ngForm\">\r\n <ng-template #toolbarTemplate>\r\n <p-toolbar *ngIf=\"formEndpoint\" styleClass=\"mb-1 gap-2\" class=\"w-full\" (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\">\r\n\r\n <ng-template pTemplate=\"left\">\r\n <div class=\"mt-1 ml-2\">\r\n {{ inputTitle }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <div class=\"mt-1 mr-2\">\r\n <app-reporting *ngIf=\"formEndpoint\" [fromTsiForm]=\"true\" [id]=\"this.id\" [formEndpoint]=\"formEndpoint\"\r\n [formName]=\"formName\" [reportDiscriminator]=\"descriminatorValue\" [isFormEndpointPaged]=\"true\"\r\n [nombreDocumentsJoints]=\"nombreDocuments\" [configModeButtonId]=\"configModeButtonId\"\r\n [isReportingToolbarDisabled]=\"isReportingToolbarDisabled\" (toggleDesignMode)=\"toggleDesignMode($event)\"\r\n [businessClass]=\"businessClass\" (closedModalFileUpload)=\"getNombreFichier()\"\r\n [showImportExportButton]=\"false\" #reportingApp>\r\n </app-reporting>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n\r\n </p-toolbar>\r\n </ng-template>\r\n\r\n <div *busy=\"isLoading || hasActiveRequests\"></div>\r\n\r\n <fieldset [disabled]=\"disabled\">\r\n <div class=\"card mr\">\r\n <p-tabView>\r\n\r\n <p-tabPanel header=\"\" \r\n [headerStyle]=\"colonnesPersonnaliseeGrouped.length === 0 && !canShowForms\r\n ? { display: 'none' } \r\n : null\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <i class=\"pi pi-home mr-2\"></i>\r\n <span class=\"main-tab-text\">{{ 'shared_form_maintabTitle' | localize }}</span>\r\n </ng-template>\r\n\r\n <ng-content></ng-content>\r\n </p-tabPanel>\r\n\r\n <!-- Dynamic tabs -->\r\n <ng-container *ngIf=\"colonnesPersonnaliseeGrouped.length > 0\">\r\n <p-tabPanel *ngFor=\"let grp of colonnesPersonnaliseeGrouped\" [header]=\"grp.groupe\">\r\n\r\n <ng-template #dynamicToolbarContainer></ng-template>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.colonnes\">\r\n <div class=\"col-3 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n\r\n <!-- String -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [(inputField)]=\"col.data.valeurString\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <!-- Int -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [(inputField)]=\"col.data.valeurInt\"></Tsi-Integer>\r\n </div>\r\n </div>\r\n\r\n <!-- Decimal -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [(inputField)]=\"col.data.valeurDecimal\"></Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n\r\n <!-- Boolean -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [isBinary]=\"false\" [(inputField)]=\"col.data.valeurBoolean\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <!-- Binary -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-template #dynamicFooterContainer></ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"canShowForms\">\r\n <p-tabPanel [header]=\"'shared_form_dynamicFormsTab_Title' | localize\">\r\n <ng-template pTemplate=\"content\">\r\n <shared-dynamic-form-list\r\n [occurence]=\"id\"\r\n [occurenceBusinessClass]=\"businessClass\"\r\n [occurenceDiscriminatorValue]=\"descriminatorValue\"\r\n [ignoreDialogConfig]=\"true\" />\r\n </ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"(businessClass && entityStatusList.length > 0) ||\r\n workflowInformation?.workflowUid ||\r\n workflowConfigurationService.isDesginModeFromWorkflow\" class=\"mx-4 px-2 my-1 shared-footer-bar\">\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\">\r\n <div class=\"flex align-items-center gap-2\" presentationDesigner=\"shared_crud_status\">\r\n <Tsi-Label [labelValue]=\"'shared_crud_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo [id-field]=\"'key'\" [label-field]=\"'value'\" [datasource]=\"entityStatusList\" [(bind)]=\"status\"\r\n [comboType]=\"'status'\" [statusMetadata]=\"statusMetadataComboStatus\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div *ngIf=\"workflowInformation?.workflowUid || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n class=\"flex col-10\">\r\n <div presentationDesigner=\"shared_workflowName\" class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow'| localize\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'workflowName'\" [(inputField)]=\"workflowInformation.workflowName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n <div presentationDesigner=\"administration_workflow_workflow_current_status\"\r\n class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_current_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" [disabled]=\"true\" id-field=\"key\" label-field=\"value\"\r\n [bind]=\"workflowInformation.workflowEtat\" [isFiltered]=\"true\"\r\n [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <div class=\"col-4\">\r\n <div *ngIf=\"mode != formModes.create || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n presentationDesigner=\"administration_workflow_workflow_next_status\"\r\n class=\"flex gap-2 align-items-center no-border\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_next_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" id-field=\"key\" label-field=\"value\" [(bind)]=\"selectedWorkflowEtatUid\"\r\n [isFiltered]=\"true\" [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\"\r\n [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\" (bindChange)=\"confirmUpdateWorkflowEtat($event)\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form>", styles: [".border-black{border:solid 2px black}.no-border{border:none!important}.shared-footer-bar{display:flex;align-items:center;width:calc(100% - 300px);height:2.5rem;position:absolute;bottom:0;z-index:5}.mr{margin:0 12px 5px}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}.main-tab-text{display:inline-block}@media (max-width: 768px){.main-tab-text{display:none}}\n"] }]
15148
+ args: [{ selector: 'tsi-form', template: "<form class=\"form-horizontal\" autocomplete=\"off\" (ngSubmit)=\"handleFormSubmit($event)\" #formRef=\"ngForm\">\r\n <ng-template #toolbarTemplate>\r\n <p-toolbar *ngIf=\"formEndpoint\" styleClass=\"mb-1 gap-2\" class=\"w-full\" (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\">\r\n\r\n <ng-template pTemplate=\"left\">\r\n <div class=\"mt-1 ml-2\">\r\n {{ inputTitle }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <div class=\"mt-1 mr-2\">\r\n <app-reporting *ngIf=\"formEndpoint\" [fromTsiForm]=\"true\" [id]=\"this.id\" [formEndpoint]=\"formEndpoint\"\r\n [formName]=\"formName\" [reportDiscriminator]=\"descriminatorValue\" [isFormEndpointPaged]=\"true\"\r\n [nombreDocumentsJoints]=\"nombreDocuments\" [configModeButtonId]=\"configModeButtonId\"\r\n [isReportingToolbarDisabled]=\"isReportingToolbarDisabled\" (toggleDesignMode)=\"toggleDesignMode($event)\"\r\n [businessClass]=\"businessClass\" (closedModalFileUpload)=\"getNombreFichier()\"\r\n [showImportExportButton]=\"false\" #reportingApp>\r\n </app-reporting>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"isDragOver\" [ngStyle]=\"{ left: messagePosition.x + 'px', top: messagePosition.y + 'px' }\"\r\n class=\"drag-message cursor-follow\">\r\n {{ \"Jointure\" | localize }}\r\n </div>\r\n\r\n </p-toolbar>\r\n </ng-template>\r\n\r\n <div *busy=\"isLoading || hasActiveRequests\"></div>\r\n\r\n <fieldset [disabled]=\"disabled\">\r\n <div class=\"card mr\">\r\n <p-tabView>\r\n\r\n <p-tabPanel header=\"\" \r\n [headerStyle]=\"colonnesPersonnaliseeGrouped.length === 0 && !canShowForms\r\n ? { display: 'none' } \r\n : null\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <i class=\"pi pi-home mr-2\"></i>\r\n <span class=\"main-tab-text\">{{ 'shared_form_maintabTitle' | localize }}</span>\r\n </ng-template>\r\n\r\n <ng-content></ng-content>\r\n </p-tabPanel>\r\n\r\n <!-- Dynamic tabs -->\r\n <ng-container *ngIf=\"colonnesPersonnaliseeGrouped.length > 0\">\r\n <p-tabPanel *ngFor=\"let grp of colonnesPersonnaliseeGrouped\" [header]=\"grp.groupe\">\r\n\r\n <ng-template #dynamicToolbarContainer></ng-template>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.colonnes\">\r\n <div class=\"col-3 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n\r\n <!-- String -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [(inputField)]=\"col.data.valeurString\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <!-- Int -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [(inputField)]=\"col.data.valeurInt\"></Tsi-Integer>\r\n </div>\r\n </div>\r\n\r\n <!-- Decimal -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [(inputField)]=\"col.data.valeurDecimal\"></Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n\r\n <!-- Boolean -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [isBinary]=\"false\" [(inputField)]=\"col.data.valeurBoolean\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <!-- Binary -->\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-template #dynamicFooterContainer></ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"canShowForms\">\r\n <p-tabPanel [header]=\"'shared_form_dynamicFormsTab_Title' | localize\">\r\n <ng-template pTemplate=\"content\">\r\n <shared-dynamic-form-list\r\n [occurence]=\"id\"\r\n [occurenceBusinessClass]=\"businessClass\"\r\n [occurenceDiscriminatorValue]=\"descriminatorValue\"\r\n [ignoreDialogConfig]=\"true\" />\r\n </ng-template>\r\n </p-tabPanel>\r\n </ng-container>\r\n\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"(businessClass && entityStatusList.length > 0) ||\r\n workflowInformation?.workflowUid ||\r\n workflowConfigurationService.isDesginModeFromWorkflow\" class=\"mx-4 px-2 my-1 shared-footer-bar\">\r\n\r\n <div *ngIf=\"businessClass && entityStatusList && entityStatusList.length > 0\">\r\n <div class=\"flex align-items-center gap-2\" presentationDesigner=\"shared_crud_status\">\r\n <Tsi-Label [labelValue]=\"'shared_crud_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo [id-field]=\"'key'\" [label-field]=\"'value'\" [datasource]=\"entityStatusList\" [(bind)]=\"status\"\r\n [comboType]=\"'status'\" [statusMetadata]=\"statusMetadataComboStatus\" [inputName]=\"statusColumnName\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div *ngIf=\"workflowInformation?.workflowUid || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n class=\"flex col-10\">\r\n <div presentationDesigner=\"shared_workflowName\" class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow'| localize\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'workflowName'\" [(inputField)]=\"workflowInformation.workflowName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n <div presentationDesigner=\"administration_workflow_workflow_current_status\"\r\n class=\"flex align-items-center gap-2 col-4\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_current_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" [disabled]=\"true\" id-field=\"key\" label-field=\"value\"\r\n [bind]=\"workflowInformation.workflowEtat\" [isFiltered]=\"true\" [inputName]=\"'WorkflowEtat'\"\r\n [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <div class=\"col-4\">\r\n <div *ngIf=\"mode != formModes.create || workflowConfigurationService.isDesginModeFromWorkflow\"\r\n presentationDesigner=\"administration_workflow_workflow_next_status\"\r\n class=\"flex gap-2 align-items-center no-border\">\r\n <Tsi-Label [labelValue]=\"'administration_workflow_workflow_next_status'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"w-7\" id-field=\"key\" label-field=\"value\" [(bind)]=\"selectedWorkflowEtatUid\"\r\n [isFiltered]=\"true\" [elementSourceUrl]=\"getWorkflowEtatAsKeyValuePair\" [inputName]=\"'WorkflowEtat'\"\r\n [listSourceUrl]=\"getWorkflowEtatSuivantAsKeyValuePair\" (bindChange)=\"confirmUpdateWorkflowEtat($event)\"\r\n [showAddButton]=\"false\"\r\n [showSearchButton]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form>", styles: [".border-black{border:solid 2px black}.no-border{border:none!important}.shared-footer-bar{display:flex;align-items:center;width:calc(100% - 33rem);height:2.5rem;position:absolute;bottom:0;z-index:5}.mr{margin:0 12px 5px}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}.main-tab-text{display:inline-block}@media (max-width: 768px){.main-tab-text{display:none}}\n"] }]
15069
15149
  }], ctorParameters: () => [{ type: EntityStatusService }, { type: StatusColorService }, { type: FichierService }, { type: ErrorResponseManagerService }, { type: TsiConfirmationService }, { type: TsiNotificationService }, { type: i0.ChangeDetectorRef }, { type: LayoutHelperService }, { type: WorkflowConfigurationService }, { type: ColonnePersonnaliseeService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }], propDecorators: { formRef: [{
15070
15150
  type: ViewChild,
15071
15151
  args: ['formRef']
@@ -15175,6 +15255,12 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15175
15255
  get componentDescriminator() {
15176
15256
  return this._componentDescriminator;
15177
15257
  }
15258
+ get mode() {
15259
+ return this._mode;
15260
+ }
15261
+ set mode(value) {
15262
+ this._mode = value;
15263
+ }
15178
15264
  set isloading(value) {
15179
15265
  this._isloading = value;
15180
15266
  console.log('isloading set to', value);
@@ -15215,7 +15301,6 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15215
15301
  //#endregion
15216
15302
  //#region Inputs
15217
15303
  this.itemDialog = false;
15218
- this.mode = '';
15219
15304
  this._isloading = false;
15220
15305
  this.saving = false;
15221
15306
  this._status = '';
@@ -15224,16 +15309,16 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15224
15309
  this._viewContainerRef = inject(ViewContainerRef);
15225
15310
  this._renderer = inject(Renderer2);
15226
15311
  this._layoutHelperService = inject(LayoutHelperService);
15227
- this._entityConfigurationsService = inject(EntityConfigurationService);
15228
15312
  this._workflowConfigurationService = inject(WorkflowConfigurationService);
15229
15313
  this._presentationSettingService = inject(PresentationSettingService);
15230
15314
  this._messageInfoService = inject(TsiNotificationService);
15231
15315
  this._errorResponseManager = inject(ErrorResponseManagerService);
15232
15316
  this._presentationDesignerService = inject(PresentationDesignerService);
15233
15317
  this._presentationDesignerBaseService = inject(PresentationDesignerBaseService);
15234
- this._reportingService = inject(ReportingService);
15235
15318
  this.localize = inject(LocalizePipe);
15236
15319
  this._inputRegistry = inject(InputRegistryService);
15320
+ this._formStateService = inject(FormStateService);
15321
+ this._colonnePersonnaliseeService = inject(ColonnePersonnaliseeService);
15237
15322
  this.directiveElements = [];
15238
15323
  this.presentationRequest = new PresentationSetting();
15239
15324
  //#region Outputs
@@ -15251,6 +15336,7 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15251
15336
  super.ngOnInit();
15252
15337
  this._initModalRef();
15253
15338
  this.initModalData();
15339
+ this._initFormSaveSubscription();
15254
15340
  this._addedDirectiveSubscritpion = this._presentationDesignerService.addedDirectiveObservable
15255
15341
  .subscribe(data => {
15256
15342
  if (data.treated) {
@@ -15287,6 +15373,22 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15287
15373
  }
15288
15374
  });
15289
15375
  }
15376
+ _initFormSaveSubscription() {
15377
+ this.savedDataSubscription = this._colonnePersonnaliseeService
15378
+ .dataSavedObservable.subscribe(async (data) => {
15379
+ this._inputRegistry.resetDirtyStatusForAllInputs();
15380
+ if (data && this.mode == Modes.create) {
15381
+ this.id = data;
15382
+ this.mode = Modes.edit;
15383
+ this.cdRef?.detectChanges();
15384
+ if (this.form) {
15385
+ this.form.id = this.id;
15386
+ this.form.mode = this.mode;
15387
+ this.form.formEndpoint = this.formEndpoint;
15388
+ }
15389
+ }
15390
+ });
15391
+ }
15290
15392
  toggleDesignMode() {
15291
15393
  this.removeTsiModalFooter();
15292
15394
  this.createSaveButton();
@@ -15468,6 +15570,10 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15468
15570
  result = false;
15469
15571
  this.areAllComboLoaded = result;
15470
15572
  }
15573
+ /**
15574
+ * @deprecated Use the new modal handling method (resolveFiche) instead.
15575
+ * This method directly manipulates the dialog reference and may lead to inconsistent behavior.
15576
+ */
15471
15577
  hide(val) {
15472
15578
  if (this.openedDialogRef != null && this.openedDialogRef != undefined) {
15473
15579
  if (val == false) {
@@ -15478,6 +15584,11 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15478
15584
  }
15479
15585
  }
15480
15586
  }
15587
+ resolveFiche(val) {
15588
+ if (!this._formStateService.closeModal)
15589
+ return;
15590
+ this.hide(val);
15591
+ }
15481
15592
  //#endregion traiter multiple combo
15482
15593
  getWorkflowEtatForm() {
15483
15594
  let workflowEtatForm = this._workflowConfigurationService.workflowEtatFormForCurrentForm
@@ -15652,6 +15763,9 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15652
15763
  if (this._addedDirectiveBaseSubscritpion) {
15653
15764
  this._addedDirectiveBaseSubscritpion.unsubscribe();
15654
15765
  }
15766
+ if (this.savedDataSubscription) {
15767
+ this.savedDataSubscription.unsubscribe();
15768
+ }
15655
15769
  }
15656
15770
  removeTsiModalFooter() {
15657
15771
  const tsiModalFooter = document.querySelector("tsi-modal-footer");
@@ -15728,7 +15842,7 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
15728
15842
  this.editableGridComponents.forEach((e) => e.updateFormState(formState));
15729
15843
  }
15730
15844
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormComponentBaseComponent, deps: [{ token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
15731
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormComponentBaseComponent, selector: "app-tsi-form-base", inputs: { itemDialog: "itemDialog", mode: "mode", id: "id", isloading: "isloading", header: "header", saving: "saving", item: "item", status: "status" }, outputs: { onSave: "onSave" }, viewQueries: [{ propertyName: "form", first: true, predicate: TsiFormComponent, descendants: true }, { propertyName: "modalFooter", first: true, predicate: TsiButtonComponent, descendants: true }, { propertyName: "checkbox", predicate: TsiCheckboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<p>tsi-form-base works!</p>\r\n", styles: [".new-block{margin-bottom:20px;border:1px solid #ccc;padding:10px}.flex{display:flex;align-items:center;margin-bottom:5px}.flex input[type=checkbox]{margin-right:10px}\n"] }); }
15845
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormComponentBaseComponent, selector: "app-tsi-form-base", inputs: { itemDialog: "itemDialog", mode: "mode", id: "id", isloading: "isloading", header: "header", saving: "saving", item: "item", status: "status" }, outputs: { onSave: "onSave" }, viewQueries: [{ propertyName: "form", first: true, predicate: TsiFormComponent, descendants: true }, { propertyName: "modalFooter", first: true, predicate: TsiModalFooterComponent, descendants: true }, { propertyName: "checkbox", predicate: TsiCheckboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<p>tsi-form-base works!</p>\r\n", styles: [".new-block{margin-bottom:20px;border:1px solid #ccc;padding:10px}.flex{display:flex;align-items:center;margin-bottom:5px}.flex input[type=checkbox]{margin-right:10px}\n"] }); }
15732
15846
  }
15733
15847
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormComponentBaseComponent, decorators: [{
15734
15848
  type: Component,
@@ -15738,7 +15852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
15738
15852
  args: [TsiFormComponent]
15739
15853
  }], modalFooter: [{
15740
15854
  type: ViewChild,
15741
- args: [TsiButtonComponent]
15855
+ args: [TsiModalFooterComponent]
15742
15856
  }], checkbox: [{
15743
15857
  type: ViewChildren,
15744
15858
  args: [TsiCheckboxComponent]
@@ -15785,6 +15899,7 @@ class TsiTextAreaComponent extends TsiInputBase {
15785
15899
  }
15786
15900
  onChangeofOptions(input) {
15787
15901
  this.inputField = input;
15902
+ this.isDirty = true;
15788
15903
  this.newItemEvent.emit(this.inputField);
15789
15904
  this.inputFieldChange.emit(this.inputField);
15790
15905
  }
@@ -15902,11 +16017,11 @@ class TsiNotesComponent extends TsiFormComponentBaseComponent {
15902
16017
  }
15903
16018
  }
15904
16019
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiNotesComponent, deps: [{ token: NoteService }, { token: ErrorResponseManagerService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: TsiNotificationService }, { token: TsiConfirmationService }, { token: DialogDataService }], target: i0.ɵɵFactoryTarget.Component }); }
15905
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiNotesComponent, selector: "app-tsi-notes", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_notes' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'shared_notes_class_name'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-6\" [inputName]=\"'ClassName'\" [(inputField)]=\"note.className\"\r\n [disabled]=\"true\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"Note\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_note'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'Note'\" [(inputField)]=\"note.note\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"avertir\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_avertir'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-2\" [inputName]=\"'avertir'\" [(inputField)]=\"note.avertir\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "component", type: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
16020
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiNotesComponent, selector: "app-tsi-notes", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_notes' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'shared_notes_class_name'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-6\" [inputName]=\"'ClassName'\" [(inputField)]=\"note.className\"\r\n [disabled]=\"true\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"Note\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_note'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'Note'\" [(inputField)]=\"note.note\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"avertir\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_avertir'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-2\" [inputName]=\"'avertir'\" [(inputField)]=\"note.avertir\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "component", type: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
15906
16021
  }
15907
16022
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiNotesComponent, decorators: [{
15908
16023
  type: Component,
15909
- args: [{ selector: 'app-tsi-notes', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_notes' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'shared_notes_class_name'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-6\" [inputName]=\"'ClassName'\" [(inputField)]=\"note.className\"\r\n [disabled]=\"true\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"Note\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_note'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'Note'\" [(inputField)]=\"note.note\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"avertir\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_avertir'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-2\" [inputName]=\"'avertir'\" [(inputField)]=\"note.avertir\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
16024
+ args: [{ selector: 'app-tsi-notes', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_notes' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'shared_notes_class_name'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-6\" [inputName]=\"'ClassName'\" [(inputField)]=\"note.className\"\r\n [disabled]=\"true\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"Note\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_note'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'Note'\" [(inputField)]=\"note.note\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div presentationDesigner=\"avertir\" class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'shared_notes_avertir'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-2\" [inputName]=\"'avertir'\" [(inputField)]=\"note.avertir\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
15910
16025
  }], ctorParameters: () => [{ type: NoteService }, { type: ErrorResponseManagerService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }, { type: TsiNotificationService }, { type: TsiConfirmationService }, { type: DialogDataService }] });
15911
16026
 
15912
16027
  class SharedComponentReferenceHelper {
@@ -16139,11 +16254,11 @@ class CreateOrEditModeleImportComponent extends TsiFormComponentBaseComponent {
16139
16254
  }
16140
16255
  }
16141
16256
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, deps: [{ token: ModeleImportService }, { token: TsiNotificationService }, { token: i1$3.DynamicDialogConfig }, { token: i1$3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
16142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
16257
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\" [showSaveAndCloseButton]=\"false\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
16143
16258
  }
16144
16259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, decorators: [{
16145
16260
  type: Component,
16146
- args: [{ selector: 'app-create-or-edit-modele-import', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>" }]
16261
+ args: [{ selector: 'app-create-or-edit-modele-import', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\" [showSaveAndCloseButton]=\"false\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>" }]
16147
16262
  }], ctorParameters: () => [{ type: ModeleImportService }, { type: TsiNotificationService }, { type: i1$3.DynamicDialogConfig }, { type: i1$3.DynamicDialogRef }] });
16148
16263
 
16149
16264
  class ManageImportExportComponent extends TsiFormComponentBaseComponent {
@@ -16965,11 +17080,11 @@ class AddReportPopupComponent extends TsiFormComponentBaseComponent {
16965
17080
  });
16966
17081
  }
16967
17082
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddReportPopupComponent, deps: [{ token: i1$3.DynamicDialogRef }, { token: ReportingService }, { token: i1$3.DynamicDialogConfig }, { token: TsiNotificationService }, { token: DashboardModuleService }, { token: TsiConfirmationService }, { token: i1.HttpClient }, { token: i2$4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
16968
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddReportPopupComponent, selector: "app-add-report-popup", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox>&nbsp;\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"customReportingMode && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"isReportForFiche\"\r\n id-field=\"value\"\r\n label-field=\"value\"\r\n [(bind)]=\"selectedEndpoints\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\"\r\n [multiple]=\"true\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"!isReportForFiche && enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i12.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
17083
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddReportPopupComponent, selector: "app-add-report-popup", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox>&nbsp;\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"customReportingMode && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"isReportForFiche\"\r\n id-field=\"value\"\r\n label-field=\"value\"\r\n [(bind)]=\"selectedEndpoints\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\"\r\n [multiple]=\"true\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"!isReportForFiche && enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onCancelClick)=\"hide()\" \r\n [showSaveAndCloseButton]=\"false\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i12.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
16969
17084
  }
16970
17085
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddReportPopupComponent, decorators: [{
16971
17086
  type: Component,
16972
- args: [{ selector: 'app-add-report-popup', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox>&nbsp;\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"customReportingMode && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"isReportForFiche\"\r\n id-field=\"value\"\r\n label-field=\"value\"\r\n [(bind)]=\"selectedEndpoints\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\"\r\n [multiple]=\"true\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"!isReportForFiche && enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"] }]
17087
+ args: [{ selector: 'app-add-report-popup', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox>&nbsp;\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"customReportingMode && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"isReportForFiche\"\r\n id-field=\"value\"\r\n label-field=\"value\"\r\n [(bind)]=\"selectedEndpoints\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\"\r\n [multiple]=\"true\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"!isReportForFiche && enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onCancelClick)=\"hide()\" \r\n [showSaveAndCloseButton]=\"false\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"] }]
16973
17088
  }], ctorParameters: () => [{ type: i1$3.DynamicDialogRef }, { type: ReportingService }, { type: i1$3.DynamicDialogConfig }, { type: TsiNotificationService }, { type: DashboardModuleService }, { type: TsiConfirmationService }, { type: i1.HttpClient }, { type: i2$4.Router }] });
16974
17089
 
16975
17090
  class ManageReportingComponent extends TsiFormComponentBaseComponent {
@@ -18066,11 +18181,11 @@ class TsiChangePasswordComponent extends TsiFormComponentBaseComponent {
18066
18181
  this.ref.close();
18067
18182
  }
18068
18183
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiChangePasswordComponent, deps: [{ token: DialogDataService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
18069
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiChangePasswordComponent, selector: "app-tsi-change-password", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<!-- <Tsi-Button [buttonType]=\"buttonType.Submit\" text=\"{{'paie_parametre_parametreApp_test' | localize}}\" (onClick)=\"SendEmail()\"></Tsi-Button> -->\r\n<tsi-form (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n\r\n <div class=\"card\">\r\n <div class=\" col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'oldPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"oldPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'newPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"newPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'confirmedPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"confirmedNewPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-10\">\r\n <p-checkbox label=\"Afficher les mots de passe\" [(ngModel)]=\"isPasswordVisible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <Tsi-Modal-Footer (onCancelClick)=\"hide()\"> </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }] }); }
18184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiChangePasswordComponent, selector: "app-tsi-change-password", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<!-- <Tsi-Button [buttonType]=\"buttonType.Submit\" text=\"{{'paie_parametre_parametreApp_test' | localize}}\" (onClick)=\"SendEmail()\"></Tsi-Button> -->\r\n<tsi-form (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n\r\n <div class=\"card\">\r\n <div class=\" col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'oldPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"oldPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'newPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"newPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'confirmedPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"confirmedNewPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-10\">\r\n <p-checkbox label=\"Afficher les mots de passe\" [(ngModel)]=\"isPasswordVisible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" (onCancelClick)=\"hide()\"> </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }] }); }
18070
18185
  }
18071
18186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiChangePasswordComponent, decorators: [{
18072
18187
  type: Component,
18073
- args: [{ selector: 'app-tsi-change-password', providers: [...appProviders], template: "<!-- <Tsi-Button [buttonType]=\"buttonType.Submit\" text=\"{{'paie_parametre_parametreApp_test' | localize}}\" (onClick)=\"SendEmail()\"></Tsi-Button> -->\r\n<tsi-form (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n\r\n <div class=\"card\">\r\n <div class=\" col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'oldPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"oldPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'newPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"newPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'confirmedPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"confirmedNewPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-10\">\r\n <p-checkbox label=\"Afficher les mots de passe\" [(ngModel)]=\"isPasswordVisible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <Tsi-Modal-Footer (onCancelClick)=\"hide()\"> </Tsi-Modal-Footer>\r\n</tsi-form>" }]
18188
+ args: [{ selector: 'app-tsi-change-password', providers: [...appProviders], template: "<!-- <Tsi-Button [buttonType]=\"buttonType.Submit\" text=\"{{'paie_parametre_parametreApp_test' | localize}}\" (onClick)=\"SendEmail()\"></Tsi-Button> -->\r\n<tsi-form (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n\r\n <div class=\"card\">\r\n <div class=\" col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'oldPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"oldPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'newPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"newPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'confirmedPwd'\">\r\n </Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'libelle'\" [(inputField)]=\"confirmedNewPassword\"\r\n [textBoxType]=\"isPasswordVisible ? 'text' : 'password'\"></Tsi-Text-Box>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-10\">\r\n <p-checkbox label=\"Afficher les mots de passe\" [(ngModel)]=\"isPasswordVisible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" (onCancelClick)=\"hide()\"> </Tsi-Modal-Footer>\r\n</tsi-form>" }]
18074
18189
  }], ctorParameters: () => [{ type: DialogDataService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }] });
18075
18190
 
18076
18191
  class TsiCodeGeneratorComponent {
@@ -18288,11 +18403,11 @@ class TsiGenericFormComponent extends TsiFormComponentBaseComponent {
18288
18403
  }
18289
18404
  }
18290
18405
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiGenericFormComponent, deps: [{ token: TsiMessageService }, { token: TsiNotificationService }, { token: TsiConfirmationService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
18291
- 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 [cancelDisabled]=\"saving\" (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiParagraphComponent, selector: "Tsi-Paragraph", inputs: ["paragraphName"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "directive", type: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
18406
+ 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: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiParagraphComponent, selector: "Tsi-Paragraph", inputs: ["paragraphName"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "directive", type: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
18292
18407
  }
18293
18408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiGenericFormComponent, decorators: [{
18294
18409
  type: Component,
18295
- args: [{ selector: 'tsi-generic-form', 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 [cancelDisabled]=\"saving\" (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</form>" }]
18410
+ args: [{ selector: 'tsi-generic-form', 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>" }]
18296
18411
  }], ctorParameters: () => [{ type: TsiMessageService }, { type: TsiNotificationService }, { type: TsiConfirmationService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }], propDecorators: { crudService: [{
18297
18412
  type: Input
18298
18413
  }], configuration: [{
@@ -18618,6 +18733,7 @@ class TsiFileManagerComponent extends TsiInputBase {
18618
18733
  ${(files[0].size / (1024 * 1024)).toFixed(2)}
18619
18734
  ${this.localize.transform("tsi_file_upload_auto_validation_max_length_detail_2")}
18620
18735
  ${(this.maxFileSize / (1024 * 1024)).toFixed(2)} Mo`, this.localize.transform("tsi_file_upload_auto_validation_max_length_title"));
18736
+ this.isDirty = this.inputField != undefined && this.inputField != null;
18621
18737
  this.inputField = undefined;
18622
18738
  return;
18623
18739
  }
@@ -18626,9 +18742,11 @@ class TsiFileManagerComponent extends TsiInputBase {
18626
18742
  this.onSelectFileManager.emit({ event, files, inputField: this.inputField, fileName: fileName });
18627
18743
  this.inputFieldChange.emit(this.inputField);
18628
18744
  this.fileNameChange.emit(this.fileName);
18745
+ this.isDirty = true;
18629
18746
  }, 200);
18630
18747
  }
18631
18748
  onFileClear() {
18749
+ this.isDirty = this.inputField != undefined && this.inputField != null;
18632
18750
  this.inputField = null;
18633
18751
  this.fileName = '';
18634
18752
  this.imageUrl = null;
@@ -18640,6 +18758,7 @@ class TsiFileManagerComponent extends TsiInputBase {
18640
18758
  const file = event.file;
18641
18759
  //this.inputField = this.inputField.filter((f: any) => f !== file);
18642
18760
  //this.fileName = this.inputField.map((f: any) => f.name).join(', ');
18761
+ this.isDirty = this.inputField != undefined && this.inputField != null;
18643
18762
  this.inputField = null;
18644
18763
  this.fileName = '';
18645
18764
  this.imageUrl = null;
@@ -18906,11 +19025,11 @@ class TsiUploadFicheComponent extends TsiFormComponentBaseComponent {
18906
19025
  this.allDataLoaded = true;
18907
19026
  }
18908
19027
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiUploadFicheComponent, deps: [{ token: FichierService }, { token: ErrorResponseManagerService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: TsiNotificationService }, { token: TsiConfirmationService }, { token: DialogDataService }], target: i0.ɵɵFactoryTarget.Component }); }
18909
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiUploadFicheComponent, selector: "app-tsi-upload-fiche", outputs: { onSave: "onSave" }, providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'upload_fichier' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <!-- TODO @MedAli -->\r\n <!-- <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TypeFichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" elementSourceUrl=\"{{paramBaseEndpoints.getTypeFichierMinimal()}}\"\r\n listSourceUrl=\"{{paramBaseEndpoints.getAllTypeFichierMinimal()}}\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\" (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo>\r\n </div> -->\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TableLiee'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'tableLiee'\" [(inputField)]=\"fichier.tableLiee\"\r\n [disabled]=\"isDisable\"></Tsi-Text-Box>\r\n <!-- <Tsi-Search-Combo\r\n class=\"col-6\"\r\n [(bind)]=\"fichier.tableLiee\"\r\n id-field=\"id\"\r\n label-field=\"value\"\r\n (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Nom'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'nom'\" [(inputField)]=\"fichier.nom\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_DateFichier'\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"col-8\" [inputName]=\"'dateFichier'\"\r\n [(inputField)]=\"fichier.dateFichier\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Objet'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-10\" [inputName]=\"'Objet'\" [(inputField)]=\"fichier.objet\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Description'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'description'\" [(inputField)]=\"fichier.description\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n\r\n <Tsi-Label for=\"isFileStorage\" class=\"col-1\" [labelValue]=\"'parambase_param_fichier_isFileStorage'\"></Tsi-Label>\r\n <Tsi-CheckBox id=\"isFileStorage\" class=\"col-5\" [isBinary]=\"true\"\r\n [inputName]=\"'isFileStorage'\" [disabled]=\"true\" [inputField]=\"fichier.isFileStorage\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <div class=\"col-11\">\r\n <Tsi-File-Manager \r\n [showFileUpload]=\"true\" \r\n [(inputField)]=\"fichier.contenu\"\r\n [(fileName)]=\"fichier.nomFichierComplet\" \r\n name=\"fileFichier\" \r\n id=\"fileUploading\" \r\n inputName=\"contenu\" \r\n accept=\"\"\r\n [maxFileSize]=\"10485760\" \r\n [multiple]=\"false\" \r\n [disabled]=\"isEditMode()\"\r\n [showDownloadButton]=\"true\"\r\n [showCancelButton]=\"false\"\r\n [showUploadButton]=\"false\" \r\n [exploreOnDownload]=\"true\"\r\n (onSelectFileManager)=\"onFileSelected($event)\"\r\n ></Tsi-File-Manager>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <!-- <p-fileUpload #fileUploadFichier name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\" [showUploadButton]=\"false\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload> -->\r\n\r\n\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "component", type: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: ["fileName", "name", "id", "accept", "maxFileSize", "multiple", "exploreOnDownload", "showUploadButton", "showCancelButton", "showDownloadButton", "chooseIcon", "chooseLabel", "showSelectButton", "showFileUpload"], outputs: ["onSelectFileManager", "onClear", "onRemove", "inputFieldChange", "fileNameChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
19028
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiUploadFicheComponent, selector: "app-tsi-upload-fiche", outputs: { onSave: "onSave" }, providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'upload_fichier' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <!-- TODO @MedAli -->\r\n <!-- <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TypeFichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" elementSourceUrl=\"{{paramBaseEndpoints.getTypeFichierMinimal()}}\"\r\n listSourceUrl=\"{{paramBaseEndpoints.getAllTypeFichierMinimal()}}\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\" (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo>\r\n </div> -->\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TableLiee'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'tableLiee'\" [(inputField)]=\"fichier.tableLiee\"\r\n [disabled]=\"isDisable\"></Tsi-Text-Box>\r\n <!-- <Tsi-Search-Combo\r\n class=\"col-6\"\r\n [(bind)]=\"fichier.tableLiee\"\r\n id-field=\"id\"\r\n label-field=\"value\"\r\n (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Nom'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'nom'\" [(inputField)]=\"fichier.nom\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_DateFichier'\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"col-8\" [inputName]=\"'dateFichier'\"\r\n [(inputField)]=\"fichier.dateFichier\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Objet'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-10\" [inputName]=\"'Objet'\" [(inputField)]=\"fichier.objet\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Description'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'description'\" [(inputField)]=\"fichier.description\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n\r\n <Tsi-Label for=\"isFileStorage\" class=\"col-1\" [labelValue]=\"'parambase_param_fichier_isFileStorage'\"></Tsi-Label>\r\n <Tsi-CheckBox id=\"isFileStorage\" class=\"col-5\" [isBinary]=\"true\"\r\n [inputName]=\"'isFileStorage'\" [disabled]=\"true\" [inputField]=\"fichier.isFileStorage\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <div class=\"col-11\">\r\n <Tsi-File-Manager \r\n [showFileUpload]=\"true\" \r\n [(inputField)]=\"fichier.contenu\"\r\n [(fileName)]=\"fichier.nomFichierComplet\" \r\n name=\"fileFichier\" \r\n id=\"fileUploading\" \r\n inputName=\"contenu\" \r\n accept=\"\"\r\n [maxFileSize]=\"10485760\" \r\n [multiple]=\"false\" \r\n [disabled]=\"isEditMode()\"\r\n [showDownloadButton]=\"true\"\r\n [showCancelButton]=\"false\"\r\n [showUploadButton]=\"false\" \r\n [exploreOnDownload]=\"true\"\r\n (onSelectFileManager)=\"onFileSelected($event)\"\r\n ></Tsi-File-Manager>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <!-- <p-fileUpload #fileUploadFichier name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\" [showUploadButton]=\"false\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload> -->\r\n\r\n\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "component", type: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: ["fileName", "name", "id", "accept", "maxFileSize", "multiple", "exploreOnDownload", "showUploadButton", "showCancelButton", "showDownloadButton", "chooseIcon", "chooseLabel", "showSelectButton", "showFileUpload"], outputs: ["onSelectFileManager", "onClear", "onRemove", "inputFieldChange", "fileNameChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
18910
19029
  }
18911
19030
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiUploadFicheComponent, decorators: [{
18912
19031
  type: Component,
18913
- args: [{ selector: 'app-tsi-upload-fiche', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'upload_fichier' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <!-- TODO @MedAli -->\r\n <!-- <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TypeFichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" elementSourceUrl=\"{{paramBaseEndpoints.getTypeFichierMinimal()}}\"\r\n listSourceUrl=\"{{paramBaseEndpoints.getAllTypeFichierMinimal()}}\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\" (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo>\r\n </div> -->\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TableLiee'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'tableLiee'\" [(inputField)]=\"fichier.tableLiee\"\r\n [disabled]=\"isDisable\"></Tsi-Text-Box>\r\n <!-- <Tsi-Search-Combo\r\n class=\"col-6\"\r\n [(bind)]=\"fichier.tableLiee\"\r\n id-field=\"id\"\r\n label-field=\"value\"\r\n (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Nom'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'nom'\" [(inputField)]=\"fichier.nom\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_DateFichier'\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"col-8\" [inputName]=\"'dateFichier'\"\r\n [(inputField)]=\"fichier.dateFichier\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Objet'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-10\" [inputName]=\"'Objet'\" [(inputField)]=\"fichier.objet\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Description'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'description'\" [(inputField)]=\"fichier.description\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n\r\n <Tsi-Label for=\"isFileStorage\" class=\"col-1\" [labelValue]=\"'parambase_param_fichier_isFileStorage'\"></Tsi-Label>\r\n <Tsi-CheckBox id=\"isFileStorage\" class=\"col-5\" [isBinary]=\"true\"\r\n [inputName]=\"'isFileStorage'\" [disabled]=\"true\" [inputField]=\"fichier.isFileStorage\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <div class=\"col-11\">\r\n <Tsi-File-Manager \r\n [showFileUpload]=\"true\" \r\n [(inputField)]=\"fichier.contenu\"\r\n [(fileName)]=\"fichier.nomFichierComplet\" \r\n name=\"fileFichier\" \r\n id=\"fileUploading\" \r\n inputName=\"contenu\" \r\n accept=\"\"\r\n [maxFileSize]=\"10485760\" \r\n [multiple]=\"false\" \r\n [disabled]=\"isEditMode()\"\r\n [showDownloadButton]=\"true\"\r\n [showCancelButton]=\"false\"\r\n [showUploadButton]=\"false\" \r\n [exploreOnDownload]=\"true\"\r\n (onSelectFileManager)=\"onFileSelected($event)\"\r\n ></Tsi-File-Manager>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <!-- <p-fileUpload #fileUploadFichier name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\" [showUploadButton]=\"false\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload> -->\r\n\r\n\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
19032
+ args: [{ selector: 'app-tsi-upload-fiche', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'upload_fichier' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <!-- TODO @MedAli -->\r\n <!-- <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TypeFichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" elementSourceUrl=\"{{paramBaseEndpoints.getTypeFichierMinimal()}}\"\r\n listSourceUrl=\"{{paramBaseEndpoints.getAllTypeFichierMinimal()}}\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\" (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo>\r\n </div> -->\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_TableLiee'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'tableLiee'\" [(inputField)]=\"fichier.tableLiee\"\r\n [disabled]=\"isDisable\"></Tsi-Text-Box>\r\n <!-- <Tsi-Search-Combo\r\n class=\"col-6\"\r\n [(bind)]=\"fichier.tableLiee\"\r\n id-field=\"id\"\r\n label-field=\"value\"\r\n (datasource-loaded)=\"onDataLoaded()\">\r\n </Tsi-Search-Combo> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Nom'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'nom'\" [(inputField)]=\"fichier.nom\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_DateFichier'\"></Tsi-Label>\r\n <Tsi-Date-Picker class=\"col-8\" [inputName]=\"'dateFichier'\"\r\n [(inputField)]=\"fichier.dateFichier\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Objet'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-10\" [inputName]=\"'Objet'\" [(inputField)]=\"fichier.objet\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-1\" [labelValue]=\"'parambase_param_fichier_Description'\"></Tsi-Label>\r\n <Tsi-Text-Area class=\"col-10\" [inputName]=\"'description'\" [(inputField)]=\"fichier.description\" [rows]=\"5\"\r\n [cols]=\"5\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n\r\n <Tsi-Label for=\"isFileStorage\" class=\"col-1\" [labelValue]=\"'parambase_param_fichier_isFileStorage'\"></Tsi-Label>\r\n <Tsi-CheckBox id=\"isFileStorage\" class=\"col-5\" [isBinary]=\"true\"\r\n [inputName]=\"'isFileStorage'\" [disabled]=\"true\" [inputField]=\"fichier.isFileStorage\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid flex\">\r\n <div class=\"col-11\">\r\n <Tsi-File-Manager \r\n [showFileUpload]=\"true\" \r\n [(inputField)]=\"fichier.contenu\"\r\n [(fileName)]=\"fichier.nomFichierComplet\" \r\n name=\"fileFichier\" \r\n id=\"fileUploading\" \r\n inputName=\"contenu\" \r\n accept=\"\"\r\n [maxFileSize]=\"10485760\" \r\n [multiple]=\"false\" \r\n [disabled]=\"isEditMode()\"\r\n [showDownloadButton]=\"true\"\r\n [showCancelButton]=\"false\"\r\n [showUploadButton]=\"false\" \r\n [exploreOnDownload]=\"true\"\r\n (onSelectFileManager)=\"onFileSelected($event)\"\r\n ></Tsi-File-Manager>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <!-- <p-fileUpload #fileUploadFichier name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\" [showUploadButton]=\"false\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload> -->\r\n\r\n\r\n </div>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
18914
19033
  }], ctorParameters: () => [{ type: FichierService }, { type: ErrorResponseManagerService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }, { type: TsiNotificationService }, { type: TsiConfirmationService }, { type: DialogDataService }], propDecorators: { onSave: [{
18915
19034
  type: Output
18916
19035
  }] } });
@@ -19479,11 +19598,11 @@ class CreateOrEditEntityInformationsComponent extends TsiFormComponentBaseCompon
19479
19598
  return comparison[field] || '';
19480
19599
  }
19481
19600
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, deps: [{ token: EntityConfigurationService }, { token: ErrorResponseManagerService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: TsiNotificationService }, { token: TsiConfirmationService }, { token: ApiExplorerService }], target: i0.ɵɵFactoryTarget.Component }); }
19482
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <div *ngIf=\"uid\" class=\"flex align-items-center gap-2 mb-2\">\r\n <span class=\"font-semibold\">{{'administration_gestionEntityInformation_uid' | localize}} :</span>\r\n <span>{{ uid }}</span>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_properties' | localize\">\r\n <div class=\"flex align-items-center gap-2 mb-3\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" [(ngModel)]=\"propertiesSearchText\" (ngModelChange)=\"onPropertiesSearch()\"\r\n [placeholder]=\"'administration_properties_searchPlaceholder' | localize\" class=\"p-inputtext-sm\" />\r\n </span>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_modelColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedModelColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('model', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_projectDbColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedDbColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('db', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <Tsi-CheckBox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\"\r\n [disabled]=\"true\"></Tsi-CheckBox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_sqlColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedSqlColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('sql', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <p-paginator [rows]=\"propertiesPageSize\" [totalRecords]=\"propertiesTotalRecords\" [first]=\"propertiesFirst\"\r\n (onPageChange)=\"onPropertiesPageChange($event)\" [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n </p-paginator>\r\n\r\n <div class=\"comparison-legend mt-3\">\r\n <span class=\"legend-item comparison-missing-legend\">{{ 'administration_properties_comparison_missing' | localize }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' | localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' | localize }}</span>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .comparison-missing{background-color:#ef9a9a!important}:host ::ng-deep .comparison-type-mismatch{background-color:#ffcdd2!important}:host ::ng-deep .comparison-length-mismatch{background-color:#fff9c4!important}.properties-grid-section{border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.properties-grid-title{margin:0;padding:.75rem 1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;font-size:.95rem;font-weight:600}.comparison-legend{display:flex;gap:1rem;flex-wrap:wrap}.comparison-legend .legend-item{padding:.25rem .75rem;border-radius:4px;font-size:.8rem}.comparison-legend .comparison-missing-legend{background-color:#ef9a9a}.comparison-legend .comparison-type-mismatch-legend{background-color:#ffcdd2}.comparison-legend .comparison-length-mismatch-legend{background-color:#fff9c4}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i5.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: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6$3.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: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
19601
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <div *ngIf=\"uid\" class=\"flex align-items-center gap-2 mb-2\">\r\n <span class=\"font-semibold\">{{'administration_gestionEntityInformation_uid' | localize}} :</span>\r\n <span>{{ uid }}</span>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_properties' | localize\">\r\n <div class=\"flex align-items-center gap-2 mb-3\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" [(ngModel)]=\"propertiesSearchText\" (ngModelChange)=\"onPropertiesSearch()\"\r\n [placeholder]=\"'administration_properties_searchPlaceholder' | localize\" class=\"p-inputtext-sm\" />\r\n </span>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_modelColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedModelColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('model', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_projectDbColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedDbColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('db', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <Tsi-CheckBox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\"\r\n [disabled]=\"true\"></Tsi-CheckBox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_sqlColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedSqlColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('sql', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <p-paginator [rows]=\"propertiesPageSize\" [totalRecords]=\"propertiesTotalRecords\" [first]=\"propertiesFirst\"\r\n (onPageChange)=\"onPropertiesPageChange($event)\" [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n </p-paginator>\r\n\r\n <div class=\"comparison-legend mt-3\">\r\n <span class=\"legend-item comparison-missing-legend\">{{ 'administration_properties_comparison_missing' | localize }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' | localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' | localize }}</span>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\" [showSaveAndCloseButton]=\"false\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .comparison-missing{background-color:#ef9a9a!important}:host ::ng-deep .comparison-type-mismatch{background-color:#ffcdd2!important}:host ::ng-deep .comparison-length-mismatch{background-color:#fff9c4!important}.properties-grid-section{border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.properties-grid-title{margin:0;padding:.75rem 1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;font-size:.95rem;font-weight:600}.comparison-legend{display:flex;gap:1rem;flex-wrap:wrap}.comparison-legend .legend-item{padding:.25rem .75rem;border-radius:4px;font-size:.8rem}.comparison-legend .comparison-missing-legend{background-color:#ef9a9a}.comparison-legend .comparison-type-mismatch-legend{background-color:#ffcdd2}.comparison-legend .comparison-length-mismatch-legend{background-color:#fff9c4}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "directive", type: i5$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i5.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: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6$3.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: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
19483
19602
  }
19484
19603
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, decorators: [{
19485
19604
  type: Component,
19486
- args: [{ selector: 'app-create-or-edit-entity-informations', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <div *ngIf=\"uid\" class=\"flex align-items-center gap-2 mb-2\">\r\n <span class=\"font-semibold\">{{'administration_gestionEntityInformation_uid' | localize}} :</span>\r\n <span>{{ uid }}</span>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_properties' | localize\">\r\n <div class=\"flex align-items-center gap-2 mb-3\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" [(ngModel)]=\"propertiesSearchText\" (ngModelChange)=\"onPropertiesSearch()\"\r\n [placeholder]=\"'administration_properties_searchPlaceholder' | localize\" class=\"p-inputtext-sm\" />\r\n </span>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_modelColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedModelColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('model', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_projectDbColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedDbColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('db', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <Tsi-CheckBox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\"\r\n [disabled]=\"true\"></Tsi-CheckBox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_sqlColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedSqlColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('sql', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <p-paginator [rows]=\"propertiesPageSize\" [totalRecords]=\"propertiesTotalRecords\" [first]=\"propertiesFirst\"\r\n (onPageChange)=\"onPropertiesPageChange($event)\" [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n </p-paginator>\r\n\r\n <div class=\"comparison-legend mt-3\">\r\n <span class=\"legend-item comparison-missing-legend\">{{ 'administration_properties_comparison_missing' | localize }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' | localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' | localize }}</span>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .comparison-missing{background-color:#ef9a9a!important}:host ::ng-deep .comparison-type-mismatch{background-color:#ffcdd2!important}:host ::ng-deep .comparison-length-mismatch{background-color:#fff9c4!important}.properties-grid-section{border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.properties-grid-title{margin:0;padding:.75rem 1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;font-size:.95rem;font-weight:600}.comparison-legend{display:flex;gap:1rem;flex-wrap:wrap}.comparison-legend .legend-item{padding:.25rem .75rem;border-radius:4px;font-size:.8rem}.comparison-legend .comparison-missing-legend{background-color:#ef9a9a}.comparison-legend .comparison-type-mismatch-legend{background-color:#ffcdd2}.comparison-legend .comparison-length-mismatch-legend{background-color:#fff9c4}\n"] }]
19605
+ args: [{ selector: 'app-create-or-edit-entity-informations', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <div *ngIf=\"uid\" class=\"flex align-items-center gap-2 mb-2\">\r\n <span class=\"font-semibold\">{{'administration_gestionEntityInformation_uid' | localize}} :</span>\r\n <span>{{ uid }}</span>\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_properties' | localize\">\r\n <div class=\"flex align-items-center gap-2 mb-3\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" [(ngModel)]=\"propertiesSearchText\" (ngModelChange)=\"onPropertiesSearch()\"\r\n [placeholder]=\"'administration_properties_searchPlaceholder' | localize\" class=\"p-inputtext-sm\" />\r\n </span>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_modelColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedModelColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('model', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_projectDbColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedDbColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('db', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <Tsi-CheckBox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\"\r\n [disabled]=\"true\"></Tsi-CheckBox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <div class=\"properties-grid-section mb-3\">\r\n <h4 class=\"properties-grid-title\">{{ 'administration_properties_sqlColumns_title' | localize }}</h4>\r\n <p-table [value]=\"pagedSqlColumns\" styleClass=\"p-datatable-sm p-datatable-gridlines\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngFor=\"let col of propertiesGridColumns\">{{ (col.header ?? '') | localize }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr>\r\n <td *ngFor=\"let col of propertiesGridColumns\" [ngClass]=\"getComparisonClass('sql', row, col.field)\">\r\n <span *ngIf=\"col.type !== 'checkBox'\">{{ row[col.field] }}</span>\r\n <p-checkbox *ngIf=\"col.type === 'checkBox'\" [ngModel]=\"row[col.field]\" [disabled]=\"true\"\r\n [binary]=\"true\"></p-checkbox>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"propertiesGridColumns.length\" class=\"text-center\">{{'administration_properties_emptyMessage' | localize}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n\r\n <p-paginator [rows]=\"propertiesPageSize\" [totalRecords]=\"propertiesTotalRecords\" [first]=\"propertiesFirst\"\r\n (onPageChange)=\"onPropertiesPageChange($event)\" [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n </p-paginator>\r\n\r\n <div class=\"comparison-legend mt-3\">\r\n <span class=\"legend-item comparison-missing-legend\">{{ 'administration_properties_comparison_missing' | localize }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' | localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' | localize }}</span>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\" [showSaveAndCloseButton]=\"false\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .comparison-missing{background-color:#ef9a9a!important}:host ::ng-deep .comparison-type-mismatch{background-color:#ffcdd2!important}:host ::ng-deep .comparison-length-mismatch{background-color:#fff9c4!important}.properties-grid-section{border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.properties-grid-title{margin:0;padding:.75rem 1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6;font-size:.95rem;font-weight:600}.comparison-legend{display:flex;gap:1rem;flex-wrap:wrap}.comparison-legend .legend-item{padding:.25rem .75rem;border-radius:4px;font-size:.8rem}.comparison-legend .comparison-missing-legend{background-color:#ef9a9a}.comparison-legend .comparison-type-mismatch-legend{background-color:#ffcdd2}.comparison-legend .comparison-length-mismatch-legend{background-color:#fff9c4}\n"] }]
19487
19606
  }], ctorParameters: () => [{ type: EntityConfigurationService }, { type: ErrorResponseManagerService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }, { type: TsiNotificationService }, { type: TsiConfirmationService }, { type: ApiExplorerService }] });
19488
19607
 
19489
19608
  var createOrEditEntityInformations_component = /*#__PURE__*/Object.freeze({
@@ -20460,11 +20579,11 @@ class CreateOrEditDynamicFormComponent extends TsiFormComponentBaseComponent {
20460
20579
  });
20461
20580
  }
20462
20581
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditDynamicFormComponent, deps: [{ token: ErrorResponseManagerService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: TsiNotificationService }, { token: DialogDataService }, { token: FormDataService }], target: i0.ɵɵFactoryTarget.Component }); }
20463
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditDynamicFormComponent, selector: "lib-create-or-edit-dynamic-form", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
20582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditDynamicFormComponent, selector: "lib-create-or-edit-dynamic-form", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "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: TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
20464
20583
  }
20465
20584
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditDynamicFormComponent, decorators: [{
20466
20585
  type: Component,
20467
- args: [{ selector: 'lib-create-or-edit-dynamic-form', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"] }]
20586
+ args: [{ selector: 'lib-create-or-edit-dynamic-form', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"'shared_notes_add_form' | localize \" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n <div class=\"card\">\r\n <div class=\"grid\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [(bind)]=\"formData.formulaireUid\"\r\n [listSourceUrl]=\"formulaireEndpoint.getAllFormulairesMinimal()\"\r\n [elementSourceUrl]=\"formulaireEndpoint.getFormulaireMinimal()\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\" (bindChange)=\"onFormulaireChange($event)\" id-field=\"uid\"\r\n label-field=\"nomObservation\" [showClear]=\"true\" [isFiltered]=\"true\"\r\n [listSourceParams]=\"getFormulaireParams\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n \r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_date'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Date-Picker [inputName]=\"'Date'\" [showTime]=\"true\" [(inputField)]=\"formData.date\"/>\r\n </div>\r\n\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"'shared_notes_form_obs'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Text-Box [(inputField)]=\"formData.observation\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <p-tabView *ngIf=\"formData.formulaireUid && isFormReady\" >\r\n <p-tabPanel *ngFor=\"let grp of formData.formulaireColonnesGrouped\" [header]=\"grp.key\">\r\n <div class=\"grid\">\r\n <div class=\"col-12 grid form-row\" *ngFor=\"let col of grp.value\">\r\n <div class=\"col-4 form-label\">\r\n <Tsi-Label [labelValue]=\"col.nom\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.string\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Text-Box [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurString\" >\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.int\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Integer [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurInt\" >\r\n </Tsi-Integer>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.decimal\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-Decimal-Input [disabled]=\"isDeleteMode() || isConsultMode()\"\r\n [(inputField)]=\"col.data.valeurDecimal\" >\r\n </Tsi-Decimal-Input>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.boolean\">\r\n <div class=\"input-wrapper\">\r\n <Tsi-CheckBox [disabled]=\"isDeleteMode() || isConsultMode()\" [isBinary]=\"false\"\r\n [(inputField)]=\"col.data.valeurBoolean\" >\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"col-8 form-input\" *ngIf=\"col.type === formType.binary\">\r\n binary input (not handled yet)\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </fieldset>\r\n <Tsi-Modal-Footer [showSaveAndCloseButton]=\"false\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [":host ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e0e0e0;padding:.5rem 1rem;border-radius:10px 10px 0 0}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link{padding:1rem 1.2rem;font-weight:600;border-radius:8px;transition:all .25s ease-in-out}:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#3b82f6;color:#fff;border-color:transparent}:host ::ng-deep .p-tabview-nav li:not(.p-highlight) .p-tabview-nav-link:hover{background:#eef4ff}.form-row{border-bottom:1px dashed #e2e2e2}.form-row:last-child{border-bottom:none}.form-label{font-weight:600;color:#333;padding-top:.5rem}:host ::ng-deep .p-tabview-nav li .p-tabview-nav-link,:host ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{border-radius:6px}:host ::ng-deep .p-tabview-nav{border:1px solid #d0d7e2;border-radius:6px 6px 0 0;background:#f8f9fa;padding:.3rem .5rem}:host ::ng-deep .p-tabview-panels{border:1px solid #d0d7e2;border-radius:0 0 6px 6px;margin-top:-1px;background:#fff;padding:1rem}.input-wrapper,.input-wrapper>tsi-text-box,.input-wrapper>tsi-integer,.input-wrapper>tsi-decimal-input,.input-wrapper>tsi-check-box{width:100%;display:block}.form-input{display:flex;align-items:center}\n"] }]
20468
20587
  }], ctorParameters: () => [{ type: ErrorResponseManagerService }, { type: i1$3.DynamicDialogRef }, { type: i1$3.DynamicDialogConfig }, { type: TsiNotificationService }, { type: DialogDataService }, { type: FormDataService }] });
20469
20588
 
20470
20589
  var createOrEditDynamicForm_component = /*#__PURE__*/Object.freeze({