@provoly/dashboard 1.3.7 → 1.3.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 (201) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
  2. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +47 -18
  3. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +6 -2
  4. package/admin/components/admin-fields/admin-fields.component.d.ts +4 -1
  5. package/admin/components/admin-fields/store/admin-fields.model.d.ts +1 -1
  6. package/admin/components/admin-fields/store/fields.actions.d.ts +19 -12
  7. package/admin/components/admin-fields/store/fields.effects.d.ts +16 -3
  8. package/admin/i18n/en.translations.d.ts +33 -14
  9. package/admin/i18n/fr.translations.d.ts +33 -14
  10. package/components/checkbox/checkbox.component.d.ts +4 -2
  11. package/components/data-format/data-format.pipe.d.ts +11 -1
  12. package/components/paginator/index.d.ts +5 -0
  13. package/components/paginator/paginator.component.d.ts +19 -0
  14. package/components/paginator/paginator.module.d.ts +10 -0
  15. package/components/paginator/public-api.d.ts +3 -0
  16. package/components/paginator/style/_o-pry-paginator.scss +11 -0
  17. package/components/paginator/style/css.component.d.ts +5 -0
  18. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +5 -8
  19. package/dataset/dataset.module.d.ts +1 -1
  20. package/dataset/i18n/en.translations.d.ts +0 -12
  21. package/dataset/i18n/fr.translations.d.ts +0 -12
  22. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -6
  23. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  24. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +10 -12
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +6 -5
  27. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
  28. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +142 -63
  29. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +7 -8
  30. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +15 -11
  31. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +1 -1
  32. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +6 -5
  33. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +12 -6
  34. package/esm2022/admin/i18n/en.translations.mjs +34 -15
  35. package/esm2022/admin/i18n/fr.translations.mjs +34 -15
  36. package/esm2022/components/checkbox/checkbox.component.mjs +15 -7
  37. package/esm2022/components/data-format/data-format.pipe.mjs +88 -7
  38. package/esm2022/components/paginator/paginator.component.mjs +51 -0
  39. package/esm2022/components/paginator/paginator.module.mjs +20 -0
  40. package/esm2022/components/paginator/provoly-dashboard-components-paginator.mjs +5 -0
  41. package/esm2022/components/paginator/public-api.mjs +4 -0
  42. package/esm2022/components/paginator/style/css.component.mjs +11 -0
  43. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +16 -26
  44. package/esm2022/dataset/dataset.module.mjs +2 -5
  45. package/esm2022/dataset/i18n/en.translations.mjs +1 -13
  46. package/esm2022/dataset/i18n/fr.translations.mjs +2 -14
  47. package/esm2022/import/components/form/import-form.component.mjs +174 -0
  48. package/esm2022/import/components/list/import-list.component.mjs +73 -0
  49. package/esm2022/import/components/version-modal/version-modal.component.mjs +26 -0
  50. package/esm2022/import/i18n/en.translations.mjs +16 -2
  51. package/esm2022/import/i18n/fr.translations.mjs +16 -2
  52. package/esm2022/import/import-routing.module.mjs +3 -3
  53. package/esm2022/import/import.module.mjs +25 -10
  54. package/esm2022/import/public-api.mjs +4 -2
  55. package/esm2022/import/style/css.component.mjs +2 -2
  56. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  57. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +8 -8
  58. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +48 -0
  59. package/esm2022/lib/core/components/{modal-status/modal-status.module.mjs → status-modal/status-modal.module.mjs} +9 -9
  60. package/esm2022/lib/core/core.module.mjs +5 -5
  61. package/esm2022/lib/core/i18n/en.translations.mjs +39 -6
  62. package/esm2022/lib/core/i18n/fr.translations.mjs +41 -6
  63. package/esm2022/lib/core/model/admin-api.model.mjs +5 -69
  64. package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
  65. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
  66. package/esm2022/lib/core/public-api.mjs +3 -3
  67. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  68. package/esm2022/lib/core/store/class/class.selectors.mjs +2 -2
  69. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +3 -3
  70. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +7 -4
  71. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  72. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +5 -3
  73. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -11
  74. package/esm2022/lib/core/store/data-source/data-source.service.mjs +23 -5
  75. package/esm2022/lib/core/store/field/field.interface.mjs +1 -3
  76. package/esm2022/lib/core/store/field/field.service.mjs +7 -2
  77. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  78. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -11
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +2 -2
  80. package/esm2022/lib/dashboard/item-utils.mjs +5 -5
  81. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -4
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -19
  83. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -26
  84. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  85. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -2
  86. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
  87. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  88. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -5
  89. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  90. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +5 -6
  91. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  92. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  93. package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
  94. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +17 -19
  95. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -4
  96. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +54 -37
  97. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -16
  98. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +9 -9
  99. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
  100. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +30 -32
  101. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +2 -5
  102. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
  103. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +6 -10
  104. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +18 -14
  105. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +9 -5
  106. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  107. package/esm2022/widgets/widget-table/public-api.mjs +1 -2
  108. package/esm2022/widgets/widget-table/widget-table.module.mjs +12 -7
  109. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -15
  110. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +8 -4
  111. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  112. package/fesm2022/provoly-dashboard-admin.mjs +249 -126
  113. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  114. package/fesm2022/provoly-dashboard-components-checkbox.mjs +14 -6
  115. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  116. package/fesm2022/provoly-dashboard-components-data-format.mjs +88 -7
  117. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
  118. package/fesm2022/provoly-dashboard-components-paginator.mjs +82 -0
  119. package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -0
  120. package/fesm2022/provoly-dashboard-dataset.mjs +21 -58
  121. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  122. package/fesm2022/provoly-dashboard-import.mjs +249 -116
  123. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  124. package/fesm2022/provoly-dashboard-search.mjs +15 -16
  125. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  126. package/fesm2022/provoly-dashboard-toolbox.mjs +4 -4
  127. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  128. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +20 -21
  129. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  130. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +53 -36
  131. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  132. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +3 -15
  133. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  134. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +9 -9
  135. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  136. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +4 -4
  137. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  138. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +36 -45
  139. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  140. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -38
  141. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  142. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +16 -17
  143. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  144. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  145. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  146. package/fesm2022/provoly-dashboard.mjs +286 -338
  147. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  148. package/import/components/{import.component.d.ts → form/import-form.component.d.ts} +8 -4
  149. package/import/components/list/import-list.component.d.ts +34 -0
  150. package/import/components/version-modal/version-modal.component.d.ts +13 -0
  151. package/import/i18n/en.translations.d.ts +14 -0
  152. package/import/i18n/fr.translations.d.ts +14 -0
  153. package/import/import.module.d.ts +13 -10
  154. package/import/public-api.d.ts +3 -1
  155. package/import/style/_o-import.scss +50 -6
  156. package/lib/core/components/share/legacy-share/share.component.d.ts +1 -1
  157. package/lib/core/components/{modal-status/modal-status.component.d.ts → status-modal/status-modal.component.d.ts} +10 -6
  158. package/lib/core/components/{modal-status/modal-status.module.d.ts → status-modal/status-modal.module.d.ts} +5 -5
  159. package/lib/core/core.module.d.ts +2 -2
  160. package/lib/core/i18n/en.translations.d.ts +33 -0
  161. package/lib/core/i18n/fr.translations.d.ts +35 -0
  162. package/lib/core/model/admin-api.model.d.ts +6 -8
  163. package/lib/core/model/widget-analytic-manifest.interface.d.ts +0 -3
  164. package/lib/core/model/widget-table-manifest.interface.d.ts +2 -0
  165. package/lib/core/public-api.d.ts +2 -2
  166. package/lib/core/store/class/class.interface.d.ts +2 -1
  167. package/lib/core/store/class/class.selectors.d.ts +10 -10
  168. package/lib/core/store/data-source/data-source.actions.d.ts +21 -1
  169. package/lib/core/store/data-source/data-source.effects.d.ts +11 -1
  170. package/lib/core/store/data-source/data-source.model.d.ts +3 -2
  171. package/lib/core/store/data-source/data-source.reducer.d.ts +1 -0
  172. package/lib/core/store/data-source/data-source.selectors.d.ts +3 -3
  173. package/lib/core/store/data-source/data-source.service.d.ts +11 -2
  174. package/lib/core/store/field/field.interface.d.ts +8 -4
  175. package/lib/core/store/field/field.service.d.ts +1 -0
  176. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +1 -1
  177. package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +3 -7
  178. package/lib/dashboard/item-utils.d.ts +1 -1
  179. package/lib/dashboard/store/dashboard.actions.d.ts +0 -11
  180. package/lib/dashboard/store/dashboard.effects.d.ts +0 -3
  181. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +2 -1
  182. package/package.json +18 -12
  183. package/styles/base/_utils.scss +9 -1
  184. package/styles/components/_a-btn.scss +7 -0
  185. package/styles/components/_a-table.scss +2 -16
  186. package/styles/layout/_o-workspace.scss +1 -0
  187. package/tooltips/attribute/attribute-tooltip.component.d.ts +6 -6
  188. package/tooltips/attribute/attribute-tooltip.module.d.ts +2 -1
  189. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +16 -3
  190. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +2 -3
  191. package/widgets/widget-detail/component/widget-detail.component.d.ts +1 -4
  192. package/widgets/widget-table/component/widget-table.component.d.ts +1 -0
  193. package/widgets/widget-table/expand-value/expand-value.component.d.ts +4 -2
  194. package/widgets/widget-table/public-api.d.ts +0 -1
  195. package/widgets/widget-table/widget-table.module.d.ts +9 -8
  196. package/widgets/widget-tile/component/widget-tile.component.d.ts +1 -0
  197. package/widgets/widget-tile/widget-tile.module.d.ts +2 -1
  198. package/esm2022/import/components/import.component.mjs +0 -167
  199. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +0 -45
  200. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +0 -24
  201. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +0 -10
@@ -5,7 +5,7 @@ import { CommonModule, AsyncPipe, DOCUMENT } from '@angular/common';
5
5
  import * as i1$2 from '@angular/common/http';
6
6
  import { HttpHeaders, HttpUrlEncodingCodec, HttpParams, HttpClientModule } from '@angular/common/http';
7
7
  import * as i0 from '@angular/core';
8
- import { InjectionToken, Injectable, Directive, Optional, Inject, Input, Component, Pipe, ChangeDetectionStrategy, HostBinding, NgModule, EventEmitter, Output, TemplateRef, ViewChild, Injector, SecurityContext, ContentChildren, forwardRef, HostListener, ViewContainerRef, ViewChildren, ViewEncapsulation, createNgModule } from '@angular/core';
8
+ import { InjectionToken, Injectable, Directive, Optional, Inject, Input, Component, Pipe, ChangeDetectionStrategy, HostBinding, NgModule, Injector, EventEmitter, Output, TemplateRef, ViewChild, SecurityContext, ContentChildren, forwardRef, HostListener, ViewContainerRef, ViewChildren, ViewEncapsulation, createNgModule } from '@angular/core';
9
9
  import * as i3 from '@angular/router';
10
10
  import { NavigationEnd, RouterModule } from '@angular/router';
11
11
  import * as i1$3 from '@ngrx/effects';
