@provoly/dashboard 0.13.0 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/admin/admin.module.d.ts +12 -11
  2. package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +3 -1
  3. package/admin/components/association/association.component.d.ts +9 -0
  4. package/admin/i18n/en.translations.d.ts +10 -0
  5. package/admin/i18n/fr.translations.d.ts +10 -0
  6. package/components/sinceDate/sinceDate.pipe.d.ts +1 -1
  7. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +8 -1
  8. package/dataset/i18n/en.translations.d.ts +21 -1
  9. package/dataset/i18n/fr.translations.d.ts +21 -3
  10. package/dataset/style/_o-pry-dataset-detail.scss +21 -19
  11. package/dataset/style/_o-pry-dataset.scss +8 -1
  12. package/esm2022/admin/admin.module.mjs +6 -3
  13. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +4 -3
  14. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +9 -3
  15. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +2 -1
  16. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +5 -4
  17. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +4 -3
  18. package/esm2022/admin/components/association/association.component.mjs +18 -0
  19. package/esm2022/admin/i18n/en.translations.mjs +11 -1
  20. package/esm2022/admin/i18n/fr.translations.mjs +11 -1
  21. package/esm2022/admin/store/admin.service.mjs +5 -5
  22. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +7 -9
  23. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +32 -9
  24. package/esm2022/dataset/components/dataset.component.mjs +9 -5
  25. package/esm2022/dataset/i18n/en.translations.mjs +23 -3
  26. package/esm2022/dataset/i18n/fr.translations.mjs +24 -6
  27. package/esm2022/dataset/style/css.component.mjs +2 -2
  28. package/esm2022/filters/date/date-filter.component.mjs +3 -3
  29. package/esm2022/filters/number/number-filter.component.mjs +3 -3
  30. package/esm2022/filters/text/text-filter.component.mjs +3 -3
  31. package/esm2022/import/components/import.component.mjs +5 -16
  32. package/esm2022/import/store/import.actions.mjs +1 -1
  33. package/esm2022/import/store/import.effects.mjs +3 -3
  34. package/esm2022/import/store/import.reducer.mjs +5 -13
  35. package/esm2022/import/store/import.selectors.mjs +5 -7
  36. package/esm2022/import/store/import.service.mjs +1 -1
  37. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +42 -0
  38. package/esm2022/lib/core/components/accordion/accordion.component.mjs +13 -0
  39. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +16 -6
  40. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  41. package/esm2022/lib/core/core.module.mjs +26 -8
  42. package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
  43. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
  44. package/esm2022/lib/core/model/dataset.interface.mjs +1 -1
  45. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -2
  46. package/esm2022/lib/core/public-api.mjs +3 -1
  47. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  48. package/esm2022/lib/core/store/field/field.interface.mjs +3 -1
  49. package/esm2022/lib/core/symbol/symbol.service.mjs +53 -15
  50. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
  51. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +1 -1
  52. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +3 -2
  53. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +6 -4
  54. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +6 -11
  55. package/esm2022/pipeline/style/css.component.mjs +2 -2
  56. package/esm2022/presentation/components/presentation.component.mjs +3 -3
  57. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -7
  58. package/esm2022/restitution/style/css.component.mjs +2 -2
  59. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +55 -195
  60. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +2 -2
  61. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +2 -2
  62. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +146 -0
  63. package/esm2022/widgets/widget-map/public-api.mjs +3 -1
  64. package/fesm2022/provoly-dashboard-admin.mjs +56 -15
  65. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  66. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +6 -8
  67. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
  68. package/fesm2022/provoly-dashboard-dataset.mjs +86 -21
  69. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  70. package/fesm2022/provoly-dashboard-filters-date.mjs +2 -2
  71. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  72. package/fesm2022/provoly-dashboard-filters-number.mjs +2 -2
  73. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  74. package/fesm2022/provoly-dashboard-filters-text.mjs +2 -2
  75. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  76. package/fesm2022/provoly-dashboard-import.mjs +14 -35
  77. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  78. package/fesm2022/provoly-dashboard-pipeline.mjs +15 -19
  79. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  80. package/fesm2022/provoly-dashboard-presentation.mjs +2 -2
  81. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  82. package/fesm2022/provoly-dashboard-restitution.mjs +4 -8
  83. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  84. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +260 -260
  85. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  86. package/fesm2022/provoly-dashboard.mjs +200 -48
  87. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  88. package/import/components/import.component.d.ts +3 -9
  89. package/import/store/import.actions.d.ts +3 -16
  90. package/import/store/import.effects.d.ts +1 -1
  91. package/import/store/import.reducer.d.ts +2 -5
  92. package/import/store/import.selectors.d.ts +2 -7
  93. package/import/store/import.service.d.ts +2 -2
  94. package/lib/core/components/accordion/accordion-item/accordion-item.component.d.ts +17 -0
  95. package/lib/core/components/accordion/accordion.component.d.ts +6 -0
  96. package/lib/core/components/modal-status/modal-status.component.d.ts +10 -1
  97. package/lib/core/core.module.d.ts +15 -11
  98. package/lib/core/i18n/en.translations.d.ts +1 -0
  99. package/lib/core/i18n/fr.translations.d.ts +1 -0
  100. package/lib/core/model/dataset.interface.d.ts +2 -1
  101. package/lib/core/model/widget-map-manifest.interface.d.ts +0 -1
  102. package/lib/core/public-api.d.ts +2 -0
  103. package/lib/core/store/data-source/data-source.model.d.ts +1 -0
  104. package/lib/core/store/field/field.interface.d.ts +3 -1
  105. package/lib/core/symbol/symbol.service.d.ts +18 -2
  106. package/lib/dashboard/components/widgets/base-widget.component.d.ts +1 -1
  107. package/package.json +11 -7
  108. package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +1 -3
  109. package/pipeline/style/_o-pipeline.scss +0 -108
  110. package/restitution/components/restitution-list/restitution-list.component.d.ts +0 -2
  111. package/restitution/style/_o-restitution-list.scss +2 -24
  112. package/schematics/migration.json +10 -0
  113. package/schematics/ng-add/index.spec.js +33 -1
  114. package/schematics/ng-add/index.spec.js.map +1 -1
  115. package/schematics/ng-update/utils/complete.function.d.ts +2 -0
  116. package/schematics/ng-update/utils/complete.function.js +10 -0
  117. package/schematics/ng-update/utils/complete.function.js.map +1 -0
  118. package/schematics/ng-update/version-0-13/index.d.ts +2 -0
  119. package/schematics/ng-update/version-0-13/index.js +30 -0
  120. package/schematics/ng-update/version-0-13/index.js.map +1 -0
  121. package/schematics/ng-update/version-0-13/index.spec.d.ts +1 -0
  122. package/schematics/ng-update/version-0-13/index.spec.js +167 -0
  123. package/schematics/ng-update/version-0-13/index.spec.js.map +1 -0
  124. package/styles/abstracts/_mixins.scss +14 -0
  125. package/styles/components/_m-filter.scss +0 -1
  126. package/styles/components/_o-accordion.scss +91 -0
  127. package/styles/components/_o-panel.scss +46 -0
  128. package/styles-theme/components-theme/_o-accordion.theme.scss +30 -0
  129. package/styles-theme/components-theme/_o-pipeline.theme.scss +0 -26
  130. package/styles-theme/main-theme.scss +1 -0
  131. package/widgets/widget-map/component/widget-map.component.d.ts +14 -25
  132. package/widgets/widget-map/interaction/interaction-manager.class.d.ts +27 -0
  133. package/widgets/widget-map/public-api.d.ts +2 -0
