@provoly/dashboard 0.13.7 → 0.13.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +4 -4
  2. package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +3 -3
  3. package/assets/svgs/layers.svg +2 -0
  4. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +3 -3
  5. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
  6. package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +1 -1
  7. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +5 -12
  8. package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -4
  9. package/esm2022/lib/core/components/select/select.component.mjs +2 -2
  10. package/esm2022/lib/core/components/share/share.component.mjs +3 -3
  11. package/esm2022/lib/core/model/admin-api.model.mjs +1 -1
  12. package/esm2022/lib/core/model/dataset.interface.mjs +1 -1
  13. package/esm2022/lib/core/model/display-options.interface.mjs +4 -2
  14. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  15. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  16. package/esm2022/lib/core/store/config/config.actions.mjs +2 -1
  17. package/esm2022/lib/core/store/config/config.effects.mjs +25 -4
  18. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +1 -1
  19. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +1 -1
  20. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  21. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +1 -1
  22. package/esm2022/lib/core/store/data-source/data-source.service.mjs +1 -1
  23. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +3 -7
  24. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +1 -1
  25. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +6 -3
  26. package/esm2022/lib/dashboard/public-api.mjs +2 -1
  27. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -3
  28. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +25 -11
  29. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +2 -11
  30. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -5
  31. package/esm2022/lib/dashboard/store/manifest-utils.class.mjs +11 -0
  32. package/esm2022/lib/dashboard/store/manifest.service.mjs +3 -10
  33. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +5 -4
  34. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +5 -8
  35. package/esm2022/presentation/components/presentation.component.mjs +5 -42
  36. package/esm2022/presentation/presentation.module.mjs +8 -4
  37. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +9 -65
  38. package/esm2022/search/components/save-query/save-query.component.mjs +5 -8
  39. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  40. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
  41. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +5 -16
  42. package/esm2022/toolbox/toolbox.module.mjs +8 -4
  43. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +3 -3
  44. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +3 -3
  45. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +90 -26
  46. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +5 -2
  47. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +5 -2
  48. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +2 -36
  49. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  50. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -3
  51. package/fesm2022/provoly-dashboard-admin.mjs +2 -2
  52. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  53. package/fesm2022/provoly-dashboard-pipeline.mjs +4 -7
  54. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  55. package/fesm2022/provoly-dashboard-presentation.mjs +11 -44
  56. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  57. package/fesm2022/provoly-dashboard-restitution.mjs +9 -65
  58. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  59. package/fesm2022/provoly-dashboard-search.mjs +4 -7
  60. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  61. package/fesm2022/provoly-dashboard-toolbox.mjs +14 -21
  62. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  63. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +2 -2
  64. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  65. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +2 -2
  66. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  67. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +103 -129
  68. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  69. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +2 -2
  70. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  71. package/fesm2022/provoly-dashboard.mjs +153 -135
  72. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  73. package/lib/core/components/overlay/overlay.module.d.ts +2 -1
  74. package/lib/core/model/admin-api.model.d.ts +1 -1
  75. package/lib/core/model/dataset.interface.d.ts +0 -10
  76. package/lib/core/model/display-options.interface.d.ts +1 -0
  77. package/lib/core/model/manifest.interface.d.ts +2 -0
  78. package/lib/core/model/widget-map-manifest.interface.d.ts +1 -0
  79. package/lib/core/store/config/config.actions.d.ts +5 -0
  80. package/lib/core/store/config/config.effects.d.ts +6 -1
  81. package/lib/core/store/data-source/data-source.actions.d.ts +2 -2
  82. package/lib/core/store/data-source/data-source.effects.d.ts +2 -3
  83. package/lib/core/store/data-source/data-source.model.d.ts +11 -3
  84. package/lib/core/store/data-source/data-source.reducer.d.ts +2 -2
  85. package/lib/core/store/data-source/data-source.selectors.d.ts +5 -5
  86. package/lib/core/store/data-source/data-source.service.d.ts +4 -4
  87. package/lib/dashboard/components/context-menu/context-menu.component.d.ts +0 -1
  88. package/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.d.ts +1 -2
  89. package/lib/dashboard/components/widgets/settings/settings.component.d.ts +1 -0
  90. package/lib/dashboard/public-api.d.ts +1 -0
  91. package/lib/dashboard/store/dashboard.actions.d.ts +6 -17
  92. package/lib/dashboard/store/dashboard.effects.d.ts +6 -7
  93. package/lib/dashboard/store/dashboard.reducers.d.ts +1 -5
  94. package/lib/dashboard/store/dashboard.selectors.d.ts +0 -57
  95. package/lib/dashboard/store/manifest-utils.class.d.ts +4 -0
  96. package/lib/dashboard/store/manifest.service.d.ts +0 -1
  97. package/package.json +25 -25
  98. package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +1 -2
  99. package/presentation/components/presentation.component.d.ts +0 -5
  100. package/presentation/presentation.module.d.ts +2 -1
  101. package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +4 -15
  102. package/schematics/ng-add/index.js +0 -2
  103. package/schematics/ng-add/index.js.map +1 -1
  104. package/schematics/ng-update/version-0-13/index.js +18 -1
  105. package/schematics/ng-update/version-0-13/index.js.map +1 -1
  106. package/schematics/ng-update/version-0-13/index.spec.js +8 -1
  107. package/schematics/ng-update/version-0-13/index.spec.js.map +1 -1
  108. package/search/components/save-query/save-query.component.d.ts +1 -2
  109. package/styles/components/_m-tooltip.scss +18 -2
  110. package/styles-theme/components-theme/_m-tooltip.theme.scss +0 -12
  111. package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +0 -4
  112. package/toolbox/toolbox.module.d.ts +2 -1
  113. package/widgets/widget-map/component/widget-map.component.d.ts +16 -3
  114. package/widgets/widget-map/i18n/en.translations.d.ts +3 -0
  115. package/widgets/widget-map/i18n/fr.translations.d.ts +3 -0
  116. package/widgets/widget-map/interaction/interaction-manager.class.d.ts +3 -8
  117. package/widgets/widget-map/style/_o-layer-legend.scss +45 -0
  118. package/widgets/widget-map/style/_o-widget-map.scss +0 -1
  119. package/esm2022/widgets/widget-map/search-bar/search-bar.control.mjs +0 -66
  120. package/widgets/widget-map/search-bar/search-bar.control.d.ts +0 -27