@@ -14,7 +14,7 @@ import * as i1 from '@ngrx/store';
14
14
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
15
15
  import { of, Subscription, filter, combineLatest, debounceTime, BehaviorSubject, map, Subject, windowTime, switchMap, mergeMap, from as from$1, forkJoin, catchError as catchError$1, throwError, tap as tap$1, withLatestFrom as withLatestFrom$1, share, merge, ReplaySubject, combineLatestWith, distinctUntilChanged as distinctUntilChanged$1, startWith, delay, fromEvent, auditTime, interval } from 'rxjs';
16
16
  import * as i3$1 from '@angular/platform-browser';
17
- import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
17
+ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
18
18
  import * as i3$2 from '@angular/cdk/a11y';
19
19
  import { A11yModule } from '@angular/cdk/a11y';
20
20
  import equal from 'fast-deep-equal/es6';
@@ -313,9 +313,9 @@ const enTranslations$1 = {
313
313
  detail: 'Detail',
314
314
  chart: 'Chart',
315
315
  resultSet: 'Named Queries',
316
- rename: 'Save my presentation',
316
+ rename: 'Save as ({{nbPages}})',
317
317
  restore: 'Restore closed pages',
318
- save: 'Save',
318
+ save: 'Save ({{nbPages}})',
319
319
  drag: 'Restitution...',
320
320
  dragIndication: 'Insert a',
321
321
  barchart: 'Bar',
@@ -440,7 +440,9 @@ const enTranslations$1 = {
440
440
  back: 'Back',
441
441
  filterByType: 'Filter by type',
442
442
  editMetadata: 'Edit metadata',
443
- addMetadata: 'Add metadata'
443
+ addMetadata: 'Add metadata',
444
+ yes: 'Yes',
445
+ no: 'No'
444
446
  },
445
447
  snack: {
446
448
  default: 'Vega encountered an error using your data and settings.',
@@ -494,12 +496,12 @@ const enTranslations$1 = {
494
496
  iconLabel: {
495
497
  PRIVATE: 'Private',
496
498
  GROUPS: 'Shared to some user groups',
497
- PUBLIC: 'Public',
499
+ PUBLIC: 'Public'
498
500
  },
499
501
  radioLabel: {
500
502
  PRIVATE: 'Private',
501
503
  GROUPS: 'Share to selected user groups',
502
- PUBLIC: 'Public',
504
+ PUBLIC: 'Public'
503
505
  },
504
506
  type: 'Visibility',
505
507
  users: 'Authorized users',
@@ -609,6 +611,37 @@ const enTranslations$1 = {
609
611
  },
610
612
  a11y: {
611
613
  modalStatusTableDescr: 'Dataset version warnings and errors'
614
+ },
615
+ dataset: {
616
+ version: {
617
+ title: 'Title',
618
+ name: 'Dataset name',
619
+ productionDate: 'Production date',
620
+ importDate: 'Import date',
621
+ number: 'Version number',
622
+ producer: 'Data producer',
623
+ additionalInformation: 'Version information',
624
+ fileName: 'Source file name',
625
+ notProvided: 'Not provided',
626
+ state: {
627
+ INDEXING: 'Loading',
628
+ LOADING: 'Loading',
629
+ INACTIVE: 'Invalid',
630
+ ERROR: 'Error',
631
+ ACTIVE: 'Available',
632
+ DELETING: 'Deleting',
633
+ currentlyActive: 'Active'
634
+ },
635
+ stateFilter: {
636
+ INDEXING: 'Loading (indexing)',
637
+ LOADING: 'Loading',
638
+ INACTIVE: 'Invalid',
639
+ ERROR: 'Error',
640
+ ACTIVE: 'Available',
641
+ DELETING: 'Deleting',
642
+ DELETE_ERROR: 'Deletion error'
643
+ }
644
+ }
612
645
  }
613
646
  };
614
647
 
@@ -735,9 +768,9 @@ const frTranslations$1 = {
735
768
  detail: 'Détail',
736
769
  chart: 'Graphique',
737
770
  resultSet: 'Recherches nommées',
738
- rename: 'Enregistrer sous',
771
+ rename: 'Enregistrer sous ({{nbPages}})',
739
772
  restore: 'Restaurer les pages',
740
- save: 'Enregistrer',
773
+ save: 'Enregistrer ({{nbPages}})',
741
774
  drag: 'Restitution...',
742
775
  dragIndication: 'Insérer un',
743
776
  barchart: 'Barres',
@@ -864,7 +897,9 @@ const frTranslations$1 = {
864
897
  back: 'Retour',
865
898
  filterByType: 'Filtrer par type',
866
899
  editMetadata: 'Modifier la métadonnée',
867
- addMetadata: 'Ajouter la métadonnée'
900
+ addMetadata: 'Ajouter la métadonnée',
901
+ yes: 'Oui',
902
+ no: 'Non'
868
903
  },
869
904
  snack: {
870
905
  default: 'Vega a rencontré une erreur en utilisant vos données et paramétrage.',
@@ -918,12 +953,12 @@ const frTranslations$1 = {
918
953
  iconLabel: {
919
954
  PRIVATE: 'Privé',
920
955
  GROUPS: "Partagé aux groupes d'utilisateurs",
921
- PUBLIC: 'Public',
956
+ PUBLIC: 'Public'
922
957
  },
923
958
  radioLabel: {
924
959
  PRIVATE: 'Privé',
925
960
  GROUPS: 'Restreint',
926
- PUBLIC: 'Public',
961
+ PUBLIC: 'Public'
927
962
  },
928
963
  type: 'Visibilité',
929
964
  users: 'Utilisateurs autorisés',
@@ -1032,6 +1067,39 @@ const frTranslations$1 = {
1032
1067
  },
1033
1068
  a11y: {
1034
1069
  modalStatusTableDescr: 'Les warnings et les erreurs de la version de dataset'
1070
+ },
1071
+ dataset: {
1072
+ version: {
1073
+ title: 'Intitulé',
1074
+ name: 'Nom de la source de données',
1075
+ productionDate: 'Date de production',
1076
+ importDate: "Date d'import",
1077
+ number: 'Numéro de version',
1078
+ producer: 'Producteur de données',
1079
+ additionalInformation: 'Informations de la version',
1080
+ fileName: 'Nom du fichier source',
1081
+ notProvided: 'Non renseigné',
1082
+ stateTitle: 'Statut',
1083
+ state: {
1084
+ INDEXING: 'En chargement',
1085
+ LOADING: 'En chargement',
1086
+ INACTIVE: 'Invalide',
1087
+ ERROR: 'En erreur',
1088
+ ACTIVE: 'Disponible',
1089
+ DELETING: 'En cours de suppression',
1090
+ DELETE_ERROR: 'Erreur de suppression',
1091
+ currentlyActive: 'Actif'
1092
+ },
1093
+ stateFilter: {
1094
+ INDEXING: 'En chargement (indexing)',
1095
+ LOADING: 'En chargement (loading)',
1096
+ INACTIVE: 'Invalide',
1097
+ ERROR: 'En erreur',
1098
+ ACTIVE: 'Disponible',
1099
+ DELETING: 'En cours de suppression',
1100
+ DELETE_ERROR: 'Erreur de suppression'
1101
+ }
1102
+ }
1035
1103
  }
1036
1104
  }
1037
1105
  };
@@ -1418,18 +1486,6 @@ const enTranslations = {
1418
1486
  since_day: 'Last update :',
1419
1487
  noActiveVersion: 'No active version',
1420
1488
  version: {
1421
- title: 'Title',
1422
- productionDate: 'Production date',
1423
- producer: 'Data producer',
1424
- additionalInformation: 'Version information',
1425
- notProvided: 'Not provided',
1426
- INDEXING: 'Loading',
1427
- LOADING: 'Loading',
1428
- INACTIVE: 'Invalid',
1429
- ERROR: 'Error',
1430
- ACTIVE: 'Available',
1431
- DELETING: 'Deleting',
1432
- currentlyActive: 'Active',
1433
1489
  delete: {
1434
1490
  title: 'Delete version',
1435
1491
  message: 'Deleting this version will remove associated data. Are you sure you want to delete it?'
@@ -1514,18 +1570,6 @@ const frTranslations = {
1514
1570
  since_day: 'Dernière mise à jour :',
1515
1571
  noActiveVersion: 'Aucune version active',
1516
1572
  version: {
1517
- title: 'Intitulé',
1518
- productionDate: 'Date de production',
1519
- producer: 'Producteur de données',
1520
- additionalInformation: 'Informations de la version',
1521
- notProvided: 'Non renseigné',
1522
- INDEXING: 'En chargement',
1523
- LOADING: 'En chargement',
1524
- INACTIVE: 'Invalide',
1525
- ERROR: 'En erreur',
1526
- ACTIVE: 'Disponible',
1527
- DELETING: 'En cours de suppression',
1528
- currentlyActive: 'Actif',
1529
1573
  delete: {
1530
1574
  title: 'Supprimer une version',
1531
1575
  message: 'La suppression de cette version entraînera la suppression des données associées. Confirmez-vous la suppression ?'
@@ -1561,7 +1605,7 @@ const frTranslations = {
1561
1605
  WARNING: 'Warning'
1562
1606
  },
1563
1607
  code: {
1564
- UNRECOGNIZED: 'Attribut{{plural}} {{name}} non reconnu {{plural}}',
1608
+ UNRECOGNIZED: 'Attribut{{plural}} {{name}} non reconnu{{plural}}',
1565
1609
  FORMAT: "Format d'attribut {{name}} incorrect",
1566
1610
  STORAGE: "Erreur d'insertion pour l'élément {{recordId}}",
1567
1611
  NO_VALUES: 'Pas de valeur pour la ligne {{recordId}}',
@@ -1617,7 +1661,7 @@ const DataSourceActions = {
1617
1661
  loadDataset: createAction('[Dataset] load datasets'),
1618
1662
  loadedDataset: createAction('[Dataset] loaded datasets', props()),
1619
1663
  failure: createAction('[Dataset] failure effect Dataset', props()),
1620
- listVersions: createAction('[Dataset] Get Dataset versions'),
1664
+ listVersions: createAction('[Dataset] Get Dataset versions', props()),
1621
1665
  listVersionsSuccess: createAction('[Dataset] Get Dataset versions Success', props()),
1622
1666
  listVersionsFailure: createAction('[Dataset] Get Dataset versions Failure'),
1623
1667
  listVersionsByDatasetId: createAction('[Dataset] Get Dataset Versions by Dataset Id', props()),
@@ -1640,7 +1684,7 @@ const DataSourceActions = {
1640
1684
  deleteVersion: createAction('[Dataset] Delete datasetVersion', props()),
1641
1685
  deleteVersionFailure: createAction('[Dataset] Delete datasetVersion failure', props()),
1642
1686
  getCategories: createAction('[Dataset] Get Categories'),
1643
- getCategoriesSuccess: createAction('[Dataset] Get Categories Success', props()),
1687
+ getCategoriesSuccess: createAction('[Dataset] Get Categories Success', props())
1644
1688
  }
1645
1689
  };
1646
1690
 
@@ -1654,6 +1698,7 @@ const initialDataSourceState = {
1654
1698
  isRename: false,
1655
1699
  datasets: [],
1656
1700
  datasetVersions: [],
1701
+ totalVersionCount: 0,
1657
1702
  selectedDatasetVersion: null,
1658
1703
  previews: [],
1659
1704
  categories: []
@@ -1694,7 +1739,8 @@ const dataSourceReducer = createReducer(initialDataSourceState, on(DataSourceAct
1694
1739
  })), on(DataSourceActions.dataset.listVersionsSuccess, (state, action) => ({
1695
1740
  ...state,
1696
1741
  loading: false,
1697
- datasetVersions: action.versions
1742
+ datasetVersions: action.versions,
1743
+ totalVersionCount: action.totalVersionCount
1698
1744
  })), on(DataSourceActions.dataset.listVersionsFailure, (state) => ({
1699
1745
  ...state,
1700
1746
  loading: false
@@ -1725,7 +1771,7 @@ const dataSourceReducer = createReducer(initialDataSourceState, on(DataSourceAct
1725
1771
  loading: false
1726
1772
  })), on(DataSourceActions.dataset.updateVersionList, (state, action) => ({
1727
1773
  ...state,
1728
- datasetVersions: [...state.datasetVersions.filter((version) => version.id === action.id), ...action.versions]
1774
+ datasetVersions: action.versions
1729
1775
  })), on(DataSourceActions.dataset.previews.getById, (state) => ({
1730
1776
  ...state,
1731
1777
  loading: true
@@ -1831,15 +1877,7 @@ const isLoading = createSelector(selectFeature, (state) => state.isLoading);
1831
1877
  const getDataSources = createSelector(getAllNamedQuery, datasets, (nqs, dsd) => [...nqs, ...dsd]);
1832
1878
  const getDataSourcesSorted = createSelector(getAllNamedQuery, datasets, (nqs, dsd) => [...nqs, ...dsd].sort((nq1, nq2) => nq1.name.toLowerCase().localeCompare(nq2.name.toLowerCase())));
1833
1879
  const datasetVersions = createSelector(selectFeature, (state) => state?.datasetVersions ?? []);
1834
- const memoizeDatasetVersions = {};
1835
- const matchingDatasetVersions = (datasetId) => {
1836
- if (!memoizeDatasetVersions[datasetId]) {
1837
- memoizeDatasetVersions[datasetId] = createSelector(datasetVersions, (datasetVersions) => {
1838
- return datasetVersions.filter((datasetVersion) => datasetVersion.dataset === datasetId);
1839
- });
1840
- }
1841
- return memoizeDatasetVersions[datasetId];
1842
- };
1880
+ const totalVersionCount = createSelector(selectFeature, (state) => state.totalVersionCount);
1843
1881
  const datasetPreviews = createSelector(selectFeature, (state) => state?.previews ?? []);
1844
1882
  const categories$1 = createSelector(selectFeature, (state) => state.categories);
1845
1883
  const DataSourceSelectors = {
@@ -1858,66 +1896,11 @@ const DataSourceSelectors = {
1858
1896
  getDataSources,
1859
1897
  getDataSourcesSorted,
1860
1898
  datasetVersions,
1861
- matchingDatasetVersions,
1899
+ totalVersionCount,
1862
1900
  datasetPreviews,
1863
1901
  categories: categories$1
1864
1902
  };
1865
1903
 
1866
- class PryModalStatusComponent {
1867
- set version(version) {
1868
- this._version = version;
1869
- if (!!version) {
1870
- this.store.dispatch(DataSourceActions.dataset.previews.getById({ id: version.id }));
1871
- this.datasetPreviews$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => previews
1872
- .map((preview) => preview.messages)
1873
- .flat()
1874
- .map((preview) => ({
1875
- ...preview,
1876
- name: (preview.name ?? '').split(',').join(', ')
1877
- }))));
1878
- this.messageCount$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => {
1879
- return previews.map((preview) => preview.count).reduce((p, c) => p + c, 0);
1880
- }));
1881
- }
1882
- }
1883
- constructor(store) {
1884
- this.store = store;
1885
- this.gotoConsult = new EventEmitter();
1886
- }
1887
- goBack() {
1888
- this.gotoConsult.emit(this.version);
1889
- }
1890
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
1891
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryModalStatusComponent, selector: "pry-modal-status", inputs: { version: "version" }, outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper__backdrop\" (click)=\"goBack()\">\n <div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\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 <table class=\"a-table\" [attr.aria-describedby]=\"'@pry.a11y.modalStatusTableDescr' | i18n\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n\n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.SlicePipe, name: "slice" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
1892
- }
1893
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusComponent, decorators: [{
1894
- type: Component,
1895
- args: [{ selector: 'pry-modal-status', template: "<div class=\"o-modal-wrapper__backdrop\" (click)=\"goBack()\">\n <div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"goBack()\">\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 <table class=\"a-table\" [attr.aria-describedby]=\"'@pry.a11y.modalStatusTableDescr' | i18n\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n\n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n" }]
1896
- }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { gotoConsult: [{
1897
- type: Output
1898
- }], version: [{
1899
- type: Input
1900
- }] } });
1901
-
1902
- class PryModalStatusModule {
1903
- constructor(pryTranslateService) {
1904
- this.pryTranslateService = pryTranslateService;
1905
- this.pryTranslateService.addLangObject('fr', 'dataset', frTranslations);
1906
- this.pryTranslateService.addLangObject('en', 'dataset', enTranslations);
1907
- }
1908
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusModule, deps: [{ token: PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
1909
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusModule, declarations: [PryModalStatusComponent], imports: [CommonModule, PryIconModule, PryI18nModule], exports: [PryModalStatusComponent] }); }
1910
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusModule, imports: [CommonModule, PryIconModule, PryI18nModule] }); }
1911
- }
1912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryModalStatusModule, decorators: [{
1913
- type: NgModule,
1914
- args: [{
1915
- imports: [CommonModule, PryIconModule, PryI18nModule],
1916
- declarations: [PryModalStatusComponent],
1917
- exports: [PryModalStatusComponent]
1918
- }]
1919
- }], ctorParameters: () => [{ type: PryI18nService }] });
1920
-
1921
1904
  const DEFAULT_SEARCH_LIMIT_NUMBER = 200;
1922
1905
  const ConfigActions = {
1923
1906
  defineUrls: createAction('[Config] (bus) defining urls', props()),
@@ -1955,6 +1938,139 @@ const ConfigActions = {
1955
1938
  defineLimits: createAction('[Config] defining limits', props())
1956
1939
  };
1957
1940
 
1941
+ class PryDialogRef {
1942
+ constructor(overlayRef) {
1943
+ this.overlayRef = overlayRef;
1944
+ this.closeValue = new Subject();
1945
+ }
1946
+ close(value) {
1947
+ if (value) {
1948
+ this.closeValue.next(value);
1949
+ }
1950
+ this.closeValue.complete();
1951
+ this.overlayRef.dispose();
1952
+ }
1953
+ }
1954
+
1955
+ const DEFAULT_CONFIG = {
1956
+ hasBackdrop: true,
1957
+ panelClass: ['pry-dialog-container'],
1958
+ backdropClass: 'backdrop'
1959
+ };
1960
+ const PRY_DIALOG_DATA = new InjectionToken('PRY_DIALOG_DATA');
1961
+ class PryDialogService {
1962
+ constructor(injector, overlay, store) {
1963
+ this.injector = injector;
1964
+ this.overlay = overlay;
1965
+ this.store = store;
1966
+ }
1967
+ open(component, config = {}, additionalBehaviorAtClose) {
1968
+ const modalConfig = { ...DEFAULT_CONFIG, ...config };
1969
+ const overlayRef = this.createOverlay(modalConfig, component, additionalBehaviorAtClose);
1970
+ const dialogRef = new PryDialogRef(overlayRef);
1971
+ dialogRef.component = this.attachModalContainer(overlayRef, modalConfig, dialogRef, component);
1972
+ this.store.dispatch(ConfigActions.addingOverlay({ id: component.name }));
1973
+ return dialogRef;
1974
+ }
1975
+ attachModalContainer(overlayRef, config, dialogRef, component) {
1976
+ const injector = this.createInjector(dialogRef, config);
1977
+ const containerPortal = new ComponentPortal(component, null, injector);
1978
+ const containerRef = overlayRef.attach(containerPortal);
1979
+ return containerRef.instance;
1980
+ }
1981
+ createInjector(dialogRef, config) {
1982
+ const providers = [
1983
+ { provide: PryDialogRef, useValue: dialogRef },
1984
+ { provide: PRY_DIALOG_DATA, useValue: config.data }
1985
+ ];
1986
+ return Injector.create({ parent: this.injector, providers });
1987
+ }
1988
+ getOverlayConfig(config) {
1989
+ const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();
1990
+ return new OverlayConfig({
1991
+ hasBackdrop: config.hasBackdrop,
1992
+ backdropClass: config.backdropClass,
1993
+ panelClass: config.panelClass,
1994
+ scrollStrategy: this.overlay.scrollStrategies.block(),
1995
+ positionStrategy
1996
+ });
1997
+ }
1998
+ createOverlay(config, component, additionalBehaviorAtClose) {
1999
+ const overlayConfig = config.overlayConfig ?? this.getOverlayConfig(config);
2000
+ const overlay = this.overlay.create(overlayConfig);
2001
+ overlay.backdropClick().subscribe(() => {
2002
+ overlay.dispose();
2003
+ if (!!additionalBehaviorAtClose) {
2004
+ additionalBehaviorAtClose();
2005
+ }
2006
+ this.store.dispatch(ConfigActions.closeOverlay({ id: component.name }));
2007
+ });
2008
+ return overlay;
2009
+ }
2010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, deps: [{ token: i0.Injector }, { token: i2.Overlay }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2011
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, providedIn: 'root' }); }
2012
+ }
2013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, decorators: [{
2014
+ type: Injectable,
2015
+ args: [{ providedIn: 'root' }]
2016
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i2.Overlay }, { type: i1.Store }] });
2017
+
2018
+ class PryStatusModalComponent {
2019
+ constructor(store, dialogRef, data) {
2020
+ this.store = store;
2021
+ this.dialogRef = dialogRef;
2022
+ this.data = data;
2023
+ this.gotoConsult = new EventEmitter();
2024
+ this._version = data.version;
2025
+ if (!!this._version) {
2026
+ this.store.dispatch(DataSourceActions.dataset.previews.getById({ id: this._version.id }));
2027
+ this.datasetPreviews$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => previews
2028
+ .map((preview) => preview.messages)
2029
+ .flat()
2030
+ .map((preview) => ({
2031
+ ...preview,
2032
+ name: (preview.name ?? '').split(',').join(', ')
2033
+ }))));
2034
+ this.messageCount$ = this.store.select(DataSourceSelectors.datasetPreviews).pipe(map((previews) => {
2035
+ return previews.map((preview) => preview.count).reduce((p, c) => p + c, 0);
2036
+ }));
2037
+ }
2038
+ }
2039
+ close() {
2040
+ this.dialogRef.close();
2041
+ }
2042
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalComponent, deps: [{ token: i1.Store }, { token: PryDialogRef }, { token: PRY_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
2043
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryStatusModalComponent, selector: "pry-status-modal", outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper__backdrop\" (click)=\"close()\">\n <div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"close()\">\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 <table class=\"a-table\" [attr.aria-describedby]=\"'@pry.a11y.modalStatusTableDescr' | i18n\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n\n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.SlicePipe, name: "slice" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
2044
+ }
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalComponent, decorators: [{
2046
+ type: Component,
2047
+ args: [{ selector: 'pry-status-modal', template: "<div class=\"o-modal-wrapper__backdrop\" (click)=\"close()\">\n <div class=\"o-modal-wrapper -extra-large\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{\n '@pry.dataset.error.modalTitle.' +\n (_version?.state !== 'ERROR' && _version?.hasWarnings ? 'WARNING' : 'ERROR') | i18n\n }}\n ({{ messageCount$ | async }})\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"close()\">\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 <table class=\"a-table\" [attr.aria-describedby]=\"'@pry.a11y.modalStatusTableDescr' | i18n\">\n <thead>\n <tr>\n <th>{{ '@pry.dataset.error.type' | i18n }}</th>\n <th>{{ '@pry.dataset.error.elements' | i18n }}</th>\n <th>{{ '@pry.dataset.error.message' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let preview of datasetPreviews$ | async | slice : 0 : 5\">\n <td>\n {{ '@pry.dataset.error.level.' + preview.level | i18n }}\n </td>\n <td>\n {{ preview.recordId }}\n </td>\n <td>\n {{\n '@pry.dataset.error.code.' + preview.extractMessageCode\n | i18n\n : { plural: preview.name.includes(',') ? 's' : '', name: preview.name, recordId: preview.recordId }\n }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n" }]
2048
+ }], ctorParameters: () => [{ type: i1.Store }, { type: PryDialogRef }, { type: undefined, decorators: [{
2049
+ type: Inject,
2050
+ args: [PRY_DIALOG_DATA]
2051
+ }] }], propDecorators: { gotoConsult: [{
2052
+ type: Output
2053
+ }] } });
2054
+
2055
+ class PryStatusModalModule {
2056
+ constructor(pryTranslateService) {
2057
+ this.pryTranslateService = pryTranslateService;
2058
+ this.pryTranslateService.addLangObject('fr', 'dataset', frTranslations);
2059
+ this.pryTranslateService.addLangObject('en', 'dataset', enTranslations);
2060
+ }
2061
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalModule, deps: [{ token: PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2062
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalModule, declarations: [PryStatusModalComponent], imports: [CommonModule, PryIconModule, PryI18nModule], exports: [PryStatusModalComponent] }); }
2063
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalModule, imports: [CommonModule, PryIconModule, PryI18nModule] }); }
2064
+ }
2065
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryStatusModalModule, decorators: [{
2066
+ type: NgModule,
2067
+ args: [{
2068
+ imports: [CommonModule, PryIconModule, PryI18nModule],
2069
+ declarations: [PryStatusModalComponent],
2070
+ exports: [PryStatusModalComponent]
2071
+ }]
2072
+ }], ctorParameters: () => [{ type: PryI18nService }] });
2073
+
1958
2074
  var VegaType;