@@ -12,19 +12,21 @@ import * as i1$3 from '@ngrx/effects';
12
12
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
13
13
  import * as i1 from '@ngrx/store';
14
14
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, StoreModule } from '@ngrx/store';
15
- import { of, Subscription, filter, combineLatest, debounceTime, BehaviorSubject, map, Subject, mergeMap, from as from$1, forkJoin, catchError as catchError$1, throwError, switchMap, tap as tap$1, merge, ReplaySubject, combineLatestWith, distinctUntilChanged as distinctUntilChanged$1, startWith, fromEvent, auditTime, interval } from 'rxjs';
15
+ import { of, Subscription, filter, combineLatest, debounceTime, BehaviorSubject, map, Subject, mergeMap, from as from$1, forkJoin, catchError as catchError$1, throwError, switchMap, tap as tap$1, merge, ReplaySubject, combineLatestWith, distinctUntilChanged as distinctUntilChanged$1, startWith, delay, fromEvent, auditTime, interval } from 'rxjs';
16
16
  import * as i3 from '@angular/platform-browser';
17
17
  import { Style, Icon } from 'ol/style';
18
18
  import { createEntityAdapter } from '@ngrx/entity';
19
19
  import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
20
20
  import equal from 'fast-deep-equal/es6';
21
- import { distinctUntilChanged, filter as filter$1, debounceTime as debounceTime$1, mergeMap as mergeMap$1, map as map$1, catchError, withLatestFrom, tap, delay } from 'rxjs/operators';
21
+ import { distinctUntilChanged, filter as filter$1, debounceTime as debounceTime$1, mergeMap as mergeMap$1, map as map$1, catchError, withLatestFrom, tap, delay as delay$1 } from 'rxjs/operators';
22
22
  import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
23
23
  import { v4 } from 'uuid';
24
24
  import { GeoJSON } from 'ol/format';
25
25
  import { fromLonLat } from 'ol/proj';
26
+ import * as i1$4 from '@angular/cdk/accordion';
27
+ import { CdkAccordionModule } from '@angular/cdk/accordion';
26
28
  import * as i3$1 from '@angular/forms';
27
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
29
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
28
30
  import * as i2$2 from '@ng-select/ng-select';
29
31
  import { NgSelectModule } from '@ng-select/ng-select';
30
32
  import { webSocket } from 'rxjs/webSocket';
@@ -298,7 +300,7 @@ const enTranslations$1 = {
298
300
  },
299
301
  tile: 'Tiles',
300
302
  now: 'Today',