@@ -20,7 +20,8 @@ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
20
20
  import equal from 'fast-deep-equal/es6';
21
21
  import { distinctUntilChanged, filter as filter$1, debounceTime as debounceTime$1, mergeMap as mergeMap$1, map as map$1, catchError, withLatestFrom, tap, delay as delay$1 } from 'rxjs/operators';
22
22
  import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
23
- import { v4 } from 'uuid';
23
+ import * as i5 from '@angular/cdk/a11y';
24
+ import { A11yModule } from '@angular/cdk/a11y';
24
25
  import { GeoJSON } from 'ol/format';
25
26
  import { fromLonLat } from 'ol/proj';
26
27
  import * as i1$4 from '@angular/cdk/accordion';
@@ -30,6 +31,7 @@ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
30
31
  import * as i2$2 from '@ng-select/ng-select';
31
32
  import { NgSelectModule } from '@ng-select/ng-select';
32
33
  import { webSocket } from 'rxjs/webSocket';
34
+ import { v4 } from 'uuid';
33
35
  import * as i8 from '@provoly/dashboard/components/checkbox';
34
36
  import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
35
37
 
@@ -1267,6 +1269,7 @@ const DashboardActions = {
1267
1269
  loadManifest: createAction('[Dashboard] (bus) load manifest', props()),
1268
1270
  loadAndActivateManifest: createAction('[Dashboard] (bus) load and activate manifest', props()),
1269
1271
  downloadManifest: createAction('[Dashboard] download manifest', props()),
1272
+ confirmManifestDeletion: createAction('[Dashboard] confirm manifest deletion', props()),
1270
1273
  deleteManifest: createAction('[Dashboard] deleting manifest', props()),
1271
1274
  saveManifest: createAction('[Dashboard] save manifest', props()),
1272
1275
  solveCollisions: createAction('[Dashboard] solving collisions'),
@@ -1292,8 +1295,6 @@ const DashboardActions = {
1292
1295
  explore: createAction('[Dashboard] (bus) isolate in data set', props()),
1293
1296
  detail: createAction('[Dashboard] (bus) add detail view', props()),
1294
1297
  proximity: createAction('[Dashboard] proximity search', props()),
1295
- searchAddressForPoint: createAction('[Dashboard] address search', props()),
1296
- displayAddress: createAction('[Dashboard] display adress', props()),
1297
1298
  multiSnackBar: createAction('[Dashboard] (bus) display snack message', props()),
1298
1299
  quickOrder: createAction('[Dashboard] (bus) quick order', props()),
1299
1300
  setGridLayout: createAction('[Dashboard] set grid layout', props()),
@@ -1330,6 +1331,7 @@ const ConfigActions = {
1330
1331
  defineBreakpoint: createAction('[Config] (bus) defining breakpoint', props()),
1331
1332
  defaultViewGuardUsed: createAction('[Config] (bus) default view guard used'),
1332
1333
  saveWidget: createAction('[Config] (bus) defining widget', props()),
1334
+ confirmRestitutionDeletion: createAction('[Config] (bus) confirm Restitution deletion', props()),
1333
1335
  deleteRestitution: createAction('[Config] (bus) delete Restitution', props()),
1334
1336
  loadWidgets: createAction('[Config] (bus) loading widgets'),
1335
1337
  loadedWidgets: createAction('[Config] (bus) loaded widgets', props()),
@@ -2690,14 +2692,6 @@ class PryDialogConfirmComponent {
2690
2692
  this.dialog = dialog;
2691
2693
  this.data = data;
2692
2694
  this.store = store;
2693
- setTimeout(() => {
2694
- this.cross.nativeElement.focus();
2695
- this.buttonAction.nativeElement.parentElement?.children[1].addEventListener('keydown', (event) => {
2696
- if (event.key === 'Tab') {
2697
- this.focusCrossElement();
2698
- }
2699
- });
2700
- }, 10);
2701
2695
  }
2702
2696
  onClick(action) {
2703
2697
  if (action) {
@@ -2717,11 +2711,11 @@ class PryDialogConfirmComponent {
2717
2711
  this.cross.nativeElement.focus();
2718
2712
  }
2719
2713
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryDialogConfirmComponent, deps: [{ token: PryDialogRef }, { token: PRY_DIALOG_DATA }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
2720
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryDialogConfirmComponent, selector: "pry-dialog-confirm", viewQueries: [{ propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "buttonAction", first: true, predicate: ["buttonAction"], descendants: true }], ngImport: i0, template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_confirmDelete\"\n (keydown.escape)=\"onClick()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ data.title | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeDialog()\" #cross>\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <p *ngIf=\"data?.message as message\" class=\"a-p\">{{ message | i18n }}</p>\n </div>\n <div class=\"m-btn-group\">\n <ng-container *ngFor=\"let action of data.actions\" #buttonAction>\n <button\n (click)=\"onClick(action)\"\n class=\"a-btn\"\n type=\"button\"\n [class.a-btn--primary]=\"action.color === 'primary' || action.color === undefined\"\n [class.a-btn--secondary]=\"action.color === 'secondary'\"\n [class.a-btn--tertiary]=\"action.color === 'tertiary'\"\n [class.a-btn--ghost]=\"action.color === 'ghost'\"\n [ngClass]=\"{ 'a-btn--icon-text': action.icon }\"\n >\n <pry-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></pry-icon>\n {{ action.label | i18n }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
2714
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryDialogConfirmComponent, selector: "pry-dialog-confirm", viewQueries: [{ propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "buttonAction", first: true, predicate: ["buttonAction"], descendants: true }], ngImport: i0, template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_confirmDelete\"\n (keydown.escape)=\"onClick()\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ data.title | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeDialog()\" #cross>\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <p *ngIf=\"data?.message as message\" class=\"a-p\">{{ message | i18n }}</p>\n </div>\n <div class=\"m-btn-group\">\n <ng-container *ngFor=\"let action of data.actions\" #buttonAction>\n <button\n (click)=\"onClick(action)\"\n class=\"a-btn\"\n type=\"button\"\n [class.a-btn--primary]=\"action.color === 'primary' || action.color === undefined\"\n [class.a-btn--secondary]=\"action.color === 'secondary'\"\n [class.a-btn--tertiary]=\"action.color === 'tertiary'\"\n [class.a-btn--ghost]=\"action.color === 'ghost'\"\n [ngClass]=\"{ 'a-btn--icon-text': action.icon }\"\n >\n <pry-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></pry-icon>\n {{ action.label | i18n }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
2721
2715
  }
2722
2716
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryDialogConfirmComponent, decorators: [{
2723
2717
  type: Component,
2724
- args: [{ selector: 'pry-dialog-confirm', template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_confirmDelete\"\n (keydown.escape)=\"onClick()\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ data.title | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeDialog()\" #cross>\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <p *ngIf=\"data?.message as message\" class=\"a-p\">{{ message | i18n }}</p>\n </div>\n <div class=\"m-btn-group\">\n <ng-container *ngFor=\"let action of data.actions\" #buttonAction>\n <button\n (click)=\"onClick(action)\"\n class=\"a-btn\"\n type=\"button\"\n [class.a-btn--primary]=\"action.color === 'primary' || action.color === undefined\"\n [class.a-btn--secondary]=\"action.color === 'secondary'\"\n [class.a-btn--tertiary]=\"action.color === 'tertiary'\"\n [class.a-btn--ghost]=\"action.color === 'ghost'\"\n [ngClass]=\"{ 'a-btn--icon-text': action.icon }\"\n >\n <pry-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></pry-icon>\n {{ action.label | i18n }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
2718
+ args: [{ selector: 'pry-dialog-confirm', template: "<div\n class=\"o-modal-wrapper\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_confirmDelete\"\n (keydown.escape)=\"onClick()\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ data.title | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeDialog()\" #cross>\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <p *ngIf=\"data?.message as message\" class=\"a-p\">{{ message | i18n }}</p>\n </div>\n <div class=\"m-btn-group\">\n <ng-container *ngFor=\"let action of data.actions\" #buttonAction>\n <button\n (click)=\"onClick(action)\"\n class=\"a-btn\"\n type=\"button\"\n [class.a-btn--primary]=\"action.color === 'primary' || action.color === undefined\"\n [class.a-btn--secondary]=\"action.color === 'secondary'\"\n [class.a-btn--tertiary]=\"action.color === 'tertiary'\"\n [class.a-btn--ghost]=\"action.color === 'ghost'\"\n [ngClass]=\"{ 'a-btn--icon-text': action.icon }\"\n >\n <pry-icon *ngIf=\"action.icon\" [iconSvg]=\"action.icon\"></pry-icon>\n {{ action.label | i18n }}\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
2725
2719
  }], ctorParameters: function () { return [{ type: PryDialogRef }, { type: undefined, decorators: [{
2726
2720
  type: Inject,
2727
2721
  args: [PRY_DIALOG_DATA]
@@ -2981,15 +2975,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
2981
2975
 
2982
2976
  class PryOverlayModule {
2983
2977
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2984
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, declarations: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent], imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule], exports: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent] }); }
2985
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule] }); }
2978
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, declarations: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent], imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule, A11yModule], exports: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent] }); }
2979
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule, A11yModule] }); }
2986
2980
  }
