@provoly/dashboard 0.11.5 → 0.11.7

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.
@@ -273,6 +273,9 @@ class WidgetTableComponent extends DataWidgetComponent {
273
273
  this.optionsCopy = { columns: [] };
274
274
  }
275
275
  this.optionsCopy.columns?.push({ label: '', property: '' });
276
+ setTimeout(() => {
277
+ this.cdr.detectChanges();
278
+ }, 100);
276
279
  }
277
280
  changePropertyName($event, columnDef) {
278
281
  columnDef.property = $event;
@@ -351,11 +354,11 @@ class WidgetTableComponent extends DataWidgetComponent {
351
354
  return item.id;
352
355
  }
353
356
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetTableComponent, deps: [{ token: i1$1.Store }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
354
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["saveTriggered"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "additionalOptions", "headerOptions", "displayCount", "datasourceIds$", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
357
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["saveTriggered"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "additionalOptions", "headerOptions", "displayCount", "datasourceIds$", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
355
358
  }
356
359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetTableComponent, decorators: [{
357
360
  type: Component,
358
- args: [{ selector: 'pry-widget-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n" }]
361
+ args: [{ selector: 'pry-widget-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n" }]
359
362
  }], ctorParameters: function () { return [{ type: i1$1.Store }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
360
363
 
361
364
  const enTranslations = {
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.name === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n SearchSelectors,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { combineLatest, delay, Observable, take } from 'rxjs';\nimport { filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<string[]>;\n isLoading$: Observable<boolean>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n\n constructor(\n store: Store<any>,\n el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions));\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n this.isLoading$ = combineLatest([store.select(SearchSelectors.searchLoading), this.datasourceIds$]).pipe(\n map(([searchLoading, datasourceIds]) => {\n return (searchLoading ?? []).filter((id) => (datasourceIds ?? []).includes(id))?.length > 0;\n })\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n this.optionsCopy.columns = undefined;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsFromAvailabilityInResultSet(resultSet, classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p }) as Field)\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = this.resultSet$.pipe(\n map((rs) => [...ItemUtils.getAttributesFromAvailabilityInResultSet(rs)]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.toLocaleLowerCase().localeCompare(pB.toLocaleLowerCase()));\n return sortedProps;\n })\n );\n\n this.columns$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.fields$,\n this.classes$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, fields, classes, defs]) => {\n if (!!options?.columns) {\n return options.columns;\n }\n\n // Make unique set of all columns\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map((attr) => attr.name))];\n\n return uniqueProps.map((property) => ({\n property: property,\n label: property,\n attributeId: attributes.find((attr) => attr.name === property)?.id\n })) as ColumnDefinition[];\n })\n );\n\n this.subscriptions.add(\n this.columns$.subscribe((columns) => {\n this.optionsCopy = { columns: JSON.parse(JSON.stringify([...columns])) };\n })\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this.properties$.pipe(delay(10)).subscribe(() => this.cdr.detectChanges()));\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n columnDef.label = $event.currentTarget.value;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table'\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-table.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/resizable/resizable.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/format-number.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/expand-value.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/expand-value/detach-row.directive.ts","../../../../projects/provoly/dashboard/widgets/widget-table/get-value/get-value.pipe.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.ts","../../../../projects/provoly/dashboard/widgets/widget-table/component/widget-table.component.html","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-table/widget-table.module.ts","../../../../projects/provoly/dashboard/widgets/widget-table/provoly-dashboard-widgets-widget-table.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[resizable]'\n})\nexport class ResizableDirective {\n @Output()\n readonly resizable = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown').pipe(\n tap((e) => e.preventDefault()),\n switchMap(() => {\n const domRect = this.elementRef.nativeElement.closest('th')?.getBoundingClientRect();\n const width = domRect?.width ?? 0;\n const right = domRect?.right ?? 0;\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup'))\n );\n })\n );\n\n constructor(\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>\n ) {}\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'th[resizable]',\n templateUrl: './resizable.component.html'\n})\nexport class ResizableComponent {\n @HostBinding('style.width.px')\n width: number | null = null;\n\n onResize(width: number) {\n this.width = width;\n }\n}\n","<div class=\"wrapper\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-table-css',\n template: '',\n styleUrls: ['./_o-widget-table.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetTableCssComponent {}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { PryI18nService, ValueType } from '@provoly/dashboard';\n\n@Pipe({ name: 'formatNumber' })\nexport class FormatNumberPipe implements PipeTransform {\n constructor(\n private decimalPipe: DecimalPipe,\n private i18nService: PryI18nService\n ) {}\n\n transform(toDisplay?: ValueType | ValueType[] | null, ...args: any[]): any {\n const result = { isNumber: false, text: `${!toDisplay ? '' : toDisplay}` };\n if (typeof toDisplay === 'number') {\n result.isNumber = true;\n result.text =\n this.decimalPipe\n .transform(toDisplay, '1.0-0')\n ?.replace(/,/g, this.i18nService.instant('@pry.format.thousands'))\n ?.replace(/\\./g, this.i18nService.instant('@pry.format.decimal')) || `${toDisplay}`;\n }\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MultiMultipointValue, MultipointValue, PointValue, ValueType } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-expand-value',\n templateUrl: './expand-value.component.html'\n})\nexport class ExpandValueComponent {\n isArray: boolean = false;\n firstValue?: string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined;\n rest: (string | number | PointValue | MultipointValue | MultiMultipointValue | ValueType[] | null | undefined)[] = [];\n\n @Input() set value(toDisplay: ValueType | ValueType[] | null) {\n if (Array.isArray(toDisplay) && toDisplay.length > 1) {\n this.isArray = true;\n const [firstValue, ...rest] = toDisplay;\n this.firstValue = firstValue;\n this.rest = rest;\n } else {\n this.isArray = false;\n this.firstValue = toDisplay;\n this.rest = [];\n }\n }\n}\n","<div class=\"a-expandable-value\" [class.-right]=\"(firstValue | formatNumber).isNumber\">\n <span class=\"a-expandable-value__initial\">{{ (firstValue | formatNumber).text }}{{ isArray ? ' (*)' : '' }}</span>\n <div class=\"a-expandable-value__expanded\" *ngIf=\"isArray\">\n <div *ngFor=\"let value of rest\">\n {{ (value | formatNumber).text }}\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[detachRow]'\n})\nexport class DetachRowDirective implements AfterViewChecked {\n @HostListener('click', ['$event']) clickEvt($event: MouseEvent): any {\n this.cdr.reattach();\n this.selectedValue.emit($event);\n }\n\n @Output() selectedValue: EventEmitter<MouseEvent> = new EventEmitter();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewChecked() {\n this.cdr.detach();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassSelectors, FieldSelectors, FieldType, Item, ItemUtils } from '@provoly/dashboard';\nimport { combineLatestWith } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Pipe({ name: 'getValue' })\nexport class GetValuePipe implements PipeTransform {\n constructor(private store: Store<any>) {}\n\n transform(value: Item, ...args: any[]): any {\n return this.store.select(ClassSelectors.classes).pipe(\n combineLatestWith(this.store.select(FieldSelectors.fields)),\n filter(([classes, fields]) => !!classes && classes.length > 0),\n map(([classes, fields]) => {\n const oClass = classes.find((cl) => cl.id === value.oClass);\n const attribute = oClass?.attributes.find((attr) => attr.name === args[0]);\n if (!!attribute) {\n const field = fields.find((f) => f.id === attribute.field);\n if (\n field &&\n [\n FieldType.POINT,\n FieldType.MULTIPOINT,\n FieldType.LINE,\n FieldType.MULTILINE,\n FieldType.MULTILINE,\n FieldType.POLYGON,\n FieldType.MULTIPOLYGON\n ].includes(field.type)\n ) {\n // @ts-ignore\n const coordinates = JSON.stringify(ItemUtils.getAttributeCalculatedValue(value, attribute)?.coordinates);\n return coordinates.length > 40 ? `${coordinates.substring(0, 40)}...` : coordinates;\n }\n return ItemUtils.getAttributeCalculatedValue(value, attribute);\n }\n return ItemUtils.getAttributeCalculatedValue(value, args[0]);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n baseItemProperties,\n Class,\n ClassActions,\n ClassSelectors,\n ColumnDefinition,\n ConfigSelectors,\n ContextMenuActions,\n ContextMenuSelectors,\n DashboardActions,\n DashboardSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n Item,\n ItemUtils,\n OrderValue,\n ResultOrder,\n SearchSelectors,\n TableWidgetOptions,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { combineLatest, delay, Observable, take } from 'rxjs';\nimport { filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\n@Component({\n selector: 'pry-widget-table',\n templateUrl: './widget-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WidgetTableComponent extends DataWidgetComponent {\n options$: Observable<TableWidgetOptions>;\n columns$: Observable<ColumnDefinition[]>;\n optionsCopy?: TableWidgetOptions;\n fields$: Observable<Field[]>;\n selectedIds$: Observable<string[]>;\n Array = Array;\n currentClasses: string[] = [];\n selectedIds: string[] = [];\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n private classes$: Observable<Class[]>;\n properties$: Observable<string[]>;\n isLoading$: Observable<boolean>;\n allSelected$: Observable<boolean>;\n areAllSelected: boolean = false;\n allIds: string[] = [];\n contextMenuClickedId: string = '';\n isContextMenuOpened$: Observable<boolean>;\n quickOrder$: Observable<ResultOrder | undefined>;\n\n constructor(store: Store<any>, el: ElementRef, private cdr: ChangeDetectorRef) {\n super(store, el);\n this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TableWidgetOptions));\n\n this.subscriptions.add(\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TableWidgetOptions) };\n })\n );\n\n this.subscriptions.add(this.allItems$.subscribe((allObjects) => (this.allIds = allObjects.map((obj) => obj.id))));\n\n this.isLoading$ = combineLatest([store.select(SearchSelectors.searchLoading), this.datasourceIds$]).pipe(\n map(([searchLoading, datasourceIds]) => {\n return (searchLoading ?? []).filter((id) => (datasourceIds ?? []).includes(id))?.length > 0;\n })\n );\n\n this.isContextMenuOpened$ = this.store.select(ContextMenuSelectors.opened);\n\n this.subscriptions.add(\n this.resultSet$\n .pipe(\n filter((rs) => !!rs),\n map((rs) => Object.keys(rs.items))\n )\n .subscribe((classes) => {\n if (this.currentClasses.length > 0 && !equal(this.currentClasses, classes)) {\n if (!this.optionsCopy) {\n this.optionsCopy = {};\n }\n this.optionsCopy.columns = undefined;\n this.emitManifest();\n }\n this.currentClasses = classes;\n })\n );\n\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.fields$ = combineLatest([this.resultSet$, this.classes$, this.store.select(FieldSelectors.fields)]).pipe(\n map(\n ([resultSet, classes, fields]) =>\n [\n ...ItemUtils.getFieldsFromAvailabilityInResultSet(resultSet, classes, fields),\n ...baseItemProperties.map((p) => ({ name: p, id: p } as Field))\n ] as Field[]\n ),\n map((fields) => fields.filter((field) => field.type !== FieldType.RAW))\n );\n\n this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n\n this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => this.selectedIds === selectedIds));\n\n this.store.dispatch(ClassActions.load());\n\n this.properties$ = this.resultSet$.pipe(\n map((rs) => [...ItemUtils.getAttributesFromAvailabilityInResultSet(rs)]),\n map((props) => {\n const sortedProps = [...props];\n sortedProps.sort((pA, pB) => pA.toLocaleLowerCase().localeCompare(pB.toLocaleLowerCase()));\n return sortedProps;\n })\n );\n\n this.columns$ = combineLatest([\n this.options$,\n this.resultSet$,\n this.fields$,\n this.classes$,\n this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions)\n ]).pipe(\n map(([options, resultSet, fields, classes, defs]) => {\n if (!!options?.columns) {\n return options.columns;\n }\n\n // Make unique set of all columns\n const attributes = ItemUtils.getAttributesFromRs(resultSet, classes, fields, defs);\n const uniqueProps = [...new Set(attributes.map((attr) => attr.name))];\n\n return uniqueProps.map((property) => ({\n property: property,\n label: property,\n attributeId: attributes.find((attr) => attr.name === property)?.id\n })) as ColumnDefinition[];\n })\n );\n\n this.subscriptions.add(\n this.columns$.subscribe((columns) => {\n this.optionsCopy = { columns: JSON.parse(JSON.stringify([...columns])) };\n })\n );\n\n this.allSelected$ = combineLatest([this.selectedIds$, this.allItems$]).pipe(\n map(([selectedIds, allObjects]) => {\n const allIds = allObjects.map((object) => object.id);\n return !allIds.find((id) => !selectedIds.includes(id));\n }),\n tap((allSelected) => (this.areAllSelected = allSelected))\n );\n\n this.quickOrder$ = combineLatest([this.store.select(DashboardSelectors.quickOrder), this.datasourceIds$]).pipe(\n map(([order, nqs]) => (nqs.length === 1 ? order[nqs[0]] : undefined))\n );\n\n this.subscriptions.add(this.properties$.pipe(delay(10)).subscribe(() => this.cdr.detectChanges()));\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: { ...this.manifest, options: this.optionsCopy }\n });\n }\n\n addColumn() {\n if (!this.optionsCopy?.columns) {\n this.optionsCopy = { columns: [] };\n }\n this.optionsCopy.columns?.push({ label: '', property: '' });\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n changePropertyName($event: any, columnDef: ColumnDefinition) {\n columnDef.property = $event;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n changeLabel($event: Event, columnDef: ColumnDefinition) {\n // @ts-ignore\n columnDef.label = $event.currentTarget.value;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n deleteColumn(i: number) {\n this.optionsCopy?.columns?.splice(i, 1);\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n\n selection($event: MouseEvent, item: Item) {\n this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n contextMenu($event: MouseEvent, item: Item) {\n if (this.manifest.contextMenu !== false) {\n $event.stopPropagation();\n $event.preventDefault();\n this.store.dispatch(\n ContextMenuActions.open({\n itemId: item.id,\n clientX: $event.clientX,\n clientY: $event.clientY,\n resultSet: Array.isArray(this.manifest.datasource) ? this.manifest.datasource[0] : this.manifest.datasource,\n from: 'table'\n })\n );\n this.contextMenuClickedId = item.id;\n }\n }\n\n invertLayers(idx: number, idxWith: number) {\n if (!!this.optionsCopy && !!this.optionsCopy.columns) {\n const tmp = this.optionsCopy.columns[idxWith];\n this.optionsCopy.columns[idxWith] = this.optionsCopy.columns[idx];\n this.optionsCopy.columns[idx] = tmp;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n }\n }\n\n selectAll($event: any) {\n if ($event) {\n this.store.dispatch(DashboardActions.selectMany({ ids: this.allIds }));\n } else {\n this.store.dispatch(DashboardActions.selectMany({ ids: [] }));\n }\n }\n\n setOrder(column: ColumnDefinition) {\n this.datasourceIds$\n .pipe(\n take(1),\n filter((nqs) => nqs.length === 1),\n withLatestFrom(this.quickOrder$)\n )\n .subscribe(([nqs, actualOrder]) => {\n this.store.dispatch(\n DashboardActions.quickOrder({\n datasourceId: nqs[0],\n attribute: column.attributeId ?? '',\n asc: this.nextOrder(column, actualOrder)\n })\n );\n });\n }\n\n private nextOrder(column: ColumnDefinition, actualOrder: ResultOrder | undefined): OrderValue {\n if (!actualOrder || actualOrder.attribute !== column.attributeId) {\n return 'asc';\n }\n return actualOrder.asc === 'asc' ? 'desc' : actualOrder.asc === 'desc' ? undefined : 'asc';\n }\n\n trackObjects(index: number, item: Item) {\n return item.id;\n }\n}\n","<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let columnDef of optionsCopy?.columns; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.columns?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [itemsAsOption]=\"false\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n class=\"a-pry-select\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"a-table-wrapper\">\n <div class=\"a-table-loading\" *ngIf=\"isLoading$ | async; else noLoading\">\n <span class=\"a-table-loading__loader\"></span>\n </div>\n <ng-template #noLoading>\n <ng-container *ngIf=\"(allItems$ | async) ?? [] as allObjects\">\n <div class=\"no-result\" *ngIf=\"allObjects.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n\n <ng-container *ngIf=\"(selectedIds$ | async) ?? [] as selectedIds\">\n <ng-container *ngIf=\"(columns$ | async) ?? [] as columns\">\n <table class=\"a-table\" [attr.aria-label]=\"'@pry.widget.table.description' | i18n\">\n <thead>\n <tr>\n <th *ngIf=\"allObjects?.length ?? 0 > 0\">\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n <th *ngFor=\"let column of columns; let i = index\" resizable (click)=\"setOrder(column)\">\n <span>{{ column.label }}</span>\n <ng-container *ngIf=\"quickOrder$ | async as quickOrder\">\n <ng-container *ngIf=\"quickOrder.attribute === column.attributeId\">\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let item of allObjects; trackBy: trackObjects\"\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n <td *ngFor=\"let column of columns\" class=\"u-ellipsis\">\n <ng-container *ngIf=\"column.property === 'metadata'\">\n <pry-metadata [item]=\"item\"></pry-metadata>\n </ng-container>\n <ng-container *ngIf=\"column.property === 'oClass'\">\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n />\n </p>\n </ng-container>\n <ng-container *ngIf=\"!['metadata', 'oClass'].includes(column.property)\">\n <pry-expand-value [value]=\"item | getValue : column.property | async\"></pry-expand-value>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-template>\n </div>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Add column',\n deleteColumn: 'Delete',\n property: 'Property to display',\n label: 'Column label',\n empty: 'No data to display',\n description: 'Dataset elements'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n table: {\n addColumn: 'Ajouter une colonne',\n deleteColumn: 'Supprimer',\n property: 'Propriété à afficher',\n label: 'Libellé de la colonne',\n empty: 'Aucune donnée à afficher',\n description: 'Eléments du jeu de données'\n }\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PrySelectModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetTableComponent } from './component/widget-table.component';\nimport { DetachRowDirective } from './expand-value/detach-row.directive';\nimport { ExpandValueComponent } from './expand-value/expand-value.component';\nimport { FormatNumberPipe } from './expand-value/format-number.pipe';\nimport { GetValuePipe } from './get-value/get-value.pipe';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { ResizableComponent } from './resizable/resizable.component';\nimport { ResizableDirective } from './resizable/resizable.directive';\nimport { PryWidgetTableCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [\n WidgetTableComponent,\n GetValuePipe,\n ResizableComponent,\n ResizableDirective,\n PryWidgetTableCssComponent,\n ExpandValueComponent,\n FormatNumberPipe,\n DetachRowDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryI18nModule\n ],\n exports: [WidgetTableComponent]\n})\nexport class WidgetTableModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-table', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-table', enTranslations);\n }\n\n override getComponent() {\n return WidgetTableComponent as Type<BaseWidgetComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizableDirective","i2","i2.FormatNumberPipe","i1","i6.ResizableComponent","i7.ResizableDirective","i8.PryWidgetTableCssComponent","i9.ExpandValueComponent","i10.DetachRowDirective","i11.GetValuePipe"],"mappings":"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"}
@@ -838,8 +838,9 @@ class PryI18nService {
838
838
  this.currentLang = (navigator.language || navigator.userLanguage).split('-')[0];
839
839
  }
840
840
  updateTranslations() {
841
- this.translations$.next({});
842
- Object.values(this.langObjects[this.currentLang]).forEach((obj) => this.translations$.next(deepMerge(obj, this.translations$.getValue())));
841
+ let calculated = {};
842
+ Object.values(this.langObjects[this.currentLang]).forEach((obj) => (calculated = deepMerge(obj, calculated)));
843
+ this.translations$.next(calculated);
843
844
  }
844
845
  use(lang) {
845
846
  if (this.langObjects[lang]) {
@@ -909,10 +910,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
909
910
  class I18nPipe {
910
911
  constructor(translateService, _ref) {
911
912
  this.translateService = translateService;
912
- this._ref = _ref;
913
913
  this.value = '';
914
914
  this.key = null;
915
915
  this.params = [];
916
+ this._ref = _ref;
916
917
  }
917
918
  transform(value, ...args) {
918
919
  if (value === this.key && JSON.stringify(args) === JSON.stringify(this.params)) {
@@ -924,24 +925,32 @@ class I18nPipe {
924
925
  if (this.value === this.key) {
925
926
  // Not translated, maybe we must wait
926
927
  this.waitSubscription = this.translateService.get(value, args[0]).subscribe((value) => {
927
- if (value !== value) {
928
+ if (this.value !== value) {
928
929
  this.value = value;
929
930
  this._ref.markForCheck();
930
- setTimeout(() => {
931
- this.waitSubscription?.unsubscribe();
932
- }, 10);
931
+ this.dispose();
933
932
  }
934
933
  });
935
934
  }
936
935
  return this.value;
937
936
  }
937
+ dispose() {
938
+ setTimeout(() => {
939
+ this.waitSubscription?.unsubscribe();
940
+ this._ref = null;
941
+ }, 10);
942
+ }
943
+ ngOnDestroy() {
944
+ this.dispose();
945
+ }
938
946
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: I18nPipe, deps: [{ token: PryI18nService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
939
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: I18nPipe, name: "i18n" }); }
947
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: I18nPipe, name: "i18n", pure: false }); }
940
948
  }
941
949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: I18nPipe, decorators: [{
942
950
  type: Pipe,
943
951
  args: [{
944
- name: 'i18n'
952
+ name: 'i18n',
953
+ pure: false
945
954
  }]
946
955
  }], ctorParameters: function () { return [{ type: PryI18nService }, { type: i0.ChangeDetectorRef }]; } });
947
956
 
@@ -5713,7 +5722,7 @@ class PrySelectComponent {
5713
5722
  useExisting: forwardRef(() => PrySelectComponent),
5714
5723
  multi: true
5715
5724
  }
5716
- ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n appendTo=\"body\"\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$3.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5725
+ ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$3.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5717
5726
  }
5718
5727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySelectComponent, decorators: [{
5719
5728
  type: Component,
@@ -5723,7 +5732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
5723
5732
  useExisting: forwardRef(() => PrySelectComponent),
5724
5733
  multi: true
5725
5734
  }
5726
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n appendTo=\"body\"\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n" }]
5735
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n" }]
5727
5736
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { labelTranslate: [{
5728
5737
  type: Input
5729
5738
  }], baseTranslate: [{