301
- since_day: 'Since {{day}} days',
303
+ since_day: 'Since {{day}} day{{plural}}',
302
304
  layout: {
303
305
  '0': 'Free layout',
304
306
  '0_detailled': 'Free mode display, rendering size and positioning fully customizable by the user.',
@@ -473,6 +475,7 @@ const enTranslations$1 = {
473
475
  label: 'Filters settings',
474
476
  noAttributes: 'Presentation had no available attributes',
475
477
  noFilters: 'No filters set up for this presentation yet.',
478
+ clear: 'Clear all',
476
479
  list: {
477
480
  attributes: 'Attributes: ',
478
481
  add: 'Add filter',
@@ -625,7 +628,7 @@ const frTranslations$1 = {
625
628
  },
626
629
  tile: 'Tuiles',
627
630
  now: "Aujourd'hui",
628
- since_day: 'Il y a {{day}} jours',
631
+ since_day: 'Il y a {{day}} jour{{plural}}',
629
632
  layout: {
630
633
  '0': 'Composition libre',
631
634
  '0_detailled': "Affichage en mode libre, la taille et le positionnement des restitutions sont entièrement paramétrables par l'utilisateur.",
@@ -800,6 +803,7 @@ const frTranslations$1 = {
800
803
  label: 'Paramétrer les filtres',
801
804
  noAttributes: "La présentation en cours ne dispose d'aucune attribut sur lequel filtrer",
802
805
  noFilters: "Vous n'avez pas encore paramétré de filtre.",
806
+ clear: 'Effacer',
803
807
  list: {
804
808
  attributes: 'Attributs: ',
805
809
  add: 'Créer un filtre',
@@ -1851,22 +1855,51 @@ class SymbolService {
1851
1855
  this.imageService = imageService;
1852
1856
  this.definitions = {};
1853
1857
  this.classes = [];
1858
+ this.imageCache = {};
1854
1859
  this.cache = {};
1855
- this.store.select(ConfigSelectors.iconDefinitions).subscribe((defs) => (this.definitions = defs));
1856
1860
  this.store.select(ClassSelectors.classes).subscribe((classes) => (this.classes = classes));
1861
+ this.store.select(ConfigSelectors.iconDefinitions).subscribe((defs) => {
1862
+ this.definitions = defs;
1863
+ // For each class, generate all icons for ruleset
1864
+ Object.keys(this.definitions).forEach((classId) => {
1865
+ if (!this.imageCache[classId]) {
1866
+ this.imageCache[classId] = { images: {}, borderedImages: {}, ruleSignature: '--init--' };
1867
+ }
1868
+ if (!this.imageCache[classId] ||
1869
+ this.imageCache[classId].ruleSignature !== JSON.stringify(this.definitions[classId])) {
1870
+ this.imageCache[classId].ruleSignature = JSON.stringify(this.definitions[classId]);
1871
+ this.imageCache[classId].images = this.generateAllRulesCombinaisonImages(this.definitions[classId]);
1872
+ this.imageCache[classId].borderedImages = this.generateAllRulesCombinaisonImages(this.definitions[classId], '#8cd560');
1873
+ }
1874
+ });
1875
+ });
1857
1876
  }
1858
- getSymbol(item, borderColor) {
1877
+ generateAllRulesCombinaisonImages(definition, borderColor) {
1878
+ return this.recursiveRuleMatches(definition)
1879
+ .map((ruleMatch) => ({ [ruleMatch]: this.generateImageForRuleMatch(ruleMatch, definition, borderColor) }))
1880
+ .reduce((p, c) => ({ ...p, ...c }), {});
1881
+ }
1882
+ recursiveRuleMatches(definition) {
1883
+ const [rule, ...otherRules] = definition;
1884
+ if (!rule) {
1885
+ return [''];
1886
+ }
1887
+ return this.recursiveRuleMatches(otherRules)
1888
+ .map((rule) => ['0' + rule, '1' + rule])
1889
+ .flat();
1890
+ }
1891
+ generateImageForRuleMatch(ruleMatch, definition, borderColor) {
1859
1892
  const canvas = document.createElement('canvas');
1860
1893
  const ctx = canvas.getContext('2d') ?? null;
1894
+ let applicableRules = definition.filter((_, idx) => ruleMatch[idx] === '1');
1895
+ if (applicableRules.length === 0) {
1896
+ // If no rule match, then apply default rule only
1897
+ applicableRules = definition.filter((def) => !!def.isDefault);
1898
+ }
1899
+ const promiseImages = Promise.all(applicableRules.map((rule) => this.downloadImage(rule.iconUrl)));
1861
1900
  return new Promise((resolve, reject) => {
1862
- // First, we try to apply non-default rules
1863
- let appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter((def) => this.matchRule(item, def.rule) && !def.isDefault);
1864
- if (appliableRules.length === 0) {
1865
- // If no rule match, then apply default rule
1866
- appliableRules = (this.definitions[item.oClass] ?? this.definitions['default']).filter((def) => !!def.isDefault);
1867
- }
1868
- const promiseImages = Promise.all(appliableRules.map((rule) => this.downloadImage(rule.iconUrl)));
1869
- promiseImages.then((images) => {
1901
+ promiseImages
1902
+ .then((images) => {
1870
1903
  canvas.width = 600;
1871
1904
  canvas.height = 600;
1872
1905
  const subSize = {
@@ -1876,7 +1909,7 @@ class SymbolService {
1876
1909
  offsetToBottom: 600 * (1 - SUB_ICON_SIZE_PERCENT)
1877
1910
  };
1878
1911
  // Then draw everything
1879
- appliableRules.forEach((def, idx, arr) => {
1912
+ applicableRules.forEach((def, idx, arr) => {
1880
1913
  const image = images[idx];
1881
1914
  switch (def.position) {
1882
1915
  case IconPosition.BOTTOM_RIGHT:
@@ -1921,9 +1954,18 @@ class SymbolService {
1921
1954
  }
1922
1955
  });
1923
1956
  resolve(canvas);
1924
- });
1957
+ })
1958
+ .catch((err) => reject(err));
1925
1959
  });
1926
1960
  }
1961
+ getSymbol(item, bordered) {
1962
+ // First, we try to apply non-default rules
1963
+ let ruleMatch = (this.definitions[item.oClass] ?? this.definitions['default'])
1964
+ .map((def) => (this.matchRule(item, def.rule) && !def.isDefault ? '1' : '0'))
1965
+ .join('');
1966
+ const imageSet = this.imageCache[item.oClass] ?? this.imageCache['default'];
1967
+ return imageSet[bordered ? 'borderedImages' : 'images'][ruleMatch];
1968
+ }
1927
1969
  getSymbolOfClass(id) {
1928
1970
  const definitionsForClass = (this.definitions[id] || []).find((def) => def.isDefault);
1929
1971
  return this.downloadAsUrl(definitionsForClass?.iconUrl ?? DEFAULT_ICON_URL);
@@ -1941,9 +1983,9 @@ class SymbolService {
1941
1983
  });
1942
1984
  });
1943
1985
  }
1944
- getSymbolAsIconStyle(item, borderColor) {
1986
+ getSymbolAsIconStyle(item, bordered) {
1945
1987
  return new Promise((resolve, reject) => {
1946
- this.getSymbol(item, borderColor)
1988
+ this.getSymbol(item, bordered)
1947
1989
  .then((canvas) => {
1948
1990
  const size = (this.definitions[item.oClass] ?? this.definitions['default'])[0].iconSize;
1949
1991
  const scale = [size[0] / canvas.width, size[1] / canvas.height];
@@ -2054,6 +2096,8 @@ const enTranslations = {
2054
2096
  status: 'Status',
2055
2097
  versionHistory: 'Version history',
2056
2098
  data: 'Data',
2099
+ table: 'Table',
2100
+ map: 'Map',
2057
2101
  export: 'Export',
2058
2102
  api: 'API',
2059
2103
  returnToList: 'Back to catalog',
@@ -2070,12 +2114,30 @@ const enTranslations = {
2070
2114
  ACTIVE: 'Invalidate',
2071
2115
  INACTIVE: 'Validate',
2072
2116
  ERROR: 'Consult errors',
2117
+ WARNING: 'Consult warnings',
2073
2118
  LOADING: '',
2074
2119
  INDEXING: ''
2075
2120
  },
2076
2121
  error: {
2077
- title: 'List of errors',
2078
- close: 'Close'
2122
+ type: 'Type',
2123
+ elements: 'Elements',
2124
+ message: 'Message',
2125
+ close: 'Fermer',
2126
+ modalTitle: {
2127
+ ERROR: 'List of errors',
2128
+ WARNING: 'List of warnings'
2129
+ },
2130
+ level: {
2131
+ ERROR: 'Error',
2132
+ WARNING: 'Warning'
2133
+ },
2134
+ code: {
2135
+ UNRECOGNIZED: 'Unrecognized attribute {{name}}',
2136
+ FORMAT: 'Wrong format for attribute {{name}}',
2137
+ ELASTIC_SEARCH: 'Insertion error for element {{recordId}}',
2138
+ NO_VALUES: 'No value for {{recordId}} line',
2139
+ FORMAT_FILE_ERROR: 'Unsupported file format'
2140
+ }
2079
2141
  }
2080
2142
  }
2081
2143
  }
@@ -2088,9 +2150,10 @@ const frTranslations = {
2088
2150
  search: 'Rechercher',
2089
2151
  date: 'Date',
2090
2152
  status: 'Statut',
2091
- data: 'Données',
2092
2153
  versionHistory: 'Historique de versions',
2154
+ data: 'Données',
2093
2155
  table: 'Tableau',
2156
+ map: 'Carte',
2094
2157
  export: 'Export',
2095
2158
  api: 'API',
2096
2159
  returnToList: 'Retour au catalogue',
@@ -2101,21 +2164,38 @@ const frTranslations = {
2101
2164
  INACTIVE: 'Invalide',
2102
2165
  ERROR: 'En erreur',
2103
2166
  ACTIVE: 'Disponible',
2104
- currentlyActive: 'Active'
2167
+ currentlyActive: 'Actif'
2105
2168
  },
2106
2169
  buttonAction: {
2107
2170
  ACTIVE: 'Invalider',
2108
2171
  INACTIVE: 'Valider',
2109
2172
  ERROR: 'Consulter erreurs',
2173
+ WARNING: 'Consulter warnings',
2110
2174
  LOADING: '',
2111
2175
  INDEXING: ''
2112
2176
  },
2113
2177
  error: {
2114
- title: 'Liste des erreurs',
2115
- code: 'Code',
2178
+ ERROR: 'Erreur',
2179
+ WARNING: 'Warning',
2180
+ type: 'Type',
2116
2181
  elements: 'Elements',
2117
2182
  message: 'Message',
2118
- close: 'Fermer'
2183
+ close: 'Fermer',
2184
+ modalTitle: {
2185
+ ERROR: 'Liste des erreurs',
2186
+ WARNING: 'Liste des warnings'
2187
+ },
2188
+ level: {
2189
+ ERROR: 'Erreur',
2190
+ WARNING: 'Warning'
2191
+ },
2192
+ code: {
2193
+ UNRECOGNIZED: 'Attribut {{name}} non reconnu',
2194
+ FORMAT: "Format d'attribut {{name}} incorrect",
2195
+ ELASTIC_SEARCH: "Erreur d'insertion pour l'élément {{recordId}}",
2196
+ NO_VALUES: 'Pas de valeur pour la ligne {{recordId}}',
2197
+ FORMAT_FILE_ERROR: "Le format du fichier transmis n'est pas géré"
2198
+ }
2119
2199
  }
2120
2200
  }
2121
2201
  }
@@ -2389,9 +2469,10 @@ class PryModalStatusComponent {
2389
2469
  this.store.dispatch(DataSourceActions.dataset.previews.getById({ id: version.id }));
2390
2470
  this.datasetPreviews$ = this.store
2391
2471
  .select(DataSourceSelectors.datasetPreviews)
2392
- .pipe(map((previews) => previews
2393
- .map((preview) => preview.messages.map((message) => ({ ...message, level: preview.level, count: preview.count })))
2394
- .flat()));
2472
+ .pipe(map((previews) => previews.map((preview) => preview.messages.map((message) => ({ ...message, count: preview.count }))).flat()));
2473
+ this.messageCount$ = this.datasetPreviews$.pipe(map((previews) => {
2474
+ return previews.map((preview) => preview.count).reduce((p, c) => p + c, 0);
2475
+ }));
2395
2476
  }
2396
2477
  }
2397
2478
  constructor(store) {
@@ -2401,12 +2482,21 @@ class PryModalStatusComponent {
2401
2482
  goBack() {
2402
2483
  this.gotoConsult.emit(this.version);
2403
2484
  }
2485
+ getModalTitle() {
2486
+ if (this._version?.state !== 'ERROR' && this._version?.hasWarnings) {
2487
+ return 'WARNING';
2488
+ }
2489
+ return 'ERROR';
2490
+ }
2491
+ getErrorCodeParam(code, name, recordId) {
2492
+ return code === 'UNRECOGNIZED' || code === 'CAST' ? { name } : { recordId };
2493
+ }
2404
2494
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryModalStatusComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
2405
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryModalStatusComponent, selector: "pry-modal-status", inputs: { version: "version" }, outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">{{ '@pry.dataset.error.title' | i18n }}</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\">\n <thead>\n <tr>\n <th>Type</th>\n <th>{{ '@pry.dataset.error.code' | 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 {{ preview.level }}\n </td>\n <td>\n {{ preview.extractErrorCode }}\n </td>\n <td>\n {{ preview.count }}\n </td>\n <td>\n {{ preview.name }}\n </td>\n </tr>\n </tbody>\n </table>\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" }] }); }
2495
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryModalStatusComponent, selector: "pry-modal-status", inputs: { version: "version" }, outputs: { gotoConsult: "gotoConsult" }, ngImport: i0, template: "<div class=\"o-modal-wrapper\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.dataset.error.modalTitle.' + getModalTitle() | i18n }} ({{ 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\">\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.extractErrorCode\n | i18n : getErrorCodeParam(preview.extractErrorCode, preview.name, preview.recordId)\n }}\n </td>\n </tr>\n </tbody>\n </table>\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" }] }); }
2406
2496
  }
2407
2497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryModalStatusComponent, decorators: [{
2408
2498
  type: Component,
2409
- args: [{ selector: 'pry-modal-status', template: "<div class=\"o-modal-wrapper\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">{{ '@pry.dataset.error.title' | i18n }}</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\">\n <thead>\n <tr>\n <th>Type</th>\n <th>{{ '@pry.dataset.error.code' | 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 {{ preview.level }}\n </td>\n <td>\n {{ preview.extractErrorCode }}\n </td>\n <td>\n {{ preview.count }}\n </td>\n <td>\n {{ preview.name }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n" }]
2499
+ args: [{ selector: 'pry-modal-status', template: "<div class=\"o-modal-wrapper\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.dataset.error.modalTitle.' + getModalTitle() | i18n }} ({{ 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\">\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.extractErrorCode\n | i18n : getErrorCodeParam(preview.extractErrorCode, preview.name, preview.recordId)\n }}\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n" }]
2410
2500
  }], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { gotoConsult: [{
2411
2501
  type: Output
2412
2502
  }], version: [{
@@ -4306,6 +4396,8 @@ var FieldType;
4306
4396
  FieldType["POLYGON"] = "Polygon";
4307
4397
  FieldType["MULTIPOLYGON"] = "MultiPolygon";
4308
4398
  FieldType["GEOMETRYCOLLECTION"] = "GeometryCollection";
4399
+ FieldType["OCLASS"] = "mod\u00E8le de donn\u00E9es";
4400
+ FieldType["DATASET"] = "test";
4309
4401
  })(FieldType || (FieldType = {}));
4310
4402
 
4311
4403
  const hiddenFieldText = '*********';
@@ -4722,6 +4814,51 @@ const searchReducer = createReducer(initialSearchState, on(SearchActions.search,
4722
4814
  searchLoading: [...state.searchLoading.filter((id) => id !== (action.id ?? DEFAULT_NAMED_QUERY_ID))]
4723
4815
  })));
4724
4816
 
4817
+ class AccordionComponent {
4818
+ constructor() { }
4819
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4820
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AccordionComponent, selector: "pry-accordion", ngImport: i0, template: "<cdk-accordion class=\"o-accordion\">\n <ng-content></ng-content>\n</cdk-accordion>\n", dependencies: [{ kind: "directive", type: i1$4.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }] }); }
4821
+ }
4822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionComponent, decorators: [{
4823
+ type: Component,
4824
+ args: [{ selector: 'pry-accordion', template: "<cdk-accordion class=\"o-accordion\">\n <ng-content></ng-content>\n</cdk-accordion>\n" }]
4825
+ }], ctorParameters: function () { return []; } });
4826
+
4827
+ class AccordionItemComponent {
4828
+ constructor() {
4829
+ this.item = '';
4830
+ this.borderColor = '';
4831
+ this.translationStringBase = '';
4832
+ this.showSearchBar = false;
4833
+ this.search = new EventEmitter();
4834
+ }
4835
+ onSearch(item, $event) {
4836
+ this.search.emit({ ...this.search$.getValue(), [item]: $event });
4837
+ }
4838
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4839
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AccordionItemComponent, selector: "pry-accordion-item", inputs: { item: "item", borderColor: "borderColor", index: "index", translationStringBase: "translationStringBase", length: "length", showSearchBar: "showSearchBar", search$: "search$" }, outputs: { search: "search" }, ngImport: i0, template: "<cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [id]=\"'button_' + item\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + item\"\n [attr.aria-selected]=\"accordionItem.expanded\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n>\n <div class=\"o-accordion__title\" [class.is-active]=\"accordionItem.expanded\" [style.--border-color]=\"borderColor\">\n <button type=\"button\" class=\"o-accordion__title__btn\" (click)=\"accordionItem.toggle()\">\n <span>\n {{ translationStringBase + item | i18n }}\n <ng-container *ngIf=\"length\">&nbsp;({{ length }}) </ng-container>\n </span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"accordionItem.expanded ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </div>\n <div\n *ngIf=\"accordionItem.expanded\"\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + item\"\n [id]=\"'panel_' + item\"\n [attr.aria-hidden]=\"!accordionItem.expanded\"\n [style.--border-color]=\"borderColor\"\n >\n <div *ngIf=\"showSearchBar\" class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[item]\"\n (ngModelChange)=\"onSearch(item, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <ng-content></ng-content>\n </div>\n</cdk-accordion-item>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i1$4.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "directive", type: i3$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: I18nPipe, name: "i18n" }] }); }
4840
+ }
4841
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AccordionItemComponent, decorators: [{
4842
+ type: Component,
4843
+ args: [{ selector: 'pry-accordion-item', template: "<cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [id]=\"'button_' + item\"\n role=\"tab\"\n [attr.aria-controls]=\"'panel_' + item\"\n [attr.aria-selected]=\"accordionItem.expanded\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n>\n <div class=\"o-accordion__title\" [class.is-active]=\"accordionItem.expanded\" [style.--border-color]=\"borderColor\">\n <button type=\"button\" class=\"o-accordion__title__btn\" (click)=\"accordionItem.toggle()\">\n <span>\n {{ translationStringBase + item | i18n }}\n <ng-container *ngIf=\"length\">&nbsp;({{ length }}) </ng-container>\n </span>\n <pry-icon\n [width]=\"15\"\n [height]=\"15\"\n [iconSvg]=\"accordionItem.expanded ? 'chevron_top_rounded' : 'chevron_bottom_rounded'\"\n ></pry-icon>\n </button>\n </div>\n <div\n *ngIf=\"accordionItem.expanded\"\n class=\"o-accordion__panel\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'button_' + item\"\n [id]=\"'panel_' + item\"\n [attr.aria-hidden]=\"!accordionItem.expanded\"\n [style.--border-color]=\"borderColor\"\n >\n <div *ngIf=\"showSearchBar\" class=\"o-accordion__panel__head\">\n <input\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.toolbox.catalog.filter.name' | i18n\"\n [ngModel]=\"(search$ | async)[item]\"\n (ngModelChange)=\"onSearch(item, $event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <ng-content></ng-content>\n </div>\n</cdk-accordion-item>\n" }]
4844
+ }], ctorParameters: function () { return []; }, propDecorators: { item: [{
4845
+ type: Input
4846
+ }], borderColor: [{
4847
+ type: Input
4848
+ }], index: [{
4849
+ type: Input
4850
+ }], translationStringBase: [{
4851
+ type: Input
4852
+ }], length: [{
4853
+ type: Input
4854
+ }], showSearchBar: [{
4855
+ type: Input
4856
+ }], search$: [{
4857
+ type: Input
4858
+ }], search: [{
4859
+ type: Output
4860
+ }] } });
4861
+
4725
4862
  class PryCoreModule {
4726
4863
  constructor(pryTranslateService) {
4727
4864
  this.pryTranslateService = pryTranslateService;
@@ -4746,13 +4883,17 @@ class PryCoreModule {
4746
4883
  PryNqColorSelectorComponent,
4747
4884
  PryAccessDirective,
4748
4885
  PryUploadComponent,
4749
- PrySelectImageComponent], imports: [CommonModule,
4886
+ PrySelectImageComponent,
4887
+ AccordionComponent,
4888
+ AccordionItemComponent], imports: [CommonModule,
4750
4889
  RouterModule,
4751
4890
  HttpClientModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1.StoreFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, i1$3.EffectsFeatureModule, PryIconModule,
4752
4891
  OverlayModule,
4753
4892
  PryOverlayModule,
4754
4893
  PryI18nModule,
4755
- PryModalStatusModule], exports: [TranslateIdPipe,
4894
+ PryModalStatusModule,
4895
+ CdkAccordionModule,
4896
+ FormsModule], exports: [TranslateIdPipe,
4756
4897
  TranslateItemToSymbolPipe,
4757
4898
  GetSecuredImagePipe,
4758
4899
  BaseLayoutComponent,
@@ -4761,7 +4902,9 @@ class PryCoreModule {
4761
4902
  PryNqColorSelectorComponent,
4762
4903
  PryAccessDirective,
4763
4904
  PryUploadComponent,
4764
- PrySelectImageComponent] }); }
4905
+ PrySelectImageComponent,
4906
+ AccordionComponent,
4907
+ AccordionItemComponent] }); }
4765
4908
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryCoreModule, providers: [AsyncPipe, TranslateIdPipe, TranslateItemToSymbolPipe], imports: [CommonModule,
4766
4909
  RouterModule,
4767
4910
  HttpClientModule,
@@ -4787,7 +4930,9 @@ class PryCoreModule {
4787
4930
  OverlayModule,
4788
4931
  PryOverlayModule,
4789
4932
  PryI18nModule,
4790
- PryModalStatusModule] }); }
4933
+ PryModalStatusModule,
4934
+ CdkAccordionModule,
4935
+ FormsModule] }); }
4791
4936
  }