2987
2981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryOverlayModule, decorators: [{
2988
2982
  type: NgModule,
2989
2983
  args: [{
2990
2984
  declarations: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent],
2991
2985
  exports: [PryTooltipDirective, PryOverlayDirective, PryDialogConfirmComponent],
2992
- imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule]
2986
+ imports: [CommonModule, OverlayModule, PryIconModule, PryI18nModule, A11yModule]
2993
2987
  }]
2994
2988
  }] });
2995
2989
 
@@ -3627,13 +3621,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
3627
3621
  }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: i1.Store }]; } });
3628
3622
 
3629
3623
  class ConfigEffects {
3630
- constructor(actions$, openMapTilesService, store, configService, snackBar, translateService) {
3624
+ constructor(actions$, openMapTilesService, store, configService, snackBar, translateService, pryDialog) {
3631
3625
  this.actions$ = actions$;
3632
3626
  this.openMapTilesService = openMapTilesService;
3633
3627
  this.store = store;
3634
3628
  this.configService = configService;
3635
3629
  this.snackBar = snackBar;
3636
3630
  this.translateService = translateService;
3631
+ this.pryDialog = pryDialog;
3637
3632
  this.mapStyles$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.getMapStyles), withLatestFrom(this.store.select(ConfigSelectors.mapStyles)), filter$1(([action, mapStyles]) => !mapStyles || mapStyles.length === 0), mergeMap$1(([action]) => this.openMapTilesService.getStyles().pipe(map$1((styles) => ConfigActions.defineMapStyles({ styles }))))));
3638
3633
  this.saveIconDefinitions$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.saveIcons), mergeMap$1((action) => this.configService
3639
3634
  .saveDefinitions(action.definitions, SYMBOL_DOMAIN)
@@ -3692,6 +3687,24 @@ class ConfigEffects {
3692
3687
  });
3693
3688
  return throwError(error);
3694
3689
  })))));
3690
+ this.confirmRestitutionDeletion$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.confirmRestitutionDeletion), tap((action) => {
3691
+ const data = {
3692
+ title: '@pry.widget.modalTitle',
3693
+ actions: [
3694
+ {
3695
+ id: 0,
3696
+ label: '@pry.toolbox.manifest.validate',
3697
+ actions: [ConfigActions.deleteRestitution({ id: action.id })]
3698
+ },
3699
+ {
3700
+ id: 1,
3701
+ label: '@pry.toolbox.manifest.close',
3702
+ color: 'secondary'
3703
+ }
3704
+ ]
3705
+ };
3706
+ this.pryDialog.open(PryDialogConfirmComponent, { data });
3707
+ })), { dispatch: false });
3695
3708
  this.deleteRestitution$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.deleteRestitution), mergeMap$1((action) => this.configService.deleteRestitution(action.id).pipe(map$1(() => ConfigActions.loadWidgets())))));
3696
3709
  this.loadWidget$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadWidgets), mergeMap$1((action) => this.configService.getAllWidgets().pipe(map$1((widgets) => ConfigActions.loadedWidgets({ widgets }))))));
3697
3710
  this.loadChartOption$ = createEffect(() => this.actions$.pipe(ofType(ConfigActions.loadChartOption), withLatestFrom(this.store.select(ConfigSelectors.chartOption)), map$1(([action, chartOptions]) => {
@@ -3704,12 +3717,12 @@ class ConfigEffects {
3704
3717
  return ConfigActions.loadedChartOption({ chartOption });
3705
3718
  })));
3706
3719
  }
