@tsi-developpement/tsi-shared-ui 1.8.48 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/enums/display-types.mjs +3 -1
- package/esm2022/lib/functions/file-preview.util.mjs +65 -0
- package/esm2022/lib/functions/modal-open.function.mjs +8 -1
- package/esm2022/lib/models/settings/fichier.mjs +2 -1
- package/esm2022/lib/shared.module.mjs +7 -3
- package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +1 -1
- package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +3 -3
- package/esm2022/lib/tsi-components/index.mjs +2 -1
- package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +5 -21
- package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +78 -39
- package/esm2022/lib/tsi-components/output-components/tsi-file-preview/tsi-file-preview.component.mjs +117 -0
- package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +41 -3
- package/esm2022/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.mjs +1 -1
- package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +1 -1
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +330 -79
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/consts/app-providers.d.ts +1 -1
- package/lib/enums/display-types.d.ts +2 -1
- package/lib/functions/file-preview.util.d.ts +9 -0
- package/lib/functions/modal-open.function.d.ts +1 -0
- package/lib/models/settings/fichier.d.ts +1 -0
- package/lib/shared.module.d.ts +114 -113
- package/lib/tsi-components/index.d.ts +1 -0
- package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +1 -7
- package/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.d.ts +24 -7
- package/lib/tsi-components/output-components/tsi-file-preview/tsi-file-preview.component.d.ts +47 -0
- package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -26,9 +26,9 @@ import * as i6$1 from 'primeng/card';
|
|
|
26
26
|
import { CardModule } from 'primeng/card';
|
|
27
27
|
import * as i2$1 from 'primeng/button';
|
|
28
28
|
import { ButtonModule } from 'primeng/button';
|
|
29
|
-
import * as
|
|
29
|
+
import * as i1$4 from '@angular/platform-browser';
|
|
30
30
|
import { filter } from 'rxjs/operators';
|
|
31
|
-
import * as i1$
|
|
31
|
+
import * as i1$5 from '@auth0/angular-jwt';
|
|
32
32
|
import { JwtHelperService, JWT_OPTIONS } from '@auth0/angular-jwt';
|
|
33
33
|
import * as i5 from 'primeng/inputtext';
|
|
34
34
|
import { InputTextModule } from 'primeng/inputtext';
|
|
@@ -48,11 +48,11 @@ import * as i4 from 'primeng/menu';
|
|
|
48
48
|
import { MenuModule } from 'primeng/menu';
|
|
49
49
|
import * as i6$3 from 'primeng/badge';
|
|
50
50
|
import { BadgeModule } from 'primeng/badge';
|
|
51
|
-
import * as i3$
|
|
51
|
+
import * as i3$1 from 'primeng/radiobutton';
|
|
52
52
|
import { RadioButtonModule } from 'primeng/radiobutton';
|
|
53
53
|
import * as i2$5 from 'primeng/paginator';
|
|
54
54
|
import { PaginatorModule } from 'primeng/paginator';
|
|
55
|
-
import * as i3$
|
|
55
|
+
import * as i3$2 from 'primeng/dialog';
|
|
56
56
|
import { DialogModule } from 'primeng/dialog';
|
|
57
57
|
import interactionPlugin from '@fullcalendar/interaction';
|
|
58
58
|
import dayGridPlugin from '@fullcalendar/daygrid';
|
|
@@ -1117,6 +1117,7 @@ var DisplayTypes;
|
|
|
1117
1117
|
DisplayTypes["NESTED_PROP_DISPLAY"] = "display-Nested-Prop";
|
|
1118
1118
|
DisplayTypes["TEXT_DISPLAY"] = "text-Display";
|
|
1119
1119
|
DisplayTypes["IMAGE_DISPLAY"] = "image-Display";
|
|
1120
|
+
DisplayTypes["ICON_DISPLAY"] = "icon-Display";
|
|
1120
1121
|
})(DisplayTypes || (DisplayTypes = {}));
|
|
1121
1122
|
const NumericDisplayTypes = [
|
|
1122
1123
|
DisplayTypes.INTEGER_DISPLAY,
|
|
@@ -1137,6 +1138,7 @@ const DisplayTypeColors = {
|
|
|
1137
1138
|
[DisplayTypes.NESTED_PROP_DISPLAY]: 'nested-grid',
|
|
1138
1139
|
[DisplayTypes.TEXT_DISPLAY]: 'text-grid',
|
|
1139
1140
|
[DisplayTypes.IMAGE_DISPLAY]: 'image-Display',
|
|
1141
|
+
[DisplayTypes.ICON_DISPLAY]: 'icon-grid',
|
|
1140
1142
|
};
|
|
1141
1143
|
|
|
1142
1144
|
/**
|
|
@@ -2079,6 +2081,7 @@ class Devise {
|
|
|
2079
2081
|
class Fichier {
|
|
2080
2082
|
constructor() {
|
|
2081
2083
|
this.contenu = null;
|
|
2084
|
+
this.dateFichier = new Date();
|
|
2082
2085
|
}
|
|
2083
2086
|
}
|
|
2084
2087
|
|
|
@@ -3524,7 +3527,7 @@ class TsiMessageService {
|
|
|
3524
3527
|
};
|
|
3525
3528
|
this._tsiModalService.open(TsiErrorMessageComponent, configuration);
|
|
3526
3529
|
}
|
|
3527
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiMessageService, deps: [{ token: TsiModalService }, { token: LocalizePipe }, { token:
|
|
3530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiMessageService, deps: [{ token: TsiModalService }, { token: LocalizePipe }, { token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3528
3531
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiMessageService, providedIn: 'root' }); }
|
|
3529
3532
|
}
|
|
3530
3533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiMessageService, decorators: [{
|
|
@@ -3532,7 +3535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3532
3535
|
args: [{
|
|
3533
3536
|
providedIn: 'root'
|
|
3534
3537
|
}]
|
|
3535
|
-
}], ctorParameters: () => [{ type: TsiModalService }, { type: LocalizePipe }, { type:
|
|
3538
|
+
}], ctorParameters: () => [{ type: TsiModalService }, { type: LocalizePipe }, { type: i1$4.DomSanitizer }] });
|
|
3536
3539
|
|
|
3537
3540
|
class ErrorResponseManagerService {
|
|
3538
3541
|
constructor(_messageService) {
|
|
@@ -4442,6 +4445,13 @@ async function openDynamicFormModalComponent(injector, config) {
|
|
|
4442
4445
|
return tsiModalService.open(DynamicFormListComponent, config);
|
|
4443
4446
|
});
|
|
4444
4447
|
}
|
|
4448
|
+
async function openTsiFilePreviewComponent(injector, conf) {
|
|
4449
|
+
return runInInjectionContext(injector, async () => {
|
|
4450
|
+
const tsiModalService = inject(TsiModalService);
|
|
4451
|
+
const { TsiFilePreviewComponent } = await Promise.resolve().then(function () { return tsiFilePreview_component; });
|
|
4452
|
+
return tsiModalService.open(TsiFilePreviewComponent, conf);
|
|
4453
|
+
});
|
|
4454
|
+
}
|
|
4445
4455
|
async function getDynamicFormFicheModalComponent() {
|
|
4446
4456
|
const { CreateOrEditDynamicFormComponent } = await Promise.resolve().then(function () { return createOrEditDynamicForm_component; });
|
|
4447
4457
|
return CreateOrEditDynamicFormComponent;
|
|
@@ -4529,7 +4539,7 @@ class IdentityManagerService {
|
|
|
4529
4539
|
const value = StorageManager.getItem(menuPreferences.favoritesOnly);
|
|
4530
4540
|
return value ? JSON.parse(value) : false;
|
|
4531
4541
|
}
|
|
4532
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IdentityManagerService, deps: [{ token: i1$
|
|
4542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IdentityManagerService, deps: [{ token: i1$5.JwtHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4533
4543
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IdentityManagerService, providedIn: 'root' }); }
|
|
4534
4544
|
}
|
|
4535
4545
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IdentityManagerService, decorators: [{
|
|
@@ -4537,7 +4547,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
4537
4547
|
args: [{
|
|
4538
4548
|
providedIn: 'root'
|
|
4539
4549
|
}]
|
|
4540
|
-
}], ctorParameters: () => [{ type: i1$
|
|
4550
|
+
}], ctorParameters: () => [{ type: i1$5.JwtHelperService }] });
|
|
4541
4551
|
|
|
4542
4552
|
class LayoutService {
|
|
4543
4553
|
constructor(_identityManagerService) {
|
|
@@ -7213,10 +7223,6 @@ class EditableGridComponent extends TsiInputBase {
|
|
|
7213
7223
|
this.showDuplicateButton = true;
|
|
7214
7224
|
//#endregion
|
|
7215
7225
|
//#region Outputs
|
|
7216
|
-
this.itemsSave = new EventEmitter();
|
|
7217
|
-
/**
|
|
7218
|
-
*
|
|
7219
|
-
*/
|
|
7220
7226
|
this.refreshEventEmitter = new EventEmitter();
|
|
7221
7227
|
//@Output() actionEventEmitter: EventEmitter<GridActionEmitResult> = new EventEmitter<GridActionEmitResult>();
|
|
7222
7228
|
this.saveDataEventEmitter = new EventEmitter();
|
|
@@ -7374,14 +7380,8 @@ class EditableGridComponent extends TsiInputBase {
|
|
|
7374
7380
|
this._verifyGridRequirements();
|
|
7375
7381
|
this._initCurrentRowNumberAndOrderByRowNumber();
|
|
7376
7382
|
}
|
|
7377
|
-
inputChanged(col) {
|
|
7378
|
-
if (col.watchForChanges === true) {
|
|
7379
|
-
this.saveDataEventEmitter.emit(this.gridData);
|
|
7380
|
-
}
|
|
7381
|
-
}
|
|
7382
7383
|
saveItems() {
|
|
7383
7384
|
const clean = this._cleanGridDataForEmit();
|
|
7384
|
-
this.itemsSave.emit(clean);
|
|
7385
7385
|
this.saveDataEventEmitter.emit(clean);
|
|
7386
7386
|
}
|
|
7387
7387
|
addRow() {
|
|
@@ -7614,7 +7614,6 @@ class EditableGridComponent extends TsiInputBase {
|
|
|
7614
7614
|
newValue: newValue
|
|
7615
7615
|
};
|
|
7616
7616
|
this.cellChanged.emit(cellChangedResult);
|
|
7617
|
-
this.saveDataEventEmitter.emit(this._cleanGridDataForEmit());
|
|
7618
7617
|
}
|
|
7619
7618
|
// recalculate currentRowNumber
|
|
7620
7619
|
if (col.field === this._autoRowNumberField) {
|
|
@@ -7662,7 +7661,7 @@ class EditableGridComponent extends TsiInputBase {
|
|
|
7662
7661
|
return newRow;
|
|
7663
7662
|
}
|
|
7664
7663
|
_initSaveEventSubscription() {
|
|
7665
|
-
this.saveEventSubscription = this.
|
|
7664
|
+
this.saveEventSubscription = this.saveEvent?.subscribe(() => this.saveItems());
|
|
7666
7665
|
}
|
|
7667
7666
|
_verifyGridRequirements() {
|
|
7668
7667
|
if (this.columns == null
|
|
@@ -7806,11 +7805,11 @@ class EditableGridComponent extends TsiInputBase {
|
|
|
7806
7805
|
return `${EditableGridComponent.SEARCH_LABEL_PREFIX}${column.field}`;
|
|
7807
7806
|
}
|
|
7808
7807
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditableGridComponent, deps: [{ token: LocalizePipe }, { token: i2$2.FilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7809
|
-
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"], showGlobalSearch: "showGlobalSearch", showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showEditButton: "showEditButton", showRowSummary: "showRowSummary", scrollHeight: "scrollHeight", rowPerPage: "rowPerPage", pageSize: "pageSize", entityPrimaryKeyName: "entityPrimaryKeyName", 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", showDuplicateButton: "showDuplicateButton", 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", rowDuplicatedEventEmitter: "rowDuplicatedEventEmitter" }, host: { listeners: { "document:keydown": "handleGridKeydown($event)" } }, 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 [globalFilterFields]=\"globalFilterFields\" [rowTrackBy]=\"rowTrackBy\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex items-center gap-5 flex-row\">\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\r\n <div *ngIf=\"showGlobalSearch\" class=\"flex items-center gap-1 w-8\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"searchValue\" pInputText class=\"border-round-lg\"\r\n [placeholder]=\"'shared_edittable_search_placeholder' | localize\" (keydown.enter)=\"applyGlobalSearch()\">\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-button-icon-only\" type=\"button\" icon=\"pi pi-search\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_search\"\r\n (onClick)=\"applyGlobalSearch()\" />\r\n </div>\r\n </div>\r\n </div> \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=\"showDuplicateButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\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=\"showDuplicateButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\r\n </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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\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.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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.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: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "directive", type: i6.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i6.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i6.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i6.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: 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", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
7808
|
+
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: "saveEvent", showGlobalSearch: "showGlobalSearch", showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showEditButton: "showEditButton", showRowSummary: "showRowSummary", scrollHeight: "scrollHeight", rowPerPage: "rowPerPage", pageSize: "pageSize", entityPrimaryKeyName: "entityPrimaryKeyName", columns: "columns", gridData: "gridData", isTableLoading: "isTableLoading", parent: "parent", showSaveButton: "showSaveButton", showActionColumn: "showActionColumn", enableRowDisabling: "enableRowDisabling", rowSummaryConfig: "rowSummaryConfig", showHaveSumary: "showHaveSumary", showRowSumary: "showRowSumary", selectKeyOnly: "selectKeyOnly", selectionMode: "selectionMode", showConsultButton: "showConsultButton", editableGridBusinessClass: "editableGridBusinessClass", orderColumn: "orderColumn", deleteLineButtonDisabled: "deleteLineButtonDisabled", showDuplicateButton: "showDuplicateButton", id: "id" }, outputs: { refreshEventEmitter: "refreshEventEmitter", saveDataEventEmitter: "saveDataEventEmitter", rowChangedEventEmitter: "rowChangedEventEmitter", selectedRowEventEmitter: "selectedRowEventEmitter", addedRowEventEmitter: "addedRowEventEmitter", focusOutEventEmitter: "focusOutEventEmitter", cellChanged: "cellChanged", rowDeletedEventEmitter: "rowDeletedEventEmitter", selectedItemsChange: "selectedItemsChange", onRowSelect: "onRowSelect", focusOutRow: "focusOutRow", onConsultClicked: "onConsultClicked", rowDuplicatedEventEmitter: "rowDuplicatedEventEmitter" }, host: { listeners: { "document:keydown": "handleGridKeydown($event)" } }, 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 [globalFilterFields]=\"globalFilterFields\" [rowTrackBy]=\"rowTrackBy\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex items-center gap-5 flex-row\">\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\r\n <div *ngIf=\"showGlobalSearch\" class=\"flex items-center gap-1 w-8\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"searchValue\" pInputText class=\"border-round-lg\"\r\n [placeholder]=\"'shared_edittable_search_placeholder' | localize\" (keydown.enter)=\"applyGlobalSearch()\">\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-button-icon-only\" type=\"button\" icon=\"pi pi-search\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_search\"\r\n (onClick)=\"applyGlobalSearch()\" />\r\n </div>\r\n </div>\r\n </div> \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=\"showDuplicateButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\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=\"showDuplicateButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\r\n </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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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]\"\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\" [(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 [(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 [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\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 [(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 [(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\"\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=\"showDuplicateButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\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.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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.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: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "directive", type: i6.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i6.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i6.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i6.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: 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", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: "directive", type: PresentationDesignerDirectiveBase, selector: "[presentationDesignerBase]", inputs: ["presentationDesigner", "presentationDesignerBase"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
7810
7809
|
}
|
|
7811
7810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditableGridComponent, decorators: [{
|
|
7812
7811
|
type: Component,
|
|
7813
|
-
args: [{ selector: 'Tsi-Generic-Editable-Grid', providers: [GenericValidationStateService], 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 [globalFilterFields]=\"globalFilterFields\" [rowTrackBy]=\"rowTrackBy\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex items-center gap-5 flex-row\">\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\r\n <div *ngIf=\"showGlobalSearch\" class=\"flex items-center gap-1 w-8\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"searchValue\" pInputText class=\"border-round-lg\"\r\n [placeholder]=\"'shared_edittable_search_placeholder' | localize\" (keydown.enter)=\"applyGlobalSearch()\">\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-button-icon-only\" type=\"button\" icon=\"pi pi-search\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_search\"\r\n (onClick)=\"applyGlobalSearch()\" />\r\n </div>\r\n </div>\r\n </div> \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=\"showDuplicateButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\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=\"showDuplicateButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\r\n </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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\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"] }]
|
|
7812
|
+
args: [{ selector: 'Tsi-Generic-Editable-Grid', providers: [GenericValidationStateService], 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 [globalFilterFields]=\"globalFilterFields\" [rowTrackBy]=\"rowTrackBy\">\r\n <!-- [tableStyle]=\"{'min-width': '50rem','width': 'inherit'}\" -->\r\n\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex items-center gap-5 flex-row\">\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\r\n <div *ngIf=\"showGlobalSearch\" class=\"flex items-center gap-1 w-8\">\r\n <div presentationDesignerBase=\"global_search\" class=\"p-inputgroup rtl-mode h-2rem no-pad\">\r\n <input class=\"\" type=\"text\" [(ngModel)]=\"searchValue\" pInputText class=\"border-round-lg\"\r\n [placeholder]=\"'shared_edittable_search_placeholder' | localize\" (keydown.enter)=\"applyGlobalSearch()\">\r\n </div>\r\n <div presentationDesignerBase=\"search_button\">\r\n <Tsi-Button styleClass=\"p-button-icon-only\" type=\"button\" icon=\"pi pi-search\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_search\"\r\n (onClick)=\"applyGlobalSearch()\" />\r\n </div>\r\n </div>\r\n </div> \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=\"showDuplicateButton\" scope=\"col\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\"></th>\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=\"showDuplicateButton\" style=\"left: 1rem !important; width:3rem !important;\"\r\n class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\r\n </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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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 [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"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=\"showDuplicateButton\"\r\n style=\"left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n <div class=\"p-0\">\r\n <Tsi-Button [buttonType]=\"buttonType.Button\" icon=\"p-button-icon pi pi-copy\"\r\n [tooltipPosition]=\"tooltipPosition.Top\" tooltipText=\"shared_edittable_dupliquer\"\r\n styleClass=\"p-button-rounded p-button-text p-button-info\" (click)=\"duplicateRow(item)\"></Tsi-Button>\r\n </div>\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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\"\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 (selectedLabelChange)=\"onCellLabelResolved(col, $event, item)\"\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]\"\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\" [(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 [(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 [(inputField)]=\"item[col.field]\"\r\n (inputFieldChange)=\"onCellValueChanged(col, $event, item)\" [disabled]=\"col.disabled\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\r\n [isBinary]=\"col.isBinary ?? false\">\r\n </Tsi-CheckBox>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <!-- Tsi-Decimal-Input -->\r\n <ng-template #decimalInputBlock>\r\n <ng-container *ngIf=\"col.type == inputTypes.DECIMAL_INPUT; else integerInputBlock\">\r\n <Tsi-Decimal-Input [inputName]=\"col.inputName\" [inputId]=\"col.field\"\r\n [validationStatusCssClass]=\"col.validationStatusCssClass\"\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 [(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 [(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\"\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=\"showDuplicateButton\"\r\n style=\"min-width:3rem; left: 1rem !important; width:3rem !important;\" class=\"p-1\">\r\n </td>\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"] }]
|
|
7814
7813
|
}], ctorParameters: () => [{ type: LocalizePipe }, { type: i2$2.FilterService }], propDecorators: { editableTable: [{
|
|
7815
7814
|
type: ViewChild,
|
|
7816
7815
|
args: ["editableTable"]
|
|
@@ -7825,8 +7824,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7825
7824
|
}], items: [{
|
|
7826
7825
|
type: Input
|
|
7827
7826
|
}], saveEvent: [{
|
|
7828
|
-
type: Input
|
|
7829
|
-
args: ['events']
|
|
7827
|
+
type: Input
|
|
7830
7828
|
}], showGlobalSearch: [{
|
|
7831
7829
|
type: Input
|
|
7832
7830
|
}], showAddButton: [{
|
|
@@ -7853,8 +7851,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7853
7851
|
type: Input
|
|
7854
7852
|
}], parent: [{
|
|
7855
7853
|
type: Input
|
|
7856
|
-
}], events: [{
|
|
7857
|
-
type: Input
|
|
7858
7854
|
}], showSaveButton: [{
|
|
7859
7855
|
type: Input
|
|
7860
7856
|
}], showActionColumn: [{
|
|
@@ -7881,8 +7877,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7881
7877
|
type: Input
|
|
7882
7878
|
}], showDuplicateButton: [{
|
|
7883
7879
|
type: Input
|
|
7884
|
-
}], itemsSave: [{
|
|
7885
|
-
type: Output
|
|
7886
7880
|
}], refreshEventEmitter: [{
|
|
7887
7881
|
type: Output
|
|
7888
7882
|
}], saveDataEventEmitter: [{
|
|
@@ -8190,7 +8184,7 @@ class TsiRadioButtonComponent extends TsiInputBase {
|
|
|
8190
8184
|
this.inputFieldChange.emit(input);
|
|
8191
8185
|
}
|
|
8192
8186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRadioButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
8193
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRadioButtonComponent, selector: "Tsi-Radio-Button", inputs: { dataSource: "dataSource", class: "class", layoutOrientation: "layoutOrientation" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<!-- align items vertical -->\r\n<div *ngIf=\"layoutOrientation == verticalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio\">\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n\r\n<!-- align items horizontal -->\r\n<div class=\"flex flex-row\" *ngIf=\"layoutOrientation == horizontalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio p-1\" >\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n", 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.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$
|
|
8187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRadioButtonComponent, selector: "Tsi-Radio-Button", inputs: { dataSource: "dataSource", class: "class", layoutOrientation: "layoutOrientation" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<!-- align items vertical -->\r\n<div *ngIf=\"layoutOrientation == verticalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio\">\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n\r\n<!-- align items horizontal -->\r\n<div class=\"flex flex-row\" *ngIf=\"layoutOrientation == horizontalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio p-1\" >\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n", 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.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$1.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
8194
8188
|
}
|
|
8195
8189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRadioButtonComponent, decorators: [{
|
|
8196
8190
|
type: Component,
|
|
@@ -8789,13 +8783,13 @@ class TsiImageDisplayComponent {
|
|
|
8789
8783
|
let ty = this.translateY / this.zoomLevel;
|
|
8790
8784
|
return `scale(${this.zoomLevel}) translate(${tx}px, ${ty}px)`;
|
|
8791
8785
|
}
|
|
8792
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiImageDisplayComponent, deps: [{ token:
|
|
8793
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiImageDisplayComponent, selector: "tsi-image-display", inputs: { src: "src", alt: "alt", width: "width", height: "height", isRounded: "isRounded", headerTitles: "headerTitles" }, ngImport: i0, template: "<div class=\"avatar\" [ngClass]=\"isRounded ? 'rounded' : ''\">\r\n <img [src]=\"safeSrc\"\r\n [alt]=\"alt | localize\"\r\n [style.width]=\"width\"\r\n [style.height]=\"height\"\r\n (click)=\"showImage()\"/>\r\n </div>\r\n\r\n<p-dialog [(visible)]=\"displayDialog\"\r\n [ngClass]=\"displayDialog ? 'dialog-avatar' : 'hidden'\"\r\n [modal]=\"true\"\r\n [style]=\"{ width: '50vw', 'max-height': '85vh'}\"\r\n [dismissableMask]=\"true\"\r\n [closable]=\"true\"\r\n [baseZIndex]=\"10000\"\r\n [contentStyle]=\"{overflow: 'auto', 'padding': '0'}\"\r\n [header]=\"title | localize\">\r\n <div class=\"img-dialog\">\r\n <img [src]=\"safeSrc\" [alt]=\"alt | localize\"\r\n (wheel)=\"onWheel($event)\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n (dblclick)=\"resetZoomAndPan()\"\r\n (click)=\"zoomLevel = 1.2\"\r\n [style.transform]=\"panTransform\"\r\n [style.cursor]=\"cursorStyle\"\r\n draggable=\"false\"\r\n />\r\n </div>\r\n</p-dialog>", styles: [":host{display:block;height:100%;width:100%}.avatar{display:flex;overflow:hidden;box-sizing:border-box;width:100%;height:100%;padding:.15rem}.avatar img{height:100%;width:100%;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease,filter .3s ease}.avatar:hover img{transform:scale(1.03);filter:brightness(.85)}.dialog-avatar .img-dialog{padding:1rem;max-width:100%;max-height:100%;box-sizing:border-box;overflow:hidden;display:flex;justify-content:center;align-items:center}.dialog-avatar .img-dialog img{display:block;max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;transition:transform .2s ease-in-out;transform-origin:center center;-webkit-user-select:none;user-select:none}.rounded{border-radius:50%;padding:0}.rounded img{object-fit:cover;height:100%;border-radius:50%}::ng-deep .p-dialog .p-dialog-header{white-space:wrap;overflow:hidden;display:flex;align-items:start}::ng-deep .p-dialog .p-dialog-title{font-size:1rem!important;max-width:90%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3$
|
|
8786
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiImageDisplayComponent, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8787
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiImageDisplayComponent, selector: "tsi-image-display", inputs: { src: "src", alt: "alt", width: "width", height: "height", isRounded: "isRounded", headerTitles: "headerTitles" }, ngImport: i0, template: "<div class=\"avatar\" [ngClass]=\"isRounded ? 'rounded' : ''\">\r\n <img [src]=\"safeSrc\"\r\n [alt]=\"alt | localize\"\r\n [style.width]=\"width\"\r\n [style.height]=\"height\"\r\n (click)=\"showImage()\"/>\r\n </div>\r\n\r\n<p-dialog [(visible)]=\"displayDialog\"\r\n [ngClass]=\"displayDialog ? 'dialog-avatar' : 'hidden'\"\r\n [modal]=\"true\"\r\n [style]=\"{ width: '50vw', 'max-height': '85vh'}\"\r\n [dismissableMask]=\"true\"\r\n [closable]=\"true\"\r\n [baseZIndex]=\"10000\"\r\n [contentStyle]=\"{overflow: 'auto', 'padding': '0'}\"\r\n [header]=\"title | localize\">\r\n <div class=\"img-dialog\">\r\n <img [src]=\"safeSrc\" [alt]=\"alt | localize\"\r\n (wheel)=\"onWheel($event)\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n (dblclick)=\"resetZoomAndPan()\"\r\n (click)=\"zoomLevel = 1.2\"\r\n [style.transform]=\"panTransform\"\r\n [style.cursor]=\"cursorStyle\"\r\n draggable=\"false\"\r\n />\r\n </div>\r\n</p-dialog>", styles: [":host{display:block;height:100%;width:100%}.avatar{display:flex;overflow:hidden;box-sizing:border-box;width:100%;height:100%;padding:.15rem}.avatar img{height:100%;width:100%;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease,filter .3s ease}.avatar:hover img{transform:scale(1.03);filter:brightness(.85)}.dialog-avatar .img-dialog{padding:1rem;max-width:100%;max-height:100%;box-sizing:border-box;overflow:hidden;display:flex;justify-content:center;align-items:center}.dialog-avatar .img-dialog img{display:block;max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;transition:transform .2s ease-in-out;transform-origin:center center;-webkit-user-select:none;user-select:none}.rounded{border-radius:50%;padding:0}.rounded img{object-fit:cover;height:100%;border-radius:50%}::ng-deep .p-dialog .p-dialog-header{white-space:wrap;overflow:hidden;display:flex;align-items:start}::ng-deep .p-dialog .p-dialog-title{font-size:1rem!important;max-width:90%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3$2.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
8794
8788
|
}
|
|
8795
8789
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiImageDisplayComponent, decorators: [{
|
|
8796
8790
|
type: Component,
|
|
8797
8791
|
args: [{ selector: 'tsi-image-display', template: "<div class=\"avatar\" [ngClass]=\"isRounded ? 'rounded' : ''\">\r\n <img [src]=\"safeSrc\"\r\n [alt]=\"alt | localize\"\r\n [style.width]=\"width\"\r\n [style.height]=\"height\"\r\n (click)=\"showImage()\"/>\r\n </div>\r\n\r\n<p-dialog [(visible)]=\"displayDialog\"\r\n [ngClass]=\"displayDialog ? 'dialog-avatar' : 'hidden'\"\r\n [modal]=\"true\"\r\n [style]=\"{ width: '50vw', 'max-height': '85vh'}\"\r\n [dismissableMask]=\"true\"\r\n [closable]=\"true\"\r\n [baseZIndex]=\"10000\"\r\n [contentStyle]=\"{overflow: 'auto', 'padding': '0'}\"\r\n [header]=\"title | localize\">\r\n <div class=\"img-dialog\">\r\n <img [src]=\"safeSrc\" [alt]=\"alt | localize\"\r\n (wheel)=\"onWheel($event)\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n (dblclick)=\"resetZoomAndPan()\"\r\n (click)=\"zoomLevel = 1.2\"\r\n [style.transform]=\"panTransform\"\r\n [style.cursor]=\"cursorStyle\"\r\n draggable=\"false\"\r\n />\r\n </div>\r\n</p-dialog>", styles: [":host{display:block;height:100%;width:100%}.avatar{display:flex;overflow:hidden;box-sizing:border-box;width:100%;height:100%;padding:.15rem}.avatar img{height:100%;width:100%;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease,filter .3s ease}.avatar:hover img{transform:scale(1.03);filter:brightness(.85)}.dialog-avatar .img-dialog{padding:1rem;max-width:100%;max-height:100%;box-sizing:border-box;overflow:hidden;display:flex;justify-content:center;align-items:center}.dialog-avatar .img-dialog img{display:block;max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;transition:transform .2s ease-in-out;transform-origin:center center;-webkit-user-select:none;user-select:none}.rounded{border-radius:50%;padding:0}.rounded img{object-fit:cover;height:100%;border-radius:50%}::ng-deep .p-dialog .p-dialog-header{white-space:wrap;overflow:hidden;display:flex;align-items:start}::ng-deep .p-dialog .p-dialog-title{font-size:1rem!important;max-width:90%}\n"] }]
|
|
8798
|
-
}], ctorParameters: () => [{ type:
|
|
8792
|
+
}], ctorParameters: () => [{ type: i1$4.DomSanitizer }], propDecorators: { src: [{
|
|
8799
8793
|
type: Input
|
|
8800
8794
|
}], alt: [{
|
|
8801
8795
|
type: Input
|
|
@@ -11250,6 +11244,44 @@ class TsiGenericGridComponent {
|
|
|
11250
11244
|
this.titleCache.set(key, res);
|
|
11251
11245
|
return res;
|
|
11252
11246
|
}
|
|
11247
|
+
getFileTypeIconClass(ext) {
|
|
11248
|
+
switch ((ext ?? '').toLowerCase()) {
|
|
11249
|
+
case 'pdf': return 'pi pi-file-pdf';
|
|
11250
|
+
case 'doc':
|
|
11251
|
+
case 'docx': return 'pi pi-file-word';
|
|
11252
|
+
case 'xls':
|
|
11253
|
+
case 'xlsx':
|
|
11254
|
+
case 'csv': return 'pi pi-file-excel';
|
|
11255
|
+
case 'png':
|
|
11256
|
+
case 'jpg':
|
|
11257
|
+
case 'jpeg':
|
|
11258
|
+
case 'gif':
|
|
11259
|
+
case 'bmp':
|
|
11260
|
+
case 'svg':
|
|
11261
|
+
case 'webp':
|
|
11262
|
+
return 'pi pi-image';
|
|
11263
|
+
default: return 'pi pi-file';
|
|
11264
|
+
}
|
|
11265
|
+
}
|
|
11266
|
+
getFileTypeIconColor(ext) {
|
|
11267
|
+
switch ((ext ?? '').toLowerCase()) {
|
|
11268
|
+
case 'pdf': return '#E2574C';
|
|
11269
|
+
case 'doc':
|
|
11270
|
+
case 'docx': return '#2B579A';
|
|
11271
|
+
case 'xls':
|
|
11272
|
+
case 'xlsx':
|
|
11273
|
+
case 'csv': return '#217346';
|
|
11274
|
+
case 'png':
|
|
11275
|
+
case 'jpg':
|
|
11276
|
+
case 'jpeg':
|
|
11277
|
+
case 'gif':
|
|
11278
|
+
case 'bmp':
|
|
11279
|
+
case 'svg':
|
|
11280
|
+
case 'webp':
|
|
11281
|
+
return '#F59E0B';
|
|
11282
|
+
default: return '#6B7280';
|
|
11283
|
+
}
|
|
11284
|
+
}
|
|
11253
11285
|
onStatusFilterChanged(evt) {
|
|
11254
11286
|
this.status = evt;
|
|
11255
11287
|
this.searchFields = this.searchFields?.filter(sf => sf.field !== this.entityInfo?.statusColumnName);
|
|
@@ -11452,7 +11484,7 @@ class TsiGenericGridComponent {
|
|
|
11452
11484
|
}
|
|
11453
11485
|
}
|
|
11454
11486
|
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: i2$2.PrimeNGConfig }, { token: AppSettingsService }, { token: ErrorResponseManagerService }, { token: i0.EnvironmentInjector }, { token: i1$3.DynamicDialogConfig }, { token: i1$3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11455
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericGridComponent, selector: "Tsi-Generic-Grid", inputs: { cudComponent: "cudComponent", modalSize: "modalSize", showInfoButton: "showInfoButton", showDownloadButton: "showDownloadButton", showUploadButton: "showUploadButton", showNoteButton: "showNoteButton", showActionButton: "showActionButton", 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", page$: "page$", checkedByField: "checkedByField", selectAll: "selectAll", targetBusinessClass: "targetBusinessClass", descriminatorValue: "descriminatorValue", businessClass: "businessClass", entityInfo: "entityInfo" }, 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 }], 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()\" icon=\"pi pi-eraser\">\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-1'\" *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\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.actionDisplay != actionPlacement.Overflow\">\r\n <th style=\"overflow: inherit\" scope=\"col\">\r\n <ng-container *ngIf=\"!col.isButton && col.field != overflowColumnField ; else filterLessColumn\">\r\n <ng-container [ngSwitch]=\"col.type\">\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDate [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDate.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDate.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DATETIME -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATETIME_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDateTime [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDateTime.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDateTime.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY SOCIETE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Societe-Input #currSocieteInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currSocieteInput.inputField)\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY OTHER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Other-Input #currOtherInput [inputField]=\"value\" [currency]=\"col.currencyOtherCode\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currOtherInput.inputField)\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- INTEGER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Integer #integerInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(integerInput.inputField)\">\r\n </Tsi-Integer>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DECIMAL -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Decimal-Input #decimalInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(decimalInput.inputField)\">\r\n </Tsi-Decimal-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- RATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.RATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Rate-Input #rateInput [inputField]=\"value\" [isFraction]=\"col.isFraction\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(rateInput.inputField)\">\r\n </Tsi-Rate-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DEFAULT (text, boolean, or any unhandled type) -->\r\n <ng-container *ngSwitchDefault>\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #filterLessColumn></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\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 displayImage\" >\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-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 {{ 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;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n 'bg-white': 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 \r\n [schema]=\"calenderSchema\" \r\n [eventsData]=\"page.items\" \r\n [crudService]=\"crudService\"\r\n [showInfoButton]=\"showInfoButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" \r\n (eventClick)=\"handleCalendarEventClick($event)\">\r\n</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)\"[selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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 [selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { 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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6.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: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i6.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i6.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i6.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: i4.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: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: 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: 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: i6$3.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { 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: 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: 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", "mode"], 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$", "overflowActionsMenu", "selectKeyOnly", "key"], 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", "overflowActionsMenu", "selectKeyOnly", "key", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiCalenderComponent, selector: "tsi-calender", inputs: ["crudService", "schema", "eventsData", "showInfoButton", "showDownloadButton", "showUploadButton", "showNoteButton", "showActionButton"], 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: [
|
|
11487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiGenericGridComponent, selector: "Tsi-Generic-Grid", inputs: { cudComponent: "cudComponent", modalSize: "modalSize", showInfoButton: "showInfoButton", showDownloadButton: "showDownloadButton", showUploadButton: "showUploadButton", showNoteButton: "showNoteButton", showActionButton: "showActionButton", 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", page$: "page$", checkedByField: "checkedByField", selectAll: "selectAll", targetBusinessClass: "targetBusinessClass", descriminatorValue: "descriminatorValue", businessClass: "businessClass", entityInfo: "entityInfo" }, 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 }], 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()\" icon=\"pi pi-eraser\">\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-1'\" *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\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.actionDisplay != actionPlacement.Overflow\">\r\n <th style=\"overflow: inherit\" scope=\"col\">\r\n <ng-container *ngIf=\"!col.isButton && col.field != overflowColumnField ; else filterLessColumn\">\r\n <ng-container [ngSwitch]=\"col.type\">\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDate [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDate.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDate.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DATETIME -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATETIME_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDateTime [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDateTime.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDateTime.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY SOCIETE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Societe-Input #currSocieteInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currSocieteInput.inputField)\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY OTHER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Other-Input #currOtherInput [inputField]=\"value\" [currency]=\"col.currencyOtherCode\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currOtherInput.inputField)\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- INTEGER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Integer #integerInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(integerInput.inputField)\">\r\n </Tsi-Integer>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DECIMAL -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Decimal-Input #decimalInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(decimalInput.inputField)\">\r\n </Tsi-Decimal-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- RATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.RATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Rate-Input #rateInput [inputField]=\"value\" [isFraction]=\"col.isFraction\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(rateInput.inputField)\">\r\n </Tsi-Rate-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DEFAULT (text, boolean, or any unhandled type) -->\r\n <ng-container *ngSwitchDefault>\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #filterLessColumn></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\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 displayImage\" >\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-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayIconBlock\">\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-icon (file-type logo) -->\r\n <ng-template #displayIconBlock>\r\n <ng-container *ngIf=\"col.type == displayTypes.ICON_DISPLAY; else displayTextEyeBlock\">\r\n <div *ngIf=\"item[col.field]\" class=\"flex align-items-center justify-content-center gap-2\">\r\n <i [class]=\"getFileTypeIconClass(item[col.field])\"\r\n [style.color]=\"getFileTypeIconColor(item[col.field])\"\r\n style=\"font-size: 1.25rem\"></i>\r\n <span>{{ item[col.field] }}</span>\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;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n 'bg-white': 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 displayIconBlock\">\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-icon (file-type logo) -->\r\n <ng-template #displayIconBlock>\r\n <ng-container *ngIf=\"col.type == displayTypes.ICON_DISPLAY; else displayTextEyeBlock\">\r\n <div *ngIf=\"item[col.field]\" class=\"flex align-items-center justify-content-center gap-2\">\r\n <i [class]=\"getFileTypeIconClass(item[col.field])\"\r\n [style.color]=\"getFileTypeIconColor(item[col.field])\"\r\n style=\"font-size: 1.25rem\"></i>\r\n <span>{{ item[col.field] }}</span>\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 \r\n [schema]=\"calenderSchema\" \r\n [eventsData]=\"page.items\" \r\n [crudService]=\"crudService\"\r\n [showInfoButton]=\"showInfoButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" \r\n (eventClick)=\"handleCalendarEventClick($event)\">\r\n</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)\"[selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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 [selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { 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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6.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: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i6.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "directive", type: i6.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i6.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: i4.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: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: 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: 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: i6$3.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { 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: 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: 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", "mode"], 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$", "overflowActionsMenu", "selectKeyOnly", "key"], 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", "overflowActionsMenu", "selectKeyOnly", "key", "page"], outputs: ["buttonClicked", "callSearch"] }, { kind: "component", type: TsiCalenderComponent, selector: "tsi-calender", inputs: ["crudService", "schema", "eventsData", "showInfoButton", "showDownloadButton", "showUploadButton", "showNoteButton", "showActionButton"], 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: [
|
|
11456
11488
|
trigger('slideInOut', [
|
|
11457
11489
|
state('in', style({
|
|
11458
11490
|
height: '*',
|
|
@@ -11484,7 +11516,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
11484
11516
|
})),
|
|
11485
11517
|
transition('in <=> out', animate('600ms cubic-bezier(0.25, 0.8, 0.25, 1)'))
|
|
11486
11518
|
])
|
|
11487
|
-
], 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()\" icon=\"pi pi-eraser\">\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-1'\" *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\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.actionDisplay != actionPlacement.Overflow\">\r\n <th style=\"overflow: inherit\" scope=\"col\">\r\n <ng-container *ngIf=\"!col.isButton && col.field != overflowColumnField ; else filterLessColumn\">\r\n <ng-container [ngSwitch]=\"col.type\">\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDate [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDate.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDate.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DATETIME -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATETIME_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDateTime [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDateTime.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDateTime.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY SOCIETE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Societe-Input #currSocieteInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currSocieteInput.inputField)\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY OTHER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Other-Input #currOtherInput [inputField]=\"value\" [currency]=\"col.currencyOtherCode\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currOtherInput.inputField)\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- INTEGER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Integer #integerInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(integerInput.inputField)\">\r\n </Tsi-Integer>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DECIMAL -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Decimal-Input #decimalInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(decimalInput.inputField)\">\r\n </Tsi-Decimal-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- RATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.RATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Rate-Input #rateInput [inputField]=\"value\" [isFraction]=\"col.isFraction\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(rateInput.inputField)\">\r\n </Tsi-Rate-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DEFAULT (text, boolean, or any unhandled type) -->\r\n <ng-container *ngSwitchDefault>\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #filterLessColumn></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\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 displayImage\" >\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-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 {{ 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;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n 'bg-white': 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 \r\n [schema]=\"calenderSchema\" \r\n [eventsData]=\"page.items\" \r\n [crudService]=\"crudService\"\r\n [showInfoButton]=\"showInfoButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" \r\n (eventClick)=\"handleCalendarEventClick($event)\">\r\n</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)\"[selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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 [selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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"] }]
|
|
11519
|
+
], 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()\" icon=\"pi pi-eraser\">\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-1'\" *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\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.actionDisplay != actionPlacement.Overflow\">\r\n <th style=\"overflow: inherit\" scope=\"col\">\r\n <ng-container *ngIf=\"!col.isButton && col.field != overflowColumnField ; else filterLessColumn\">\r\n <ng-container [ngSwitch]=\"col.type\">\r\n\r\n <!-- DATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDate [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDate.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDate.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DATETIME -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DATETIME_DISPLAY\">\r\n <p-columnFilter [type]=\"'date'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.DATE_IS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-calendar #calDateTime [ngModel]=\"value\" appendTo=\"body\"\r\n (onSelect)=\"filter($event)\"\r\n (onBlur)=\"filter(calDateTime.value)\"\r\n (onClearClick)=\"filter(null)\"\r\n (keydown.enter)=\"filter(calDateTime.value)\">\r\n </p-calendar>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY SOCIETE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_SOCIETE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Societe-Input #currSocieteInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currSocieteInput.inputField)\">\r\n </Tsi-Currency-Societe-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- CURRENCY OTHER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.CURRENCY_OTHER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Currency-Other-Input #currOtherInput [inputField]=\"value\" [currency]=\"col.currencyOtherCode\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(currOtherInput.inputField)\">\r\n </Tsi-Currency-Other-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- INTEGER -->\r\n <ng-container *ngSwitchCase=\"displayTypes.INTEGER_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Integer #integerInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(integerInput.inputField)\">\r\n </Tsi-Integer>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DECIMAL -->\r\n <ng-container *ngSwitchCase=\"displayTypes.DECIMAL_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Decimal-Input #decimalInput [inputField]=\"value\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(decimalInput.inputField)\">\r\n </Tsi-Decimal-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- RATE -->\r\n <ng-container *ngSwitchCase=\"displayTypes.RATE_DISPLAY\">\r\n <p-columnFilter [type]=\"'numeric'\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <Tsi-Rate-Input #rateInput [inputField]=\"value\" [isFraction]=\"col.isFraction\"\r\n (inputFieldChange)=\"filter($event)\"\r\n (keydown.enter)=\"filter(rateInput.inputField)\">\r\n </Tsi-Rate-Input>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n <!-- DEFAULT (text, boolean, or any unhandled type) -->\r\n <ng-container *ngSwitchDefault>\r\n <p-columnFilter [type]=\"col.filterInputType\" [field]=\"col.field\" [display]=\"changeHeaderFiltersMode\"\r\n [minFractionDigits]=\"col.numOfDecimal\" [maxFractionDigits]=\"col.numOfDecimal\"\r\n [showButtons]=\"false\" [matchMode]=\"filterMatchMode.EQUALS\">\r\n </p-columnFilter>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #filterLessColumn></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\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 displayImage\" >\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-image -->\r\n <ng-template #displayImage>\r\n <ng-container *ngIf=\"col.type == displayTypes.IMAGE_DISPLAY; else displayIconBlock\">\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-icon (file-type logo) -->\r\n <ng-template #displayIconBlock>\r\n <ng-container *ngIf=\"col.type == displayTypes.ICON_DISPLAY; else displayTextEyeBlock\">\r\n <div *ngIf=\"item[col.field]\" class=\"flex align-items-center justify-content-center gap-2\">\r\n <i [class]=\"getFileTypeIconClass(item[col.field])\"\r\n [style.color]=\"getFileTypeIconColor(item[col.field])\"\r\n style=\"font-size: 1.25rem\"></i>\r\n <span>{{ item[col.field] }}</span>\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;\"\r\n [ngClass]=\"{\r\n 'w-1rem': col.isButton,\r\n 'bg-white': 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 displayIconBlock\">\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-icon (file-type logo) -->\r\n <ng-template #displayIconBlock>\r\n <ng-container *ngIf=\"col.type == displayTypes.ICON_DISPLAY; else displayTextEyeBlock\">\r\n <div *ngIf=\"item[col.field]\" class=\"flex align-items-center justify-content-center gap-2\">\r\n <i [class]=\"getFileTypeIconClass(item[col.field])\"\r\n [style.color]=\"getFileTypeIconColor(item[col.field])\"\r\n style=\"font-size: 1.25rem\"></i>\r\n <span>{{ item[col.field] }}</span>\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 \r\n [schema]=\"calenderSchema\" \r\n [eventsData]=\"page.items\" \r\n [crudService]=\"crudService\"\r\n [showInfoButton]=\"showInfoButton\"\r\n [showDownloadButton]=\"showDownloadButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (dateRangeChange)=\"handleDateRangeChange($event)\" \r\n (eventClick)=\"handleCalendarEventClick($event)\">\r\n</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)\"[selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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 [selectKeyOnly]=\"selectKeyOnly\" [key]=\"key\" [overflowActionsMenu]=\"overflowActionsMenu\">\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"] }]
|
|
11488
11520
|
}], ctorParameters: () => [{ type: StatusColorService }, { type: FichierService }, { type: HtmlTemplateGeneratorService }, { type: i1$1.DatePipe }, { type: TsiNotificationService }, { type: LocalizePipe }, { type: LayoutHelperService }, { type: LayoutService }, { type: i2$2.PrimeNGConfig }, { type: AppSettingsService }, { type: ErrorResponseManagerService }, { type: i0.EnvironmentInjector }, { type: i1$3.DynamicDialogConfig }, { type: i1$3.DynamicDialogRef }], propDecorators: { cudComponent: [{
|
|
11489
11521
|
type: Input
|
|
11490
11522
|
}], modalSize: [{
|
|
@@ -17080,7 +17112,7 @@ class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseComponent {
|
|
|
17080
17112
|
});
|
|
17081
17113
|
}
|
|
17082
17114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, deps: [{ token: ActionErpService }, { token: NatureActionService }, { token: ErrorResponseManagerService }, { token: TsiNotificationService }, { token: TsiConfirmationService }, { token: EntityConfigurationService }, { token: i1$3.DialogService }, { token: IdentityManagerService }, { token: LocalizePipe }, { token: i1$3.DynamicDialogConfig }, { token: i1$3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17083
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders, DialogService], 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:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-caret-up'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-3 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div presentationDesigner=\"action_Generer\" class=\"grid\">\r\n <Tsi-Label class=\"col-1 col-offset-1\" [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-4\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\"\r\n [listSourceUrl]=\"this.administrationEndpoints.GetAllEntitiesInformationsMinimal()\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\"\r\n [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: 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: 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", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { 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: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
|
|
17115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders, DialogService], 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:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-caret-up'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-3 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div presentationDesigner=\"action_Generer\" class=\"grid\">\r\n <Tsi-Label class=\"col-1 col-offset-1\" [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-4\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\"\r\n [listSourceUrl]=\"this.administrationEndpoints.GetAllEntitiesInformationsMinimal()\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\"\r\n [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "saveEvent", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: 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: 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", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { 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: TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: PresentationDesignerDirective, selector: "[presentationDesigner]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
|
|
17084
17116
|
}
|
|
17085
17117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, decorators: [{
|
|
17086
17118
|
type: Component,
|
|
@@ -17620,11 +17652,11 @@ class CreateOrEditModeleImportComponent extends TsiFormComponentBaseComponent {
|
|
|
17620
17652
|
}
|
|
17621
17653
|
}
|
|
17622
17654
|
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 }); }
|
|
17623
|
-
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 [
|
|
17655
|
+
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 [saveEvent]=\"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]=\"mode == modeRef.delete\"></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", "saveEvent", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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", "mode"], 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", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
|
|
17624
17656
|
}
|
|
17625
17657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, decorators: [{
|
|
17626
17658
|
type: Component,
|
|
17627
|
-
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 [
|
|
17659
|
+
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 [saveEvent]=\"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]=\"mode == modeRef.delete\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>" }]
|
|
17628
17660
|
}], ctorParameters: () => [{ type: ModeleImportService }, { type: TsiNotificationService }, { type: i1$3.DynamicDialogConfig }, { type: i1$3.DynamicDialogRef }] });
|
|
17629
17661
|
|
|
17630
17662
|
class ManageImportExportComponent extends TsiFormComponentBaseComponent {
|
|
@@ -18091,7 +18123,7 @@ class ManageImportExportComponent extends TsiFormComponentBaseComponent {
|
|
|
18091
18123
|
}
|
|
18092
18124
|
}
|
|
18093
18125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageImportExportComponent, deps: [{ token: ModeleImportService }, { token: TsiConfirmationService }, { token: TsiNotificationService }, { token: i1$3.DynamicDialogConfig }, { token: TsiModalService }, { token: ErrorResponseManagerService }, { token: i1$3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18094
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageImportExportComponent, selector: "app-manage-import-export", providers: [...appProviders], viewQueries: [{ propertyName: "gridComponent", first: true, predicate: TsiViewGridComponent, descendants: true }, { propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "viewGridComponent", first: true, predicate: ["viewGrid"], descendants: true }, { propertyName: "importFileToExecuteFileUpload", first: true, predicate: ["importFileToExecuteFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [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\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\" [selectKeyOnly]=\"false\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <div *busy=\"isloading\"></div>\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadWithoutModel\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" (onClick)=\"refreshImportExportData()\"\r\n class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\"{{fileType}}\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadToExecuteFile\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i3$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i7$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { 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", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { 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: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
18126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageImportExportComponent, selector: "app-manage-import-export", providers: [...appProviders], viewQueries: [{ propertyName: "gridComponent", first: true, predicate: TsiViewGridComponent, descendants: true }, { propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "viewGridComponent", first: true, predicate: ["viewGrid"], descendants: true }, { propertyName: "importFileToExecuteFileUpload", first: true, predicate: ["importFileToExecuteFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [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\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\" [selectKeyOnly]=\"false\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <div *busy=\"isloading\"></div>\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadWithoutModel\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" (onClick)=\"refreshImportExportData()\"\r\n class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\"{{fileType}}\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadToExecuteFile\" pTemplate=\"fileupload-content\" let-files>\r\n <div *ngIf=\"files?.length\">\r\n <strong>{{ files[0].name }}</strong>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i3$2.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i7$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { 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", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { 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: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
18095
18127
|
}
|
|
18096
18128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageImportExportComponent, decorators: [{
|
|
18097
18129
|
type: Component,
|
|
@@ -19458,7 +19490,7 @@ class ManageReportingComponent extends TsiFormComponentBaseComponent {
|
|
|
19458
19490
|
this.isloading = false;
|
|
19459
19491
|
}
|
|
19460
19492
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageReportingComponent, deps: [{ token: ReportingService }, { token: IdentityManagerService }, { token: TsiConfirmationService }, { token: TsiNotificationService }, { token: i1$3.DynamicDialogRef }, { token: i1$3.DynamicDialogConfig }, { token: TsiModalService }, { token: MailingService }, { token: ErrorResponseManagerService }, { token: i2$6.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19461
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageReportingComponent, selector: "app-manage-reporting", inputs: { otherFormName: "otherFormName", otherFormEndpoint: "otherFormEndpoint", formEndpointBody: "formEndpointBody", isFormEndpointPaged: "isFormEndpointPaged", filtersHtmlTemplate: "filtersHtmlTemplate", optionalEndpoints: "optionalEndpoints", customReportingMode: "customReportingMode" }, providers: [...appProviders], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "importFileToReportFileUpload", first: true, predicate: ["importFileToReportFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\r\n<div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div *ngIf=\"isFromForm; else notFromForm\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n [options]=\"formNames\" [ngModel]=\"otherFormName\" optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown>\r\n </div>\r\n\r\n <ng-template #notFromForm>\r\n <ng-container>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-10\" [(bind)]=\"otherFormName\" (bindChange)=\"onFormChange()\"\r\n [listSourceUrl]=\"getFormNamesEndpoint\" [elementSourceUrl]=\"getFormNamesEndpoint \" [isFiltered]=\"true\"\r\n id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\" icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success ml-2 mr-2 p-button p-component ng-star-inserted p-button-label\" (click)=\"onNewReport()\"></Tsi-Button>\r\n <Tsi-Button [buttonType]=\"buttonType.Submit\" [text]=\"'shared_reporting_delete_report' | localize\" icon=\"p-button-icon p-button-icon-left pi pi-trash\"\r\n styleClass=\"p-element p-button-danger p-button p-component ng-star-inserted p-button-label\" (click)=\"onDeleteSelectedReports()\"\r\n [disabled]=\"!selectedReports || !selectedReports.length\"></Tsi-Button>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n accept=\"application/json\" [maxFileSize]=\"10000000\" \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\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <!-- <Tsi-Display-Grid [showHeader]=\"true\"\r\n [header]=\"'shared_reporting_my_template'\"\r\n [columns]=\"columns\" [gridData]=\"reports\" key=\"uid\"\r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\" [(selectedItems)]=\"selectedReports\"\r\n [showFilters]=\"false\"\r\n [paginator]=\"true\"\r\n [globalFilterFields]=\"globalFilterFields\">\r\n </Tsi-Display-Grid> -->\r\n\r\n\r\n <!--<div style=\"text-align:left\"> <p-button icon=\"pi pi-refresh\" [pTooltip]=\"'shared_reporting_refresh' | localize\" [tooltipPosition]=\"tooltipPosition.Top\" label=\"Reload\" severity=\"help\" (click)=\"onRefresh()\" /> </div>\r\n <p-button icon=\"pi pi-refresh\" class=\"p-button-rounded\" styleClass=\"p-button-text\" />\r\n-->\r\n \r\n <Tsi-Button styleClass=\"p-element p-button-text p-button-raised p-button-rounded mb-3 ml-3\" \r\n [tooltipText]=\"'shared_reporting_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"pi pi-refresh\" (click)=\"onRefresh()\"></Tsi-Button>\r\n\r\n <tsi-view-grid \r\n [sortMode]=\"sortModeRef.Single\"\r\n [header]=\"'shared_reporting_my_template'\"\r\n [columns]=\"columns\" [gridData]=\"reports\" key=\"uid\"\r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\" [(selectedItems)]=\"selectedReports\"\r\n [getDataFromApi]=\"false\"\r\n [formName]=\"'my-report-templates'\"\r\n >\r\n </tsi-view-grid>\r\n <br/>\r\n <!-- Default Template -->\r\n <!-- <Tsi-Display-Grid \r\n [showHeader]=\"true\" \r\n [header]=\"'shared_reporting_BuiltIn_template'\"\r\n [showSummaryFooter]=\"false\" \r\n [paginator]=\"false\" \r\n [showFilters]=\"false\" \r\n [columns]=\"defaultTemplateColumns\" \r\n [gridData]=\"defaultReportTemplateData\" \r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\"\r\n [paginator]=\"true\"\r\n key=\"name\">\r\n </Tsi-Display-Grid> -->\r\n\r\n \r\n <tsi-view-grid\r\n [sortMode]=\"sortModeRef.Single\"\r\n [header]=\"'shared_reporting_BuiltIn_template'\"\r\n [columns]=\"defaultTemplateColumns\" \r\n [gridData]=\"defaultReportTemplateData\" \r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\"\r\n [getDataFromApi]=\"false\"\r\n [formName]=\"'default-my-report-templates'\"\r\n key=\"name\">\r\n </tsi-view-grid>\r\n\r\n\r\n\r\n\r\n \r\n\r\n <!-- dialog to import file to report -->\r\n <p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\" [(visible)]=\"isUpdateReportFromFileDialogVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" (onBeforeUpload)=\"onImportFileToReport_ImportFile($event)\"\r\n (onSelect)=\"onImportFileToReport_FileSelected($event)\" (onClear)=\"onImportFileToReport_Clear($event)\" (onRemove)=\"onImportFileToReport_Remove($event)\" [multiple]=\"false\"\r\n accept=\"application/json\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadToUpdateReportFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>\r\n</div>\r\n", styles: [".p-button.p-button-icon-only.p-button-rounded{height:2rem!important}::ng-deep .p-fileupload-choose input{display:none!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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i3$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i10.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { 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: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
19493
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageReportingComponent, selector: "app-manage-reporting", inputs: { otherFormName: "otherFormName", otherFormEndpoint: "otherFormEndpoint", formEndpointBody: "formEndpointBody", isFormEndpointPaged: "isFormEndpointPaged", filtersHtmlTemplate: "filtersHtmlTemplate", optionalEndpoints: "optionalEndpoints", customReportingMode: "customReportingMode" }, providers: [...appProviders], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "importFileToReportFileUpload", first: true, predicate: ["importFileToReportFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\r\n<div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div *ngIf=\"isFromForm; else notFromForm\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n [options]=\"formNames\" [ngModel]=\"otherFormName\" optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown>\r\n </div>\r\n\r\n <ng-template #notFromForm>\r\n <ng-container>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-10\" [(bind)]=\"otherFormName\" (bindChange)=\"onFormChange()\"\r\n [listSourceUrl]=\"getFormNamesEndpoint\" [elementSourceUrl]=\"getFormNamesEndpoint \" [isFiltered]=\"true\"\r\n id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\" icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success ml-2 mr-2 p-button p-component ng-star-inserted p-button-label\" (click)=\"onNewReport()\"></Tsi-Button>\r\n <Tsi-Button [buttonType]=\"buttonType.Submit\" [text]=\"'shared_reporting_delete_report' | localize\" icon=\"p-button-icon p-button-icon-left pi pi-trash\"\r\n styleClass=\"p-element p-button-danger p-button p-component ng-star-inserted p-button-label\" (click)=\"onDeleteSelectedReports()\"\r\n [disabled]=\"!selectedReports || !selectedReports.length\"></Tsi-Button>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\" [multiple]=\"false\"\r\n accept=\"application/json\" [maxFileSize]=\"10000000\" \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\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <!-- <Tsi-Display-Grid [showHeader]=\"true\"\r\n [header]=\"'shared_reporting_my_template'\"\r\n [columns]=\"columns\" [gridData]=\"reports\" key=\"uid\"\r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\" [(selectedItems)]=\"selectedReports\"\r\n [showFilters]=\"false\"\r\n [paginator]=\"true\"\r\n [globalFilterFields]=\"globalFilterFields\">\r\n </Tsi-Display-Grid> -->\r\n\r\n\r\n <!--<div style=\"text-align:left\"> <p-button icon=\"pi pi-refresh\" [pTooltip]=\"'shared_reporting_refresh' | localize\" [tooltipPosition]=\"tooltipPosition.Top\" label=\"Reload\" severity=\"help\" (click)=\"onRefresh()\" /> </div>\r\n <p-button icon=\"pi pi-refresh\" class=\"p-button-rounded\" styleClass=\"p-button-text\" />\r\n-->\r\n \r\n <Tsi-Button styleClass=\"p-element p-button-text p-button-raised p-button-rounded mb-3 ml-3\" \r\n [tooltipText]=\"'shared_reporting_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"pi pi-refresh\" (click)=\"onRefresh()\"></Tsi-Button>\r\n\r\n <tsi-view-grid \r\n [sortMode]=\"sortModeRef.Single\"\r\n [header]=\"'shared_reporting_my_template'\"\r\n [columns]=\"columns\" [gridData]=\"reports\" key=\"uid\"\r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\" [(selectedItems)]=\"selectedReports\"\r\n [getDataFromApi]=\"false\"\r\n [formName]=\"'my-report-templates'\"\r\n >\r\n </tsi-view-grid>\r\n <br/>\r\n <!-- Default Template -->\r\n <!-- <Tsi-Display-Grid \r\n [showHeader]=\"true\" \r\n [header]=\"'shared_reporting_BuiltIn_template'\"\r\n [showSummaryFooter]=\"false\" \r\n [paginator]=\"false\" \r\n [showFilters]=\"false\" \r\n [columns]=\"defaultTemplateColumns\" \r\n [gridData]=\"defaultReportTemplateData\" \r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\"\r\n [paginator]=\"true\"\r\n key=\"name\">\r\n </Tsi-Display-Grid> -->\r\n\r\n \r\n <tsi-view-grid\r\n [sortMode]=\"sortModeRef.Single\"\r\n [header]=\"'shared_reporting_BuiltIn_template'\"\r\n [columns]=\"defaultTemplateColumns\" \r\n [gridData]=\"defaultReportTemplateData\" \r\n (buttonColumnClicked)=\"handleButtonColumnClicked($event)\"\r\n [getDataFromApi]=\"false\"\r\n [formName]=\"'default-my-report-templates'\"\r\n key=\"name\">\r\n </tsi-view-grid>\r\n\r\n\r\n\r\n\r\n \r\n\r\n <!-- dialog to import file to report -->\r\n <p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\" [(visible)]=\"isUpdateReportFromFileDialogVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" (onBeforeUpload)=\"onImportFileToReport_ImportFile($event)\"\r\n (onSelect)=\"onImportFileToReport_FileSelected($event)\" (onClear)=\"onImportFileToReport_Clear($event)\" (onRemove)=\"onImportFileToReport_Remove($event)\" [multiple]=\"false\"\r\n accept=\"application/json\" [maxFileSize]=\"10000000\"\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\">\r\n <ng-template *ngIf=\"toUploadToUpdateReportFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>\r\n</div>\r\n", styles: [".p-button.p-button-icon-only.p-button-rounded{height:2rem!important}::ng-deep .p-fileupload-choose input{display:none!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: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i3$2.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i10.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "sortMode", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { 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: BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
19462
19494
|
}
|
|
19463
19495
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageReportingComponent, decorators: [{
|
|
19464
19496
|
type: Component,
|
|
@@ -19526,7 +19558,7 @@ class ModalLoaderComponent {
|
|
|
19526
19558
|
this.itemDialog = false;
|
|
19527
19559
|
}
|
|
19528
19560
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalLoaderComponent, deps: [{ token: TsiBsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalLoaderComponent, selector: "app-modal-loader", viewQueries: [{ propertyName: "adHost", first: true, predicate: AdDirective, descendants: true, static: true }], ngImport: i0, template: "<p-dialog [(visible)]=\"itemDialog\" contentStyleClass=\"pb-0\" [style]=\"modalSize\" header=\"Product Details\" [modal]=\"true\"\r\n styleClass=\"p-fluid\">\r\n <ng-template adHost>\r\n </ng-template>\r\n <p-footer class=\"p-dialog-footer\" >\r\n <Tsi-Button text=\"Cancel\" icon=\"p-button-icon p-button-icon-left pi pi-times\" styleClass=\"p-element p-button-text flex align-items-center justify-content-center p-button p-component p-button-label\" (onClick)=\"onCancel()\"></Tsi-Button>\r\n <Tsi-Button text=\"Save\" [buttonType]=\"buttonType.Submit\" icon=\"pi pi-check\" styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label\" (onClick)=\"onSave()\"></Tsi-Button> \r\n </p-footer>\r\n</p-dialog>", styles: [""], dependencies: [{ kind: "component", type: i2$2.Footer, selector: "p-footer" }, { kind: "component", type: i3$
|
|
19561
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalLoaderComponent, selector: "app-modal-loader", viewQueries: [{ propertyName: "adHost", first: true, predicate: AdDirective, descendants: true, static: true }], ngImport: i0, template: "<p-dialog [(visible)]=\"itemDialog\" contentStyleClass=\"pb-0\" [style]=\"modalSize\" header=\"Product Details\" [modal]=\"true\"\r\n styleClass=\"p-fluid\">\r\n <ng-template adHost>\r\n </ng-template>\r\n <p-footer class=\"p-dialog-footer\" >\r\n <Tsi-Button text=\"Cancel\" icon=\"p-button-icon p-button-icon-left pi pi-times\" styleClass=\"p-element p-button-text flex align-items-center justify-content-center p-button p-component p-button-label\" (onClick)=\"onCancel()\"></Tsi-Button>\r\n <Tsi-Button text=\"Save\" [buttonType]=\"buttonType.Submit\" icon=\"pi pi-check\" styleClass=\"p-element p-button-text p-button p-component ng-star-inserted p-button-label\" (onClick)=\"onSave()\"></Tsi-Button> \r\n </p-footer>\r\n</p-dialog>", styles: [""], dependencies: [{ kind: "component", type: i2$2.Footer, selector: "p-footer" }, { kind: "component", type: i3$2.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { 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: AdDirective, selector: "[adHost]" }] }); }
|
|
19530
19562
|
}
|
|
19531
19563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalLoaderComponent, decorators: [{
|
|
19532
19564
|
type: Component,
|
|
@@ -19809,7 +19841,7 @@ class TsiModalComponent {
|
|
|
19809
19841
|
ngOnInit() {
|
|
19810
19842
|
}
|
|
19811
19843
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19812
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiModalComponent, selector: "tsi-modal", inputs: { modalSize: "modalSize", itemDialog: "itemDialog" }, ngImport: i0, template: "<p-dialog [maximizable]=\"true\" [(visible)]=\"itemDialog\" [modal]=\"true\">\r\n <ng-content></ng-content>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "component", type: i3$
|
|
19844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiModalComponent, selector: "tsi-modal", inputs: { modalSize: "modalSize", itemDialog: "itemDialog" }, ngImport: i0, template: "<p-dialog [maximizable]=\"true\" [(visible)]=\"itemDialog\" [modal]=\"true\">\r\n <ng-content></ng-content>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "component", type: i3$2.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }] }); }
|
|
19813
19845
|
}
|
|
19814
19846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiModalComponent, decorators: [{
|
|
19815
19847
|
type: Component,
|
|
@@ -20061,18 +20093,198 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
20061
20093
|
type: Input
|
|
20062
20094
|
}] } });
|
|
20063
20095
|
|
|
20096
|
+
/** Extract the lower-cased extension from a file name (without the dot). */
|
|
20097
|
+
function getFileExtension(fileName) {
|
|
20098
|
+
return fileName?.split('.')?.pop();
|
|
20099
|
+
}
|
|
20100
|
+
/** Map a file extension to a MIME type (best-effort). */
|
|
20101
|
+
function getMimeTypeFromExtension(ext) {
|
|
20102
|
+
switch ((ext ?? '').toLowerCase()) {
|
|
20103
|
+
case 'png': return 'image/png';
|
|
20104
|
+
case 'jpg':
|
|
20105
|
+
case 'jpeg': return 'image/jpeg';
|
|
20106
|
+
case 'gif': return 'image/gif';
|
|
20107
|
+
case 'bmp': return 'image/bmp';
|
|
20108
|
+
case 'svg': return 'image/svg+xml';
|
|
20109
|
+
case 'webp': return 'image/webp';
|
|
20110
|
+
case 'ico': return 'image/x-icon';
|
|
20111
|
+
case 'mp4': return 'video/mp4';
|
|
20112
|
+
case 'webm': return 'video/webm';
|
|
20113
|
+
case 'ogg': return 'video/ogg';
|
|
20114
|
+
case 'mov': return 'video/quicktime';
|
|
20115
|
+
case 'mp3': return 'audio/mpeg';
|
|
20116
|
+
case 'wav': return 'audio/wav';
|
|
20117
|
+
case 'm4a': return 'audio/mp4';
|
|
20118
|
+
case 'aac': return 'audio/aac';
|
|
20119
|
+
case 'oga': return 'audio/ogg';
|
|
20120
|
+
case 'pdf': return 'application/pdf';
|
|
20121
|
+
default: return 'application/octet-stream';
|
|
20122
|
+
}
|
|
20123
|
+
}
|
|
20124
|
+
/** Which inline preview (if any) a file can use, based on its extension. */
|
|
20125
|
+
function getMediaCategory(fileName) {
|
|
20126
|
+
const ext = (getFileExtension(fileName) ?? '').toLowerCase();
|
|
20127
|
+
if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'webp', 'ico'].includes(ext)) {
|
|
20128
|
+
return 'image';
|
|
20129
|
+
}
|
|
20130
|
+
if (['mp4', 'webm', 'ogg', 'mov'].includes(ext)) {
|
|
20131
|
+
return 'video';
|
|
20132
|
+
}
|
|
20133
|
+
if (['mp3', 'wav', 'm4a', 'aac', 'oga'].includes(ext)) {
|
|
20134
|
+
return 'audio';
|
|
20135
|
+
}
|
|
20136
|
+
if (ext === 'pdf') {
|
|
20137
|
+
return 'pdf';
|
|
20138
|
+
}
|
|
20139
|
+
return 'unsupported';
|
|
20140
|
+
}
|
|
20141
|
+
/** PrimeIcons class for the unsupported-file fallback card. */
|
|
20142
|
+
function getFileTypeIconClass(fileName) {
|
|
20143
|
+
switch ((getFileExtension(fileName) ?? '').toLowerCase()) {
|
|
20144
|
+
case 'pdf': return 'pi pi-file-pdf';
|
|
20145
|
+
case 'doc':
|
|
20146
|
+
case 'docx': return 'pi pi-file-word';
|
|
20147
|
+
case 'xls':
|
|
20148
|
+
case 'xlsx':
|
|
20149
|
+
case 'csv': return 'pi pi-file-excel';
|
|
20150
|
+
case 'png':
|
|
20151
|
+
case 'jpg':
|
|
20152
|
+
case 'jpeg':
|
|
20153
|
+
case 'gif':
|
|
20154
|
+
case 'bmp':
|
|
20155
|
+
case 'svg':
|
|
20156
|
+
case 'webp': return 'pi pi-image';
|
|
20157
|
+
default: return 'pi pi-file';
|
|
20158
|
+
}
|
|
20159
|
+
}
|
|
20160
|
+
|
|
20161
|
+
/**
|
|
20162
|
+
* Presentational file viewer. Renders the selected file inline when the browser supports the
|
|
20163
|
+
* type (image / video / audio / pdf), otherwise shows an icon + "not supported" fallback.
|
|
20164
|
+
*
|
|
20165
|
+
* Dual-mode:
|
|
20166
|
+
* - Inline: bind [content]/[fileName]/[mimeType] inputs.
|
|
20167
|
+
* - Dialog: opened via DialogService; the same fields are read from DynamicDialogConfig.data.
|
|
20168
|
+
*/
|
|
20169
|
+
class TsiFilePreviewComponent {
|
|
20170
|
+
constructor(domSanitizer, config) {
|
|
20171
|
+
this.domSanitizer = domSanitizer;
|
|
20172
|
+
this.config = config;
|
|
20173
|
+
/** Max width for <img>/<video>. Inline usage passes '15rem'; the dialog keeps full width. */
|
|
20174
|
+
this.mediaMaxWidth = '100%';
|
|
20175
|
+
this.previewError = new EventEmitter();
|
|
20176
|
+
/** Set when an inline media element fails to load → show the fallback card. */
|
|
20177
|
+
this.mediaLoadError = false;
|
|
20178
|
+
this.safeMediaUrl = '';
|
|
20179
|
+
this.safePdfUrl = '';
|
|
20180
|
+
this.objectUrl = null;
|
|
20181
|
+
this.urlCacheKey = null;
|
|
20182
|
+
}
|
|
20183
|
+
get category() {
|
|
20184
|
+
return getMediaCategory(this.fileName);
|
|
20185
|
+
}
|
|
20186
|
+
get iconClass() {
|
|
20187
|
+
return getFileTypeIconClass(this.fileName);
|
|
20188
|
+
}
|
|
20189
|
+
ngOnInit() {
|
|
20190
|
+
const data = this.config?.data;
|
|
20191
|
+
if (data && this.content == null && data.content != null) {
|
|
20192
|
+
this.content = data.content;
|
|
20193
|
+
this.fileName = data.fileName;
|
|
20194
|
+
this.mimeType = data.mimeType;
|
|
20195
|
+
this.mediaMaxWidth = data.mediaMaxWidth ?? this.mediaMaxWidth;
|
|
20196
|
+
}
|
|
20197
|
+
this.buildPreview();
|
|
20198
|
+
}
|
|
20199
|
+
ngOnChanges() {
|
|
20200
|
+
// Inline mode: rebuild when [content] changes.
|
|
20201
|
+
this.buildPreview();
|
|
20202
|
+
}
|
|
20203
|
+
ngOnDestroy() {
|
|
20204
|
+
this.revokeObjectUrl();
|
|
20205
|
+
}
|
|
20206
|
+
onMediaError() {
|
|
20207
|
+
this.mediaLoadError = true;
|
|
20208
|
+
this.previewError.emit();
|
|
20209
|
+
}
|
|
20210
|
+
/** MIME type used to tag the preview Blob — captured from the File, else derived from the extension. */
|
|
20211
|
+
get resolvedMimeType() {
|
|
20212
|
+
return this.mimeType || getMimeTypeFromExtension(getFileExtension(this.fileName));
|
|
20213
|
+
}
|
|
20214
|
+
/** Build (and memoize) the sanitized object URL once per file. */
|
|
20215
|
+
buildPreview() {
|
|
20216
|
+
const current = this.content ?? null;
|
|
20217
|
+
if (!current) {
|
|
20218
|
+
this.revokeObjectUrl();
|
|
20219
|
+
return;
|
|
20220
|
+
}
|
|
20221
|
+
if (current === this.urlCacheKey) {
|
|
20222
|
+
return;
|
|
20223
|
+
}
|
|
20224
|
+
this.revokeObjectUrl();
|
|
20225
|
+
this.mediaLoadError = false;
|
|
20226
|
+
const blob = this.base64ToBlob(current, this.resolvedMimeType);
|
|
20227
|
+
this.objectUrl = window.URL.createObjectURL(blob);
|
|
20228
|
+
this.urlCacheKey = current;
|
|
20229
|
+
this.safeMediaUrl = this.domSanitizer.bypassSecurityTrustUrl(this.objectUrl);
|
|
20230
|
+
this.safePdfUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.objectUrl);
|
|
20231
|
+
}
|
|
20232
|
+
revokeObjectUrl() {
|
|
20233
|
+
if (this.objectUrl) {
|
|
20234
|
+
window.URL.revokeObjectURL(this.objectUrl);
|
|
20235
|
+
this.objectUrl = null;
|
|
20236
|
+
}
|
|
20237
|
+
this.urlCacheKey = null;
|
|
20238
|
+
this.safeMediaUrl = '';
|
|
20239
|
+
this.safePdfUrl = '';
|
|
20240
|
+
}
|
|
20241
|
+
/** Decode a base64 string into a Blob tagged with the given MIME type. */
|
|
20242
|
+
base64ToBlob(base64, mimeType) {
|
|
20243
|
+
const byteCharacters = atob(base64);
|
|
20244
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
20245
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
20246
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
20247
|
+
}
|
|
20248
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
20249
|
+
return new Blob([byteArray], { type: mimeType });
|
|
20250
|
+
}
|
|
20251
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFilePreviewComponent, deps: [{ token: i1$4.DomSanitizer }, { token: i1$3.DynamicDialogConfig, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20252
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFilePreviewComponent, selector: "Tsi-File-Preview", inputs: { content: "content", fileName: "fileName", mimeType: "mimeType", mediaMaxWidth: "mediaMaxWidth" }, outputs: { previewError: "previewError" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"!mediaLoadError\" [ngSwitch]=\"category\">\r\n <img *ngSwitchCase=\"'image'\" class=\"tsi-file-preview-media\" [style.maxWidth]=\"mediaMaxWidth\"\r\n [src]=\"safeMediaUrl\" (error)=\"onMediaError()\" alt=\"{{ fileName }}\" />\r\n\r\n <video *ngSwitchCase=\"'video'\" class=\"tsi-file-preview-media\" [style.maxWidth]=\"mediaMaxWidth\"\r\n [src]=\"safeMediaUrl\" controls (error)=\"onMediaError()\">\r\n </video>\r\n\r\n <audio *ngSwitchCase=\"'audio'\" class=\"tsi-file-preview-audio\" [src]=\"safeMediaUrl\" controls\r\n (error)=\"onMediaError()\">\r\n </audio>\r\n\r\n <iframe *ngSwitchCase=\"'pdf'\" class=\"tsi-file-preview-pdf\" [src]=\"safePdfUrl\" title=\"{{ fileName }}\">\r\n </iframe>\r\n\r\n <div *ngSwitchDefault class=\"tsi-file-fallback\">\r\n <i [class]=\"iconClass\"></i>\r\n <p class=\"tsi-file-fallback-msg\">{{ 'tsi_file_manager_preview_not_supported' | localize }}</p>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"mediaLoadError\" class=\"tsi-file-fallback\">\r\n <i [class]=\"iconClass\"></i>\r\n <p class=\"tsi-file-fallback-msg\">{{ 'tsi_file_manager_preview_not_supported' | localize }}</p>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.tsi-file-preview-media{max-width:100%;max-height:100%;object-fit:contain}.tsi-file-preview-audio{width:15rem}.tsi-file-preview-pdf{width:100%;height:100%;border:none}.tsi-file-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.tsi-file-fallback .pi{font-size:3rem}.tsi-file-fallback-msg{margin:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
20253
|
+
}
|
|
20254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFilePreviewComponent, decorators: [{
|
|
20255
|
+
type: Component,
|
|
20256
|
+
args: [{ selector: 'Tsi-File-Preview', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"!mediaLoadError\" [ngSwitch]=\"category\">\r\n <img *ngSwitchCase=\"'image'\" class=\"tsi-file-preview-media\" [style.maxWidth]=\"mediaMaxWidth\"\r\n [src]=\"safeMediaUrl\" (error)=\"onMediaError()\" alt=\"{{ fileName }}\" />\r\n\r\n <video *ngSwitchCase=\"'video'\" class=\"tsi-file-preview-media\" [style.maxWidth]=\"mediaMaxWidth\"\r\n [src]=\"safeMediaUrl\" controls (error)=\"onMediaError()\">\r\n </video>\r\n\r\n <audio *ngSwitchCase=\"'audio'\" class=\"tsi-file-preview-audio\" [src]=\"safeMediaUrl\" controls\r\n (error)=\"onMediaError()\">\r\n </audio>\r\n\r\n <iframe *ngSwitchCase=\"'pdf'\" class=\"tsi-file-preview-pdf\" [src]=\"safePdfUrl\" title=\"{{ fileName }}\">\r\n </iframe>\r\n\r\n <div *ngSwitchDefault class=\"tsi-file-fallback\">\r\n <i [class]=\"iconClass\"></i>\r\n <p class=\"tsi-file-fallback-msg\">{{ 'tsi_file_manager_preview_not_supported' | localize }}</p>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"mediaLoadError\" class=\"tsi-file-fallback\">\r\n <i [class]=\"iconClass\"></i>\r\n <p class=\"tsi-file-fallback-msg\">{{ 'tsi_file_manager_preview_not_supported' | localize }}</p>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.tsi-file-preview-media{max-width:100%;max-height:100%;object-fit:contain}.tsi-file-preview-audio{width:15rem}.tsi-file-preview-pdf{width:100%;height:100%;border:none}.tsi-file-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;text-align:center}.tsi-file-fallback .pi{font-size:3rem}.tsi-file-fallback-msg{margin:0}\n"] }]
|
|
20257
|
+
}], ctorParameters: () => [{ type: i1$4.DomSanitizer }, { type: i1$3.DynamicDialogConfig, decorators: [{
|
|
20258
|
+
type: Optional
|
|
20259
|
+
}] }], propDecorators: { content: [{
|
|
20260
|
+
type: Input
|
|
20261
|
+
}], fileName: [{
|
|
20262
|
+
type: Input
|
|
20263
|
+
}], mimeType: [{
|
|
20264
|
+
type: Input
|
|
20265
|
+
}], mediaMaxWidth: [{
|
|
20266
|
+
type: Input
|
|
20267
|
+
}], previewError: [{
|
|
20268
|
+
type: Output
|
|
20269
|
+
}] } });
|
|
20270
|
+
|
|
20271
|
+
var tsiFilePreview_component = /*#__PURE__*/Object.freeze({
|
|
20272
|
+
__proto__: null,
|
|
20273
|
+
TsiFilePreviewComponent: TsiFilePreviewComponent
|
|
20274
|
+
});
|
|
20275
|
+
|
|
20064
20276
|
class TsiFileManagerComponent extends TsiInputBase {
|
|
20065
20277
|
/* ngAfterViewInit() {
|
|
20066
20278
|
if (this.showSelectButton && this.fileUploadInput) {
|
|
20067
20279
|
this.fileUploadInput.nativeElement.style.display = 'none';
|
|
20068
20280
|
}
|
|
20069
20281
|
} */
|
|
20070
|
-
constructor(localize, notificationService, changeDetectorRef,
|
|
20282
|
+
constructor(localize, notificationService, changeDetectorRef, _injector) {
|
|
20071
20283
|
super();
|
|
20072
20284
|
this.localize = localize;
|
|
20073
20285
|
this.notificationService = notificationService;
|
|
20074
20286
|
this.changeDetectorRef = changeDetectorRef;
|
|
20075
|
-
this.
|
|
20287
|
+
this._injector = _injector;
|
|
20076
20288
|
this.name = '';
|
|
20077
20289
|
this.accept = '';
|
|
20078
20290
|
this.maxFileSize = 10485760;
|
|
@@ -20085,6 +20297,8 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20085
20297
|
this.chooseLabel = '';
|
|
20086
20298
|
this.showSelectButton = true;
|
|
20087
20299
|
this.showFileUpload = true;
|
|
20300
|
+
this.showPreviewButton = true;
|
|
20301
|
+
this.contentHeight = '20rem';
|
|
20088
20302
|
this.onSelectFileManager = new EventEmitter();
|
|
20089
20303
|
this.onClear = new EventEmitter();
|
|
20090
20304
|
this.onRemove = new EventEmitter();
|
|
@@ -20092,15 +20306,46 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20092
20306
|
this.fileNameChange = new EventEmitter();
|
|
20093
20307
|
this.imageUrl = null;
|
|
20094
20308
|
this.fileSizeError = '';
|
|
20309
|
+
/** Set when the inline preview reports a media load error → fall back to the download card. */
|
|
20310
|
+
this.mediaLoadError = false;
|
|
20311
|
+
}
|
|
20312
|
+
/** True when the selected file can be rendered in the browser (image/video/audio/pdf). */
|
|
20313
|
+
get canPreview() {
|
|
20314
|
+
return !!this.inputField && getMediaCategory(this.fileName) !== 'unsupported';
|
|
20315
|
+
}
|
|
20316
|
+
/** True when the selected file cannot be previewed inline. */
|
|
20317
|
+
get isUnsupported() {
|
|
20318
|
+
return getMediaCategory(this.fileName) === 'unsupported';
|
|
20319
|
+
}
|
|
20320
|
+
/** Called when the inline preview component reports a media load failure. */
|
|
20321
|
+
onPreviewError() {
|
|
20322
|
+
this.mediaLoadError = true;
|
|
20323
|
+
}
|
|
20324
|
+
/** Open the selected file in a maximizable modal via the shared DialogService. */
|
|
20325
|
+
async openPreview() {
|
|
20326
|
+
if (!this.canPreview) {
|
|
20327
|
+
return;
|
|
20328
|
+
}
|
|
20329
|
+
const conf = {
|
|
20330
|
+
header: this.fileName,
|
|
20331
|
+
data: { content: this.inputField, fileName: this.fileName, mimeType: this.mimeType },
|
|
20332
|
+
width: ModalSizeEnum.Medium.width,
|
|
20333
|
+
height: ModalSizeEnum.Medium.height,
|
|
20334
|
+
maximizable: true,
|
|
20335
|
+
styleClass: '',
|
|
20336
|
+
contentStyle: { overflow: 'auto' },
|
|
20337
|
+
};
|
|
20338
|
+
this._previewRef = await openTsiFilePreviewComponent(this._injector, conf);
|
|
20095
20339
|
}
|
|
20096
20340
|
getFileExtension(fileName) {
|
|
20097
|
-
return fileName
|
|
20341
|
+
return getFileExtension(fileName);
|
|
20098
20342
|
}
|
|
20099
20343
|
onFileSelect(event) {
|
|
20100
20344
|
const files = event.files;
|
|
20101
20345
|
// this.convertFileToBase64(files[0]).then((base64String: string) => {
|
|
20102
20346
|
// this.inputField = base64String;
|
|
20103
20347
|
// });
|
|
20348
|
+
this.mediaLoadError = false;
|
|
20104
20349
|
const reader = new FileReader();
|
|
20105
20350
|
reader.onload = () => {
|
|
20106
20351
|
this.inputField = reader.result.split(',')[1];
|
|
@@ -20109,6 +20354,8 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20109
20354
|
};
|
|
20110
20355
|
reader.readAsDataURL(files[0]);
|
|
20111
20356
|
this.fileName = files[0].name;
|
|
20357
|
+
// Prefer the browser-detected MIME type; fall back to the extension map.
|
|
20358
|
+
this.mimeType = files[0].type || getMimeTypeFromExtension(getFileExtension(files[0].name));
|
|
20112
20359
|
const fileName = this.fileName;
|
|
20113
20360
|
if (files[0].size > this.maxFileSize) {
|
|
20114
20361
|
this.notificationService.warn(`
|
|
@@ -20120,19 +20367,20 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20120
20367
|
this.inputField = undefined;
|
|
20121
20368
|
return;
|
|
20122
20369
|
}
|
|
20370
|
+
this.isDirty = true;
|
|
20123
20371
|
setTimeout(() => {
|
|
20124
20372
|
//this.fileName = files.map((file: any) => file.name).join(', ');
|
|
20125
20373
|
this.onSelectFileManager.emit({ event, files, inputField: this.inputField, fileName: fileName });
|
|
20126
20374
|
this.inputFieldChange.emit(this.inputField);
|
|
20127
20375
|
this.fileNameChange.emit(this.fileName);
|
|
20128
|
-
this.isDirty = true;
|
|
20129
20376
|
}, 200);
|
|
20130
20377
|
}
|
|
20131
20378
|
onFileClear() {
|
|
20132
|
-
this.isDirty =
|
|
20379
|
+
this.isDirty = true;
|
|
20133
20380
|
this.inputField = null;
|
|
20134
20381
|
this.fileName = '';
|
|
20135
20382
|
this.imageUrl = null;
|
|
20383
|
+
this.resetPreview();
|
|
20136
20384
|
this.inputFieldChange.emit(this.inputField);
|
|
20137
20385
|
this.fileNameChange.emit(this.fileName);
|
|
20138
20386
|
this.onClear.emit();
|
|
@@ -20141,14 +20389,19 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20141
20389
|
const file = event.file;
|
|
20142
20390
|
//this.inputField = this.inputField.filter((f: any) => f !== file);
|
|
20143
20391
|
//this.fileName = this.inputField.map((f: any) => f.name).join(', ');
|
|
20144
|
-
this.isDirty =
|
|
20392
|
+
this.isDirty = true;
|
|
20145
20393
|
this.inputField = null;
|
|
20146
20394
|
this.fileName = '';
|
|
20147
20395
|
this.imageUrl = null;
|
|
20396
|
+
this.resetPreview();
|
|
20148
20397
|
this.onRemove.emit(file);
|
|
20149
20398
|
this.inputFieldChange.emit(this.inputField);
|
|
20150
20399
|
this.fileNameChange.emit(this.fileName);
|
|
20151
20400
|
}
|
|
20401
|
+
resetPreview() {
|
|
20402
|
+
this.mimeType = undefined;
|
|
20403
|
+
this.mediaLoadError = false;
|
|
20404
|
+
}
|
|
20152
20405
|
convertFileToBase64(file) {
|
|
20153
20406
|
return new Promise((resolve, reject) => {
|
|
20154
20407
|
const reader = new FileReader();
|
|
@@ -20164,13 +20417,7 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20164
20417
|
if (!this.inputField) {
|
|
20165
20418
|
return;
|
|
20166
20419
|
}
|
|
20167
|
-
const
|
|
20168
|
-
const byteNumbers = new Array(byteCharacters.length);
|
|
20169
|
-
for (let i = 0; i < byteCharacters.length; i++) {
|
|
20170
|
-
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
20171
|
-
}
|
|
20172
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
20173
|
-
const blob = new Blob([byteArray], { type: 'application/octet-stream' });
|
|
20420
|
+
const blob = this.base64ToBlob(this.inputField, this.resolvedMimeType);
|
|
20174
20421
|
const url = window.URL.createObjectURL(blob);
|
|
20175
20422
|
const a = document.createElement('a');
|
|
20176
20423
|
document.body.appendChild(a);
|
|
@@ -20180,6 +20427,16 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20180
20427
|
a.click();
|
|
20181
20428
|
//window.URL.revokeObjectURL(url);
|
|
20182
20429
|
}
|
|
20430
|
+
/** Decode a base64 string into a Blob tagged with the given MIME type. */
|
|
20431
|
+
base64ToBlob(base64, mimeType) {
|
|
20432
|
+
const byteCharacters = atob(base64);
|
|
20433
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
20434
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
20435
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
20436
|
+
}
|
|
20437
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
20438
|
+
return new Blob([byteArray], { type: mimeType });
|
|
20439
|
+
}
|
|
20183
20440
|
arrayBufferToBase64(buffer) {
|
|
20184
20441
|
const bytes = new Uint8Array(buffer);
|
|
20185
20442
|
let binary = '';
|
|
@@ -20188,30 +20445,17 @@ class TsiFileManagerComponent extends TsiInputBase {
|
|
|
20188
20445
|
}
|
|
20189
20446
|
return 'data:application/octet-stream;base64,' + btoa(binary);
|
|
20190
20447
|
}
|
|
20191
|
-
|
|
20192
|
-
|
|
20193
|
-
|
|
20194
|
-
}
|
|
20195
|
-
const byteCharacters = atob(this.inputField);
|
|
20196
|
-
const byteNumbers = new Array(byteCharacters.length);
|
|
20197
|
-
for (let i = 0; i < byteCharacters.length; i++) {
|
|
20198
|
-
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
20199
|
-
}
|
|
20200
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
20201
|
-
const blob = new Blob([byteArray], { type: 'application/octet-stream' });
|
|
20202
|
-
const url = window.URL.createObjectURL(blob);
|
|
20203
|
-
return this.domSanitizer.bypassSecurityTrustUrl(url);
|
|
20448
|
+
/** MIME type used for download — captured from the File, else derived from the extension. */
|
|
20449
|
+
get resolvedMimeType() {
|
|
20450
|
+
return this.mimeType || getMimeTypeFromExtension(getFileExtension(this.fileName));
|
|
20204
20451
|
}
|
|
20205
|
-
|
|
20206
|
-
|
|
20207
|
-
}
|
|
20208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFileManagerComponent, deps: [{ token: LocalizePipe }, { token: TsiNotificationService }, { token: i0.ChangeDetectorRef }, { token: i3$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: { fileName: "fileName", name: "name", id: "id", accept: "accept", maxFileSize: "maxFileSize", multiple: "multiple", exploreOnDownload: "exploreOnDownload", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", showDownloadButton: "showDownloadButton", chooseIcon: "chooseIcon", chooseLabel: "chooseLabel", showSelectButton: "showSelectButton", showFileUpload: "showFileUpload" }, outputs: { onSelectFileManager: "onSelectFileManager", onClear: "onClear", onRemove: "onRemove", inputFieldChange: "inputFieldChange", fileNameChange: "fileNameChange" }, usesInheritance: true, ngImport: i0, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div *ngIf=\"fileExtensionImage() || inputField\">\r\n <img [src]=\"fileUrl\" style=\"width: 15rem;\"/>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && fileName != null\">\r\n <p>File Name: {{ fileName }}</p>\r\n <p>File Extension: {{ getFileExtension(fileName) }}</p>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\" h-2rem w-full text-center\">\r\n <!-- <span class=\"font-bold ml-2\" >Download</span> -->\r\n </button>\r\n </div>\r\n </ng-template>\r\n \r\n </p-fileUpload>\r\n \r\n</div>", styles: [".ui-fileupload-choose{display:flex;align-items:center;justify-content:center;padding:.5rem;width:10rem;height:40px}.ui-fileupload-choose .ui-button-text{display:none}.ui-fileupload-choose .pi{font-size:2rem}.p-fileupload-choose input{display:none!important}:host ::ng-deep .p-fileupload-choose[disabled]{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
20452
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFileManagerComponent, deps: [{ token: LocalizePipe }, { token: TsiNotificationService }, { token: i0.ChangeDetectorRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20453
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: { fileName: "fileName", name: "name", id: "id", accept: "accept", maxFileSize: "maxFileSize", multiple: "multiple", exploreOnDownload: "exploreOnDownload", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", showDownloadButton: "showDownloadButton", chooseIcon: "chooseIcon", chooseLabel: "chooseLabel", showSelectButton: "showSelectButton", showFileUpload: "showFileUpload", showPreviewButton: "showPreviewButton", contentHeight: "contentHeight" }, outputs: { onSelectFileManager: "onSelectFileManager", onClear: "onClear", onRemove: "onRemove", inputFieldChange: "inputFieldChange", fileNameChange: "fileNameChange" }, usesInheritance: true, ngImport: i0, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div class=\"tsi-file-content\" [style.height]=\"contentHeight\">\r\n <div *ngIf=\"inputField\" class=\"tsi-file-preview\">\r\n <Tsi-File-Preview [content]=\"inputField\" [fileName]=\"fileName\" [mimeType]=\"mimeType\"\r\n mediaMaxWidth=\"15rem\" (previewError)=\"onPreviewError()\">\r\n </Tsi-File-Preview>\r\n </div>\r\n\r\n <div class=\"mt-2\" *ngIf=\"fileName != undefined && fileName != null\">\r\n <p>{{ 'tsi_file_manager_file_name' | localize }}: {{ fileName }}</p>\r\n <p>{{ 'tsi_file_manager_file_extension' | localize }}: {{ getFileExtension(fileName) }}</p>\r\n </div>\r\n\r\n <div class=\"pb-2 pt-2\" *ngIf=\"showPreviewButton && canPreview\">\r\n <button pButton type=\"button\" icon=\"pi pi-eye\"\r\n [label]=\"'tsi_file_manager_preview' | localize\"\r\n (click)=\"openPreview()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"inputField && (isUnsupported || mediaLoadError)\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\"\r\n [label]=\"'tsi_file_manager_download' | localize\"\r\n (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"fileName != undefined && showDownloadButton && !isUnsupported && !mediaLoadError\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\" h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </p-fileUpload>\r\n \r\n</div>", styles: [".ui-fileupload-choose{display:flex;align-items:center;justify-content:center;padding:.5rem;width:10rem;height:40px}.ui-fileupload-choose .ui-button-text{display:none}.ui-fileupload-choose .pi{font-size:2rem}.p-fileupload-choose input{display:none!important}:host ::ng-deep .p-fileupload-choose[disabled]{display:none!important}.tsi-file-content{display:flex;flex-direction:column;overflow:auto;box-sizing:border-box;width:100%}.tsi-file-preview{display:flex;justify-content:center;align-items:center;width:100%;flex:1 1 auto;min-height:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: TsiFilePreviewComponent, selector: "Tsi-File-Preview", inputs: ["content", "fileName", "mimeType", "mediaMaxWidth"], outputs: ["previewError"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
20210
20454
|
}
|
|
20211
20455
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFileManagerComponent, decorators: [{
|
|
20212
20456
|
type: Component,
|
|
20213
|
-
args: [{ selector: 'Tsi-File-Manager', encapsulation: ViewEncapsulation.None, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div *ngIf=\"
|
|
20214
|
-
}], ctorParameters: () => [{ type: LocalizePipe }, { type: TsiNotificationService }, { type: i0.ChangeDetectorRef }, { type:
|
|
20457
|
+
args: [{ selector: 'Tsi-File-Manager', encapsulation: ViewEncapsulation.None, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div class=\"tsi-file-content\" [style.height]=\"contentHeight\">\r\n <div *ngIf=\"inputField\" class=\"tsi-file-preview\">\r\n <Tsi-File-Preview [content]=\"inputField\" [fileName]=\"fileName\" [mimeType]=\"mimeType\"\r\n mediaMaxWidth=\"15rem\" (previewError)=\"onPreviewError()\">\r\n </Tsi-File-Preview>\r\n </div>\r\n\r\n <div class=\"mt-2\" *ngIf=\"fileName != undefined && fileName != null\">\r\n <p>{{ 'tsi_file_manager_file_name' | localize }}: {{ fileName }}</p>\r\n <p>{{ 'tsi_file_manager_file_extension' | localize }}: {{ getFileExtension(fileName) }}</p>\r\n </div>\r\n\r\n <div class=\"pb-2 pt-2\" *ngIf=\"showPreviewButton && canPreview\">\r\n <button pButton type=\"button\" icon=\"pi pi-eye\"\r\n [label]=\"'tsi_file_manager_preview' | localize\"\r\n (click)=\"openPreview()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"inputField && (isUnsupported || mediaLoadError)\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\"\r\n [label]=\"'tsi_file_manager_download' | localize\"\r\n (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"fileName != undefined && showDownloadButton && !isUnsupported && !mediaLoadError\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\" h-2rem w-full text-center\">\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </p-fileUpload>\r\n \r\n</div>", styles: [".ui-fileupload-choose{display:flex;align-items:center;justify-content:center;padding:.5rem;width:10rem;height:40px}.ui-fileupload-choose .ui-button-text{display:none}.ui-fileupload-choose .pi{font-size:2rem}.p-fileupload-choose input{display:none!important}:host ::ng-deep .p-fileupload-choose[disabled]{display:none!important}.tsi-file-content{display:flex;flex-direction:column;overflow:auto;box-sizing:border-box;width:100%}.tsi-file-preview{display:flex;justify-content:center;align-items:center;width:100%;flex:1 1 auto;min-height:0}\n"] }]
|
|
20458
|
+
}], ctorParameters: () => [{ type: LocalizePipe }, { type: TsiNotificationService }, { type: i0.ChangeDetectorRef }, { type: i0.EnvironmentInjector }], propDecorators: { fileName: [{
|
|
20215
20459
|
type: Input
|
|
20216
20460
|
}], name: [{
|
|
20217
20461
|
type: Input
|
|
@@ -20239,6 +20483,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
20239
20483
|
type: Input
|
|
20240
20484
|
}], showFileUpload: [{
|
|
20241
20485
|
type: Input
|
|
20486
|
+
}], showPreviewButton: [{
|
|
20487
|
+
type: Input
|
|
20488
|
+
}], contentHeight: [{
|
|
20489
|
+
type: Input
|
|
20242
20490
|
}], onSelectFileManager: [{
|
|
20243
20491
|
type: Output
|
|
20244
20492
|
}], onClear: [{
|
|
@@ -20418,7 +20666,7 @@ class TsiUploadFicheComponent extends TsiFormComponentBaseComponent {
|
|
|
20418
20666
|
reader.readAsArrayBuffer(file);
|
|
20419
20667
|
}
|
|
20420
20668
|
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 }); }
|
|
20421
|
-
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 <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\" [listSourceUrl]=\"typeFichierListUrl\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" [isFiltered]=\"true\" label-field=\"libelle\" \r\n [elementSourceUrl]=\"administrationEndpoints.getTypeFichierMinimal\"\r\n [businessClass]=\"businessClassNames.TypeFichier\"\r\n >\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-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Version'\"></Tsi-Label>\r\n <Tsi-Integer class=\"col-8\" [inputName]=\"'version'\" [(inputField)]=\"fichier.version\"\r\n [disabled]=\"true\"></Tsi-Integer>\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: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: 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: 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", "mode"], 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", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
20669
|
+
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 <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\" [listSourceUrl]=\"typeFichierListUrl\" [(bind)]=\"fichier.typeFichier\"\r\n id-field=\"uid\" [isFiltered]=\"true\" label-field=\"libelle\" \r\n [elementSourceUrl]=\"administrationEndpoints.getTypeFichierMinimal\"\r\n [businessClass]=\"businessClassNames.TypeFichier\"\r\n >\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-6\">\r\n <div class=\"grid flex\">\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'parambase_param_fichier_Version'\"></Tsi-Label>\r\n <Tsi-Integer class=\"col-8\" [inputName]=\"'version'\" [(inputField)]=\"fichier.version\"\r\n [disabled]=\"true\"></Tsi-Integer>\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: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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: 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: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: ["fileName", "name", "id", "accept", "maxFileSize", "multiple", "exploreOnDownload", "showUploadButton", "showCancelButton", "showDownloadButton", "chooseIcon", "chooseLabel", "showSelectButton", "showFileUpload", "showPreviewButton", "contentHeight"], 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", "mode"], 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", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
20422
20670
|
}
|
|
20423
20671
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiUploadFicheComponent, decorators: [{
|
|
20424
20672
|
type: Component,
|
|
@@ -20994,7 +21242,7 @@ class CreateOrEditEntityInformationsComponent extends TsiFormComponentBaseCompon
|
|
|
20994
21242
|
return comparison[field] || '';
|
|
20995
21243
|
}
|
|
20996
21244
|
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 }); }
|
|
20997
|
-
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_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 </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_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\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_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\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_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\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-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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\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_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 class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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 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_calendarStartDate'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'CalendarStartDate'\"\r\n [(inputField)]=\"entityWithRelations.entity.calendarStartDateColumn\">\r\n </Tsi-Text-Box>\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_calendarEndDate'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'CalenderEndDate'\"\r\n [(inputField)]=\"entityWithRelations.entity.calendarEndDateColumn\">\r\n </Tsi-Text-Box>\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\">\r\n {{'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\">\r\n {{'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\">\r\n {{'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\r\n }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' |\r\n localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' |\r\n 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: i2$2.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.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.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$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.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: i2$5.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", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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", "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", "mode"], 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", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
|
|
21245
|
+
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_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 </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_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\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_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\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_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\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-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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\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_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 class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\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 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_calendarStartDate'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'CalendarStartDate'\"\r\n [(inputField)]=\"entityWithRelations.entity.calendarStartDateColumn\">\r\n </Tsi-Text-Box>\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_calendarEndDate'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'CalenderEndDate'\"\r\n [(inputField)]=\"entityWithRelations.entity.calendarEndDateColumn\">\r\n </Tsi-Text-Box>\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\">\r\n {{'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\">\r\n {{'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\">\r\n {{'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\r\n }}</span>\r\n <span class=\"legend-item comparison-type-mismatch-legend\">{{ 'administration_properties_comparison_type' |\r\n localize }}</span>\r\n <span class=\"legend-item comparison-length-mismatch-legend\">{{ 'administration_properties_comparison_length' |\r\n 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: i2$2.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.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.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$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7$1.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: i2$5.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", "saveEvent", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: 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", "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", "mode"], 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", "statusInputDisabled"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }, { kind: "pipe", type: ModalLabelPipe, name: "modalLabel" }] }); }
|
|
20998
21246
|
}
|
|
20999
21247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, decorators: [{
|
|
21000
21248
|
type: Component,
|
|
@@ -22400,6 +22648,7 @@ const _tsiOutputComponents = [
|
|
|
22400
22648
|
TsiViewGridComponent,
|
|
22401
22649
|
TsiBubbleInfoComponent,
|
|
22402
22650
|
TsiProgressBarComponent,
|
|
22651
|
+
TsiFilePreviewComponent,
|
|
22403
22652
|
];
|
|
22404
22653
|
const _tsiInputComponents = [
|
|
22405
22654
|
EditableGridComponent,
|
|
@@ -22548,7 +22797,8 @@ class SharedModule {
|
|
|
22548
22797
|
TsiLabelLegendComponent,
|
|
22549
22798
|
TsiViewGridComponent,
|
|
22550
22799
|
TsiBubbleInfoComponent,
|
|
22551
|
-
TsiProgressBarComponent,
|
|
22800
|
+
TsiProgressBarComponent,
|
|
22801
|
+
TsiFilePreviewComponent, ModalComponent,
|
|
22552
22802
|
ModalLoaderComponent,
|
|
22553
22803
|
TsiGenericCrudComponent,
|
|
22554
22804
|
TsiGenericGridComponent,
|
|
@@ -22735,7 +22985,8 @@ class SharedModule {
|
|
|
22735
22985
|
TsiLabelLegendComponent,
|
|
22736
22986
|
TsiViewGridComponent,
|
|
22737
22987
|
TsiBubbleInfoComponent,
|
|
22738
|
-
TsiProgressBarComponent,
|
|
22988
|
+
TsiProgressBarComponent,
|
|
22989
|
+
TsiFilePreviewComponent, ModalComponent,
|
|
22739
22990
|
ModalLoaderComponent,
|
|
22740
22991
|
TsiGenericCrudComponent,
|
|
22741
22992
|
TsiGenericGridComponent,
|
|
@@ -22915,5 +23166,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
22915
23166
|
* Generated bundle index. Do not edit.
|
|
22916
23167
|
*/
|
|
22917
23168
|
|
|
22918
|
-
export { ActionErpService, ActionPlacement, AdDirective, AdItem, AddReportPopupComponent, AdminGuard, AdminRoutes, AdministrationEndpoints, AdministrationSegments, AdvancedSearchComponentService, AlertImportMessageComponent, ApiDateTimeFormat, ApiExplorerService, AppBaseComponent, AppRoutes, AppSettingsService, AuthenticationGuard, AuthorizationEndpoints, AuthorizationSegments, AuthorizationService, AuthorizationTokenMapper, AutoComplete, AutoSelectDirective, BsModalRef, BusyDirective, ButtonType, CSSSizeProperty, CSSUnits, ChooseChoiceMfaMethodComponent, ClaimTypes, CodeFormat, CollectionChangeAction, ComboStatusModel, Component_Modes, ContextMenuComponent, CreateOrEditDynamicFormComponent, CreateOrEditEntityInformationsComponent, CreateOrEditModeleImportComponent, CrudBaseService, CurrentUser, CurrentUserService, CutLabelPipe, DateFormat, DateFormatDisplay, DateHelper, DateHelperService, DatePickerDateFormat, DatePickerDateTimeFormat, DatePickerTimeFormat, DateTimeFormat, DateTimeFormatDisplay, DecimalFormat, DefaultSocieteDevise, Devise, DialogDataService, DisplayNestedPropComponent, DisplayTypeColors, DisplayTypes, DynamicFormListComponent, EditableGridComponent, EndpointInfos, EntityColumnDetailResponse, EntityConfigurationService, EntityInfo, EntityInfoWithRelations, EntityRelation, EntityStatusService, EntityValidationsService, ErrorResponseManagerService, ExecuteImportRequest, ExportExcelHelper, Fichier, FilterByExistingValues, FilterByProprety, FilterHelper, FilterOperatorType, FilterOperatorTypeDescriptions, FormValidationError, FormulaService, GenericFormHelper, GenericValidationStateService, GetWorkflowInstanceInformationRequest, GridColumnStyleHelper, GridSelectionMode, GridSortMode, Guid, Helpers, HtmlTemplateGeneratorService, HtmlTemplates, HttpMethodType, IdentityManagerService, IdentityPlatformAuthenticationService, IdentityPlatformEndpoints, IdentityPlatformSegments, IdentityRoutes, ImportExportEndPoints, ImportExportSegments, ImportResult, InputRegistryService, InputTypes, JournalisationApplication, JournalisationApplicationService, KeyboardShortcutService, LanguageInformations, LanguageLocale, LanguagesCodes, LayoutHelperService, LayoutOrientation, LocaleCode, LocalePocComponent, LocalizationKeys, LocalizePipe, LogoutPopupComponent, MFAEnum, MailingService, ManageImportExportComponent, ManageReportingComponent, ManageReportingRoutes, MappingHelper, ModalComponent, ModalLabelPipe, ModalLoaderComponent, ModalSizeEnum, ModeleImportCreateRequest, ModeleImportDetail, ModeleImportService, Modes, ModuleCodeService, ModuleMainParameterDirective, ModuleMainParameterService, NoteService, NumericDisplayTypes, ObjectHelper, ObservableCollection, PagedResultRequestBase, PermissionGuard, PresentationDesignerDirective, PresentationDesignerDirectiveBase, PresentationDesignerService, PresentationSetting, PresentationSettingDetail, PresentationSettingService, ProceedLoginRequest, ProgressBarHelperService, ProgressBarResponse, ProgressBarService, ProgressBarUpdateRequest, RecordInfoPopupService, ReportingComponent, ReportingEndpoints, ReportingSegments, ReportingService, RequestTrackerInterceptor, RequestTrackerService, Segment, Segments, SeparateurDecimal, SeparateurMillier, SharedComponentReferenceHelper, SharedModule, SharedUiTsiProviders, ShortenPipe, SpinnerComponent, Status, StatusHistory, StatusHistoryService, StorageManager, SubscriptionResult, TS_ValidDateFormat, TS_ValidDateTimeFormat, TS_ValidTimeFormat, TextBoxType, Themes, TimeFormat, TimeOnly, TimeZoneLocale, ToNumberPipe, TooltipPosition, TranslationService, TsiActionErpCreateOrEditComponent, TsiActionErpListComponent, TsiBaseComponent, TsiBsModalService, TsiBubbleInfoComponent, TsiButtonComponent, TsiCalenderComponent, TsiCard, TsiCardComponent, TsiCardListComponent, TsiChangePasswordComponent, TsiCheckboxComponent, TsiCheckboxDisplayComponent, TsiCodeGeneratorComponent, TsiComponentEnum, TsiComponentFinderService, TsiConfirmationService, TsiCurrencyOtherDisplayComponent, TsiCurrencyOtherInputComponent, TsiCurrencyPipe, TsiCurrencySocieteDisplayComponent, TsiCurrencySocieteInputComponent, TsiDateDisplayComponent, TsiDatePickerComponent, TsiDecimalDisplayComponent, TsiDecimalInputComponent, TsiDecimalPipe, TsiDisplayGridComponent, TsiDividerComponent, TsiErrorMessageComponent, TsiFileManagerComponent, TsiFormComponent, TsiFormComponentBaseComponent, TsiFormModalFooterComponent, TsiFormulaBoxComponent, TsiGenericCrudComponent, TsiGenericFormComponent, TsiGenericGridComponent, TsiImageDisplayComponent, TsiInfoMessageComponent, TsiInputBase, TsiIntegerComponent, TsiIntegerDisplayComponent, TsiKanbanComponent, TsiKanbanWorkflowEtatComponent, TsiLabelComponent, TsiLabelLegendComponent, TsiLegendComponent, TsiListBaseComponent, TsiLogEventHistoryComponent, TsiMessageService, TsiModalComponent, TsiModalFooterComponent, TsiModalHeaderComponent, TsiModalService, TsiNotesAvertirComponent, TsiNotesComponent, TsiNotesGridComponent, TsiNotificationService, TsiParagraphComponent, TsiPopupTextViewerComponent, TsiProgressBarComponent, TsiRadioButtonComponent, TsiRateDisplayComponent, TsiRateInputComponent, TsiRedirectionMessageComponent, TsiReportType, TsiSearchBoxComponent, TsiSearchComboComponent, TsiSendMailComponent, TsiSubmitButtonComponent, TsiSuccessMessageComponent, TsiTabPanelComponent, TsiTabViewComponent, TsiTemplate, TsiTenantsComponent, TsiTextAreaComponent, TsiTextBoxComponent, TsiTimeDisplayComponent, TsiTimePickerComponent, TsiTooltipComponent, TsiUploadFicheComponent, TsiUploadGridComponent, TsiViewGridComponent, TypeFichier, TypeImportEnum, TypeRegistryHelper, UpdateEntityInfoWithRelationsRequest, UserIdentityService, ValidationDirective, VerificationCodeComponent, VerificationCodeInscriptionComponent, VerificationCodeSmsComponent, WorkflowConfigurationService, WorkflowEtatForm, WorkflowEtatKanbanRequest, WorkflowEtatSuivantResponse, appProviders, authorization, dashboardConst, defaultCardHeader, distinct, executeImportResult, initSharedComponents, isNullOrEmpty, lengthValidator, locals, logoutReasonEnum, lowerFirst, menuItems, menuPreferences, primengDateLocalAr, primengLocaleAr, queryParamNamesConst, rangeValidator, registerLibraryLocales, requestHeaderNames, rtlModeKeys, splitArrayIntoChunks, tokenQueryParamName, updateEntityWorkflowInformation, updateEntityWorkflowInstanceResponse, userLanguage, workflowEtatDetailledResponse, workflowInstanceInformationResponse };
|
|
23169
|
+
export { ActionErpService, ActionPlacement, AdDirective, AdItem, AddReportPopupComponent, AdminGuard, AdminRoutes, AdministrationEndpoints, AdministrationSegments, AdvancedSearchComponentService, AlertImportMessageComponent, ApiDateTimeFormat, ApiExplorerService, AppBaseComponent, AppRoutes, AppSettingsService, AuthenticationGuard, AuthorizationEndpoints, AuthorizationSegments, AuthorizationService, AuthorizationTokenMapper, AutoComplete, AutoSelectDirective, BsModalRef, BusyDirective, ButtonType, CSSSizeProperty, CSSUnits, ChooseChoiceMfaMethodComponent, ClaimTypes, CodeFormat, CollectionChangeAction, ComboStatusModel, Component_Modes, ContextMenuComponent, CreateOrEditDynamicFormComponent, CreateOrEditEntityInformationsComponent, CreateOrEditModeleImportComponent, CrudBaseService, CurrentUser, CurrentUserService, CutLabelPipe, DateFormat, DateFormatDisplay, DateHelper, DateHelperService, DatePickerDateFormat, DatePickerDateTimeFormat, DatePickerTimeFormat, DateTimeFormat, DateTimeFormatDisplay, DecimalFormat, DefaultSocieteDevise, Devise, DialogDataService, DisplayNestedPropComponent, DisplayTypeColors, DisplayTypes, DynamicFormListComponent, EditableGridComponent, EndpointInfos, EntityColumnDetailResponse, EntityConfigurationService, EntityInfo, EntityInfoWithRelations, EntityRelation, EntityStatusService, EntityValidationsService, ErrorResponseManagerService, ExecuteImportRequest, ExportExcelHelper, Fichier, FilterByExistingValues, FilterByProprety, FilterHelper, FilterOperatorType, FilterOperatorTypeDescriptions, FormValidationError, FormulaService, GenericFormHelper, GenericValidationStateService, GetWorkflowInstanceInformationRequest, GridColumnStyleHelper, GridSelectionMode, GridSortMode, Guid, Helpers, HtmlTemplateGeneratorService, HtmlTemplates, HttpMethodType, IdentityManagerService, IdentityPlatformAuthenticationService, IdentityPlatformEndpoints, IdentityPlatformSegments, IdentityRoutes, ImportExportEndPoints, ImportExportSegments, ImportResult, InputRegistryService, InputTypes, JournalisationApplication, JournalisationApplicationService, KeyboardShortcutService, LanguageInformations, LanguageLocale, LanguagesCodes, LayoutHelperService, LayoutOrientation, LocaleCode, LocalePocComponent, LocalizationKeys, LocalizePipe, LogoutPopupComponent, MFAEnum, MailingService, ManageImportExportComponent, ManageReportingComponent, ManageReportingRoutes, MappingHelper, ModalComponent, ModalLabelPipe, ModalLoaderComponent, ModalSizeEnum, ModeleImportCreateRequest, ModeleImportDetail, ModeleImportService, Modes, ModuleCodeService, ModuleMainParameterDirective, ModuleMainParameterService, NoteService, NumericDisplayTypes, ObjectHelper, ObservableCollection, PagedResultRequestBase, PermissionGuard, PresentationDesignerDirective, PresentationDesignerDirectiveBase, PresentationDesignerService, PresentationSetting, PresentationSettingDetail, PresentationSettingService, ProceedLoginRequest, ProgressBarHelperService, ProgressBarResponse, ProgressBarService, ProgressBarUpdateRequest, RecordInfoPopupService, ReportingComponent, ReportingEndpoints, ReportingSegments, ReportingService, RequestTrackerInterceptor, RequestTrackerService, Segment, Segments, SeparateurDecimal, SeparateurMillier, SharedComponentReferenceHelper, SharedModule, SharedUiTsiProviders, ShortenPipe, SpinnerComponent, Status, StatusHistory, StatusHistoryService, StorageManager, SubscriptionResult, TS_ValidDateFormat, TS_ValidDateTimeFormat, TS_ValidTimeFormat, TextBoxType, Themes, TimeFormat, TimeOnly, TimeZoneLocale, ToNumberPipe, TooltipPosition, TranslationService, TsiActionErpCreateOrEditComponent, TsiActionErpListComponent, TsiBaseComponent, TsiBsModalService, TsiBubbleInfoComponent, TsiButtonComponent, TsiCalenderComponent, TsiCard, TsiCardComponent, TsiCardListComponent, TsiChangePasswordComponent, TsiCheckboxComponent, TsiCheckboxDisplayComponent, TsiCodeGeneratorComponent, TsiComponentEnum, TsiComponentFinderService, TsiConfirmationService, TsiCurrencyOtherDisplayComponent, TsiCurrencyOtherInputComponent, TsiCurrencyPipe, TsiCurrencySocieteDisplayComponent, TsiCurrencySocieteInputComponent, TsiDateDisplayComponent, TsiDatePickerComponent, TsiDecimalDisplayComponent, TsiDecimalInputComponent, TsiDecimalPipe, TsiDisplayGridComponent, TsiDividerComponent, TsiErrorMessageComponent, TsiFileManagerComponent, TsiFilePreviewComponent, TsiFormComponent, TsiFormComponentBaseComponent, TsiFormModalFooterComponent, TsiFormulaBoxComponent, TsiGenericCrudComponent, TsiGenericFormComponent, TsiGenericGridComponent, TsiImageDisplayComponent, TsiInfoMessageComponent, TsiInputBase, TsiIntegerComponent, TsiIntegerDisplayComponent, TsiKanbanComponent, TsiKanbanWorkflowEtatComponent, TsiLabelComponent, TsiLabelLegendComponent, TsiLegendComponent, TsiListBaseComponent, TsiLogEventHistoryComponent, TsiMessageService, TsiModalComponent, TsiModalFooterComponent, TsiModalHeaderComponent, TsiModalService, TsiNotesAvertirComponent, TsiNotesComponent, TsiNotesGridComponent, TsiNotificationService, TsiParagraphComponent, TsiPopupTextViewerComponent, TsiProgressBarComponent, TsiRadioButtonComponent, TsiRateDisplayComponent, TsiRateInputComponent, TsiRedirectionMessageComponent, TsiReportType, TsiSearchBoxComponent, TsiSearchComboComponent, TsiSendMailComponent, TsiSubmitButtonComponent, TsiSuccessMessageComponent, TsiTabPanelComponent, TsiTabViewComponent, TsiTemplate, TsiTenantsComponent, TsiTextAreaComponent, TsiTextBoxComponent, TsiTimeDisplayComponent, TsiTimePickerComponent, TsiTooltipComponent, TsiUploadFicheComponent, TsiUploadGridComponent, TsiViewGridComponent, TypeFichier, TypeImportEnum, TypeRegistryHelper, UpdateEntityInfoWithRelationsRequest, UserIdentityService, ValidationDirective, VerificationCodeComponent, VerificationCodeInscriptionComponent, VerificationCodeSmsComponent, WorkflowConfigurationService, WorkflowEtatForm, WorkflowEtatKanbanRequest, WorkflowEtatSuivantResponse, appProviders, authorization, dashboardConst, defaultCardHeader, distinct, executeImportResult, initSharedComponents, isNullOrEmpty, lengthValidator, locals, logoutReasonEnum, lowerFirst, menuItems, menuPreferences, primengDateLocalAr, primengLocaleAr, queryParamNamesConst, rangeValidator, registerLibraryLocales, requestHeaderNames, rtlModeKeys, splitArrayIntoChunks, tokenQueryParamName, updateEntityWorkflowInformation, updateEntityWorkflowInstanceResponse, userLanguage, workflowEtatDetailledResponse, workflowInstanceInformationResponse };
|
|
22919
23170
|
//# sourceMappingURL=tsi-developpement-tsi-shared-ui.mjs.map
|