4792
4937
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryCoreModule, decorators: [{
4793
4938
  type: NgModule,
@@ -4803,7 +4948,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4803
4948
  PryNqColorSelectorComponent,
4804
4949
  PryAccessDirective,
4805
4950
  PryUploadComponent,
4806
- PrySelectImageComponent
4951
+ PrySelectImageComponent,
4952
+ AccordionComponent,
4953
+ AccordionItemComponent
4807
4954
  ],
4808
4955
  imports: [
4809
4956
  CommonModule,
@@ -4831,7 +4978,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4831
4978
  OverlayModule,
4832
4979
  PryOverlayModule,
4833
4980
  PryI18nModule,
4834
- PryModalStatusModule
4981
+ PryModalStatusModule,
4982
+ CdkAccordionModule,
4983
+ FormsModule
4835
4984
  ],
4836
4985
  providers: [AsyncPipe, TranslateIdPipe, TranslateItemToSymbolPipe],
4837
4986
  exports: [
@@ -4844,7 +4993,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4844
4993
  PryNqColorSelectorComponent,
4845
4994
  PryAccessDirective,
4846
4995
  PryUploadComponent,
4847
- PrySelectImageComponent
4996
+ PrySelectImageComponent,
4997
+ AccordionComponent,
4998
+ AccordionItemComponent
4848
4999
  ]
4849
5000
  }]