3707
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ConfigEffects, deps: [{ token: i1$3.Actions }, { token: OpenMapTilesService }, { token: i1.Store }, { token: ConfigService }, { token: PrySnackbarService }, { token: PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3720
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ConfigEffects, deps: [{ token: i1$3.Actions }, { token: OpenMapTilesService }, { token: i1.Store }, { token: ConfigService }, { token: PrySnackbarService }, { token: PryI18nService }, { token: PryDialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3708
3721
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ConfigEffects }); }
3709
3722
  }
3710
3723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ConfigEffects, decorators: [{
3711
3724
  type: Injectable
3712
- }], ctorParameters: function () { return [{ type: i1$3.Actions }, { type: OpenMapTilesService }, { type: i1.Store }, { type: ConfigService }, { type: PrySnackbarService }, { type: PryI18nService }]; } });
3725
+ }], ctorParameters: function () { return [{ type: i1$3.Actions }, { type: OpenMapTilesService }, { type: i1.Store }, { type: ConfigService }, { type: PrySnackbarService }, { type: PryI18nService }, { type: PryDialogService }]; } });
3713
3726
 
3714
3727
  class ContextMenuEffects {
3715
3728
  constructor(actions$) {
@@ -3765,77 +3778,7 @@ var DashboardGridLayout;
3765
3778
  DashboardGridLayout["MANUAL"] = "0";
3766
3779
  })(DashboardGridLayout || (DashboardGridLayout = {}));
3767
3780
 