1959
2075
  (function (VegaType) {
1960
2076
  VegaType["ORDINAL"] = "ordinal";
@@ -2349,83 +2465,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
2349
2465
  args: ['template', { read: TemplateRef }]
2350
2466
  }] } });
2351
2467
 
2352
- class PryDialogRef {
2353
- constructor(overlayRef) {
2354
- this.overlayRef = overlayRef;
2355
- this.closeValue = new Subject();
2356
- }
2357
- close(value) {
2358
- if (value) {
2359
- this.closeValue.next(value);
2360
- }
2361
- this.closeValue.complete();
2362
- this.overlayRef.dispose();
2363
- }
2364
- }
2365
-
2366
- const DEFAULT_CONFIG = {
2367
- hasBackdrop: true,
2368
- panelClass: ['pry-dialog-container'],
2369
- backdropClass: 'backdrop'
2370
- };
2371
- const PRY_DIALOG_DATA = new InjectionToken('PRY_DIALOG_DATA');
2372
- class PryDialogService {
2373
- constructor(injector, overlay, store) {
2374
- this.injector = injector;
2375
- this.overlay = overlay;
2376
- this.store = store;
2377
- }
2378
- open(component, config = {}, additionalBehaviorAtClose) {
2379
- const modalConfig = { ...DEFAULT_CONFIG, ...config };
2380
- const overlayRef = this.createOverlay(modalConfig, component, additionalBehaviorAtClose);
2381
- const dialogRef = new PryDialogRef(overlayRef);
2382
- dialogRef.component = this.attachModalContainer(overlayRef, modalConfig, dialogRef, component);
2383
- this.store.dispatch(ConfigActions.addingOverlay({ id: component.name }));
2384
- return dialogRef;
2385
- }
2386
- attachModalContainer(overlayRef, config, dialogRef, component) {
2387
- const injector = this.createInjector(dialogRef, config);
2388
- const containerPortal = new ComponentPortal(component, null, injector);
2389
- const containerRef = overlayRef.attach(containerPortal);
2390
- return containerRef.instance;
2391
- }
2392
- createInjector(dialogRef, config) {
2393
- const providers = [
2394
- { provide: PryDialogRef, useValue: dialogRef },
2395
- { provide: PRY_DIALOG_DATA, useValue: config.data }
2396
- ];
2397
- return Injector.create({ parent: this.injector, providers });
2398
- }
2399
- getOverlayConfig(config) {
2400
- const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();
2401
- return new OverlayConfig({
2402
- hasBackdrop: config.hasBackdrop,
2403
- backdropClass: config.backdropClass,
2404
- panelClass: config.panelClass,
2405
- scrollStrategy: this.overlay.scrollStrategies.block(),
2406
- positionStrategy
2407
- });
2408
- }
2409
- createOverlay(config, component, additionalBehaviorAtClose) {
2410
- const overlayConfig = config.overlayConfig ?? this.getOverlayConfig(config);
2411
- const overlay = this.overlay.create(overlayConfig);
2412
- overlay.backdropClick().subscribe(() => {
2413
- overlay.dispose();
2414
- if (!!additionalBehaviorAtClose) {
2415
- additionalBehaviorAtClose();
2416
- }
2417
- this.store.dispatch(ConfigActions.closeOverlay({ id: component.name }));
2418
- });
2419
- return overlay;
2420
- }
2421
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, deps: [{ token: i0.Injector }, { token: i2.Overlay }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2422
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, providedIn: 'root' }); }
2423
- }
2424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDialogService, decorators: [{
2425
- type: Injectable,
2426
- args: [{ providedIn: 'root' }]
2427
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i2.Overlay }, { type: i1.Store }] });
2428
-
2429
2468
  class PryDialogConfirmComponent {
2430
2469
  constructor(dialog, data, store) {
2431
2470
  this.dialog = dialog;
@@ -3019,7 +3058,7 @@ const classById = (id) => {
3019
3058
  return memoizeClassById[id];
3020
3059
  };
3021
3060
  const classByAttributeId = (attribute) => createSelector(classes, (classes) => classes.find((c) => c.attributes.find((a) => a.id === attribute) !== undefined));
3022
- const attributesByFieldId = (field) => createSelector(classes, (classes) => classes.map((c) => c.attributes.filter((a) => a.field === field)).reduce((acc, attrs) => [...acc, ...attrs], []));
3061
+ const attributesByFieldId = (field) => createSelector(classes, (classes) => classes.map((c) => c.attributes.filter((a) => a.field.id === field)).reduce((acc, attrs) => [...acc, ...attrs], []));
3023
3062
  const allAttributes = createSelector(classes, (state) => state?.flatMap((c) => c.attributes));
3024
3063
  const datasetCounts = createSelector(feature$6, (state) => state?.datasetCounts);
3025
3064
  const getAttributeById = (id) => createSelector(allAttributes, (attributes) => attributes.filter((attribute) => attribute.id === id));
@@ -3842,10 +3881,7 @@ const DashboardActions = {
3842
3881
  triggerAggregate: createAction('[Dashboard] (bus) Triggering aggregates for datasource', props()),
3843
3882
  loadPresentation: createAction('[Dashboard] load presentation', props()),
3844
3883
  initDefaultLayerGroup: createAction('[Dashboard] init default layer group', props()),
3845
- addLayerGroup: createAction('[Dashboard] add map layer group', props()),
3846
3884
  updateLayerVisibility: createAction('[Dashboard] update visible layers on the layer group', props()),
3847
- confirmLayerGroupDeletion: createAction('[Dashboard] confirm deleting map layer group', props()),
3848
- deleteLayerGroup: createAction('[Dashboard] delete map layer group', props()),
3849
3885
  updateLayerGroups: createAction('[Dashboard] update all layer groups', props())
3850
3886
  };
3851
3887
 
@@ -4262,10 +4298,27 @@ class DataSourceService {
4262
4298
  getDatasets() {
4263
4299
  return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/datasets`))), map((dsds) => dsds.map((dsd) => ({ ...dsd, sourceType: 'dataset' }))));
4264
4300
  }
4265
- getDatasetVersions() {
4266
- return this.store
4267
- .select(ConfigSelectors.refUrl)
4268
- .pipe(switchMap((url) => this.httpClient.get(encodeURI(`${url}/dataset-versions`))));
4301
+ getDatasetVersions(props) {
4302
+ return this.store.select(ConfigSelectors.refUrl).pipe(switchMap((url) => {
4303
+ const { limit, offset, dataset, sortBy, orderBy, dateMin, dateMax, status } = props;
4304
+ let params = new HttpParams();
4305
+ params = params.set('limit', (limit ?? 20).toString());
4306
+ params = params.set('offset', (offset ?? 0).toString());
4307
+ if (dataset)
4308
+ params = params.set('dataset', dataset);
4309
+ if (sortBy)
4310
+ params = params.set('sortBy', sortBy).set('orderBy', orderBy ?? 'ASC');
4311
+ if (dateMin)
4312
+ params = params.set('dateMin', dateMin);
4313
+ if (dateMax)
4314
+ params = params.set('dateMax', dateMax);
4315
+ if (status)
4316
+ params = params.set('status', status);
4317
+ return this.httpClient.get(encodeURI(`${url}/dataset-versions`), {
4318
+ params,
4319
+ observe: 'response'
4320
+ });
4321
+ }));
4269
4322
  }
4270
4323
  getDatasetVersionsById(id) {
4271
4324
  return this.store
@@ -4398,11 +4451,14 @@ class DataSourceEffects {
4398
4451
  .getDatasets()
4399
4452
  .pipe(map((dsd) => DataSourceActions.dataset.loadedDataset({ datasets: dsd }))))));
4400
4453
  this.loadDataset$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.load), debounceTime(100), mergeMap((action) => [DataSourceActions.namedQuery.load(), DataSourceActions.dataset.loadDataset()])));
4401
- this.listVersions$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.listVersions), switchMap((action) => this.dataSourceService.getDatasetVersions().pipe(map((versions) => DataSourceActions.dataset.listVersionsSuccess({ versions })), catchError((_) => [DataSourceActions.dataset.listVersionsFailure()])))));
4454
+ this.listVersions$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.listVersions), switchMap((action) => this.dataSourceService.getDatasetVersions(action).pipe(map((response) => DataSourceActions.dataset.listVersionsSuccess({
4455
+ versions: response.body ?? [],
4456
+ totalVersionCount: +(response.headers.get('x-total-count') ?? 0)
4457
+ })), catchError((_) => [DataSourceActions.dataset.listVersionsFailure()])))));
4402
4458
  this.listVersionsById$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.listVersionsByDatasetId), switchMap((action) => this.dataSourceService.getDatasetVersionsById(action.id).pipe(map((versions) => DataSourceActions.dataset.updateVersionList({ id: action.id, versions })), catchError((_) => [DataSourceActions.dataset.listVersionsFailure()])))));
4403
4459
  this.deactivateDatasetVersion$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.deactivateDatasetVersion), switchMap((action) => this.dataSourceService.deactivateDatasetVersion(action.versionId).pipe(map((datasetVersion) => DataSourceActions.dataset.deactivateDatasetVersionSuccess({ datasetVersion })), catchError((error) => [DataSourceActions.dataset.deactivateDatasetVersionFailure({ error })])))));
4404
4460
  this.activateDatasetVersion$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.activateDatasetVersion), switchMap((action) => this.dataSourceService.activateDatasetVersion(action.versionId).pipe(map((datasetVersion) => DataSourceActions.dataset.activateDatasetVersionSuccess({ datasetVersion })), catchError((error) => [DataSourceActions.dataset.activateDatasetVersionFailure({ error })])))));
4405
- this.activateOrDeactivateDatasetVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.activateDatasetVersionSuccess, DataSourceActions.dataset.deactivateDatasetVersionSuccess), map((action) => DataSourceActions.dataset.listVersions())));
4461
+ this.activateOrDeactivateDatasetVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.activateDatasetVersionSuccess, DataSourceActions.dataset.deactivateDatasetVersionSuccess), map((action) => DataSourceActions.dataset.listVersions({}))));
4406
4462
  this.previewsGetById$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.previews.getById), switchMap((action) => this.dataSourceService.getPreviews(action.id).pipe(map((previews) => DataSourceActions.dataset.previews.getByIdSuccess({ previews })), catchError((error) => [DataSourceActions.dataset.previews.getByIdFailure({ error })])))));
4407
4463
  this.updateDatasetVersionInfo = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.updateDatasetVersionInfo), switchMap((action) => this.dataSourceService
4408
4464
  .updateDatasetVersionInfo(action.version)
@@ -4426,7 +4482,7 @@ class DataSourceEffects {
4426
4482
  };
4427
4483
  this.pryDialog.open(PryDialogConfirmComponent, { data });
4428
4484
  })), { dispatch: false });
4429
- this.deleteDatasetVersion$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.deleteVersion), switchMap((action) => this.dataSourceService.deleteDatasetVersion(action.version).pipe(mergeMap(() => [DataSourceActions.dataset.listVersionsByDatasetId({ id: action.version.dataset })]), catchError((err) => [DataSourceActions.dataset.deleteVersionFailure({ err })])))));
4485
+ this.deleteDatasetVersion$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.deleteVersion), switchMap((action) => this.dataSourceService.deleteDatasetVersion(action.version).pipe(mergeMap(() => [DataSourceActions.dataset.listVersionsByDatasetId({ id: action.version.dataset.id })]), catchError((err) => [DataSourceActions.dataset.deleteVersionFailure({ err })])))));
4430
4486
  this.getCategories$ = createEffect(() => this.actions$.pipe(ofType(DataSourceActions.dataset.getCategories), mergeMap((action) => this.dataSourceService
4431
4487
  .getCategories()
4432
4488
  .pipe(map((categories) => DataSourceActions.dataset.getCategoriesSuccess({ categories }))))));
@@ -4457,7 +4513,12 @@ class FieldService {
4457
4513
  saveField(field) {
4458
4514
  return this.store
4459
4515
  .select(ConfigSelectors.refUrl)
4460
- .pipe(mergeMap((url) => this.httpClient.post(encodeURI(`${url}/model/field`), field)));
4516
+ .pipe(mergeMap((url) => this.httpClient.post(encodeURI(`${url}/model/fields`), field)));
4517
+ }
4518
+ updateField(field) {
4519
+ return this.store
4520
+ .select(ConfigSelectors.refUrl)
4521
+ .pipe(mergeMap((url) => this.httpClient.put(encodeURI(`${url}/model/fields/${field.id}`), field)));
4461
4522
  }
4462
4523
  deleteField(id) {
4463
4524
  return this.store
@@ -4558,8 +4619,6 @@ var FieldType;
4558
4619
  FieldType["POLYGON"] = "Polygon";
4559
4620
  FieldType["MULTIPOLYGON"] = "MultiPolygon";
4560
4621
  FieldType["GEOMETRYCOLLECTION"] = "GeometryCollection";
4561
- FieldType["OCLASS"] = "mod\u00E8le de donn\u00E9es";
4562
- FieldType["DATASET"] = "test";
4563
4622
  })(FieldType || (FieldType = {}));
4564
4623
  const GeometricFieldTypes = [
4565
4624
  FieldType.POINT,
@@ -4634,12 +4693,12 @@ class ItemUtils {
4634
4693
  .filter((prop) => prop !== 'attributes'))
4635
4694
  ];
4636
4695
  }
4637
- static getFieldsForClasses(classesId, classes, fields) {
4696
+ static getFieldsForClasses(classesId, classes) {
4638
4697
  return [
4639
4698
  ...new Set(classesId
4640
4699
  .map((classId) => classes.find((cl) => cl.id === classId))
4641
4700
  .filter((oClass) => oClass !== undefined)
4642
- .map((oClass) => oClass.attributes.map((attr) => fields.find((f) => f.id === attr.field)))
4701
+ .map((oClass) => oClass.attributes.map((attr) => attr.field))
4643
4702
  .map((fields) => fields.filter((f) => !!f))
4644
4703
  .reduce((p, c) => [...p, ...c], []))
4645
4704
  ];
@@ -4658,14 +4717,14 @@ class ItemUtils {
4658
4717
  .filter((oClass) => oClass !== undefined)
4659
4718
  .map((oClass) => oClass.attributes)
4660
4719
  .reduce((p, c) => [...p, ...c], [])
4661
- .filter((attr) => !!fields.find((f) => f.id === attr.field)))
4720
+ .filter((attr) => !!fields.find((f) => f.id === attr.field.id)))
4662
4721
  ];
4663
4722
  }
4664
4723
  static getClassNonGeoAttributesNames(clazz, defs, fields) {
4665
4724
  return (defs[clazz.id ?? ''] ??
4666
4725
  (clazz ?? { attributes: [] }).attributes
4667
4726
  .filter((attr) => {
4668
- const attrField = fields.find((f) => f.id === attr.field);
4727
+ const attrField = fields.find((f) => f.id === attr.field.id);
4669
4728
  return attrField && !GeometricFieldTypes.includes(attrField.type);
4670
4729
  })
4671
4730
  .map((attr) => attr.name));
@@ -5303,7 +5362,7 @@ class PryCoreModule {
5303
5362
  OverlayModule,
5304
5363
  PryOverlayModule,
5305
5364
  PryI18nModule,
5306
- PryModalStatusModule,
5365
+ PryStatusModalModule,
5307
5366
  CdkAccordionModule,
5308
5367
  FormsModule], exports: [TranslateIdPipe,
5309
5368
  TranslateItemToSymbolPipe,
@@ -5345,7 +5404,7 @@ class PryCoreModule {
5345
5404
  OverlayModule,
5346
5405
  PryOverlayModule,
5347
5406
  PryI18nModule,
5348
- PryModalStatusModule,
5407
+ PryStatusModalModule,
5349
5408
  CdkAccordionModule,
5350
5409
  FormsModule] }); }
5351
5410
  }
@@ -5379,7 +5438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
5379
5438
  OverlayModule,
5380
5439
  PryOverlayModule,
5381
5440
  PryI18nModule,
5382
- PryModalStatusModule,
5441
+ PryStatusModalModule,
5383
5442
  CdkAccordionModule,
5384
5443
  FormsModule
5385
5444
  ],
@@ -7237,7 +7296,7 @@ class PrySelectComponent extends SubscriptionnerDirective {
7237
7296
  multi: true
7238
7297
  },
7239
7298
  SelectA11yService
7240
- ], viewQueries: [{ propertyName: "optionsModal", first: true, predicate: ["optionsModal"], descendants: true, read: TemplateRef }, { propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"handleClick()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"onFocusChange($event)\"\n (keydown)=\"onKeydownSelect($event)\"\n>\n <div class=\"a-pry-select__content\">\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event, true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n (keydown)=\"onKeydownAutocompleteInput($event)\"\n [placeholder]=\"placeholder\"\n #input\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div\n class=\"a-pry-select__value\"\n [class.pry-select-form]=\"isForm\"\n [class.-multiple]=\"multiple\"\n [ngClass]=\"item ? item[bindClasses ?? ''] ?? {} : {}\"\n >\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n: { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n </div>\n <div class=\"a-pry-select__actions\">\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n </div>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n cdkTrapFocus=\"!autocomplete\"\n [cdkTrapFocusAutoCapture]=\"!autocomplete\"\n >\n <div class=\"a-pry-select__options__option -hint\" *ngIf=\"loading\" [style.width.px]=\"modalWidth\">\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"30\"\n [height]=\"30\"\n *ngIf=\"loading\"\n />\n </div>\n <p>{{ '@pry.select.loading' | i18n }}...</p>\n </div>\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index; let first = first; let last = last\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n (keydown)=\"onKeydownOption($event, item, index, optionDivRef, first, last)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n tabindex=\"0\"\n #optionDivRef\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n *ngIf=\"multiple\"\n [ngModel]=\"(valueItems$ | async).includes(item)\"\n ></pry-checkbox>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n: { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3$2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
7299
+ ], viewQueries: [{ propertyName: "optionsModal", first: true, predicate: ["optionsModal"], descendants: true, read: TemplateRef }, { propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"handleClick()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"onFocusChange($event)\"\n (keydown)=\"onKeydownSelect($event)\"\n>\n <div class=\"a-pry-select__content\">\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event, true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n (keydown)=\"onKeydownAutocompleteInput($event)\"\n [placeholder]=\"placeholder ?? ''\"\n #input\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div\n class=\"a-pry-select__value\"\n [class.pry-select-form]=\"isForm\"\n [class.-multiple]=\"multiple\"\n [ngClass]=\"item ? item[bindClasses ?? ''] ?? {} : {}\"\n >\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n: { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n </div>\n <div class=\"a-pry-select__actions\">\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n </div>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n cdkTrapFocus=\"!autocomplete\"\n [cdkTrapFocusAutoCapture]=\"!autocomplete\"\n >\n <div class=\"a-pry-select__options__option -hint\" *ngIf=\"loading\" [style.width.px]=\"modalWidth\">\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"30\"\n [height]=\"30\"\n *ngIf=\"loading\"\n />\n </div>\n <p>{{ '@pry.select.loading' | i18n }}...</p>\n </div>\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index; let first = first; let last = last\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n (keydown)=\"onKeydownOption($event, item, index, optionDivRef, first, last)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n tabindex=\"0\"\n #optionDivRef\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n *ngIf=\"multiple\"\n [ngModel]=\"(valueItems$ | async).includes(item)\"\n ></pry-checkbox>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n: { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3$2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
7241
7300
  }
7242
7301
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySelectComponent, decorators: [{
7243
7302
  type: Component,
@@ -7248,7 +7307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
7248
7307
  multi: true
7249
7308
  },
7250
7309
  SelectA11yService
7251
- ], template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"handleClick()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"onFocusChange($event)\"\n (keydown)=\"onKeydownSelect($event)\"\n>\n <div class=\"a-pry-select__content\">\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event, true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n (keydown)=\"onKeydownAutocompleteInput($event)\"\n [placeholder]=\"placeholder\"\n #input\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div\n class=\"a-pry-select__value\"\n [class.pry-select-form]=\"isForm\"\n [class.-multiple]=\"multiple\"\n [ngClass]=\"item ? item[bindClasses ?? ''] ?? {} : {}\"\n >\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n: { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n </div>\n <div class=\"a-pry-select__actions\">\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n </div>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n cdkTrapFocus=\"!autocomplete\"\n [cdkTrapFocusAutoCapture]=\"!autocomplete\"\n >\n <div class=\"a-pry-select__options__option -hint\" *ngIf=\"loading\" [style.width.px]=\"modalWidth\">\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"30\"\n [height]=\"30\"\n *ngIf=\"loading\"\n />\n </div>\n <p>{{ '@pry.select.loading' | i18n }}...</p>\n </div>\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index; let first = first; let last = last\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n (keydown)=\"onKeydownOption($event, item, index, optionDivRef, first, last)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n tabindex=\"0\"\n #optionDivRef\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n *ngIf=\"multiple\"\n [ngModel]=\"(valueItems$ | async).includes(item)\"\n ></pry-checkbox>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n: { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n" }]
7310
+ ], template: "<div\n class=\"a-pry-select\"\n [attr.aria-disabled]=\"disabled\"\n #selectElement\n [class.-focused]=\"focused\"\n (click)=\"handleClick()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-owns]=\"open ? modalId : null\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"onFocusChange($event)\"\n (keydown)=\"onKeydownSelect($event)\"\n>\n <div class=\"a-pry-select__content\">\n <ng-container *ngIf=\"autocomplete; else noAutocomplete\">\n <input\n type=\"text\"\n class=\"a-pry-select__search\"\n [ngModel]=\"search$.getValue()\"\n (ngModelChange)=\"search($event, true)\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"open ? modalId : null\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n (keydown)=\"onKeydownAutocompleteInput($event)\"\n [placeholder]=\"placeholder ?? ''\"\n #input\n />\n </ng-container>\n <ng-template #noAutocomplete>\n <ng-container *ngIf=\"(valueItems$ | async).length === 0; else selectedValues\">\n <span class=\"a-pry-select__placeholder\">{{ placeholder }}</span>\n </ng-container>\n <ng-template #selectedValues>\n <ng-container *ngFor=\"let item of valueItems$ | async\">\n <div\n class=\"a-pry-select__value\"\n [class.pry-select-form]=\"isForm\"\n [class.-multiple]=\"multiple\"\n [ngClass]=\"item ? item[bindClasses ?? ''] ?? {} : {}\"\n >\n <ng-container *ngIf=\"template; else noTemplateLabel\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplateLabel>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ?? '') + value | i18n: { warn: false } }}\n <span\n *ngIf=\"multiple && clearable\"\n class=\"a-pry-select__clear\"\n (click)=\"clear($event, item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-template>\n <div class=\"a-pry-select__filler\"></div>\n </ng-template>\n </div>\n <div class=\"a-pry-select__actions\">\n <span *ngIf=\"clearable\" class=\"a-pry-select__clear\" (click)=\"clearAll($event)\" aria-hidden=\"true\">\u00D7</span>\n <pry-icon\n class=\"a-pry-select__toggle\"\n [iconSvg]=\"open ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n </div>\n</div>\n<ng-template #optionsModal>\n <div\n role=\"listbox\"\n [attr.aria-label]=\"'@pry.select.label' | i18n\"\n [id]=\"modalId\"\n [attr.aria-activedescendant]=\"'select-option-' + activeDescendant\"\n [attr.aria-multiselectable]=\"multiple\"\n [attr.required]=\"required\"\n [attr.aria-readonly]=\"readonly\"\n cdkTrapFocus=\"!autocomplete\"\n [cdkTrapFocusAutoCapture]=\"!autocomplete\"\n >\n <div class=\"a-pry-select__options__option -hint\" *ngIf=\"loading\" [style.width.px]=\"modalWidth\">\n <div class=\"no-widget no-widget__loader\">\n <pry-icon\n iconSvg=\"loader\"\n class=\"no-widget__loading\"\n [alt]=\"'@pry.widget.target.loading' | i18n\"\n [width]=\"30\"\n [height]=\"30\"\n *ngIf=\"loading\"\n />\n </div>\n <p>{{ '@pry.select.loading' | i18n }}...</p>\n </div>\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngFor=\"let item of matchingItems$ | async; let index = index; let first = first; let last = last\">\n <div\n class=\"a-pry-select__options__option\"\n [attr.aria-selected]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-checked]=\"(valueItems$ | async).includes(item)\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"select($event, item, index)\"\n (keydown)=\"onKeydownOption($event, item, index, optionDivRef, first, last)\"\n [style.width.px]=\"modalWidth\"\n role=\"option\"\n [id]=\"'select-option-' + index\"\n tabindex=\"0\"\n #optionDivRef\n >\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n *ngIf=\"multiple\"\n [ngModel]=\"(valueItems$ | async).includes(item)\"\n ></pry-checkbox>\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n ></pry-icon>\n <ng-container *ngIf=\"bindLabel ? item?.[bindLabel] : item as value\">\n {{ (i18nPrefix ? i18nPrefix : '') + value | i18n: { warn: false } }}\n </ng-container>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n" }]
7252
7311
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: SelectA11yService }], propDecorators: { items: [{
7253
7312
  type: Input
7254
7313
  }], clearable: [{
@@ -7736,12 +7795,12 @@ class PryShareComponent {
7736
7795
  this._onTouched = () => { };
7737
7796
  this._disabled = false;
7738
7797
  this.value = [];
7739
- this.stringValue = 'private';
7798
+ this.stringValue = 'PRIVATE';
7740
7799
  this.labelProperty = 'label';
7741
7800
  this.valueProperty = 'value';
7742
7801
  this.visibilityTypes = [
7743
- { name: 'public', icon: 'public' },
7744
- { name: 'private', icon: 'private' }
7802
+ { name: 'PUBLIC', icon: 'public' },
7803
+ { name: 'PRIVATE', icon: 'private' }
7745
7804
  ];
7746
7805
  }
7747
7806
  registerOnChange(fn) {
@@ -7757,14 +7816,14 @@ class PryShareComponent {
7757
7816
  writeValue(value) {
7758
7817
  if (value) {
7759
7818
  this.value = value;
7760
- this.stringValue = value.length > 0 ? 'public' : 'private';
7819
+ this.stringValue = value.length > 0 ? 'PUBLIC' : 'PRIVATE';
7761
7820
  this._onChange(this.value);
7762
7821
  this._onTouched();
7763
7822
  this._cd.markForCheck();
7764
7823
  }
7765
7824
  }
7766
7825
  onChange($event) {
7767
- this.value = $event === 'public' ? [PUBLIC_GROUP] : [];
7826
+ this.value = $event === 'PUBLIC' ? [PUBLIC_GROUP] : [];
7768
7827
  this.writeValue(this.value);
7769
7828
  this._onTouched();
7770
7829
  this._cd.markForCheck();
@@ -7776,7 +7835,7 @@ class PryShareComponent {
7776
7835
  useExisting: forwardRef(() => PryShareComponent),
7777
7836
  multi: true
7778
7837
  }
7779
- ], 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)=\"onChange($event)\"\n [items]=\"visibilityTypes\"\n [ngModel]=\"stringValue\"\n [disabled]=\"_disabled\"\n i18nPrefix=\"@pry.share.\"\n bindValue=\"name\"\n bindLabel=\"name\"\n bindIcon=\"icon\"\n id=\"share_type\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n", dependencies: [{ kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7838
+ ], 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)=\"onChange($event)\"\n [items]=\"visibilityTypes\"\n [ngModel]=\"stringValue\"\n [disabled]=\"_disabled\"\n i18nPrefix=\"@pry.share.radioLabel.\"\n bindValue=\"name\"\n bindLabel=\"name\"\n bindIcon=\"icon\"\n id=\"share_type\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n", dependencies: [{ kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7780
7839
  }
7781
7840
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryShareComponent, decorators: [{
7782
7841
  type: Component,
@@ -7786,7 +7845,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
7786
7845
  useExisting: forwardRef(() => PryShareComponent),
7787
7846
  multi: true
7788
7847
  }
7789
- ], 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)=\"onChange($event)\"\n [items]=\"visibilityTypes\"\n [ngModel]=\"stringValue\"\n [disabled]=\"_disabled\"\n i18nPrefix=\"@pry.share.\"\n bindValue=\"name\"\n bindLabel=\"name\"\n bindIcon=\"icon\"\n id=\"share_type\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n" }]
7848
+ ], 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)=\"onChange($event)\"\n [items]=\"visibilityTypes\"\n [ngModel]=\"stringValue\"\n [disabled]=\"_disabled\"\n i18nPrefix=\"@pry.share.radioLabel.\"\n bindValue=\"name\"\n bindLabel=\"name\"\n bindIcon=\"icon\"\n id=\"share_type\"\n [iconSize]=\"[21, 18]\"\n ></pry-select>\n</div>\n" }]
7790
7849
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { labelProperty: [{
7791
7850
  type: Input
7792
7851
  }], valueProperty: [{
@@ -8868,7 +8927,7 @@ class PryObjectEditionComponent extends SubscriptionnerDirective {
8868
8927
  return this.classes.find((cl) => cl.id === this.tmpObject.oClass)?.attributes ?? [];
8869
8928
  }
8870
8929
  fieldType(attribute) {
8871
- return this.fields.find((field) => attribute.field === field.id)?.type;
8930
+ return attribute.field.type;
8872
8931
  }
8873
8932
  assignValue(attribute, $event) {
8874
8933
  const value = this.fieldType(attribute) === FieldType.INSTANT && $event !== '' ? new Date($event).getTime() : $event;
@@ -9000,7 +9059,7 @@ class PryObjectEditionComponent extends SubscriptionnerDirective {
9000
9059
  this.inversion = !this.inversion;
9001
9060
  }
9002
9061
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryObjectEditionComponent, deps: [{ token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
9003
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: { link: "link", object: "object", menu: "menu" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n {{ '@pry.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n id=\"object_creator_link\"\n type=\"button\"\n (click)=\"openCreateObjectPanel($event)\"\n *ngIf=\"!menu\"\n class=\"a-btn a-btn--secondary -circle u-floating u-floating--bottom-right\"\n [title]=\"'@pry.context.createObject.title.object' | i18n\"\n>\n <span class=\"u-visually-hidden\">{{ '@pry.context.createObject.title.object' | i18n }}</span>\n <pry-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\">\n <div class=\"o-settings__popup__content\">\n <ng-container *ngIf=\"link\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_link\">{{ '@pry.context.createObject.title.link' | i18n }}</label>\n <pry-select\n [(ngModel)]=\"relation.typeId\"\n [items]=\"relations$ | async\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"createobject_link\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_inversion\">{{\n '@pry.context.createObject.title.inversion' | i18n\n }}</label>\n <pry-checkbox\n id=\"createobject_inversion\"\n [ngModel]=\"inversion\"\n (ngModelChange)=\"toggleInversion()\"\n ></pry-checkbox>\n </div>\n </ng-container>\n\n <div class=\"o-object-panel\" *ngIf=\"object\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_class\">{{ '@pry.context.createObject.class' | i18n }}</label>\n <pry-select\n [ngModel]=\"tmpObject.oClass\"\n (ngModelChange)=\"changeClass($event)\"\n [items]=\"classes\"\n bindValue=\"id\"\n bindLabel=\"name\"\n id=\"createobject_class\"\n ></pry-select>\n </div>\n\n <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\">{{ attribute.name }}</label>\n <ng-container *ngIf=\"!attribute.multiValued\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n <pry-date-picker\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.RAW\">\n <pry-select\n [ngModel]=\"method\"\n (ngModelChange)=\"setRawMethod(attribute, $event)\"\n [items]=\"rawMethods\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></pry-select>\n <input\n type=\"text\"\n class=\"a-form-field\"\n *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n />\n <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n <pry-upload\n mode=\"doc\"\n accept=\"image/*,video/*\"\n (uploaded)=\"assignValue(attribute, $event)\"\n ></pry-upload>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n <button\n class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n (click)=\"addMultiValued(attribute)\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n <span>{{ '@pry.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n </button>\n <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <input\n type=\"datetime-local\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (focusout)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <button (click)=\"removeMultiValued(attribute, i)\">\n <pry-icon iconSvg=\"delete\"></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n {{ '@pry.context.create' | i18n }}\n </button>\n </div>\n </div>\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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryUploadComponent, selector: "pry-upload", inputs: ["mode", "accept", "labelTranslate"], outputs: ["uploaded", "uploadedFile"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
9062
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: { link: "link", object: "object", menu: "menu" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n {{ '@pry.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n id=\"object_creator_link\"\n type=\"button\"\n (click)=\"openCreateObjectPanel($event)\"\n *ngIf=\"!menu\"\n class=\"a-btn a-btn--secondary -circle u-floating u-floating--bottom-right\"\n [title]=\"'@pry.context.createObject.title.object' | i18n\"\n>\n <span class=\"u-visually-hidden\">{{ '@pry.context.createObject.title.object' | i18n }}</span>\n <pry-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\">\n <div class=\"o-settings__popup__content\">\n <ng-container *ngIf=\"link\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_link\">{{ '@pry.context.createObject.title.link' | i18n }}</label>\n <pry-select\n [(ngModel)]=\"relation.typeId\"\n [items]=\"relations$ | async\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"createobject_link\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_inversion\">{{\n '@pry.context.createObject.title.inversion' | i18n\n }}</label>\n <pry-checkbox\n id=\"createobject_inversion\"\n [ngModel]=\"inversion\"\n (ngModelChange)=\"toggleInversion()\"\n ></pry-checkbox>\n </div>\n </ng-container>\n\n <div class=\"o-object-panel\" *ngIf=\"object\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_class\">{{ '@pry.context.createObject.class' | i18n }}</label>\n <pry-select\n [ngModel]=\"tmpObject.oClass\"\n (ngModelChange)=\"changeClass($event)\"\n [items]=\"classes\"\n bindValue=\"id\"\n bindLabel=\"name\"\n id=\"createobject_class\"\n ></pry-select>\n </div>\n\n <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\">{{ attribute.name }}</label>\n <ng-container *ngIf=\"!attribute.multiValued\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n <pry-date-picker\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.RAW\">\n <pry-select\n [ngModel]=\"method\"\n (ngModelChange)=\"setRawMethod(attribute, $event)\"\n [items]=\"rawMethods\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></pry-select>\n <input\n type=\"text\"\n class=\"a-form-field\"\n *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n />\n <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n <pry-upload\n mode=\"doc\"\n accept=\"image/*,video/*\"\n (uploaded)=\"assignValue(attribute, $event)\"\n ></pry-upload>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n <button\n class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n (click)=\"addMultiValued(attribute)\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n <span>{{ '@pry.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n </button>\n <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <input\n type=\"datetime-local\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (focusout)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <button (click)=\"removeMultiValued(attribute, i)\">\n <pry-icon iconSvg=\"delete\"></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n {{ '@pry.context.create' | i18n }}\n </button>\n </div>\n </div>\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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: PryUploadComponent, selector: "pry-upload", inputs: ["mode", "accept", "labelTranslate"], outputs: ["uploaded", "uploadedFile"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
9004
9063
  }
9005
9064
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryObjectEditionComponent, decorators: [{
9006
9065
  type: Component,
@@ -10225,73 +10284,10 @@ const META_OPTIONS = [
10225
10284
  ];
10226
10285
  const FIELD_UUID = '8b4907be-6159-486a-8502-c5e2139bbc27';
10227
10286
  const DEFAULT_CATEGORY_UUID = 'cf666d66-838f-4d92-a4d2-a315df21fac9';
10228
- const FIELD_OPTIONS = [
10229
- {
10230
- varType: FieldType.INTEGER,
10231
- translation: '@pry.admin.fields.fieldType.int',
10232
- description: '@pry.admin.fields.fieldType.information.int'
10233
- },
10234
- {
10235
- varType: FieldType.LONG,
10236
- translation: '@pry.admin.fields.fieldType.long',
10237
- description: '@pry.admin.fields.fieldType.information.long'
10238
- },
10239
- {
10240
- varType: FieldType.DECIMAL,
10241
- translation: '@pry.admin.fields.fieldType.decimal',
10242
- description: '@pry.admin.fields.fieldType.information.decimal'
10243
- },
10244
- {
10245
- varType: FieldType.STRING,
10246
- translation: '@pry.admin.fields.fieldType.string',
10247
- description: '@pry.admin.fields.fieldType.information.string'
10248
- },
10249
- {
10250
- varType: FieldType.KEYWORD,
10251
- translation: '@pry.admin.fields.fieldType.keyword',
10252
- description: '@pry.admin.fields.fieldType.information.keyword'
10253
- },
10254
- {
10255
- varType: FieldType.INSTANT,
10256
- translation: '@pry.admin.fields.fieldType.instant',
10257
- description: '@pry.admin.fields.fieldType.information.instant'
10258
- },
10259
- {
10260
- varType: FieldType.RAW,
10261
- translation: '@pry.admin.fields.fieldType.raw',
10262
- description: '@pry.admin.fields.fieldType.information.raw'
10263
- },
10264
- {
10265
- varType: FieldType.POINT,
10266
- translation: '@pry.admin.fields.fieldType.point',
10267
- description: '@pry.admin.fields.fieldType.information.point'
10268
- },
10269
- {
10270
- varType: FieldType.MULTIPOINT,
10271
- translation: '@pry.admin.fields.fieldType.multipoint',
10272
- description: '@pry.admin.fields.fieldType.information.multipoint'
10273
- },
10274
- {
10275
- varType: FieldType.LINE,
10276
- translation: '@pry.admin.fields.fieldType.line',
10277
- description: '@pry.admin.fields.fieldType.information.line'
10278
- },
10279
- {
10280
- varType: FieldType.MULTILINE,
10281
- translation: '@pry.admin.fields.fieldType.multiline',
10282
- description: '@pry.admin.fields.fieldType.information.multiline'
10283
- },
10284
- {
10285
- varType: FieldType.POLYGON,
10286
- translation: '@pry.admin.fields.fieldType.polygon',
10287
- description: '@pry.admin.fields.fieldType.information.polygon'
10288
- },
10289
- {
10290
- varType: FieldType.MULTIPOLYGON,
10291
- translation: '@pry.admin.fields.fieldType.multipolygon',
10292
- description: '@pry.admin.fields.fieldType.information.multipolygon'
10293
- }
10294
- ];
10287
+ const FIELD_I18N = {
10288
+ label: '@pry.admin.fields.fieldType.',
10289
+ information: '@pry.admin.fields.fieldType.information.'
10290
+ };
10295
10291
 
10296
10292
  const httpErrorOptions = {
10297
10293
  isDevMode: false
@@ -10653,12 +10649,6 @@ class PryDatasourceCardComponent {
10653
10649
  this.isSelected = false;
10654
10650
  this.clicked = new EventEmitter();
10655
10651
  }
10656
- ngAfterContentInit() {
10657
- this.datasetVersions$ = this.store
10658
- .select(DataSourceSelectors.matchingDatasetVersions(this.datasource.id))
10659
- .pipe(map((res) => [...res].sort((a, b) => b.version - a.version)));
10660
- this.activeVersion$ = this.datasetVersions$.pipe(map((versions) => versions.sort((v1, v2) => v2.version - v1.version).find((version) => version.state === 'ACTIVE')?.lastModified));
10661
- }
10662
10652
  truncateDescription(description, maxLength) {
10663
10653
  if (description && description.length > maxLength) {
10664
10654
  return description.slice(0, maxLength) + '...';
@@ -10675,11 +10665,11 @@ class PryDatasourceCardComponent {
10675
10665
  }
10676
10666
  }
10677
10667
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDatasourceCardComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
10678
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryDatasourceCardComponent, selector: "pry-datasource-card", inputs: { datasource: "datasource", showFooter: "showFooter", isSelectable: "isSelectable", isSelected: "isSelected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\n class=\"o-datasource-card\"\n [class.-no-footer]=\"!showFooter\"\n [class.-is-selectable]=\"isSelectable\"\n (click)=\"onClick()\"\n>\n <div class=\"o-datasource-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"datasource.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"o-datasource-card__title\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ datasource.name }}</h4>\n </div>\n @if (isSelectable) {\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n class=\"o-datasource-card__checkbox\"\n [ngModel]=\"isSelected\"\n ></pry-checkbox>\n }\n </div>\n <div class=\"o-datasource-card__content u-display-flex -column -gap-10\">\n @if (datasource.description) {\n <div class=\"o-datasource-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(datasource.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-datasource-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-datasource-card__date\">\n @if (activeVersion$ | async) {\n {{ '@pry.dataset.since_day' | i18n }} {{ (activeVersion$ | async)! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n </span>\n @if (datasource.sourceType === 'dataset' && datasource.categories && datasource.categories.length > 0) {\n <div class=\"o-datasource-card__categories u-display-flex -wrap\">\n @for (category of datasource.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n @if (showFooter) {\n <div class=\"o-datasource-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "pipe", type: SinceDatePipe, name: "sinceDate" }] }); }
10668
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryDatasourceCardComponent, selector: "pry-datasource-card", inputs: { datasource: "datasource", showFooter: "showFooter", isSelectable: "isSelectable", isSelected: "isSelected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\n class=\"o-datasource-card\"\n [class.-no-footer]=\"!showFooter\"\n [class.-is-selectable]=\"isSelectable\"\n (click)=\"onClick()\"\n>\n <div class=\"o-datasource-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"datasource.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"o-datasource-card__title\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ datasource.name }}</h4>\n </div>\n @if (isSelectable) {\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n class=\"o-datasource-card__checkbox\"\n [ngModel]=\"isSelected\"\n ></pry-checkbox>\n }\n </div>\n <div class=\"o-datasource-card__content u-display-flex -column -gap-10\">\n @if (datasource.description) {\n <div class=\"o-datasource-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(datasource.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-datasource-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-datasource-card__date\">\n @if (datasource.sourceType === 'dataset') {\n @if (datasource.activeVersion) {\n {{ '@pry.dataset.since_day' | i18n }} {{ datasource.activeVersion.productionDate! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n }\n </span>\n @if (datasource.sourceType === 'dataset' && datasource.categories && datasource.categories.length > 0) {\n <div class=\"o-datasource-card__categories u-display-flex -wrap\">\n @for (category of datasource.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n @if (showFooter) {\n <div class=\"o-datasource-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "component", type: i7.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "pipe", type: SinceDatePipe, name: "sinceDate" }] }); }
10679
10669
  }
10680
10670
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDatasourceCardComponent, decorators: [{
10681
10671
  type: Component,
10682
- args: [{ selector: 'pry-datasource-card', template: "<div\n class=\"o-datasource-card\"\n [class.-no-footer]=\"!showFooter\"\n [class.-is-selectable]=\"isSelectable\"\n (click)=\"onClick()\"\n>\n <div class=\"o-datasource-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"datasource.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"o-datasource-card__title\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ datasource.name }}</h4>\n </div>\n @if (isSelectable) {\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n class=\"o-datasource-card__checkbox\"\n [ngModel]=\"isSelected\"\n ></pry-checkbox>\n }\n </div>\n <div class=\"o-datasource-card__content u-display-flex -column -gap-10\">\n @if (datasource.description) {\n <div class=\"o-datasource-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(datasource.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-datasource-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-datasource-card__date\">\n @if (activeVersion$ | async) {\n {{ '@pry.dataset.since_day' | i18n }} {{ (activeVersion$ | async)! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n </span>\n @if (datasource.sourceType === 'dataset' && datasource.categories && datasource.categories.length > 0) {\n <div class=\"o-datasource-card__categories u-display-flex -wrap\">\n @for (category of datasource.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n @if (showFooter) {\n <div class=\"o-datasource-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n }\n</div>\n" }]
10672
+ args: [{ selector: 'pry-datasource-card', template: "<div\n class=\"o-datasource-card\"\n [class.-no-footer]=\"!showFooter\"\n [class.-is-selectable]=\"isSelectable\"\n (click)=\"onClick()\"\n>\n <div class=\"o-datasource-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"datasource.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"o-datasource-card__title\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ datasource.name }}</h4>\n </div>\n @if (isSelectable) {\n <pry-checkbox\n (click)=\"$event.preventDefault()\"\n class=\"o-datasource-card__checkbox\"\n [ngModel]=\"isSelected\"\n ></pry-checkbox>\n }\n </div>\n <div class=\"o-datasource-card__content u-display-flex -column -gap-10\">\n @if (datasource.description) {\n <div class=\"o-datasource-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(datasource.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-datasource-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-datasource-card__date\">\n @if (datasource.sourceType === 'dataset') {\n @if (datasource.activeVersion) {\n {{ '@pry.dataset.since_day' | i18n }} {{ datasource.activeVersion.productionDate! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n }\n </span>\n @if (datasource.sourceType === 'dataset' && datasource.categories && datasource.categories.length > 0) {\n <div class=\"o-datasource-card__categories u-display-flex -wrap\">\n @for (category of datasource.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n @if (showFooter) {\n <div class=\"o-datasource-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n }\n</div>\n" }]
10683
10673
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { datasource: [{
10684
10674
  type: Input
10685
10675
  }], showFooter: [{
@@ -10719,7 +10709,7 @@ class PryDatasourceListComponent extends SubscriptionnerDirective {
10719
10709
  this.store.dispatch(DashboardActions.fetchManifestsList());
10720
10710
  this.store.dispatch(DataSourceActions.dataset.getCategories());
10721
10711
  this.categories$ = this.store.select(DataSourceSelectors.categories);
10722
- this.store.dispatch(DataSourceActions.dataset.listVersions());
10712
+ this.store.dispatch(DataSourceActions.dataset.listVersions({}));
10723
10713
  this.subscriptions.add(this.selectedCategories$.subscribe((_) => {
10724
10714
  this.searchOrCategoryChanged.next();
10725
10715
  }));
@@ -12401,24 +12391,6 @@ class DashboardEffects {
12401
12391
  }),
12402
12392
  DashboardActions.followManifestRoute()
12403
12393
  ])))));
12404
- this.confirmLayerGroupDeletion$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.confirmLayerGroupDeletion), tap((action) => {
12405
- const data = {
12406
- title: '@pry.widget.map.layerSettings.confirmDelete',
12407
- actions: [
12408
- {
12409
- id: 0,
12410
- label: '@pry.toolbox.manifest.validate',
12411
- actions: [DashboardActions.deleteLayerGroup({ name: action.name })]
12412
- },
12413
- {
12414
- id: 1,
12415
- label: '@pry.toolbox.manifest.close',
12416
- color: 'secondary'
12417
- }
12418
- ]
12419
- };
12420
- this.pryDialog.open(PryDialogConfirmComponent, { data });
12421
- })), { dispatch: false });
12422
12394
  dashboardInitService.init();
12423
12395
  refreshService.start();
12424
12396
  }
@@ -13059,22 +13031,6 @@ const internalReducer = createReducer(dashboardInitialState, on(DashboardActions
13059
13031
  ]
13060
13032
  }
13061
13033
  }
13062
- })), on(DashboardActions.addLayerGroup, (state, action) => ({
13063
- ...state,
13064
- manifests: {
13065
- ...state.manifests,
13066
- manifest: {
13067
- ...state.manifests.manifest,
13068
- layerGroups: [
13069
- ...(state.manifests.manifest.layerGroups ?? []),
13070
- {
13071
- name: action.name ?? 'MISSING NAME',
13072
- singleLayer: action.singleLayer ?? false,
13073
- visibleLayers: action.visibleLayers ?? []
13074
- }
13075
- ]
13076
- }
13077
- }
13078
13034
  })), on(DashboardActions.updateLayerVisibility, (state, action) => ({
13079
13035
  ...state,
13080
13036
  manifests: {
@@ -13095,15 +13051,6 @@ const internalReducer = createReducer(dashboardInitialState, on(DashboardActions
13095
13051
  ]
13096
13052
  }
13097
13053
  }
13098
- })), on(DashboardActions.deleteLayerGroup, (state, action) => ({
13099
- ...state,
13100
- manifests: {
13101
- ...state.manifests,
13102
- manifest: {
13103
- ...state.manifests.manifest,
13104
- layerGroups: state.manifests.manifest.layerGroups.filter((group) => group.name !== action.name)
13105
- }
13106
- }
13107
13054
  })), on(DashboardActions.updateLayerGroups, (state, { layerGroups }) => ({
13108
13055
  ...state,
13109
13056
  manifests: {
@@ -13137,11 +13084,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
13137
13084
 
13138
13085
  class DefaultTooltipComponent extends BaseTooltipComponent {
13139
13086
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DefaultTooltipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", 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" }] }); }
13087
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", 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" }] }); }
13141
13088
  }
13142
13089
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DefaultTooltipComponent, decorators: [{
13143
13090
  type: Component,
13144
- 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" }]
13091
+ 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" }]
13145
13092
  }] });
13146
13093
 
13147
13094
  const TOOLTIP_DEFINITION = new InjectionToken('Tooltip definition');
@@ -13188,7 +13135,8 @@ class TooltipFactoryService {
13188
13135
  isModuleLoaded(type) {
13189
13136
  return this.reference$.pipe(map((componentDefs) => !!componentDefs[type]));
13190
13137
  }
13191
- generateTooltip(type, parentInjector, container) {
13138
+ generateTooltip(type, // class id
13139
+ parentInjector, container) {
13192
13140
  const definition = this.defs[type] ?? { type };
13193
13141
  return this.resolveComponent(definition.type).pipe(map((component) => {
13194
13142
  if (component) {
@@ -13461,5 +13409,5 @@ function filterLoader(module, prop) {
13461
13409
  * Generated bundle index. Do not edit.
13462
13410
  */
13463
13411
 
13464
- export { ALIGNMENT_OPTIONS, AUTHENTICATED_USERS_GROUP, AccordionComponent, AccordionItemComponent, Aggregation, BASE_DISPLAY_OPTIONS, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ChipsSelectorComponent, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_DASHBOARD_ICON_URL, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_PROJECTION, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DEFAULT_SEARCH_LIMIT_NUMBER, DEFAULT_TABLE_WIDGET_STYLE, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DatasourceUtils, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, EllipsisDirective, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterGroupComponent, FilterInstanciatorComponent, FilterParamEncoder, GeoMetadata, GeometricFieldTypes, 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, NumericFieldTypes, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PRY_GEOAUTH_TOKEN, PUBLIC_GROUP, PryAboutComponent, PryAboutModule, PryAccessDirective, PryAccessRightsShareComponent, PryAccessRightsShareModalComponent, PryAccessUtils, PryAggregationService, PryBackendAggregationService, PryBaseAccess, PryBaseAccessGuard, PryChipsSelectorModule, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatasourceCardComponent, PryDatasourceListComponent, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDefaultGeoAuthService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryFilterGroupCssComponent, PryFrontendAggregationService, PryGeoAuthService, PryGroupShareComponent, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareMode, PryShareModule, PrySinceDateModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, READ_ACCESS, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SYSTEM_GROUPS, SearchActions, SearchSelectors, SearchService, SettingsComponent, SinceDatePipe, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, TabComponent, TabGroupComponent, TextFieldTypes, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WRITE_ACCESS, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, WmsService, adapter$2 as adapter, aggregationDefault, baseItemProperties, canManifestBeMadePublic, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getAccessArray, getAccessRightsArrayByGroup, getAccessRightsStringByGroup, getAccessString, getCommonDatasourceGroupsForManifest, getDisplayOptions, getGroupLabel, getGroupLabelByName, getShareLevel, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
13412
+ export { ALIGNMENT_OPTIONS, AUTHENTICATED_USERS_GROUP, AccordionComponent, AccordionItemComponent, Aggregation, BASE_DISPLAY_OPTIONS, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ChipsSelectorComponent, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_DASHBOARD_ICON_URL, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_PROJECTION, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DEFAULT_SEARCH_LIMIT_NUMBER, DEFAULT_TABLE_WIDGET_STYLE, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DatasourceUtils, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, EllipsisDirective, FIELD_I18N, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterGroupComponent, FilterInstanciatorComponent, FilterParamEncoder, GeoMetadata, GeometricFieldTypes, 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, NumericFieldTypes, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PRY_GEOAUTH_TOKEN, PUBLIC_GROUP, PryAboutComponent, PryAboutModule, PryAccessDirective, PryAccessRightsShareComponent, PryAccessRightsShareModalComponent, PryAccessUtils, PryAggregationService, PryBackendAggregationService, PryBaseAccess, PryBaseAccessGuard, PryChipsSelectorModule, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatasourceCardComponent, PryDatasourceListComponent, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDefaultGeoAuthService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryFilterGroupCssComponent, PryFrontendAggregationService, PryGeoAuthService, PryGroupShareComponent, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareMode, PryShareModule, PrySinceDateModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryStatusModalComponent, PryStatusModalModule, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, READ_ACCESS, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SYSTEM_GROUPS, SearchActions, SearchSelectors, SearchService, SettingsComponent, SinceDatePipe, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, TabComponent, TabGroupComponent, TextFieldTypes, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WRITE_ACCESS, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, WmsService, adapter$2 as adapter, aggregationDefault, baseItemProperties, canManifestBeMadePublic, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, getAccessArray, getAccessRightsArrayByGroup, getAccessRightsStringByGroup, getAccessString, getCommonDatasourceGroupsForManifest, getDisplayOptions, getGroupLabel, getGroupLabelByName, getShareLevel, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
13465
13413
  //# sourceMappingURL=provoly-dashboard.mjs.map