4850
5001
  }], ctorParameters: function () { return [{ type: PryI18nService }]; } });
@@ -5842,7 +5993,7 @@ class PrySelectComponent {
5842
5993
  useExisting: forwardRef(() => PrySelectComponent),
5843
5994
  multi: true
5844
5995
  }
5845
- ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5996
+ ], ngImport: i0, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n </ng-select>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2$2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5846
5997
  }
5847
5998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySelectComponent, decorators: [{
5848
5999
  type: Component,
@@ -5852,7 +6003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
5852
6003
  useExisting: forwardRef(() => PrySelectComponent),
5853
6004
  multi: true
5854
6005
  }
5855
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n >\n </ng-select>\n</ng-template>\n" }]
6006
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"itemsAsOption; else itemAsInput\">\n <ng-select\n class=\"a-pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindData ? undefined : bindValue\"\n [bindLabel]=\"bindData ? undefined : bindLabel\"\n [clearable]=\"clearable\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [searchable]=\"autocomplete\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n <!-- Label part -->\n <ng-container *ngIf=\"templateLabel; else noTemplateLabel\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <ng-container [ngTemplateOutlet]=\"templateLabel\" [ngTemplateOutletContext]=\"{ item, clear }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateLabel>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span\n *ngIf=\"multiple && !multipleClearRight\"\n class=\"ng-value-icon left\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n <span class=\"ng-value-label\">\n <ng-container *ngIf=\"bindIcon\">\n <pry-icon\n style=\"margin-right: 0.25em\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n </ng-container>\n <ng-container *ngIf=\"labelTranslate; else noTranslate\">\n <ng-container *ngIf=\"translationFn; else noTranslationFn\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFn>\n <ng-container *ngIf=\"baseTranslate + (bindData ? item : item?.[bindLabel]) !== 'null'\">\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTranslate>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n <span\n *ngIf=\"multiple && multipleClearRight\"\n class=\"ng-value-icon right\"\n (click)=\"clear(item)\"\n aria-hidden=\"true\"\n >\u00D7</span\n >\n </ng-template>\n </ng-template>\n\n <!-- Option part -->\n <ng-container *ngIf=\"templateOption; else noTemplateOption\">\n <ng-template ng-option-tmp let-item=\"item\">\n <ng-container [ngTemplateOutlet]=\"templateOption\" [ngTemplateOutletContext]=\"{ item }\"></ng-container>\n </ng-template>\n </ng-container>\n <ng-template #noTemplateOption>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"ng-option-label\">\n <pry-icon\n *ngIf=\"bindIcon\"\n [iconSvg]=\"item[bindIcon]\"\n [width]=\"iconSize[0]\"\n [height]=\"iconSize[1]\"\n [animation]=\"false\"\n ></pry-icon>\n <ng-container *ngIf=\"labelTranslate; else noTranslateOption\">\n <ng-container *ngIf=\"translationFn; else noTranslationFnOption\">\n {{ translationFn(bindData ? item : item?.[bindLabel], translationFnArgs) | i18n }}\n </ng-container>\n <ng-template #noTranslationFnOption>\n {{ baseTranslate + (bindData ? item : item?.[bindLabel]) | i18n }}\n </ng-template>\n </ng-container>\n <ng-template #noTranslateOption>\n {{ bindData ? item : item?.[bindLabel] }}\n </ng-template>\n </span>\n </ng-template>\n </ng-template>\n </ng-select>\n</ng-container>\n<ng-template #itemAsInput>\n <ng-select\n #select\n class=\"pry-select\"\n [class.pry-select-form]=\"isForm\"\n [multiple]=\"multiple\"\n [closeOnSelect]=\"!multiple\"\n [items]=\"items\"\n [bindValue]=\"bindValue\"\n [bindLabel]=\"bindLabel\"\n [clearable]=\"clearable\"\n [searchable]=\"autocomplete\"\n [ngModel]=\"value\"\n (ngModelChange)=\"writeValue($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [name]=\"name\"\n [placeholder]=\"placeholder!\"\n [clearAllText]=\"'@pry.filters.clear' | i18n\"\n >\n </ng-select>\n</ng-template>\n" }]
5856
6007
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { labelTranslate: [{
5857
6008
  type: Input
5858
6009
  }], baseTranslate: [{
@@ -6743,7 +6894,9 @@ class WidgetInstanciatorComponent extends SubscriptionnerDirective {
6743
6894
  ngAfterViewInit() {
6744
6895
  // Dynamically create associated component
6745
6896
  this.widgetManifest$ = combineLatest([this.staticManifest$, this._widgetIndex$]).pipe(distinctUntilChanged$1(), switchMap(([staticManifest, index]) => !!staticManifest ? of(staticManifest) : this.store.select(DashboardSelectors.widgetManifest(index))), distinctUntilChanged$1((p, c) => equal(p, c)));
6746
- this.subscriptions.add(this.widgetManifest$.subscribe((widgetManifest) => {
6897
+ this.subscriptions.add(this.widgetManifest$
6898
+ .pipe(map((widgetManifest) => ({ type: widgetManifest.type, layout: widgetManifest.layout })), distinctUntilChanged$1((p, c) => equal(p, c)), withLatestFrom(this.widgetManifest$), map(([triggering, widgetManifest]) => widgetManifest))
6899
+ .subscribe((widgetManifest) => {
6747
6900
  this.componentRef.clear();
6748
6901
  this.instanceSubscription?.unsubscribe();
6749
6902
  this.widgetFactoryService
@@ -7711,7 +7864,6 @@ var GraphType;
7711
7864
 
7712
7865
  var TooltipMode;
7713
7866
  (function (TooltipMode) {
7714
- TooltipMode["HOVER"] = "hover";
7715
7867
  TooltipMode["CLICK"] = "click";
7716
7868
  TooltipMode["NONE"] = "none";
7717
7869
  })(TooltipMode || (TooltipMode = {}));
@@ -7748,7 +7900,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7748
7900
  type: 'heatmap'
7749
7901
  }
7750
7902
  ],
7751
- tooltipMode: TooltipMode.HOVER
7903
+ tooltipMode: TooltipMode.CLICK
7752
7904
  },
7753
7905
  datasource: USE_CURRENT_RESULTSET
7754
7906
  },
@@ -7767,7 +7919,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7767
7919
  type: 'bubble'
7768
7920
  }
7769
7921
  ],
7770
- tooltipMode: TooltipMode.HOVER
7922
+ tooltipMode: TooltipMode.CLICK
7771
7923
  },
7772
7924
  datasource: USE_CURRENT_RESULTSET
7773
7925
  },
@@ -7786,7 +7938,7 @@ class ToolboxManifestService extends SubscriptionnerDirective {
7786
7938
  type: 'marker'
7787
7939
  }
7788
7940
  ],
7789
- tooltipMode: TooltipMode.HOVER
7941
+ tooltipMode: TooltipMode.CLICK
7790
7942
  },
7791
7943
  datasource: USE_CURRENT_RESULTSET
7792
7944
  },