3768
- class ManifestService {
3769
- constructor(httpClient, store, snackBar, translateService) {
3770
- this.httpClient = httpClient;
3771
- this.store = store;
3772
- this.snackBar = snackBar;
3773
- this.translateService = translateService;
3774
- }
3775
- list() {
3776
- return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards`))), catchError((error) => {
3777
- if (error.error instanceof Error) {
3778
- // A client-side or network error occurred
3779
- console.error('A frontend error occurred:', error.error.message);
3780
- this.snackBar.open({
3781
- type: 'error',
3782
- message: this.translateService.instant('@pry.manifest.get.errorFront', { msg: error.error.message })
3783
- });
3784
- }
3785
- else {
3786
- // The backend returned an unsuccessful response code.
3787
- if (error.code !== 200) {
3788
- console.error(`Backend returned code ${error.status}, body was: ${JSON.stringify(error.error)}`);
3789
- }
3790
- if (error.code >= 400) {
3791
- this.snackBar.open({
3792
- type: 'error',
3793
- message: this.translateService.instant('@pry.manifest.get.errorBack', {
3794
- code: error.status
3795
- })
3796
- });
3797
- }
3798
- }
3799
- return of([]);
3800
- }));
3801
- }
3802
- get(id) {
3803
- return this.store
3804
- .select(ConfigSelectors.refUrl)
3805
- .pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards/id/${id}/manifest`))));
3806
- }
3807
- save(name, manifest, visibility, id, description, image, cover) {
3808
- return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.post(encodeURI(`${url}/users/me/dashboards`), {
3809
- id: id === undefined || id.length === 0 ? v4() : id,
3810
- name,
3811
- description,
3812
- manifest,
3813
- image,
3814
- visibility,
3815
- cover,
3816
- datasource: ManifestService.getDatasourcesUsedByManifest(manifest)
3817
- })));
3818
- }
3819
- delete(id) {
3820
- return this.store
3821
- .select(ConfigSelectors.refUrl)
3822
- .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/users/me/dashboards/id/${id}`))));
3823
- }
3824
- default(id) {
3825
- return this.store.select(ConfigSelectors.refUrl).pipe(withLatestFrom(this.store.select(DashboardSelectors.manifestsList)), mergeMap(([url, manifests]) => {
3826
- const actual = manifests.find((manifest) => manifest.id === id);
3827
- if (!!actual && !actual.default) {
3828
- return this.httpClient
3829
- .put(encodeURI(`${url}/users/me/dashboards/id/${id}/default`), {})
3830
- .pipe(map$1(() => true));
3831
- }
3832
- else {
3833
- return this.httpClient
3834
- .delete(encodeURI(`${url}/users/me/dashboards/default`), {})
3835
- .pipe(map$1(() => false));
3836
- }
3837
- }));
3838
- }
3781
+ class ManifestUtils {
3839
3782
  static getDatasourcesUsedByManifest(manifest) {
3840
3783
  return [
3841
3784
  ...new Set(manifest.windows
@@ -3844,15 +3787,7 @@ class ManifestService {
3844
3787
  .filter((dataset) => !!dataset))
3845
3788
  ];
3846
3789
  }
3847
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, deps: [{ token: i1$2.HttpClient }, { token: i1.Store }, { token: PrySnackbarService }, { token: PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3848
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, providedIn: 'root' }); }
3849
3790
  }
3850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, decorators: [{
3851
- type: Injectable,
3852
- args: [{
3853
- providedIn: 'root'
3854
- }]
3855
- }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: i1.Store }, { type: PrySnackbarService }, { type: PryI18nService }]; } });
3856
3791
 
3857
3792
  const NEW_WINDOW_TARGET = -1;
3858
3793
  const feature$4 = createFeatureSelector('@pry/dashboard');
@@ -3862,7 +3797,7 @@ const currentManifestId = createSelector(manifests, (manifests) => manifests.cur
3862
3797
  const globalManifest = createSelector(manifests,
3863
3798
  // @ts-ignore
3864
3799
  (manifests) => ({ windows: [], ...manifests?.manifest } ?? { windows: [] }));
3865
- const manifestDatasources = createSelector(globalManifest, (manifest) => ManifestService.getDatasourcesUsedByManifest(manifest));
3800
+ const manifestDatasources = createSelector(globalManifest, (manifest) => ManifestUtils.getDatasourcesUsedByManifest(manifest));
3866
3801
  const staticManifest = createSelector(manifests,
3867
3802
  // @ts-ignore
3868
3803
  (manifests) => ({ windows: [], ...manifests?.staticManifest } ?? { windows: [] }));
@@ -3898,7 +3833,6 @@ const defaultDatasourceNames = createSelector(results, (results) => results.defa
3898
3833
  const selectedItemIds = createSelector(results, (results) => results.selectedItems ?? []);
3899
3834
  const objectDetails = createSelector(results, (results) => results.objectDetails ?? {});
3900
3835
  const quickOrder = createSelector(results, (results) => results.quickOrder ?? {});
3901
- const address = createSelector(results, (results) => (results.address ?? {}));
3902
3836
  const allItems = createSelector(results, (results) => Object.keys(results.resultSets)
3903
3837
  .map((rsKey) => Object.keys(results.resultSets[rsKey].items)
3904
3838
  .map((classKey) => results.resultSets[rsKey].items[classKey])
@@ -3949,7 +3883,6 @@ const DashboardSelectors = {
3949
3883
  tenants,
3950
3884
  resultSets,
3951
3885
  resultSetsParams,
3952
- address,
3953
3886
  namedQueriesNames,
3954
3887
  namedQueriesUses,
3955
3888
  availableNamedQueries,
@@ -5977,7 +5910,7 @@ class PrySelectComponent {
5977
5910
  this.clearable = false;
5978
5911
  this.multiple = false;
5979
5912
  this.multipleClearRight = false;
5980
- this.closeOnSelect = false;
5913
+ this.closeOnSelect = true;
5981
5914
  this.isForm = false;
5982
5915
  this.readonly = false;
5983
5916
  this.itemsAsOption = false;
@@ -6265,7 +6198,7 @@ class PryShareComponent {
6265
6198
  useExisting: forwardRef(() => PryShareComponent),
6266
6199
  multi: true
6267
6200
  }
6268
- ], ngImport: i0, template: "<div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"share_type\">{{ '@pry.share.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"visibilityTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"value?.type\"\n [disabled]=\"_disabled\"\n baseTranslate=\"@pry.share.\"\n class=\"a-pry-select\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"share_type\"\n bindIcon=\"icon\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n\n<ng-container *ngIf=\"value?.type === PryVisibilityType.RESTRICTED\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"users\">{{ '@pry.share.users' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueUsers($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"users$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"value?.users\"\n [disabled]=\"_disabled\"\n [bindLabel]=\"labelProperty\"\n [bindValue]=\"valueProperty\"\n [autocomplete]=\"true\"\n class=\"a-pry-select\"\n id=\"users\"\n ></pry-select>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6201
+ ], ngImport: i0, template: "<div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"share_type\">{{ '@pry.share.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"visibilityTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"value?.type\"\n [disabled]=\"_disabled\"\n baseTranslate=\"@pry.share.\"\n class=\"a-pry-select\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"share_type\"\n bindIcon=\"icon\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n\n<ng-container *ngIf=\"value?.type === PryVisibilityType.RESTRICTED\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"users\">{{ '@pry.share.users' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueUsers($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"users$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"value?.users\"\n [disabled]=\"_disabled\"\n [bindLabel]=\"labelProperty\"\n [bindValue]=\"valueProperty\"\n [autocomplete]=\"true\"\n class=\"a-pry-select\"\n id=\"users\"\n ></pry-select>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6269
6202
  }
6270
6203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryShareComponent, decorators: [{
6271
6204
  type: Component,
@@ -6275,7 +6208,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
6275
6208
  useExisting: forwardRef(() => PryShareComponent),
6276
6209
  multi: true
6277
6210
  }
6278
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"share_type\">{{ '@pry.share.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"visibilityTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"value?.type\"\n [disabled]=\"_disabled\"\n baseTranslate=\"@pry.share.\"\n class=\"a-pry-select\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"share_type\"\n bindIcon=\"icon\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n\n<ng-container *ngIf=\"value?.type === PryVisibilityType.RESTRICTED\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"users\">{{ '@pry.share.users' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueUsers($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"users$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"value?.users\"\n [disabled]=\"_disabled\"\n [bindLabel]=\"labelProperty\"\n [bindValue]=\"valueProperty\"\n [autocomplete]=\"true\"\n class=\"a-pry-select\"\n id=\"users\"\n ></pry-select>\n </div>\n</ng-container>\n" }]
6211
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"share_type\">{{ '@pry.share.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"visibilityTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"value?.type\"\n [disabled]=\"_disabled\"\n baseTranslate=\"@pry.share.\"\n class=\"a-pry-select\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"share_type\"\n bindIcon=\"icon\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n\n<ng-container *ngIf=\"value?.type === PryVisibilityType.RESTRICTED\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"users\">{{ '@pry.share.users' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"writeValueUsers($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"users$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n [ngModel]=\"value?.users\"\n [disabled]=\"_disabled\"\n [bindLabel]=\"labelProperty\"\n [bindValue]=\"valueProperty\"\n [autocomplete]=\"true\"\n class=\"a-pry-select\"\n id=\"users\"\n ></pry-select>\n </div>\n</ng-container>\n" }]
6279
6212
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
6280
6213
  type: Input
6281
6214
  }], labelProperty: [{
@@ -6766,6 +6699,7 @@ var DisplayMode;
6766
6699
  })(DisplayMode || (DisplayMode = {}));
6767
6700
  function getDisplayOptions(mode) {
6768
6701
  const displayOptions = {
6702
+ presentationTitle: true,
6769
6703
  search: false,
6770
6704
  catalog: false,
6771
6705
  useFilters: false,
@@ -6790,8 +6724,9 @@ function getDisplayOptions(mode) {
6790
6724
  case DisplayMode.SEARCH:
6791
6725
  return {
6792
6726
  ...displayOptions,
6727
+ presentationTitle: false,
6793
6728
  search: true,
6794
- toolbox: { ...displayOptions.toolbox, refresh_datasets: true }
6729
+ toolbox: { ...displayOptions.toolbox, clear_view: true, default_size: true, refresh_datasets: true }
6795
6730
  };
6796
6731
  case DisplayMode.EDIT:
6797
6732
  case DisplayMode.CREATE:
@@ -7356,10 +7291,6 @@ class ContextMenuComponent extends SubscriptionnerDirective {
7356
7291
  this.store.dispatch(DashboardActions.invertSelection());
7357
7292
  this.hide();
7358
7293
  }
7359
- addressFromLoc() {
7360
- this.store.dispatch(DashboardActions.searchAddressForPoint({ coordinates: this.coordinates ?? [0, 0] }));
7361
- this.hide();
7362
- }
7363
7294
  flyingDetail() {
7364
7295
  this.detailManifest.options.itemIds = [this.itemId ?? ''];
7365
7296
  this.overlayDetailRef = this.overlay.create(new OverlayConfig({
@@ -7377,11 +7308,11 @@ class ContextMenuComponent extends SubscriptionnerDirective {
7377
7308
  this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-detail' }));
7378
7309
  }
7379
7310
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }, { token: WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
7380
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n <ng-container *ngIf=\"from === 'map'\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"addressFromLoc()\">\n {{ '@pry.context.addressFromLoc' | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified", "widgetInstance"] }, { kind: "component", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
7311
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified", "widgetInstance"] }, { kind: "component", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
7381
7312
  }
7382
7313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, decorators: [{
7383
7314
  type: Component,
7384
- args: [{ selector: 'pry-context-menu', template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n <ng-container *ngIf=\"from === 'map'\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"addressFromLoc()\">\n {{ '@pry.context.addressFromLoc' | i18n }}\n </button>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
7315
+ args: [{ selector: 'pry-context-menu', template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
7385
7316
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }, { type: WidgetFactoryService }]; }, propDecorators: { template: [{
7386
7317
  type: ViewChild,
7387
7318
  args: ['template', { read: TemplateRef }]
@@ -9453,6 +9384,9 @@ class SettingsComponent extends SubscriptionnerDirective {
9453
9384
  this.overlayRef.backdropClick().subscribe((_) => this.toggle());
9454
9385
  this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));
9455
9386
  }
9387
+ focusElement(element) {
9388
+ element.focus();
9389
+ }
9456
9390
  focusCrossElement() {
9457
9391
  this.cross.nativeElement.focus();
9458
9392
  }
@@ -9468,11 +9402,11 @@ class SettingsComponent extends SubscriptionnerDirective {
9468
9402
  this.subscriptions.unsubscribe();
9469
9403
  }
9470
9404
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.Store }, { token: i2$1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
9471
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SettingsComponent, selector: "pry-settings", inputs: { widgetIndex: "widgetIndex", isDisable: "isDisable", headerPresent: "headerPresent", open$: "open$", header: "header" }, outputs: { saveTriggered: "saveTriggered", changeTitle: "changeTitle" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "validate", first: true, predicate: ["validate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-text -settings\"\n [pryTooltip]=\"infoTooltipSearch\"\n aria-describedby=\"infoTooltipSearch_settings\"\n>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusCrossElement()\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"infoTooltipSearch_settings\">\n <span class=\"m-tooltip__text\"> {{ '@pry.widget.tooltip.openParameter' | i18n }}</span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
9405
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SettingsComponent, selector: "pry-settings", inputs: { widgetIndex: "widgetIndex", isDisable: "isDisable", headerPresent: "headerPresent", open$: "open$", header: "header" }, outputs: { saveTriggered: "saveTriggered", changeTitle: "changeTitle" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "validate", first: true, predicate: ["validate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-text -settings\"\n [pryTooltip]=\"infoTooltipSearch\"\n aria-describedby=\"infoTooltipSearch_settings\"\n>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusElement(this.validate)\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusElement(this.cross)\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"infoTooltipSearch_settings\">\n <span class=\"m-tooltip__text\"> {{ '@pry.widget.tooltip.openParameter' | i18n }}</span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
9472
9406
  }
9473
9407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SettingsComponent, decorators: [{
9474
9408
  type: Component,
9475
- args: [{ selector: 'pry-settings', template: "<button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-text -settings\"\n [pryTooltip]=\"infoTooltipSearch\"\n aria-describedby=\"infoTooltipSearch_settings\"\n>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusCrossElement()\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"infoTooltipSearch_settings\">\n <span class=\"m-tooltip__text\"> {{ '@pry.widget.tooltip.openParameter' | i18n }}</span>\n </div>\n</ng-template>\n" }]
9409
+ args: [{ selector: 'pry-settings', template: "<button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-text -settings\"\n [pryTooltip]=\"infoTooltipSearch\"\n aria-describedby=\"infoTooltipSearch_settings\"\n>\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusElement(this.validate)\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusElement(this.cross)\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSearch>\n <div class=\"m-tooltip\" aria-hidden=\"true\" role=\"tooltip\" id=\"infoTooltipSearch_settings\">\n <span class=\"m-tooltip__text\"> {{ '@pry.widget.tooltip.openParameter' | i18n }}</span>\n </div>\n</ng-template>\n" }]
9476
9410
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2$1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { widgetIndex: [{
9477
9411
  type: Input
9478
9412
  }], isDisable: [{
@@ -9623,6 +9557,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
9623
9557
  args: ['filters', { read: ViewContainerRef }]
9624
9558
  }] } });
9625
9559
 
9560
+ class ManifestService {
9561
+ constructor(httpClient, store, snackBar, translateService) {
9562
+ this.httpClient = httpClient;
9563
+ this.store = store;
9564
+ this.snackBar = snackBar;
9565
+ this.translateService = translateService;
9566
+ }
9567
+ list() {
9568
+ return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards`))), catchError((error) => {
9569
+ if (error.error instanceof Error) {
9570
+ // A client-side or network error occurred
9571
+ console.error('A frontend error occurred:', error.error.message);
9572
+ this.snackBar.open({
9573
+ type: 'error',
9574
+ message: this.translateService.instant('@pry.manifest.get.errorFront', { msg: error.error.message })
9575
+ });
9576
+ }
9577
+ else {
9578
+ // The backend returned an unsuccessful response code.
9579
+ if (error.code !== 200) {
9580
+ console.error(`Backend returned code ${error.status}, body was: ${JSON.stringify(error.error)}`);
9581
+ }
9582
+ if (error.code >= 400) {
9583
+ this.snackBar.open({
9584
+ type: 'error',
9585
+ message: this.translateService.instant('@pry.manifest.get.errorBack', {
9586
+ code: error.status
9587
+ })
9588
+ });
9589
+ }
9590
+ }
9591
+ return of([]);
9592
+ }));
9593
+ }
9594
+ get(id) {
9595
+ return this.store
9596
+ .select(ConfigSelectors.refUrl)
9597
+ .pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/users/me/dashboards/id/${id}/manifest`))));
9598
+ }
9599
+ save(name, manifest, visibility, id, description, image, cover) {
9600
+ return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.post(encodeURI(`${url}/users/me/dashboards`), {
9601
+ id: id === undefined || id.length === 0 ? v4() : id,
9602
+ name,
9603
+ description,
9604
+ manifest,
9605
+ image,
9606
+ visibility,
9607
+ cover,
9608
+ datasource: ManifestUtils.getDatasourcesUsedByManifest(manifest)
9609
+ })));
9610
+ }
9611
+ delete(id) {
9612
+ return this.store
9613
+ .select(ConfigSelectors.refUrl)
9614
+ .pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/users/me/dashboards/id/${id}`))));
9615
+ }
9616
+ default(id) {
9617
+ return this.store.select(ConfigSelectors.refUrl).pipe(withLatestFrom(this.store.select(DashboardSelectors.manifestsList)), mergeMap(([url, manifests]) => {
9618
+ const actual = manifests.find((manifest) => manifest.id === id);
9619
+ if (!!actual && !actual.default) {
9620
+ return this.httpClient
9621
+ .put(encodeURI(`${url}/users/me/dashboards/id/${id}/default`), {})
9622
+ .pipe(map$1(() => true));
9623
+ }
9624
+ else {
9625
+ return this.httpClient
9626
+ .delete(encodeURI(`${url}/users/me/dashboards/default`), {})
9627
+ .pipe(map$1(() => false));
9628
+ }
9629
+ }));
9630
+ }
9631
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, deps: [{ token: i1$2.HttpClient }, { token: i1.Store }, { token: PrySnackbarService }, { token: PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9632
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, providedIn: 'root' }); }
9633
+ }
9634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ManifestService, decorators: [{
9635
+ type: Injectable,
9636
+ args: [{
9637
+ providedIn: 'root'
9638
+ }]
9639
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: i1.Store }, { type: PrySnackbarService }, { type: PryI18nService }]; } });
9640
+
9626
9641
  class DefaultViewGuard {
9627
9642
  constructor(manifestService, router, store) {
9628
9643
  this.manifestService = manifestService;
@@ -9792,7 +9807,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
9792
9807
  }], ctorParameters: function () { return [{ type: i1.Store }]; } });
9793
9808
 
9794
9809
  class DashboardEffects {
9795
- constructor(dashboardInitService, actions$, store, manifestService, itemService, titleService, translateService, snackBar, router, geocodingService, refreshService, toolboxManifestService, busService, searchService) {
9810
+ constructor(dashboardInitService, actions$, store, manifestService, itemService, titleService, translateService, snackBar, router, geocodingService, refreshService, toolboxManifestService, busService, searchService, pryDialog) {
9796
9811
  this.dashboardInitService = dashboardInitService;
9797
9812
  this.actions$ = actions$;
9798
9813
  this.store = store;
@@ -9807,6 +9822,7 @@ class DashboardEffects {
9807
9822
  this.toolboxManifestService = toolboxManifestService;
9808
9823
  this.busService = busService;
9809
9824
  this.searchService = searchService;
9825
+ this.pryDialog = pryDialog;
9810
9826
  this.join$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.join), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.tenants), this.store.select(DashboardSelectors.globalManifest), this.store.select(DashboardSelectors.resultSets), this.store.select(DashboardSelectors.selectedItemIds), this.store.select(DashboardSelectors.presentation)), filter$1(([action, rank, tenants, manifest, resultSets]) => rank === 0), map$1(([action, rank, tenants, manifest, resultSets, selectedIds, presentation]) => DashboardActions.updateManifestAfterTenantJoin({
9811
9827
  tenants,
9812
9828
  manifest: {
@@ -9936,6 +9952,24 @@ class DashboardEffects {
9936
9952
  });
9937
9953
  }))), map$1(() => DashboardActions.fetchManifestsList())));