@@ -8786,7 +8938,7 @@ class PryWidgetHeaderComponent extends SubscriptionnerDirective {
8786
8938
  this.type = LibraryTypes.ILLUSTRATION;
8787
8939
  this.windowManifest$ = this.store
8788
8940
  .select(DashboardSelectors.windowManifest)
8789
- .pipe(distinctUntilChanged$1((p, c) => JSON.stringify(p) === JSON.stringify(c)));
8941
+ .pipe(distinctUntilChanged$1((p, c) => equal(p, c)));
8790
8942
  this.targetIndexes$ = this.store.select(DashboardSelectors.targetTenantsIndexes);
8791
8943
  this.subscriptions.add(this.windowManifest$.subscribe((manifest) => {
8792
8944
  this.windowManifest = manifest;
@@ -9583,7 +9735,7 @@ class DashboardEffects {
9583
9735
  this.fetchStaticManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.selectedItemIds)), filter$1(([action, rank]) => rank === 0), mergeMap$1(([action, rank]) => this.manifestService
9584
9736
  .get(action.id)
9585
9737
  .pipe(map$1((staticManifest) => DashboardActions.updateStaticManifest({ staticManifest }))))));
9586
- this.fetchStaticManifestLoading$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), delay(5000), map$1((action) => DashboardActions.endLoading())));
9738
+ this.fetchStaticManifestLoading$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchStaticManifest), delay$1(5000), map$1((action) => DashboardActions.endLoading())));
9587
9739
  this.loadAndActivateManifest$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.loadAndActivateManifest, DashboardActions.loadManifest), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.selectedItemIds)), filter$1(([action, rank]) => rank === 0), mergeMap$1(([action, rank, selectedIds]) => this.manifestService.get(action.id).pipe(mergeMap$1((manifest) => {
9588
9740
  return action.type === DashboardActions.loadAndActivateManifest.type
9589
9741
  ? [
@@ -10784,5 +10936,5 @@ function filterLoader(module, prop) {
10784
10936
  * Generated bundle index. Do not edit.
10785
10937
  */
10786
10938
 
10787
- export { Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
10939
+ export { AccordionComponent, AccordionItemComponent, Aggregation, BaseFilterComponent, BaseFilterModule, BaseLayoutComponent, BaseMenuComponent, BaseToolboxComponent, BaseTooltipComponent, BaseTooltipModule, BaseWidgetComponent, BaseWidgetModule, BusService, CategoryActions, CategorySelectors, CategoryService, ChartOptionDefault, ClassActions, ClassSelectors, ClassService, ConfigActions, ConfigSelectors, ConfigService, ContextMenuActions, ContextMenuComponent, ContextMenuSelectors, DEFAULT_CATEGORY_UUID, DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ICON_URL, DEFAULT_MSG_TIMEOUT, DEFAULT_NAMED_QUERY_ID, DEFAULT_RESTITUTION_ICON_URL, DEFAULT_ROWS_NUMBER, DEFAULT_ROW_HEIGHT_PX, DELAY_FOR_HIDE, DashboardActions, DashboardComponent, DashboardGridLayout, DashboardSelectors, DataSourceActions, DataSourceSelectors, DataSourceService, DataWidgetComponent, DatasourceSelectorComponent, DateRangeHighlightPipe, DateUtils, DefaultTooltipComponent, DefaultViewGuard, ENV_OPTIONS, EXPLORE_NAMED_QUERY_ID, FIELD_OPTIONS, FIELD_UUID, FILTERS_DOMAIN, FILTER_DEFINITION, FieldActions, FieldSelectors, FieldService, FieldType, FilterFactoryService, FilterInstanciatorComponent, GeoMetadata, GeocodingService, GetSecuredImagePipe, GraphType, HTTP_ORIGIN_METADATA, I18nPipe, INTERNALLY_STORED_IMAGE_PREFIX, IconPosition, ImageActions, ImageService, ImagesSelectors, ItemUtils, LibraryTypes, LoopScrollColumnComponent, METADATA_TYPE, META_OPTIONS, MIME_TYPE_RESULTSET, MIME_TYPE_WIDGET_MANIFEST, MIME_TYPE_WIDGET_SIZE, MIME_TYPE_WIDGET_TYPE, ManifestService, ManifestsComponent, MarkSubType, MarkType, MetadataComponent, NamedQueryTypes, NamedQueryUtils, OPERATOR_OPTIONS, Operation, PRY_ACCESS_GUARD, PRY_ACCESS_TOKEN, PRY_CUSTOMEVENT_TYPE, PRY_DIALOG_DATA, PryAccessDirective, PryAccessUtils, PryBaseAccess, PryBaseAccessGuard, PryCoreModule, PryDashboardModule, PryDatasetType, PryDatePickerComponent, PryDatePickerModule, PryDefaultAccessGuard, PryDefaultAccessService, PryDialogConfirmComponent, PryDialogRef, PryDialogService, PryEditInputComponent, PryEditInputModule, PryHiddenWhenOverlay, PryHiddenWhenOverlayDirective, PryHttpErrorInterceptorService, PryI18nModule, PryI18nService, PryIconComponent, PryIconModule, PryModalComponent, PryModalModule, PryModalStatusComponent, PryModalStatusModule, PryNqColorSelectorComponent, PryObjectEditionComponent, PryOverlayDirective, PryOverlayModule, PryRangeComponent, PryRangeModule, PrySelectComponent, PrySelectImageComponent, PrySelectModule, PryShareComponent, PryShareModule, PrySnackbarComponent, PrySnackbarModule, PrySnackbarService, PrySortDataPipe, PrySortHeaderComponent, PrySortHeaderDirective, PrySortModule, PrySortTableDirective, PryTimePickerComponent, PryTitleService, PryToggleComponent, PryToggleModule, PryTooltipDirective, PryUploadComponent, PryVisibilityType, PryWidgetHeaderComponent, RawService, RelationTypesActions, RelationTypesSelectors, RelationTypesService, ResultSetSizePipe, ResultsetUtils, SYMBOL_DOMAIN, SearchActions, SearchSelectors, SearchService, SettingsComponent, SubscriptionnerDirective, SymbolService, TABLE_ATTR_DOMAIN, TILE_ATTR_DOMAIN, TOOLTIPS_DOMAIN, TOOLTIP_DEFINITION, ToolboxManifestService, ToolboxMenuService, TooltipFactoryService, TooltipMode, TranslateIdPipe, TranslateItemToSymbolPipe, UNKNOWN_DATASOURCE, USE_CURRENT_RESULTSET, VARIABLE_TYPE, VegaColorType, VegaType, ViewMode, VizualizeRawComponent, WIDGET_DEFINITION, WIDGET_HEADER_HEIGHT, WebsocketService, WidgetFactoryService, WidgetInstanciatorComponent, WidgetPlaceholderComponent, WidgetPlacementUtils, adapter$2 as adapter, aggregationDefault, baseItemProperties, classReducer, classesFeatureKey, compareOperationFunctions, contextMenuFeatureKey, contextMenuReducer, createPlacedWidgetCopy, dashboardFeatureKey, dashboardInitialState, dashboardReducer, dataSourceFeatureKey, dataSourceReducer, deepMerge, defaultColors, defaultMenuStructure, enTranslations$1 as enTranslations, filterLoader, frTranslations$1 as frTranslations, httpErrorOptions, imageFeatureKey, imageReducer, initialClassState, initialContextMenuState, initialDataSourceState, initialImageState, initialSearchState, latLonToGeographicFieldTransformation, markTypesDefault, notificationFeatureKey, orderWidgetsAccordingToPlacement, searchFeatureKey, searchReducer, selectAll$2 as selectAll, selectEntities$2 as selectEntities, selectIds$2 as selectIds, selectTotal$2 as selectTotal, solveCollisions, solvingCollisionOptions, sortByName$2 as sortByName, subTypesDefault, tooltipLoader, vegaColorSchemesDefault, widgetLoader, widgetMapConfig };
10788
10940
  //# sourceMappingURL=provoly-dashboard.mjs.map