9938
9954
  this.listManifests$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchManifestsList), withLatestFrom(this.store.select(DashboardSelectors.rank)), filter$1(([action, rank]) => rank === 0 || rank === -1), mergeMap$1(([action, rank]) => this.manifestService.list().pipe(map$1((manifests) => DashboardActions.updateManifestsList({ manifests }))))));
9955
+ this.confirmManifestDeletion$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.confirmManifestDeletion), tap((action) => {
9956
+ const data = {
9957
+ title: '@pry.widget.modalTitle',
9958
+ actions: [
9959
+ {
9960
+ id: 0,
9961
+ label: '@pry.toolbox.manifest.validate',
9962
+ actions: [DashboardActions.deleteManifest({ id: action.id })]
9963
+ },
9964
+ {
9965
+ id: 1,
9966
+ label: '@pry.toolbox.manifest.close',
9967
+ color: 'secondary'
9968
+ }
9969
+ ]
9970
+ };
9971
+ this.pryDialog.open(PryDialogConfirmComponent, { data });
9972
+ })), { dispatch: false });
9939
9973
  this.deleteManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.deleteManifest), mergeMap$1((action) => this.manifestService.delete(action.id).pipe(map$1(() => DashboardActions.fetchManifestsList())))));
9940
9974
  this.fetchObjectsDetails$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchObjectsDetails), mergeMap$1((action) => merge(...action.ids.map((id) => this.itemService.get(id)))), map$1((item) => DashboardActions.updateObjectsDetails({ list: { [item.id]: item } }))));
9941
9975
  this.proximitySearch$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.proximity), withLatestFrom(this.store.select(DashboardSelectors.resultSets)), mergeMap$1(([action, resultSets]) => this.itemService.proximity(action.id).pipe(map$1((proxRs) => {
@@ -9945,13 +9979,6 @@ class DashboardEffects {
9945
9979
  });
9946
9980
  })))));
9947
9981
  this.explore$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.explore), mergeMap$1((action) => [DashboardActions.proximity({ id: action.id, targetResultSet: EXPLORE_NAMED_QUERY_ID })])));
9948
- this.searchAddress$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.searchAddressForPoint), mergeMap$1((action) => this.geocodingService.fromLatLong(action.coordinates).pipe(map$1((address) => DashboardActions.displayAddress({ address })), catchError((error) => {
9949
- this.snackBar.open({
9950
- type: 'error',
9951
- message: this.translateService.instant('@pry.context.errorSearchAddress')
9952
- });
9953
- return throwError(error);
9954
- })))));
9955
9982
  this.detailAsLoadInWidget$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.detail), map$1((action) => DashboardActions.addWidgetToPresentation({
9956
9983
  id: '',
9957
9984
  widgetType: 'detail',
@@ -10092,12 +10119,12 @@ class DashboardEffects {
10092
10119
  dashboardInitService.init();
10093
10120
  refreshService.start();
10094
10121
  }
10095
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardEffects, deps: [{ token: DashboardInitService }, { token: i1$3.Actions }, { token: i1.Store }, { token: ManifestService }, { token: ItemService }, { token: PryTitleService }, { token: PryI18nService }, { token: PrySnackbarService }, { token: i2.Router }, { token: GeocodingService }, { token: RefreshService }, { token: ToolboxManifestService }, { token: BusService }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Injectable }); }
10122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardEffects, deps: [{ token: DashboardInitService }, { token: i1$3.Actions }, { token: i1.Store }, { token: ManifestService }, { token: ItemService }, { token: PryTitleService }, { token: PryI18nService }, { token: PrySnackbarService }, { token: i2.Router }, { token: GeocodingService }, { token: RefreshService }, { token: ToolboxManifestService }, { token: BusService }, { token: SearchService }, { token: PryDialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
10096
10123
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardEffects }); }
10097
10124
  }
10098
10125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardEffects, decorators: [{
10099
10126
  type: Injectable
10100
- }], ctorParameters: function () { return [{ type: DashboardInitService }, { type: i1$3.Actions }, { type: i1.Store }, { type: ManifestService }, { type: ItemService }, { type: PryTitleService }, { type: PryI18nService }, { type: PrySnackbarService }, { type: i2.Router }, { type: GeocodingService }, { type: RefreshService }, { type: ToolboxManifestService }, { type: BusService }, { type: SearchService }]; } });
10127
+ }], ctorParameters: function () { return [{ type: DashboardInitService }, { type: i1$3.Actions }, { type: i1.Store }, { type: ManifestService }, { type: ItemService }, { type: PryTitleService }, { type: PryI18nService }, { type: PrySnackbarService }, { type: i2.Router }, { type: GeocodingService }, { type: RefreshService }, { type: ToolboxManifestService }, { type: BusService }, { type: SearchService }, { type: PryDialogService }]; } });
10101
10128
 
10102
10129
  const dashboardFeatureKey = '@pry/dashboard';
10103
10130
  const dashboardInitialState = {
@@ -10131,7 +10158,6 @@ const dashboardInitialState = {
10131
10158
  defaultDatasource: ['current'],
10132
10159
  selectedItems: [],
10133
10160
  objectDetails: {},
10134
- address: undefined,
10135
10161
  quickOrder: {}
10136
10162
  },
10137
10163
  dashboard: {
@@ -10454,14 +10480,6 @@ const internalReducer = createReducer(dashboardInitialState, on(DashboardActions
10454
10480
  }
10455
10481
  }
10456
10482
  };
10457
- }), on(DashboardActions.displayAddress, (state, action) => {
10458
- return {
10459
- ...state,
10460
- results: {
10461
- ...state.results,
10462
- address: action.address
10463
- }
10464
- };
10465
10483
  }), on(DashboardActions.setRefreshRate, (state, action) => {
10466
10484
  return {
10467
10485
  ...state,
@@ -10733,11 +10751,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
10733
10751
 
10734
10752
  class DefaultTooltipComponent extends BaseTooltipComponent {
10735
10753
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DefaultTooltipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10736
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DefaultTooltipComponent, selector: "pry-default-tooltip", usesInheritance: true, ngImport: i0, template: "<div class=\"m-tooltip__item__content\" *ngIf=\"data.item.properties; else defaultTooltip\">\n <p *ngFor=\"let property of data.item.properties\">\n <span>{{ property.key | titlecase }} :</span> {{ property.value }}\n </p>\n</div>\n<ng-template #defaultTooltip>\n <p>\n <span>{{ '@pry.widget.itemId' | i18n }} :</span> {{ data.item?.id }}\n </p>\n <p>\n <span>{{ '@pry.widget.class' | i18n }} :</span>\n {{\n data.item?.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
10754
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DefaultTooltipComponent, selector: "pry-default-tooltip", usesInheritance: true, ngImport: i0, template: "<div class=\"m-tooltip__item__content\">\n <ng-container *ngIf=\"data.item.properties; else defaultTooltip\">\n <p *ngFor=\"let property of data.item.properties\">\n <span>{{ property.key | titlecase }} :</span> {{ property.value }}\n </p>\n </ng-container>\n</div>\n<ng-template #defaultTooltip>\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span>{{ data.item.oClass | translateId : { type: 'class', output: 'name' } | async }}</span>\n </h3>\n <p>\n <span>{{ '@pry.widget.itemId' | i18n }} :</span> {{ data.item?.id }}\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
10737
10755
  }
10738
10756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DefaultTooltipComponent, decorators: [{
10739
10757
  type: Component,
10740
- args: [{ selector: 'pry-default-tooltip', template: "<div class=\"m-tooltip__item__content\" *ngIf=\"data.item.properties; else defaultTooltip\">\n <p *ngFor=\"let property of data.item.properties\">\n <span>{{ property.key | titlecase }} :</span> {{ property.value }}\n </p>\n</div>\n<ng-template #defaultTooltip>\n <p>\n <span>{{ '@pry.widget.itemId' | i18n }} :</span> {{ data.item?.id }}\n </p>\n <p>\n <span>{{ '@pry.widget.class' | i18n }} :</span>\n {{\n data.item?.oClass\n | translateId\n : {\n type: 'class',\n output: 'name'\n }\n | async\n }}\n </p>\n</ng-template>\n" }]
10758
+ args: [{ selector: 'pry-default-tooltip', template: "<div class=\"m-tooltip__item__content\">\n <ng-container *ngIf=\"data.item.properties; else defaultTooltip\">\n <p *ngFor=\"let property of data.item.properties\">\n <span>{{ property.key | titlecase }} :</span> {{ property.value }}\n </p>\n </ng-container>\n</div>\n<ng-template #defaultTooltip>\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span>{{ data.item.oClass | translateId : { type: 'class', output: 'name' } | async }}</span>\n </h3>\n <p>\n <span>{{ '@pry.widget.itemId' | i18n }} :</span> {{ data.item?.id }}\n </p>\n</ng-template>\n" }]
10741
10759
  }] });
10742
10760
 
10743
10761
  const TOOLTIP_DEFINITION = new InjectionToken('Tooltip definition');
@@ -11044,5 +11062,5 @@ function filterLoader(module, prop) {
11044
11062
  * Generated bundle index. Do not edit.
11045
11063
  */
11046
11064
 
11047
- export { AccordionComponent, AccordionItemComponent, Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, DisplayMode, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getDisplayOptions, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
11065
+ export { AccordionComponent, AccordionItemComponent, Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, DisplayMode, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestUtils, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getDisplayOptions, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
11048
11066
  //# sourceMappingURL=provoly-dashboard.mjs.map