geonetwork-ui 2.4.0-dev.f6f2f023 → 2.4.0-dev.fe59f179

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 (211) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +10 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  6. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  7. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  9. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  12. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  13. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  14. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  15. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  16. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +7 -4
  17. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +1 -1
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +16 -44
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +2 -2
  20. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +7 -4
  21. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -3
  22. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +8 -12
  23. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  24. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  25. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  26. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  27. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  28. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +7 -4
  29. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  30. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +49 -0
  31. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  32. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  33. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  34. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  35. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  36. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  37. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  38. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +2 -3
  39. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  40. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
  41. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +59 -26
  42. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
  43. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  44. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  45. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  46. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  47. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +120 -0
  48. package/esm2022/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.mjs +5 -3
  49. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +1 -6
  50. package/esm2022/translations/de.json +27 -4
  51. package/esm2022/translations/en.json +30 -4
  52. package/esm2022/translations/es.json +27 -4
  53. package/esm2022/translations/fr.json +31 -5
  54. package/esm2022/translations/it.json +27 -4
  55. package/esm2022/translations/nl.json +27 -4
  56. package/esm2022/translations/pt.json +27 -4
  57. package/fesm2022/geonetwork-ui.mjs +774 -525
  58. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  59. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  60. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  61. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  62. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  63. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  64. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  65. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  66. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  67. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  68. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  69. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -0
  70. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  71. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  72. package/libs/feature/catalog/src/index.d.ts +1 -0
  73. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  74. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  75. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  76. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  77. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  78. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  79. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +2 -1
  80. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  81. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +14 -24
  82. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  83. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -1
  84. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  85. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  86. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  87. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  88. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  89. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  90. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  91. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  92. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  93. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  94. package/libs/feature/search/src/index.d.ts +1 -1
  95. package/libs/feature/search/src/index.d.ts.map +1 -1
  96. package/libs/feature/search/src/lib/feature-search.module.d.ts +2 -1
  97. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  98. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  99. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +25 -0
  100. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -0
  101. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  102. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  103. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  104. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  105. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  106. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  107. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  108. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  109. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  110. package/libs/ui/elements/src/index.d.ts +0 -1
  111. package/libs/ui/elements/src/index.d.ts.map +1 -1
  112. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  113. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  114. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  115. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  116. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +18 -19
  117. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  118. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +7 -4
  119. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  120. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -36
  121. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  122. package/libs/ui/layout/src/index.d.ts +1 -0
  123. package/libs/ui/layout/src/index.d.ts.map +1 -1
  124. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  125. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  126. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  127. package/libs/ui/search/src/index.d.ts +1 -0
  128. package/libs/ui/search/src/index.d.ts.map +1 -1
  129. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +30 -0
  130. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  131. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts +1 -1
  132. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts.map +1 -1
  133. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +10 -11
  134. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  135. package/package.json +1 -1
  136. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +14 -0
  137. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  138. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  139. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  140. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  141. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  142. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  143. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
  144. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  145. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  146. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  147. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  148. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  149. package/src/libs/feature/catalog/src/index.ts +1 -0
  150. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  151. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  152. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  153. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  154. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  155. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +2 -1
  156. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +2 -3
  157. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +23 -63
  158. package/src/libs/feature/record/src/lib/feature-record.module.ts +3 -2
  159. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +42 -31
  160. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  161. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  162. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  163. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  164. package/src/libs/feature/search/src/index.ts +1 -1
  165. package/src/libs/feature/search/src/lib/feature-search.module.ts +2 -1
  166. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +2 -2
  167. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +9 -0
  168. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +49 -0
  169. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  170. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  171. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  172. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  173. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  174. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  175. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  176. package/src/libs/ui/elements/src/index.ts +0 -1
  177. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  178. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  179. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  180. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  181. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -3
  182. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +0 -1
  183. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +23 -19
  184. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +79 -27
  185. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  186. package/src/libs/ui/layout/src/index.ts +1 -0
  187. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  188. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  189. package/src/libs/ui/search/src/index.ts +1 -0
  190. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +0 -0
  191. package/src/libs/{feature → ui}/search/src/lib/results-table/results-table.component.html +8 -8
  192. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +138 -0
  193. package/src/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.ts +4 -0
  194. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -3
  195. package/translations/de.json +27 -4
  196. package/translations/en.json +30 -4
  197. package/translations/es.json +27 -4
  198. package/translations/fr.json +31 -5
  199. package/translations/it.json +27 -4
  200. package/translations/nl.json +27 -4
  201. package/translations/pt.json +27 -4
  202. package/translations/sk.json +28 -5
  203. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +0 -136
  204. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  205. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +0 -36
  206. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +0 -1
  207. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  208. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -171
  209. /package/src/libs/feature/search/src/lib/results-table/{results-table.component.css → results-table-container.component.css} +0 -0
  210. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +0 -0
  211. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +0 -0
@@ -8,11 +8,11 @@ import * as i1$1 from '@ngx-translate/core';
8
8
  import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
9
9
  import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
10
10
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
11
- import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap, defaultIfEmpty, scan } from 'rxjs/operators';
11
+ import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, share, pairwise, mergeMap, defaultIfEmpty, toArray } from 'rxjs/operators';
12
12
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
13
13
  import * as i1$3 from '@angular/common';
14
14
  import { CommonModule, NgFor, NgComponentOutlet, NgOptimizedImage, NgForOf } from '@angular/common';
15
- import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, Subject, merge, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
15
+ import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, Subject, merge, BehaviorSubject, fromEvent, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
16
16
  import { valid, coerce, satisfies, ltr } from 'semver';
17
17
  import * as i1$2 from '@ngrx/store';
18
18
  import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
@@ -48,28 +48,28 @@ import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
48
48
  import VectorTileLayer from 'ol/layer/VectorTile';
49
49
  import OGCMapTile from 'ol/source/OGCMapTile.js';
50
50
  import ImageLayer from 'ol/layer/Image';
51
- import * as i2$4 from '@angular/material/tabs';
51
+ import * as i2$5 from '@angular/material/tabs';
52
52
  import { MatTabsModule } from '@angular/material/tabs';
53
- import * as i2$1 from '@angular/forms';
54
- import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormArray, FormControl } from '@angular/forms';
55
- import * as i4 from '@angular/material/autocomplete';
53
+ import * as i2$2 from '@angular/forms';
54
+ import { FormsModule, ReactiveFormsModule, UntypedFormControl, FormArray, FormControl } from '@angular/forms';
55
+ import * as i2$1 from '@angular/material/autocomplete';
56
56
  import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
57
- import * as i5 from '@angular/material/core';
57
+ import * as i3$1 from 'ngx-dropzone';
58
+ import { NgxDropzoneModule } from 'ngx-dropzone';
59
+ import * as i5 from 'ngx-chips';
60
+ import { TagInputModule } from 'ngx-chips';
61
+ import * as i1$4 from '@angular/material/progress-spinner';
62
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
63
+ import * as i3 from '@angular/material/core';
58
64
  import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
59
- import * as i1$4 from '@angular/material/checkbox';
65
+ import * as i1$5 from '@angular/material/checkbox';
60
66
  import { MatCheckboxModule } from '@angular/material/checkbox';
61
- import * as i5$1 from 'ngx-chips';
62
- import { TagInputModule } from 'ngx-chips';
63
- import * as i2$2 from '@angular/material/tooltip';
67
+ import * as i2$3 from '@angular/material/tooltip';
64
68
  import { MatTooltipModule } from '@angular/material/tooltip';
65
- import * as i2$3 from '@angular/material/datepicker';
69
+ import * as i2$4 from '@angular/material/datepicker';
66
70
  import { MatDatepickerModule } from '@angular/material/datepicker';
67
- import * as i3 from 'ngx-dropzone';
68
- import { NgxDropzoneModule } from 'ngx-dropzone';
69
- import * as i1$5 from '@angular/cdk/overlay';
71
+ import * as i1$6 from '@angular/cdk/overlay';
70
72
  import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
71
- import * as i1$6 from '@angular/material/progress-spinner';
72
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
73
73
  import { MatFormFieldModule } from '@angular/material/form-field';
74
74
  import { MatInputModule } from '@angular/material/input';
75
75
  import * as i1$7 from '@angular/router';
@@ -89,19 +89,19 @@ import { Polygon } from 'ol/geom';
89
89
  import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
90
90
  import { trigger, transition, animate, keyframes, style } from '@angular/animations';
91
91
  import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
92
- import * as i4$1 from '@angular/cdk/scrolling';
92
+ import * as i4 from '@angular/cdk/scrolling';
93
93
  import { ScrollingModule } from '@angular/cdk/scrolling';
94
- import * as i2$5 from '@angular/material/sort';
94
+ import * as i2$6 from '@angular/material/sort';
95
95
  import { MatSort, MatSortModule } from '@angular/material/sort';
96
96
  import * as i1$9 from '@angular/material/table';
97
97
  import { MatTableModule } from '@angular/material/table';
98
- import * as i3$1 from 'ng-table-virtual-scroll';
98
+ import * as i3$2 from 'ng-table-virtual-scroll';
99
99
  import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
100
100
  import * as Papa from 'papaparse';
101
101
  import parseDate from 'date-fns/parse';
102
102
  import parseIsoDate from 'date-fns/parseISO';
103
103
  import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
104
- import * as i3$2 from '@ngrx/router-store';
104
+ import * as i3$3 from '@ngrx/router-store';
105
105
  import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
106
106
  import { navigation } from '@ngrx/router-store/data-persistence';
107
107
 
@@ -17306,9 +17306,10 @@ var next$6 = "weiter";
17306
17306
  var previous$6 = "zurück";
17307
17307
  var records$6 = "Datensätze";
17308
17308
  var de = {
17309
+ "Add Layer As": "",
17309
17310
  "button.login": "",
17310
17311
  "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
17311
- "catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17312
+ "catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17312
17313
  "chart.aggregation.average": "Durchschnitt",
17313
17314
  "chart.aggregation.count": "Anzahl",
17314
17315
  "chart.aggregation.max": "Maximum",
@@ -17324,16 +17325,22 @@ var de = {
17324
17325
  "chart.type.line": "Liniendiagramm",
17325
17326
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
17326
17327
  "chart.type.pie": "Kreisdiagramm",
17328
+ "dashboard.catalog.allRecords": "Metadatenkatalog",
17329
+ "dashboard.catalog.calendar": "Kalender",
17330
+ "dashboard.catalog.contacts": "Kontakte",
17331
+ "dashboard.catalog.discussion": "Diskussion",
17332
+ "dashboard.catalog.thesaurus": "Thesaurus",
17327
17333
  "dashboard.createRecord": "Neuer Eintrag",
17334
+ "dashboard.labels.catalog": "Katalog",
17328
17335
  "dashboard.labels.mySpace": "Mein Bereich",
17329
17336
  "dashboard.records.all": "Katalog",
17330
17337
  "dashboard.records.hasDraft": "",
17331
17338
  "dashboard.records.myDraft": "Meine Entwürfe",
17332
17339
  "dashboard.records.myLibrary": "Meine Bibliothek",
17333
- "dashboard.records.myOrg": "Meine Organisation",
17334
17340
  "dashboard.records.myRecords": "Meine Datensätze",
17335
17341
  "dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
17336
17342
  "dashboard.records.search": "Suche nach \"{searchText}\"",
17343
+ "dashboard.records.templates": "Vorlagen",
17337
17344
  "dashboard.records.userDetail": "Name",
17338
17345
  "dashboard.records.userEmail": "E-Mail",
17339
17346
  "dashboard.records.username": "Benutzername",
@@ -17405,6 +17412,15 @@ var de = {
17405
17412
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
17406
17413
  "datafeeder.upload.uploadButton": "Hochladen",
17407
17414
  "datafeeder.validation.encoding": "Codierung",
17415
+ "datafeeder.validation.csv.delimiter": "",
17416
+ "datafeeder.validation.csv.delimiter.comma": "",
17417
+ "datafeeder.validation.csv.delimiter.semicolon": "",
17418
+ "datafeeder.validation.csv.lat.field": "",
17419
+ "datafeeder.validation.csv.lng.field": "",
17420
+ "datafeeder.validation.csv.quote.double": "",
17421
+ "datafeeder.validation.csv.quote.none": "",
17422
+ "datafeeder.validation.csv.quote.simple": "",
17423
+ "datafeeder.validation.csv.quoteChar": "",
17408
17424
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
17409
17425
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
17410
17426
  "datafeeder.validation.projection": "Raumbezugssystem:",
@@ -17417,7 +17433,7 @@ var de = {
17417
17433
  "datahub.header.lastRecords": "Die neuesten",
17418
17434
  "datahub.header.myfavorites": "Meine Favoriten",
17419
17435
  "datahub.header.news": "Startseite",
17420
- "datahub.header.organisations": "Organisationen",
17436
+ "datahub.header.organizations": "Organisationen",
17421
17437
  "datahub.header.popularRecords": "Die beliebtesten",
17422
17438
  "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
17423
17439
  "datahub.news.contact.contactus": "Kontaktieren Sie uns",
@@ -17453,6 +17469,7 @@ var de = {
17453
17469
  "downloads.format.unknown": "unbekannt",
17454
17470
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
17455
17471
  dropFile: dropFile$6,
17472
+ "editor.record.form.keywords": "Schlagwörter",
17456
17473
  "editor.record.form.license": "Lizenz",
17457
17474
  "editor.record.form.license.cc-by": "",
17458
17475
  "editor.record.form.license.cc-by-sa": "",
@@ -17552,6 +17569,10 @@ var de = {
17552
17569
  "organisations.sortBy.nameDesc": "Name Z → A",
17553
17570
  "organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
17554
17571
  "organisations.sortBy.recordCountDesc": "Veröffentlichungen 9 → 0",
17572
+ "organization.details.lastPublishedDatasets": "",
17573
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
17574
+ "organization.details.mailContact": "",
17575
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
17555
17576
  "pagination.nextPage": "Nächste Seite",
17556
17577
  "pagination.page": "Seite",
17557
17578
  "pagination.pageOf": "von",
@@ -17589,7 +17610,7 @@ var de = {
17589
17610
  "record.metadata.preview": "Vorschau",
17590
17611
  "record.metadata.producer": "Datenproduzent",
17591
17612
  "record.metadata.publication": "Veröffentlichungsdatum",
17592
- "record.metadata.publications": "Veröffentlichungen",
17613
+ "record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
17593
17614
  "record.metadata.quality": "Metadatenqualität",
17594
17615
  "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
17595
17616
  "record.metadata.quality.contact.success": "Kontakt angegeben",
@@ -17649,6 +17670,8 @@ var de = {
17649
17670
  "results.sortBy.relevancy": "Relevanz",
17650
17671
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
17651
17672
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
17673
+ "search.error.organizationHasNoDataset": "",
17674
+ "search.error.organizationNotFound": "",
17652
17675
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
17653
17676
  "search.error.recordHasnolink": "",
17654
17677
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
@@ -17709,9 +17732,10 @@ var next$5 = "next";
17709
17732
  var previous$5 = "previous";
17710
17733
  var records$5 = "records";
17711
17734
  var en = {
17735
+ "Add Layer As": "",
17712
17736
  "button.login": "Log in",
17713
17737
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
17714
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
17738
+ "catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
17715
17739
  "chart.aggregation.average": "average",
17716
17740
  "chart.aggregation.count": "count",
17717
17741
  "chart.aggregation.max": "max",
@@ -17727,16 +17751,22 @@ var en = {
17727
17751
  "chart.type.line": "line chart",
17728
17752
  "chart.type.lineSmooth": "smooth line chart",
17729
17753
  "chart.type.pie": "pie chart",
17754
+ "dashboard.catalog.allRecords": "Metadata records",
17755
+ "dashboard.catalog.calendar": "Calendar",
17756
+ "dashboard.catalog.contacts": "Contacts",
17757
+ "dashboard.catalog.discussion": "Discussion",
17758
+ "dashboard.catalog.thesaurus": "Thesaurus",
17730
17759
  "dashboard.createRecord": "New record",
17760
+ "dashboard.labels.catalog": "Catalog",
17731
17761
  "dashboard.labels.mySpace": "My space",
17732
17762
  "dashboard.records.all": "Metadata records",
17733
17763
  "dashboard.records.hasDraft": "draft",
17734
17764
  "dashboard.records.myDraft": "My drafts",
17735
17765
  "dashboard.records.myLibrary": "My library",
17736
- "dashboard.records.myOrg": "Organization",
17737
17766
  "dashboard.records.myRecords": "My Records",
17738
17767
  "dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
17739
17768
  "dashboard.records.search": "Search for \"{searchText}\"",
17769
+ "dashboard.records.templates": "Templates",
17740
17770
  "dashboard.records.userDetail": "Name",
17741
17771
  "dashboard.records.userEmail": "Email",
17742
17772
  "dashboard.records.username": "Username",
@@ -17749,6 +17779,8 @@ var en = {
17749
17779
  "datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
17750
17780
  "datafeeder.analysisProgressBar.title": "Analyze in progress",
17751
17781
  "datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
17782
+ "datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
17783
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
17752
17784
  "datafeeder.datasetValidation.submitButton": "OK, my data are correct",
17753
17785
  "datafeeder.datasetValidation.title": "Make sure your data are correct",
17754
17786
  "datafeeder.datasetValidation.unknown": " - ",
@@ -17779,6 +17811,7 @@ var en = {
17779
17811
  "datafeeder.publishSuccess.geonetworkRecord": "Metadata record",
17780
17812
  "datafeeder.publishSuccess.illustration.title": "Done, all is good!",
17781
17813
  "datafeeder.publishSuccess.mapViewer": "Map viewer",
17814
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
17782
17815
  "datafeeder.publishSuccess.subtitle": "View your data in:",
17783
17816
  "datafeeder.publishSuccess.title": "Congratulation! \n Your dataset has been published",
17784
17817
  "datafeeder.publishSuccess.uploadAnotherData": "Upload another dataset",
@@ -17807,6 +17840,15 @@ var en = {
17807
17840
  "datafeeder.upload.maxFileSize": "Maximum file size is {size} MB",
17808
17841
  "datafeeder.upload.title": "Upload your dataset",
17809
17842
  "datafeeder.upload.uploadButton": "Upload",
17843
+ "datafeeder.validation.csv.delimiter": "Delimiter",
17844
+ "datafeeder.validation.csv.delimiter.comma": "Comma",
17845
+ "datafeeder.validation.csv.delimiter.semicolon": "Semicolon",
17846
+ "datafeeder.validation.csv.lat.field": "Latitude column",
17847
+ "datafeeder.validation.csv.lng.field": "Longitude column",
17848
+ "datafeeder.validation.csv.quote.double": "Double quote",
17849
+ "datafeeder.validation.csv.quote.none": "None",
17850
+ "datafeeder.validation.csv.quote.simple": "Simple quote",
17851
+ "datafeeder.validation.csv.quoteChar": "Quote separator",
17810
17852
  "datafeeder.validation.encoding": "encoding",
17811
17853
  "datafeeder.validation.extent.title": "Here is the dataset extent",
17812
17854
  "datafeeder.validation.extent.title.unknown": "The projection system is unknown",
@@ -17820,7 +17862,7 @@ var en = {
17820
17862
  "datahub.header.lastRecords": "The latest",
17821
17863
  "datahub.header.myfavorites": "My favorites",
17822
17864
  "datahub.header.news": "Home",
17823
- "datahub.header.organisations": "Organisations",
17865
+ "datahub.header.organizations": "Organizations",
17824
17866
  "datahub.header.popularRecords": "The most popular",
17825
17867
  "datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
17826
17868
  "datahub.news.contact.contactus": "Contact us",
@@ -17856,6 +17898,7 @@ var en = {
17856
17898
  "downloads.format.unknown": "unknown",
17857
17899
  "downloads.wfs.featuretype.not.found": "The layer was not found",
17858
17900
  dropFile: dropFile$5,
17901
+ "editor.record.form.keywords": "Keywords",
17859
17902
  "editor.record.form.license": "License",
17860
17903
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
17861
17904
  "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
@@ -17955,6 +17998,10 @@ var en = {
17955
17998
  "organisations.sortBy.nameDesc": "Name Z → A",
17956
17999
  "organisations.sortBy.recordCountAsc": "Publications 0 → 9",
17957
18000
  "organisations.sortBy.recordCountDesc": "Publications 9 → 0",
18001
+ "organization.details.lastPublishedDatasets": "Last published datasets",
18002
+ "organization.details.lastPublishedDatasets.searchAllButton": "Search all",
18003
+ "organization.details.mailContact": "Contact by email",
18004
+ "organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
17958
18005
  "pagination.nextPage": "Next page",
17959
18006
  "pagination.page": "page",
17960
18007
  "pagination.pageOf": "of",
@@ -17992,7 +18039,7 @@ var en = {
17992
18039
  "record.metadata.preview": "Preview",
17993
18040
  "record.metadata.producer": "Data producer",
17994
18041
  "record.metadata.publication": "Date of publication",
17995
- "record.metadata.publications": "publications",
18042
+ "record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
17996
18043
  "record.metadata.quality": "Metadata Quality",
17997
18044
  "record.metadata.quality.contact.failed": "Contact is not specified",
17998
18045
  "record.metadata.quality.contact.success": "Contact is specified",
@@ -18052,6 +18099,8 @@ var en = {
18052
18099
  "results.sortBy.relevancy": "Relevancy",
18053
18100
  "search.autocomplete.error": "Suggestions could not be fetched:",
18054
18101
  "search.error.couldNotReachApi": "The API could not be reached",
18102
+ "search.error.organizationHasNoDataset": "This organization has no dataset yet.",
18103
+ "search.error.organizationNotFound": "This organization could not be found.",
18055
18104
  "search.error.receivedError": "An error was received",
18056
18105
  "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
18057
18106
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
@@ -18112,9 +18161,10 @@ var next$4 = "";
18112
18161
  var previous$4 = "";
18113
18162
  var records$4 = "";
18114
18163
  var es = {
18164
+ "Add Layer As": "",
18115
18165
  "button.login": "",
18116
18166
  "catalog.figures.datasets": "conjuntos de datos",
18117
- "catalog.figures.organisations": "organizaciones",
18167
+ "catalog.figures.organizations": "organizaciones",
18118
18168
  "chart.aggregation.average": "promedio",
18119
18169
  "chart.aggregation.count": "conteo",
18120
18170
  "chart.aggregation.max": "máximo",
@@ -18130,16 +18180,22 @@ var es = {
18130
18180
  "chart.type.line": "gráfico de líneas",
18131
18181
  "chart.type.lineSmooth": "gráfico de líneas suave",
18132
18182
  "chart.type.pie": "gráfico circular",
18183
+ "dashboard.catalog.allRecords": "",
18184
+ "dashboard.catalog.calendar": "",
18185
+ "dashboard.catalog.contacts": "",
18186
+ "dashboard.catalog.discussion": "",
18187
+ "dashboard.catalog.thesaurus": "",
18133
18188
  "dashboard.createRecord": "",
18189
+ "dashboard.labels.catalog": "Catálogo",
18134
18190
  "dashboard.labels.mySpace": "Mi espacio",
18135
18191
  "dashboard.records.all": "Catálogo",
18136
18192
  "dashboard.records.hasDraft": "",
18137
18193
  "dashboard.records.myDraft": "Mis borradores",
18138
18194
  "dashboard.records.myLibrary": "Mi biblioteca",
18139
- "dashboard.records.myOrg": "Organización",
18140
18195
  "dashboard.records.myRecords": "Mis Registros",
18141
18196
  "dashboard.records.publishedRecords": "",
18142
18197
  "dashboard.records.search": "Buscar \"{searchText}\"",
18198
+ "dashboard.records.templates": "",
18143
18199
  "dashboard.records.userDetail": "",
18144
18200
  "dashboard.records.userEmail": "",
18145
18201
  "dashboard.records.username": "",
@@ -18210,6 +18266,15 @@ var es = {
18210
18266
  "datafeeder.upload.maxFileSize": "",
18211
18267
  "datafeeder.upload.title": "",
18212
18268
  "datafeeder.upload.uploadButton": "",
18269
+ "datafeeder.validation.csv.delimiter": "",
18270
+ "datafeeder.validation.csv.delimiter.comma": "Coma",
18271
+ "datafeeder.validation.csv.delimiter.semicolon": "Punto y coma",
18272
+ "datafeeder.validation.csv.lat.field": "",
18273
+ "datafeeder.validation.csv.lng.field": "",
18274
+ "datafeeder.validation.csv.quote.double": "Comillas dobles",
18275
+ "datafeeder.validation.csv.quote.none": "Ninguno",
18276
+ "datafeeder.validation.csv.quote.simple": "Comillas simples",
18277
+ "datafeeder.validation.csv.quoteChar": "",
18213
18278
  "datafeeder.validation.encoding": "",
18214
18279
  "datafeeder.validation.extent.title": "",
18215
18280
  "datafeeder.validation.extent.title.unknown": "",
@@ -18223,7 +18288,7 @@ var es = {
18223
18288
  "datahub.header.lastRecords": "",
18224
18289
  "datahub.header.myfavorites": "",
18225
18290
  "datahub.header.news": "",
18226
- "datahub.header.organisations": "",
18291
+ "datahub.header.organizations": "",
18227
18292
  "datahub.header.popularRecords": "",
18228
18293
  "datahub.header.title.html": "",
18229
18294
  "datahub.news.contact.contactus": "",
@@ -18259,6 +18324,7 @@ var es = {
18259
18324
  "downloads.format.unknown": "",
18260
18325
  "downloads.wfs.featuretype.not.found": "",
18261
18326
  dropFile: dropFile$4,
18327
+ "editor.record.form.keywords": "",
18262
18328
  "editor.record.form.license": "",
18263
18329
  "editor.record.form.license.cc-by": "",
18264
18330
  "editor.record.form.license.cc-by-sa": "",
@@ -18358,6 +18424,10 @@ var es = {
18358
18424
  "organisations.sortBy.nameDesc": "",
18359
18425
  "organisations.sortBy.recordCountAsc": "",
18360
18426
  "organisations.sortBy.recordCountDesc": "",
18427
+ "organization.details.lastPublishedDatasets": "",
18428
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
18429
+ "organization.details.mailContact": "",
18430
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
18361
18431
  "pagination.nextPage": "",
18362
18432
  "pagination.page": "",
18363
18433
  "pagination.pageOf": "",
@@ -18395,7 +18465,7 @@ var es = {
18395
18465
  "record.metadata.preview": "",
18396
18466
  "record.metadata.producer": "",
18397
18467
  "record.metadata.publication": "",
18398
- "record.metadata.publications": "",
18468
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
18399
18469
  "record.metadata.quality": "",
18400
18470
  "record.metadata.quality.contact.failed": "",
18401
18471
  "record.metadata.quality.contact.success": "",
@@ -18455,6 +18525,8 @@ var es = {
18455
18525
  "results.sortBy.relevancy": "",
18456
18526
  "search.autocomplete.error": "",
18457
18527
  "search.error.couldNotReachApi": "",
18528
+ "search.error.organizationHasNoDataset": "",
18529
+ "search.error.organizationNotFound": "",
18458
18530
  "search.error.receivedError": "",
18459
18531
  "search.error.recordHasnolink": "",
18460
18532
  "search.error.recordNotFound": "",
@@ -18515,9 +18587,10 @@ var next$3 = "suivant";
18515
18587
  var previous$3 = "précédent";
18516
18588
  var records$3 = "enregistrements";
18517
18589
  var fr = {
18590
+ "Add Layer As": "",
18518
18591
  "button.login": "Se connecter",
18519
18592
  "catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
18520
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18593
+ "catalog.figures.organizations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18521
18594
  "chart.aggregation.average": "moyenne",
18522
18595
  "chart.aggregation.count": "nombre",
18523
18596
  "chart.aggregation.max": "maximum",
@@ -18533,16 +18606,22 @@ var fr = {
18533
18606
  "chart.type.line": "ligne",
18534
18607
  "chart.type.lineSmooth": "ligne lisse",
18535
18608
  "chart.type.pie": "camembert",
18609
+ "dashboard.catalog.allRecords": "Fiches de métadonnée",
18610
+ "dashboard.catalog.calendar": "Calendrier",
18611
+ "dashboard.catalog.contacts": "Annuaire",
18612
+ "dashboard.catalog.discussion": "Discussions",
18613
+ "dashboard.catalog.thesaurus": "Thesaurus",
18536
18614
  "dashboard.createRecord": "Nouvel enregistrement",
18615
+ "dashboard.labels.catalog": "Catalogue",
18537
18616
  "dashboard.labels.mySpace": "Mon espace",
18538
18617
  "dashboard.records.all": "Catalogue",
18539
18618
  "dashboard.records.hasDraft": "brouillon",
18540
18619
  "dashboard.records.myDraft": "Mes brouillons",
18541
18620
  "dashboard.records.myLibrary": "Ma bibliothèque",
18542
- "dashboard.records.myOrg": "Mon organisation",
18543
18621
  "dashboard.records.myRecords": "Mes fiches publiées",
18544
18622
  "dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
18545
18623
  "dashboard.records.search": "Résultats pour \"{searchText}\"",
18624
+ "dashboard.records.templates": "Modèles pré-remplis",
18546
18625
  "dashboard.records.userDetail": "Nom",
18547
18626
  "dashboard.records.userEmail": "Email",
18548
18627
  "dashboard.records.username": "Nom d'utilisateur",
@@ -18555,6 +18634,8 @@ var fr = {
18555
18634
  "datafeeder.analysisProgressBar.subtitle": "L'analyse peut prendre plusieurs minutes, merci d'attendre.",
18556
18635
  "datafeeder.analysisProgressBar.title": "Analyse en cours",
18557
18636
  "datafeeder.datasetValidation.datasetInformation": "Le jeu de données fourni contient {number} entités",
18637
+ "datafeeder.datasetValidationCsv.lineNumbers": "Résumé des 5 premières lignes* du CSV :",
18638
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "*Le tableau doit afficher les 5 premières lignes (hors en-tête)<br>Si ce n'est pas le cas, vérifier que le fichier est bien formatté",
18558
18639
  "datafeeder.datasetValidation.submitButton": "OK, mes données sont correctes",
18559
18640
  "datafeeder.datasetValidation.title": "Vérifiez que vos données sont correctes",
18560
18641
  "datafeeder.datasetValidation.unknown": " - ",
@@ -18584,7 +18665,8 @@ var fr = {
18584
18665
  "datafeeder.publish.upload": "Upload maintenant",
18585
18666
  "datafeeder.publishSuccess.geonetworkRecord": "Fiche de métadonnée",
18586
18667
  "datafeeder.publishSuccess.illustration.title": "Terminé, tout s'est bien passé !",
18587
- "datafeeder.publishSuccess.mapViewer": "Visualisateur",
18668
+ "datafeeder.publishSuccess.mapViewer": "Visualiseur",
18669
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
18588
18670
  "datafeeder.publishSuccess.subtitle": "Visualisez vos données :",
18589
18671
  "datafeeder.publishSuccess.title": "Félicitations! \n Vos données ont été publiées",
18590
18672
  "datafeeder.publishSuccess.uploadAnotherData": "Importer une autre donnée",
@@ -18613,6 +18695,15 @@ var fr = {
18613
18695
  "datafeeder.upload.maxFileSize": "La taille maximale est {size} Mo",
18614
18696
  "datafeeder.upload.title": "Importez vos données",
18615
18697
  "datafeeder.upload.uploadButton": "Transférer",
18698
+ "datafeeder.validation.csv.delimiter": "Séparateur de colonne",
18699
+ "datafeeder.validation.csv.delimiter.comma": "Virgule",
18700
+ "datafeeder.validation.csv.delimiter.semicolon": "Point-virgule",
18701
+ "datafeeder.validation.csv.lat.field": "Colonne latitude",
18702
+ "datafeeder.validation.csv.lng.field": "Colonne longitude",
18703
+ "datafeeder.validation.csv.quote.double": "Double guillemets",
18704
+ "datafeeder.validation.csv.quote.none": "Aucun",
18705
+ "datafeeder.validation.csv.quote.simple": "Simple guillemet",
18706
+ "datafeeder.validation.csv.quoteChar": "Séparateur de texte",
18616
18707
  "datafeeder.validation.encoding": "encodage",
18617
18708
  "datafeeder.validation.extent.title": "Voici l'emprise du jeu de données",
18618
18709
  "datafeeder.validation.extent.title.unknown": "Le système de projection est inconnu",
@@ -18626,7 +18717,7 @@ var fr = {
18626
18717
  "datahub.header.lastRecords": "Les plus récentes",
18627
18718
  "datahub.header.myfavorites": "Mes favoris",
18628
18719
  "datahub.header.news": "Accueil",
18629
- "datahub.header.organisations": "Organisations",
18720
+ "datahub.header.organizations": "Organisations",
18630
18721
  "datahub.header.popularRecords": "Les plus appréciées",
18631
18722
  "datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
18632
18723
  "datahub.news.contact.contactus": "Contactez-nous",
@@ -18662,6 +18753,7 @@ var fr = {
18662
18753
  "downloads.format.unknown": "inconnu",
18663
18754
  "downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
18664
18755
  dropFile: dropFile$3,
18756
+ "editor.record.form.keywords": "Mots-clés",
18665
18757
  "editor.record.form.license": "Licence",
18666
18758
  "editor.record.form.license.cc-by": "",
18667
18759
  "editor.record.form.license.cc-by-sa": "",
@@ -18761,6 +18853,10 @@ var fr = {
18761
18853
  "organisations.sortBy.nameDesc": "Nom Z → A",
18762
18854
  "organisations.sortBy.recordCountAsc": "Données 0 → 9",
18763
18855
  "organisations.sortBy.recordCountDesc": "Données 9 → 0",
18856
+ "organization.details.lastPublishedDatasets": "Dernières données publiées",
18857
+ "organization.details.lastPublishedDatasets.searchAllButton": "Rechercher tous",
18858
+ "organization.details.mailContact": "Contacter par mail",
18859
+ "organization.header.recordCount": "{count, plural, =0{donnée} one{donnée} other{données}}",
18764
18860
  "pagination.nextPage": "Page suivante",
18765
18861
  "pagination.page": "page",
18766
18862
  "pagination.pageOf": "sur",
@@ -18798,7 +18894,7 @@ var fr = {
18798
18894
  "record.metadata.preview": "Aperçu",
18799
18895
  "record.metadata.producer": "Producteur de la donnée",
18800
18896
  "record.metadata.publication": "Date de publication",
18801
- "record.metadata.publications": "données",
18897
+ "record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
18802
18898
  "record.metadata.quality": "Qualité des métadonnées",
18803
18899
  "record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
18804
18900
  "record.metadata.quality.contact.success": "Contact est renseigné",
@@ -18858,6 +18954,8 @@ var fr = {
18858
18954
  "results.sortBy.relevancy": "Pertinence",
18859
18955
  "search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
18860
18956
  "search.error.couldNotReachApi": "Problème de connexion à l'API",
18957
+ "search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
18958
+ "search.error.organizationNotFound": "L'organisation n'a pas pu être trouvée.",
18861
18959
  "search.error.receivedError": "Erreur retournée",
18862
18960
  "search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
18863
18961
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
@@ -18918,9 +19016,10 @@ var next$2 = "successivo";
18918
19016
  var previous$2 = "precedente";
18919
19017
  var records$2 = "record";
18920
19018
  var it = {
19019
+ "Add Layer As": "",
18921
19020
  "button.login": "",
18922
19021
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
18923
- "catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
19022
+ "catalog.figures.organizations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
18924
19023
  "chart.aggregation.average": "media",
18925
19024
  "chart.aggregation.count": "conteggio",
18926
19025
  "chart.aggregation.max": "massimo",
@@ -18936,16 +19035,22 @@ var it = {
18936
19035
  "chart.type.line": "grafico a linee",
18937
19036
  "chart.type.lineSmooth": "grafico a linea liscia",
18938
19037
  "chart.type.pie": "grafico a torta",
19038
+ "dashboard.catalog.allRecords": "",
19039
+ "dashboard.catalog.calendar": "",
19040
+ "dashboard.catalog.contacts": "",
19041
+ "dashboard.catalog.discussion": "",
19042
+ "dashboard.catalog.thesaurus": "",
18939
19043
  "dashboard.createRecord": "Crea un record",
19044
+ "dashboard.labels.catalog": "Catalogo",
18940
19045
  "dashboard.labels.mySpace": "Il mio spazio",
18941
19046
  "dashboard.records.all": "Catalogo",
18942
19047
  "dashboard.records.hasDraft": "",
18943
19048
  "dashboard.records.myDraft": "Le mie bozze",
18944
19049
  "dashboard.records.myLibrary": "La mia biblioteca",
18945
- "dashboard.records.myOrg": "La mia organizzazione",
18946
19050
  "dashboard.records.myRecords": "I miei dati",
18947
19051
  "dashboard.records.publishedRecords": "dati pubblicati",
18948
19052
  "dashboard.records.search": "Risultati per \"{searchText}\"",
19053
+ "dashboard.records.templates": "",
18949
19054
  "dashboard.records.userDetail": "Nome",
18950
19055
  "dashboard.records.userEmail": "Email",
18951
19056
  "dashboard.records.username": "Nome utente",
@@ -19016,6 +19121,15 @@ var it = {
19016
19121
  "datafeeder.upload.maxFileSize": "Dimensione massima: {size} MB",
19017
19122
  "datafeeder.upload.title": "Importa i suoi dati",
19018
19123
  "datafeeder.upload.uploadButton": "Carica",
19124
+ "datafeeder.validation.csv.delimiter": "",
19125
+ "datafeeder.validation.csv.delimiter.comma": "",
19126
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19127
+ "datafeeder.validation.csv.lat.field": "",
19128
+ "datafeeder.validation.csv.lng.field": "",
19129
+ "datafeeder.validation.csv.quote.double": "",
19130
+ "datafeeder.validation.csv.quote.none": "",
19131
+ "datafeeder.validation.csv.quote.simple": "",
19132
+ "datafeeder.validation.csv.quoteChar": "",
19019
19133
  "datafeeder.validation.encoding": "Codifica",
19020
19134
  "datafeeder.validation.extent.title": "Ecco l'estensione del dataset",
19021
19135
  "datafeeder.validation.extent.title.unknown": "Sistema di proiezione sconosciuto",
@@ -19029,7 +19143,7 @@ var it = {
19029
19143
  "datahub.header.lastRecords": "Ultimi",
19030
19144
  "datahub.header.myfavorites": "Miei preferiti",
19031
19145
  "datahub.header.news": "Home",
19032
- "datahub.header.organisations": "Organizzazioni",
19146
+ "datahub.header.organizations": "Organizzazioni",
19033
19147
  "datahub.header.popularRecords": "Più popolari",
19034
19148
  "datahub.header.title.html": "<div class=\"text-white\">Tutti i dati<br>pubblici della mia organizzazione</div>",
19035
19149
  "datahub.news.contact.contactus": "Contattateci",
@@ -19065,6 +19179,7 @@ var it = {
19065
19179
  "downloads.format.unknown": "sconosciuto",
19066
19180
  "downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
19067
19181
  dropFile: dropFile$2,
19182
+ "editor.record.form.keywords": "",
19068
19183
  "editor.record.form.license": "Licenza",
19069
19184
  "editor.record.form.license.cc-by": "",
19070
19185
  "editor.record.form.license.cc-by-sa": "",
@@ -19164,6 +19279,10 @@ var it = {
19164
19279
  "organisations.sortBy.nameDesc": "Nome Z → A",
19165
19280
  "organisations.sortBy.recordCountAsc": "Dati 0 → 9",
19166
19281
  "organisations.sortBy.recordCountDesc": "Dati 9 → 0",
19282
+ "organization.details.lastPublishedDatasets": "",
19283
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
19284
+ "organization.details.mailContact": "",
19285
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
19167
19286
  "pagination.nextPage": "Pagina successiva",
19168
19287
  "pagination.page": "pagina",
19169
19288
  "pagination.pageOf": "di",
@@ -19201,7 +19320,7 @@ var it = {
19201
19320
  "record.metadata.preview": "Anteprima",
19202
19321
  "record.metadata.producer": "Produttore dei dati",
19203
19322
  "record.metadata.publication": "Data di pubblicazione",
19204
- "record.metadata.publications": "pubblicazioni",
19323
+ "record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
19205
19324
  "record.metadata.quality": "Qualità dei metadati",
19206
19325
  "record.metadata.quality.contact.failed": "Il contatto non è specificato",
19207
19326
  "record.metadata.quality.contact.success": "Il contatto è specificato",
@@ -19261,6 +19380,8 @@ var it = {
19261
19380
  "results.sortBy.relevancy": "Rilevanza",
19262
19381
  "search.autocomplete.error": "Impossibile recuperare le suggerimenti",
19263
19382
  "search.error.couldNotReachApi": "Problema di connessione all'API",
19383
+ "search.error.organizationHasNoDataset": "",
19384
+ "search.error.organizationNotFound": "",
19264
19385
  "search.error.receivedError": "Errore ricevuto",
19265
19386
  "search.error.recordHasnolink": "",
19266
19387
  "search.error.recordNotFound": "Impossibile trovare questo dato",
@@ -19321,9 +19442,10 @@ var next$1 = "";
19321
19442
  var previous$1 = "";
19322
19443
  var records$1 = "";
19323
19444
  var nl = {
19445
+ "Add Layer As": "",
19324
19446
  "button.login": "",
19325
19447
  "catalog.figures.datasets": "datasets",
19326
- "catalog.figures.organisations": "organisaties",
19448
+ "catalog.figures.organizations": "organisaties",
19327
19449
  "chart.aggregation.average": "gemiddelde",
19328
19450
  "chart.aggregation.count": "aantal",
19329
19451
  "chart.aggregation.max": "max",
@@ -19339,16 +19461,22 @@ var nl = {
19339
19461
  "chart.type.line": "lijndiagram",
19340
19462
  "chart.type.lineSmooth": "glad lijndiagram",
19341
19463
  "chart.type.pie": "cirkeldiagram",
19464
+ "dashboard.catalog.allRecords": "",
19465
+ "dashboard.catalog.calendar": "",
19466
+ "dashboard.catalog.contacts": "",
19467
+ "dashboard.catalog.discussion": "",
19468
+ "dashboard.catalog.thesaurus": "",
19342
19469
  "dashboard.createRecord": "",
19470
+ "dashboard.labels.catalog": "Catalogus",
19343
19471
  "dashboard.labels.mySpace": "Mijn ruimte",
19344
19472
  "dashboard.records.all": "Catalogus",
19345
19473
  "dashboard.records.hasDraft": "",
19346
19474
  "dashboard.records.myDraft": "Mijn concepten",
19347
19475
  "dashboard.records.myLibrary": "Mijn bibliotheek",
19348
- "dashboard.records.myOrg": "Organisatie",
19349
19476
  "dashboard.records.myRecords": "Mijn Records",
19350
19477
  "dashboard.records.publishedRecords": "",
19351
19478
  "dashboard.records.search": "Zoeken naar \"{searchText}\"",
19479
+ "dashboard.records.templates": "",
19352
19480
  "dashboard.records.userDetail": "",
19353
19481
  "dashboard.records.userEmail": "",
19354
19482
  "dashboard.records.username": "",
@@ -19419,6 +19547,15 @@ var nl = {
19419
19547
  "datafeeder.upload.maxFileSize": "",
19420
19548
  "datafeeder.upload.title": "",
19421
19549
  "datafeeder.upload.uploadButton": "",
19550
+ "datafeeder.validation.csv.delimiter": "",
19551
+ "datafeeder.validation.csv.delimiter.comma": "",
19552
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19553
+ "datafeeder.validation.csv.lat.field": "",
19554
+ "datafeeder.validation.csv.lng.field": "",
19555
+ "datafeeder.validation.csv.quote.double": "",
19556
+ "datafeeder.validation.csv.quote.none": "",
19557
+ "datafeeder.validation.csv.quote.simple": "",
19558
+ "datafeeder.validation.csv.quoteChar": "",
19422
19559
  "datafeeder.validation.encoding": "",
19423
19560
  "datafeeder.validation.extent.title": "",
19424
19561
  "datafeeder.validation.extent.title.unknown": "",
@@ -19432,7 +19569,7 @@ var nl = {
19432
19569
  "datahub.header.lastRecords": "",
19433
19570
  "datahub.header.myfavorites": "",
19434
19571
  "datahub.header.news": "",
19435
- "datahub.header.organisations": "",
19572
+ "datahub.header.organizations": "",
19436
19573
  "datahub.header.popularRecords": "",
19437
19574
  "datahub.header.title.html": "",
19438
19575
  "datahub.news.contact.contactus": "",
@@ -19468,6 +19605,7 @@ var nl = {
19468
19605
  "downloads.format.unknown": "",
19469
19606
  "downloads.wfs.featuretype.not.found": "",
19470
19607
  dropFile: dropFile$1,
19608
+ "editor.record.form.keywords": "",
19471
19609
  "editor.record.form.license": "",
19472
19610
  "editor.record.form.license.cc-by": "",
19473
19611
  "editor.record.form.license.cc-by-sa": "",
@@ -19567,6 +19705,10 @@ var nl = {
19567
19705
  "organisations.sortBy.nameDesc": "",
19568
19706
  "organisations.sortBy.recordCountAsc": "",
19569
19707
  "organisations.sortBy.recordCountDesc": "",
19708
+ "organization.details.lastPublishedDatasets": "",
19709
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
19710
+ "organization.details.mailContact": "",
19711
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
19570
19712
  "pagination.nextPage": "",
19571
19713
  "pagination.page": "",
19572
19714
  "pagination.pageOf": "",
@@ -19604,7 +19746,7 @@ var nl = {
19604
19746
  "record.metadata.preview": "",
19605
19747
  "record.metadata.producer": "",
19606
19748
  "record.metadata.publication": "",
19607
- "record.metadata.publications": "",
19749
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
19608
19750
  "record.metadata.quality": "",
19609
19751
  "record.metadata.quality.contact.failed": "",
19610
19752
  "record.metadata.quality.contact.success": "",
@@ -19664,6 +19806,8 @@ var nl = {
19664
19806
  "results.sortBy.relevancy": "",
19665
19807
  "search.autocomplete.error": "",
19666
19808
  "search.error.couldNotReachApi": "",
19809
+ "search.error.organizationHasNoDataset": "",
19810
+ "search.error.organizationNotFound": "",
19667
19811
  "search.error.receivedError": "",
19668
19812
  "search.error.recordHasnolink": "",
19669
19813
  "search.error.recordNotFound": "",
@@ -19724,9 +19868,10 @@ var next = "";
19724
19868
  var previous = "";
19725
19869
  var records = "";
19726
19870
  var pt = {
19871
+ "Add Layer As": "",
19727
19872
  "button.login": "",
19728
19873
  "catalog.figures.datasets": "conjuntos de dados",
19729
- "catalog.figures.organisations": "organizações",
19874
+ "catalog.figures.organizations": "organizações",
19730
19875
  "chart.aggregation.average": "média",
19731
19876
  "chart.aggregation.count": "contagem",
19732
19877
  "chart.aggregation.max": "máximo",
@@ -19742,16 +19887,22 @@ var pt = {
19742
19887
  "chart.type.line": "gráfico de linha",
19743
19888
  "chart.type.lineSmooth": "gráfico de linha suave",
19744
19889
  "chart.type.pie": "gráfico de pizza",
19890
+ "dashboard.catalog.allRecords": "",
19891
+ "dashboard.catalog.calendar": "",
19892
+ "dashboard.catalog.contacts": "",
19893
+ "dashboard.catalog.discussion": "",
19894
+ "dashboard.catalog.thesaurus": "",
19745
19895
  "dashboard.createRecord": "",
19896
+ "dashboard.labels.catalog": "Catálogo",
19746
19897
  "dashboard.labels.mySpace": "Meu espaço",
19747
19898
  "dashboard.records.all": "Catálogo",
19748
19899
  "dashboard.records.hasDraft": "",
19749
19900
  "dashboard.records.myDraft": "Meus rascunhos",
19750
19901
  "dashboard.records.myLibrary": "Minha biblioteca",
19751
- "dashboard.records.myOrg": "Organização",
19752
19902
  "dashboard.records.myRecords": "Meus Registros",
19753
19903
  "dashboard.records.publishedRecords": "",
19754
19904
  "dashboard.records.search": "Buscar por \"{searchText}\"",
19905
+ "dashboard.records.templates": "",
19755
19906
  "dashboard.records.userDetail": "",
19756
19907
  "dashboard.records.userEmail": "",
19757
19908
  "dashboard.records.username": "",
@@ -19822,6 +19973,15 @@ var pt = {
19822
19973
  "datafeeder.upload.maxFileSize": "",
19823
19974
  "datafeeder.upload.title": "",
19824
19975
  "datafeeder.upload.uploadButton": "",
19976
+ "datafeeder.validation.csv.delimiter": "",
19977
+ "datafeeder.validation.csv.delimiter.comma": "",
19978
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19979
+ "datafeeder.validation.csv.lat.field": "",
19980
+ "datafeeder.validation.csv.lng.field": "",
19981
+ "datafeeder.validation.csv.quote.double": "",
19982
+ "datafeeder.validation.csv.quote.none": "",
19983
+ "datafeeder.validation.csv.quote.simple": "",
19984
+ "datafeeder.validation.csv.quoteChar": "",
19825
19985
  "datafeeder.validation.encoding": "",
19826
19986
  "datafeeder.validation.extent.title": "",
19827
19987
  "datafeeder.validation.extent.title.unknown": "",
@@ -19835,7 +19995,7 @@ var pt = {
19835
19995
  "datahub.header.lastRecords": "",
19836
19996
  "datahub.header.myfavorites": "",
19837
19997
  "datahub.header.news": "",
19838
- "datahub.header.organisations": "",
19998
+ "datahub.header.organizations": "",
19839
19999
  "datahub.header.popularRecords": "",
19840
20000
  "datahub.header.title.html": "",
19841
20001
  "datahub.news.contact.contactus": "",
@@ -19871,6 +20031,7 @@ var pt = {
19871
20031
  "downloads.format.unknown": "",
19872
20032
  "downloads.wfs.featuretype.not.found": "",
19873
20033
  dropFile: dropFile,
20034
+ "editor.record.form.keywords": "",
19874
20035
  "editor.record.form.license": "",
19875
20036
  "editor.record.form.license.cc-by": "",
19876
20037
  "editor.record.form.license.cc-by-sa": "",
@@ -19970,6 +20131,10 @@ var pt = {
19970
20131
  "organisations.sortBy.nameDesc": "",
19971
20132
  "organisations.sortBy.recordCountAsc": "",
19972
20133
  "organisations.sortBy.recordCountDesc": "",
20134
+ "organization.details.lastPublishedDatasets": "",
20135
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
20136
+ "organization.details.mailContact": "",
20137
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
19973
20138
  "pagination.nextPage": "",
19974
20139
  "pagination.page": "",
19975
20140
  "pagination.pageOf": "",
@@ -20007,7 +20172,7 @@ var pt = {
20007
20172
  "record.metadata.preview": "",
20008
20173
  "record.metadata.producer": "",
20009
20174
  "record.metadata.publication": "",
20010
- "record.metadata.publications": "",
20175
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
20011
20176
  "record.metadata.quality": "",
20012
20177
  "record.metadata.quality.contact.failed": "",
20013
20178
  "record.metadata.quality.contact.success": "",
@@ -20067,6 +20232,8 @@ var pt = {
20067
20232
  "results.sortBy.relevancy": "",
20068
20233
  "search.autocomplete.error": "",
20069
20234
  "search.error.couldNotReachApi": "",
20235
+ "search.error.organizationHasNoDataset": "",
20236
+ "search.error.organizationNotFound": "",
20070
20237
  "search.error.receivedError": "",
20071
20238
  "search.error.recordHasnolink": "",
20072
20239
  "search.error.recordNotFound": "",
@@ -21127,6 +21294,15 @@ class Gn4Repository {
21127
21294
  recordHasDraft(uniqueIdentifier) {
21128
21295
  return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
21129
21296
  }
21297
+ // generated by copilot
21298
+ getAllDrafts() {
21299
+ const items = { ...window.localStorage };
21300
+ const drafts = Object.keys(items)
21301
+ .filter((key) => key.startsWith('geonetwork-ui-draft-'))
21302
+ .map((key) => window.localStorage.getItem(key))
21303
+ .filter((draft) => draft !== null);
21304
+ return from(Promise.all(drafts.map((draft) => findConverterForDocument(draft).readRecord(draft))));
21305
+ }
21130
21306
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository, deps: [{ token: SearchApiService }, { token: ElasticsearchService }, { token: Gn4Converter }, { token: RecordsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21131
21307
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository }); }
21132
21308
  }
@@ -21253,9 +21429,11 @@ class OrganizationsFromMetadataService {
21253
21429
  return fullOrg;
21254
21430
  return {
21255
21431
  ...fullOrg,
21432
+ email: emails[0],
21256
21433
  ...(group.description && { description: group.description }),
21257
21434
  ...(group.logo && { logoUrl: getAsUrl(`${IMAGE_URL$1}${group.logo}`) }),
21258
21435
  ...(group.website && { website: getAsUrl(group.website) }),
21436
+ ...(group.email && { email: group.email }),
21259
21437
  };
21260
21438
  });
21261
21439
  }
@@ -21356,6 +21534,7 @@ class OrganizationsFromGroupsService {
21356
21534
  return {
21357
21535
  name: group.label[lang3],
21358
21536
  ...(group.description && { description: group.description }),
21537
+ ...(group.email && { email: group.email }),
21359
21538
  ...(group.logo && {
21360
21539
  logoUrl: getAsUrl(`${IMAGE_URL}${group.logo}`),
21361
21540
  }),
@@ -21620,7 +21799,7 @@ class Gn4PlatformMapper {
21620
21799
  userFromApi(apiUser) {
21621
21800
  if (!apiUser)
21622
21801
  return null;
21623
- const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
21802
+ const { enabled, emailAddresses, organization, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
21624
21803
  return { ...apiUser, id: id.toString() };
21625
21804
  }
21626
21805
  keywordsFromApi(keywords, thesaurus, lang3) {
@@ -21722,8 +21901,6 @@ class Gn4PlatformService {
21722
21901
  this.allThesaurus$ = this.httpClient
21723
21902
  .get(`${this.registriesApiService.configuration.basePath}/thesaurus?_content_type=json`)
21724
21903
  .pipe(map$1((thesaurus) => {
21725
- // FIXME: find a better way to exclude place keywords
21726
- // thesaurus[0].filter((thes) => thes.dname !== 'place')
21727
21904
  return thesaurus[0];
21728
21905
  }), shareReplay(1));
21729
21906
  this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
@@ -21767,8 +21944,14 @@ class Gn4PlatformService {
21767
21944
  }
21768
21945
  return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
21769
21946
  }
21770
- searchKeywords(query) {
21771
- const keywords$ = this.registriesApiService.searchKeywords(query, this.langService.iso3, 10, 0, null, null, null, `*${query}*`);
21947
+ searchKeywords(query, keywordTypes) {
21948
+ const keywords$ = this.allThesaurus$.pipe(switchMap((thesaurus) => {
21949
+ const selectedThesauri = [];
21950
+ keywordTypes.map((keywordType) => {
21951
+ selectedThesauri.push(...thesaurus.filter((thes) => thes.dname === keywordType));
21952
+ });
21953
+ return this.registriesApiService.searchKeywords(query, this.langService.iso3, 10, 0, null, selectedThesauri.map((thes) => thes.key), null, `*${query}*`);
21954
+ }));
21772
21955
  return combineLatest([keywords$, this.allThesaurus$]).pipe(map$1(([keywords, thesaurus]) => {
21773
21956
  return this.mapper.keywordsFromApi(keywords, thesaurus, this.langService.iso3);
21774
21957
  }));
@@ -24270,6 +24453,185 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
24270
24453
  type: Input
24271
24454
  }] } });
24272
24455
 
24456
+ class ColorScaleComponent {
24457
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24458
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColorScaleComponent, selector: "gn-ui-color-scale", ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n", styles: [""] }); }
24459
+ }
24460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColorScaleComponent, decorators: [{
24461
+ type: Component,
24462
+ args: [{ selector: 'gn-ui-color-scale', template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n" }]
24463
+ }] });
24464
+
24465
+ class ProgressBarComponent {
24466
+ constructor() {
24467
+ this.value = 0;
24468
+ this.type = 'default';
24469
+ }
24470
+ get progress() {
24471
+ return this.value > 0 ? (this.value < 100 ? this.value : 100) : 0;
24472
+ }
24473
+ get color() {
24474
+ switch (this.type) {
24475
+ case 'default':
24476
+ return {
24477
+ outerBar: 'bg-gray-200',
24478
+ innerBar: 'bg-gray-100',
24479
+ text: 'text-gray-900',
24480
+ };
24481
+ case 'primary':
24482
+ return {
24483
+ outerBar: 'bg-primary',
24484
+ innerBar: 'bg-primary-lighter',
24485
+ text: 'text-white',
24486
+ };
24487
+ case 'secondary':
24488
+ return {
24489
+ outerBar: 'bg-secondary',
24490
+ innerBar: 'bg-secondary-lighter',
24491
+ text: 'text-white',
24492
+ };
24493
+ }
24494
+ }
24495
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24496
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{\n color.innerBar\n }} my-1 mx-1 transition-width duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\">\n {{ progress }}%\n </div>\n </div>\n</div>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }); }
24497
+ }
24498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressBarComponent, decorators: [{
24499
+ type: Component,
24500
+ args: [{ selector: 'gn-ui-progress-bar', template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{\n color.innerBar\n }} my-1 mx-1 transition-width duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\">\n {{ progress }}%\n </div>\n </div>\n</div>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
24501
+ }], propDecorators: { value: [{
24502
+ type: Input
24503
+ }], type: [{
24504
+ type: Input
24505
+ }] } });
24506
+
24507
+ class StepBarComponent {
24508
+ constructor(cdr) {
24509
+ this.cdr = cdr;
24510
+ this.currentStep = 1;
24511
+ this.type = 'default';
24512
+ }
24513
+ get stepCounter() {
24514
+ return new Array(this.steps);
24515
+ }
24516
+ get color() {
24517
+ switch (this.type) {
24518
+ case 'default':
24519
+ return {
24520
+ outerBar: 'bg-gray-200',
24521
+ innerBar: 'bg-gray-100',
24522
+ };
24523
+ case 'primary':
24524
+ return {
24525
+ outerBar: 'bg-primary',
24526
+ innerBar: 'bg-primary-lighter',
24527
+ };
24528
+ case 'secondary':
24529
+ return {
24530
+ outerBar: 'bg-secondary',
24531
+ innerBar: 'bg-secondary-lighter',
24532
+ };
24533
+ }
24534
+ }
24535
+ getCircleColor(index) {
24536
+ return index === this.currentStep
24537
+ ? 'bg-black'
24538
+ : index < this.currentStep
24539
+ ? 'bg-white'
24540
+ : this.color.innerBar;
24541
+ }
24542
+ getChecked(index) {
24543
+ return index + 1 < this.currentStep;
24544
+ }
24545
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StepBarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
24546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StepBarComponent, selector: "gn-ui-step-bar", inputs: { steps: "steps", currentStep: "currentStep", type: "type" }, ngImport: i0, template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
24547
+ }
24548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StepBarComponent, decorators: [{
24549
+ type: Component,
24550
+ args: [{ selector: 'gn-ui-step-bar', template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"] }]
24551
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { steps: [{
24552
+ type: Input
24553
+ }], currentStep: [{
24554
+ type: Input
24555
+ }], type: [{
24556
+ type: Input
24557
+ }] } });
24558
+
24559
+ class LoadingMaskComponent {
24560
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24561
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24562
+ }
24563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingMaskComponent, decorators: [{
24564
+ type: Component,
24565
+ args: [{ selector: 'gn-ui-loading-mask', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"] }]
24566
+ }], propDecorators: { message: [{
24567
+ type: Input
24568
+ }] } });
24569
+
24570
+ class SpinningLoaderComponent {
24571
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinningLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24572
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader", ngImport: i0, template: "<span>\n <svg\n class=\"animate-spin h-8 w-8 text-primary\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n</span>\n", styles: [""] }); }
24573
+ }
24574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinningLoaderComponent, decorators: [{
24575
+ type: Component,
24576
+ args: [{ selector: 'gn-ui-spinning-loader', template: "<span>\n <svg\n class=\"animate-spin h-8 w-8 text-primary\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n</span>\n" }]
24577
+ }] });
24578
+
24579
+ class UiWidgetsModule {
24580
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24581
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, declarations: [ColorScaleComponent,
24582
+ ProgressBarComponent,
24583
+ StepBarComponent,
24584
+ LoadingMaskComponent,
24585
+ SpinningLoaderComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
24586
+ FormsModule,
24587
+ ReactiveFormsModule,
24588
+ TagInputModule,
24589
+ UtilSharedModule,
24590
+ MatProgressSpinnerModule,
24591
+ MatIconModule], exports: [ProgressBarComponent,
24592
+ StepBarComponent,
24593
+ LoadingMaskComponent,
24594
+ SpinningLoaderComponent] }); }
24595
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, imports: [CommonModule,
24596
+ TranslateModule.forChild(),
24597
+ NgxDropzoneModule,
24598
+ FormsModule,
24599
+ ReactiveFormsModule,
24600
+ TagInputModule,
24601
+ UtilSharedModule,
24602
+ MatProgressSpinnerModule,
24603
+ MatIconModule] }); }
24604
+ }
24605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, decorators: [{
24606
+ type: NgModule,
24607
+ args: [{
24608
+ declarations: [
24609
+ ColorScaleComponent,
24610
+ ProgressBarComponent,
24611
+ StepBarComponent,
24612
+ LoadingMaskComponent,
24613
+ SpinningLoaderComponent,
24614
+ ],
24615
+ imports: [
24616
+ CommonModule,
24617
+ TranslateModule.forChild(),
24618
+ NgxDropzoneModule,
24619
+ FormsModule,
24620
+ ReactiveFormsModule,
24621
+ TagInputModule,
24622
+ UtilSharedModule,
24623
+ MatProgressSpinnerModule,
24624
+ MatIconModule,
24625
+ ],
24626
+ exports: [
24627
+ ProgressBarComponent,
24628
+ StepBarComponent,
24629
+ LoadingMaskComponent,
24630
+ SpinningLoaderComponent,
24631
+ ],
24632
+ }]
24633
+ }] });
24634
+
24273
24635
  class PopupAlertComponent {
24274
24636
  constructor(changeDetector) {
24275
24637
  this.changeDetector = changeDetector;
@@ -24300,11 +24662,11 @@ class PopupAlertComponent {
24300
24662
  }, this.showDuration);
24301
24663
  }
24302
24664
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
24303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24665
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PopupAlertComponent, isStandalone: true, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24304
24666
  }
24305
24667
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PopupAlertComponent, decorators: [{
24306
24668
  type: Component,
24307
- args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
24669
+ args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
24308
24670
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
24309
24671
  type: Input
24310
24672
  }], type: [{
@@ -24321,37 +24683,59 @@ class AutocompleteComponent {
24321
24683
  this.cdRef = cdRef;
24322
24684
  this.clearOnSelection = false;
24323
24685
  this.autoFocus = false;
24686
+ this.minCharacterCount = 3;
24687
+ this.allowSubmit = true;
24324
24688
  this.itemSelected = new EventEmitter();
24325
24689
  this.inputSubmitted = new EventEmitter();
24326
24690
  this.inputCleared = new EventEmitter();
24327
24691
  this.control = new UntypedFormControl();
24328
- this.subscription = new Subscription();
24329
24692
  this.cancelEnter = true;
24330
24693
  this.selectionSubject = new ReplaySubject(1);
24331
24694
  this.lastInputValue$ = new ReplaySubject(1);
24332
24695
  this.error = null;
24333
- this.displayWithFn = (item) => item;
24696
+ this.subscription = new Subscription();
24697
+ this.displayWithFn = (item) => item.toString();
24698
+ this.displayWithFnInternal = (item) => {
24699
+ if (item === null || item === undefined)
24700
+ return null;
24701
+ return this.displayWithFn(item);
24702
+ };
24334
24703
  }
24335
24704
  ngOnChanges(changes) {
24336
24705
  const { value } = changes;
24337
24706
  if (value) {
24338
- const previousTextValue = this.displayWithFn(value.previousValue);
24339
- const currentTextValue = this.displayWithFn(value.currentValue);
24707
+ const previousTextValue = this.displayWithFnInternal(value.previousValue);
24708
+ const currentTextValue = this.displayWithFnInternal(value.currentValue);
24340
24709
  if (previousTextValue !== currentTextValue) {
24341
24710
  this.updateInputValue(value.currentValue);
24342
24711
  }
24343
24712
  }
24344
24713
  }
24345
24714
  ngOnInit() {
24346
- this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
24715
+ const newValue$ = merge(of(''), this.inputCleared.pipe(map$1(() => '')), this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), distinctUntilChanged(), debounceTime(400)));
24716
+ const externalValueChange$ = this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title));
24717
+ // this observable emits arrays of suggestions loaded using the given action
24718
+ const suggestionsFromAction = merge(newValue$.pipe(filter((value) => value.length >= this.minCharacterCount)), externalValueChange$).pipe(tap$1(() => {
24719
+ this.searching = true;
24720
+ this.error = null;
24721
+ }), switchMap$1((value) => this.action(value)), catchError((error) => {
24347
24722
  this.error = error.message;
24348
24723
  return of([]);
24349
24724
  }), finalize(() => (this.searching = false)));
24350
- this.subscription = this.control.valueChanges.subscribe((any) => {
24725
+ this.suggestions$ = merge(suggestionsFromAction,
24726
+ // if a new value is under the min char count, clear suggestions
24727
+ newValue$.pipe(filter((value) => value.length < this.minCharacterCount), map$1(() => [])));
24728
+ // close the panel whenever suggestions are cleared
24729
+ this.subscription.add(this.suggestions$
24730
+ .pipe(filter((suggestions) => suggestions.length === 0))
24731
+ .subscribe(() => {
24732
+ this.triggerRef?.closePanel();
24733
+ }));
24734
+ this.subscription.add(this.control.valueChanges.subscribe((any) => {
24351
24735
  if (any !== '') {
24352
24736
  this.cancelEnter = false;
24353
24737
  }
24354
- });
24738
+ }));
24355
24739
  this.control.valueChanges
24356
24740
  .pipe(filter((value) => typeof value === 'string'))
24357
24741
  .subscribe(this.lastInputValue$);
@@ -24364,7 +24748,7 @@ class AutocompleteComponent {
24364
24748
  }
24365
24749
  }
24366
24750
  ngOnDestroy() {
24367
- this.subscription.unsubscribe();
24751
+ this.subscription?.unsubscribe();
24368
24752
  }
24369
24753
  updateInputValue(value) {
24370
24754
  if (value) {
@@ -24381,17 +24765,14 @@ class AutocompleteComponent {
24381
24765
  .pipe(take(1))
24382
24766
  .subscribe((selection) => selection && selection.option.deselect());
24383
24767
  this.inputRef.nativeElement.focus();
24384
- this.triggerRef.closePanel();
24385
24768
  }
24386
24769
  handleEnter(any) {
24387
- if (!this.cancelEnter) {
24770
+ if (!this.cancelEnter && this.allowSubmit) {
24388
24771
  this.inputSubmitted.emit(any);
24389
- this.triggerRef.closePanel();
24390
24772
  }
24391
24773
  }
24392
24774
  handleClickSearch() {
24393
24775
  this.inputSubmitted.emit(this.inputRef.nativeElement.value);
24394
- this.triggerRef.closePanel();
24395
24776
  }
24396
24777
  handleSelection(event) {
24397
24778
  this.cancelEnter = true;
@@ -24403,11 +24784,18 @@ class AutocompleteComponent {
24403
24784
  }
24404
24785
  }
24405
24786
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
24406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24787
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24407
24788
  }
24408
24789
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
24409
24790
  type: Component,
24410
- args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
24791
+ args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
24792
+ MatIconModule,
24793
+ PopupAlertComponent,
24794
+ MatAutocompleteModule,
24795
+ CommonModule,
24796
+ TranslateModule,
24797
+ ReactiveFormsModule,
24798
+ ], template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
24411
24799
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
24412
24800
  type: Input
24413
24801
  }], action: [{
@@ -24418,6 +24806,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
24418
24806
  type: Input
24419
24807
  }], autoFocus: [{
24420
24808
  type: Input
24809
+ }], minCharacterCount: [{
24810
+ type: Input
24811
+ }], allowSubmit: [{
24812
+ type: Input
24421
24813
  }], itemSelected: [{
24422
24814
  type: Output
24423
24815
  }], inputSubmitted: [{
@@ -24520,7 +24912,7 @@ class CheckToggleComponent {
24520
24912
  this.toggled.emit(event);
24521
24913
  }
24522
24914
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24523
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24915
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24524
24916
  }
24525
24917
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckToggleComponent, decorators: [{
24526
24918
  type: Component,
@@ -24553,7 +24945,7 @@ class CheckboxComponent {
24553
24945
  this.changed.emit(this.checked);
24554
24946
  }
24555
24947
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24556
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24948
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24557
24949
  }
24558
24950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxComponent, decorators: [{
24559
24951
  type: Component,
@@ -24613,7 +25005,7 @@ class ChipsInputComponent {
24613
25005
  this.subscription.unsubscribe();
24614
25006
  }
24615
25007
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
24616
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5$1.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
25008
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
24617
25009
  }
24618
25010
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChipsInputComponent, decorators: [{
24619
25011
  type: Component,
@@ -24644,7 +25036,7 @@ class CopyTextButtonComponent {
24644
25036
  event.target.blur();
24645
25037
  }
24646
25038
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24647
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25039
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24648
25040
  }
24649
25041
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
24650
25042
  type: Component,
@@ -24664,7 +25056,7 @@ class DatePickerComponent {
24664
25056
  this.dateChange = new EventEmitter();
24665
25057
  }
24666
25058
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24667
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25059
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24668
25060
  }
24669
25061
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
24670
25062
  type: Component,
@@ -24681,7 +25073,7 @@ class DateRangePickerComponent {
24681
25073
  this.endDateChange = new EventEmitter();
24682
25074
  }
24683
25075
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24684
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25076
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$4.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$4.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24685
25077
  }
24686
25078
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
24687
25079
  type: Component,
@@ -24713,7 +25105,7 @@ class DragAndDropFileInputComponent {
24713
25105
  this.fileChange.emit(this.selectedFile);
24714
25106
  }
24715
25107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24716
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
25108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$1.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
24717
25109
  }
24718
25110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
24719
25111
  type: Component,
@@ -24871,13 +25263,13 @@ class DropdownMultiselectComponent {
24871
25263
  propagateToDocumentOnly(event);
24872
25264
  this.setFocus();
24873
25265
  }
24874
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$5.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
24875
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
25267
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24876
25268
  }
24877
25269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
24878
25270
  type: Component,
24879
25271
  args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
24880
- }], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
25272
+ }], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
24881
25273
  type: Input
24882
25274
  }], choices: [{
24883
25275
  type: Input
@@ -25041,7 +25433,7 @@ class DropdownSelectorComponent {
25041
25433
  }
25042
25434
  }
25043
25435
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25044
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth", disabled: "disabled" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25436
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth", disabled: "disabled" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25045
25437
  }
25046
25438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
25047
25439
  type: Component,
@@ -25319,189 +25711,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
25319
25711
  args: ['input']
25320
25712
  }] } });
25321
25713
 
25322
- class ColorScaleComponent {
25323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25324
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ColorScaleComponent, selector: "gn-ui-color-scale", ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n", styles: [""] }); }
25325
- }
25326
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ColorScaleComponent, decorators: [{
25327
- type: Component,
25328
- args: [{ selector: 'gn-ui-color-scale', template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n" }]
25329
- }] });
25330
-
25331
- class ProgressBarComponent {
25332
- constructor() {
25333
- this.value = 0;
25334
- this.type = 'default';
25335
- }
25336
- get progress() {
25337
- return this.value > 0 ? (this.value < 100 ? this.value : 100) : 0;
25338
- }
25339
- get color() {
25340
- switch (this.type) {
25341
- case 'default':
25342
- return {
25343
- outerBar: 'bg-gray-200',
25344
- innerBar: 'bg-gray-100',
25345
- text: 'text-gray-900',
25346
- };
25347
- case 'primary':
25348
- return {
25349
- outerBar: 'bg-primary',
25350
- innerBar: 'bg-primary-lighter',
25351
- text: 'text-white',
25352
- };
25353
- case 'secondary':
25354
- return {
25355
- outerBar: 'bg-secondary',
25356
- innerBar: 'bg-secondary-lighter',
25357
- text: 'text-white',
25358
- };
25359
- }
25360
- }
25361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25362
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{\n color.innerBar\n }} my-1 mx-1 transition-width duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\">\n {{ progress }}%\n </div>\n </div>\n</div>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }); }
25363
- }
25364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressBarComponent, decorators: [{
25365
- type: Component,
25366
- args: [{ selector: 'gn-ui-progress-bar', template: "<div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{\n color.innerBar\n }} my-1 mx-1 transition-width duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\">\n {{ progress }}%\n </div>\n </div>\n</div>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
25367
- }], propDecorators: { value: [{
25368
- type: Input
25369
- }], type: [{
25370
- type: Input
25371
- }] } });
25372
-
25373
- class StepBarComponent {
25374
- constructor(cdr) {
25375
- this.cdr = cdr;
25376
- this.currentStep = 1;
25377
- this.type = 'default';
25378
- }
25379
- get stepCounter() {
25380
- return new Array(this.steps);
25381
- }
25382
- get color() {
25383
- switch (this.type) {
25384
- case 'default':
25385
- return {
25386
- outerBar: 'bg-gray-200',
25387
- innerBar: 'bg-gray-100',
25388
- };
25389
- case 'primary':
25390
- return {
25391
- outerBar: 'bg-primary',
25392
- innerBar: 'bg-primary-lighter',
25393
- };
25394
- case 'secondary':
25395
- return {
25396
- outerBar: 'bg-secondary',
25397
- innerBar: 'bg-secondary-lighter',
25398
- };
25399
- }
25400
- }
25401
- getCircleColor(index) {
25402
- return index === this.currentStep
25403
- ? 'bg-black'
25404
- : index < this.currentStep
25405
- ? 'bg-white'
25406
- : this.color.innerBar;
25407
- }
25408
- getChecked(index) {
25409
- return index + 1 < this.currentStep;
25410
- }
25411
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StepBarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
25412
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StepBarComponent, selector: "gn-ui-step-bar", inputs: { steps: "steps", currentStep: "currentStep", type: "type" }, ngImport: i0, template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
25413
- }
25414
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StepBarComponent, decorators: [{
25415
- type: Component,
25416
- args: [{ selector: 'gn-ui-step-bar', template: "<div class=\"relative flex flex-col justify-center\">\n <div class=\"flex justify-between ml-16 mr-16 z-10 circle-steps\">\n <div\n *ngFor=\"let step of stepCounter; let i = index\"\n class=\"shadow-md rounded-full h-6 w-6 {{ getCircleColor(i + 1) }}\"\n >\n <span class=\"icon-check pl-1\" *ngIf=\"getChecked(i)\"></span>\n </div>\n </div>\n <div\n class=\"absolute rounded-lg right-0 w-full {{ color.outerBar }} h-2 z-0\"\n ></div>\n</div>\n", styles: [".icon-check{color:var(--color-primary)}\n"] }]
25417
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { steps: [{
25418
- type: Input
25419
- }], currentStep: [{
25420
- type: Input
25421
- }], type: [{
25422
- type: Input
25423
- }] } });
25424
-
25425
- class LoadingMaskComponent {
25426
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25427
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25428
- }
25429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingMaskComponent, decorators: [{
25430
- type: Component,
25431
- args: [{ selector: 'gn-ui-loading-mask', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"] }]
25432
- }], propDecorators: { message: [{
25433
- type: Input
25434
- }] } });
25435
-
25436
- class SpinningLoaderComponent {
25437
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinningLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25438
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader", ngImport: i0, template: "<span>\n <svg\n class=\"animate-spin h-8 w-8 text-primary\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n</span>\n", styles: [""] }); }
25439
- }
25440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpinningLoaderComponent, decorators: [{
25441
- type: Component,
25442
- args: [{ selector: 'gn-ui-spinning-loader', template: "<span>\n <svg\n class=\"animate-spin h-8 w-8 text-primary\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n</span>\n" }]
25443
- }] });
25444
-
25445
- class UiWidgetsModule {
25446
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25447
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, declarations: [ColorScaleComponent,
25448
- ProgressBarComponent,
25449
- StepBarComponent,
25450
- LoadingMaskComponent,
25451
- PopupAlertComponent,
25452
- SpinningLoaderComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
25453
- FormsModule,
25454
- ReactiveFormsModule,
25455
- TagInputModule,
25456
- UtilSharedModule,
25457
- MatProgressSpinnerModule,
25458
- MatIconModule], exports: [ProgressBarComponent,
25459
- StepBarComponent,
25460
- LoadingMaskComponent,
25461
- PopupAlertComponent,
25462
- SpinningLoaderComponent] }); }
25463
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, imports: [CommonModule,
25464
- TranslateModule.forChild(),
25465
- NgxDropzoneModule,
25466
- FormsModule,
25467
- ReactiveFormsModule,
25468
- TagInputModule,
25469
- UtilSharedModule,
25470
- MatProgressSpinnerModule,
25471
- MatIconModule] }); }
25472
- }
25473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiWidgetsModule, decorators: [{
25474
- type: NgModule,
25475
- args: [{
25476
- declarations: [
25477
- ColorScaleComponent,
25478
- ProgressBarComponent,
25479
- StepBarComponent,
25480
- LoadingMaskComponent,
25481
- PopupAlertComponent,
25482
- SpinningLoaderComponent,
25483
- ],
25484
- imports: [
25485
- CommonModule,
25486
- TranslateModule.forChild(),
25487
- NgxDropzoneModule,
25488
- FormsModule,
25489
- ReactiveFormsModule,
25490
- TagInputModule,
25491
- UtilSharedModule,
25492
- MatProgressSpinnerModule,
25493
- MatIconModule,
25494
- ],
25495
- exports: [
25496
- ProgressBarComponent,
25497
- StepBarComponent,
25498
- LoadingMaskComponent,
25499
- PopupAlertComponent,
25500
- SpinningLoaderComponent,
25501
- ],
25502
- }]
25503
- }] });
25504
-
25505
25714
  class ViewportIntersectorComponent {
25506
25715
  constructor(vcRef) {
25507
25716
  this.vcRef = vcRef;
@@ -25733,7 +25942,7 @@ class ImageInputComponent {
25733
25942
  });
25734
25943
  }
25735
25944
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
25736
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25945
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25737
25946
  }
25738
25947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ImageInputComponent, decorators: [{
25739
25948
  type: Component,
@@ -25769,8 +25978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
25769
25978
 
25770
25979
  class UiInputsModule {
25771
25980
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25772
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
25773
- TextInputComponent,
25981
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: UiInputsModule, declarations: [TextInputComponent,
25774
25982
  DragAndDropFileInputComponent,
25775
25983
  ChipsInputComponent,
25776
25984
  NavigationButtonComponent,
@@ -25802,7 +26010,6 @@ class UiInputsModule {
25802
26010
  DateRangePickerComponent,
25803
26011
  CheckToggleComponent,
25804
26012
  BadgeComponent], exports: [DropdownSelectorComponent,
25805
- AutocompleteComponent,
25806
26013
  ButtonComponent,
25807
26014
  TextInputComponent,
25808
26015
  DragAndDropFileInputComponent,
@@ -25847,7 +26054,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
25847
26054
  type: NgModule,
25848
26055
  args: [{
25849
26056
  declarations: [
25850
- AutocompleteComponent,
25851
26057
  TextInputComponent,
25852
26058
  DragAndDropFileInputComponent,
25853
26059
  ChipsInputComponent,
@@ -25888,7 +26094,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
25888
26094
  ],
25889
26095
  exports: [
25890
26096
  DropdownSelectorComponent,
25891
- AutocompleteComponent,
25892
26097
  ButtonComponent,
25893
26098
  TextInputComponent,
25894
26099
  DragAndDropFileInputComponent,
@@ -26062,7 +26267,7 @@ class FacetItemComponent {
26062
26267
  this.onInvertedChange(this.inverted);
26063
26268
  }
26064
26269
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FacetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26065
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FacetItemComponent, selector: "gn-ui-facet-item", inputs: { label: "label", count: "count", selected: "selected", inverted: "inverted" }, outputs: { selectedChange: "selectedChange", invertedChange: "invertedChange" }, ngImport: i0, template: "<div\n class=\"flex flex-row items-center group px-1 my-1 hover:bg-gray-100 rounded-sm\"\n>\n <label class=\"grow shrink truncate cursor-pointer group-hover:text-black\">\n <input\n type=\"checkbox\"\n class=\"cursor-pointer\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"onSelectedChange($event)\"\n />\n {{ label | translate }}\n <span class=\"group-hover:text-black\">({{ count }})</span>\n </label>\n <div\n *ngIf=\"!inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-exclude\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- minus svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n <div\n *ngIf=\"inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-include\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- check svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
26270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FacetItemComponent, selector: "gn-ui-facet-item", inputs: { label: "label", count: "count", selected: "selected", inverted: "inverted" }, outputs: { selectedChange: "selectedChange", invertedChange: "invertedChange" }, ngImport: i0, template: "<div\n class=\"flex flex-row items-center group px-1 my-1 hover:bg-gray-100 rounded-sm\"\n>\n <label class=\"grow shrink truncate cursor-pointer group-hover:text-black\">\n <input\n type=\"checkbox\"\n class=\"cursor-pointer\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"onSelectedChange($event)\"\n />\n {{ label | translate }}\n <span class=\"group-hover:text-black\">({{ count }})</span>\n </label>\n <div\n *ngIf=\"!inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-exclude\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- minus svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n <div\n *ngIf=\"inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-include\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- check svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
26066
26271
  }
26067
26272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FacetItemComponent, decorators: [{
26068
26273
  type: Component,
@@ -26795,7 +27000,7 @@ class ApiCardComponent {
26795
27000
  }
26796
27001
  }
26797
27002
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26798
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27003
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26799
27004
  }
26800
27005
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
26801
27006
  type: Component,
@@ -26944,17 +27149,19 @@ var ErrorType;
26944
27149
  ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
26945
27150
  ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
26946
27151
  ErrorType[ErrorType["DATASET_HAS_NO_LINK"] = 3] = "DATASET_HAS_NO_LINK";
27152
+ ErrorType[ErrorType["ORGANIZATION_HAS_NO_DATASET"] = 4] = "ORGANIZATION_HAS_NO_DATASET";
27153
+ ErrorType[ErrorType["ORGANIZATION_NOT_FOUND"] = 5] = "ORGANIZATION_NOT_FOUND";
26947
27154
  })(ErrorType || (ErrorType = {}));
26948
27155
  class ErrorComponent {
26949
27156
  constructor() {
26950
27157
  this.types = ErrorType;
26951
27158
  }
26952
27159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26953
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark\n </mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26954
27161
  }
26955
27162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, decorators: [{
26956
27163
  type: Component,
26957
- args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
27164
+ args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark\n </mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
26958
27165
  }], propDecorators: { type: [{
26959
27166
  type: Input
26960
27167
  }], error: [{
@@ -27054,71 +27261,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27054
27261
  type: Output
27055
27262
  }] } });
27056
27263
 
27057
- class MaxLinesComponent {
27058
- constructor(cdr) {
27059
- this.cdr = cdr;
27060
- this.maxLines = 6;
27061
- this.isExpanded = false;
27062
- this.maxHeight = '';
27063
- this.showToggleButton = false;
27064
- }
27065
- ngAfterViewInit() {
27066
- this.calculateMaxHeight();
27067
- this.observer = new ResizeObserver((mutations) => {
27068
- mutations.forEach(() => {
27069
- this.calculateMaxHeight();
27070
- });
27071
- });
27072
- this.observer.observe(this.container.nativeElement.children[0]);
27073
- }
27074
- toggleDisplay() {
27075
- this.isExpanded = !this.isExpanded;
27076
- this.calculateMaxHeight();
27077
- }
27078
- calculateMaxHeight() {
27079
- const containerElement = this.container.nativeElement;
27080
- const contentElement = containerElement.children[0];
27081
- const contentHeight = contentElement.getBoundingClientRect().height;
27082
- if (contentHeight) {
27083
- if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27084
- this.showToggleButton = true;
27085
- this.maxHeight = this.isExpanded
27086
- ? `${contentHeight}px`
27087
- : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27088
- }
27089
- else {
27090
- this.showToggleButton = false;
27091
- this.maxHeight = `${contentHeight}px`;
27092
- }
27093
- containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27094
- this.cdr.detectChanges();
27095
- }
27096
- }
27097
- getLineHeight(element) {
27098
- const computedStyle = window.getComputedStyle(element);
27099
- const lineHeight = parseFloat(computedStyle.lineHeight);
27100
- const fontSize = parseFloat(computedStyle.fontSize || '14');
27101
- const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27102
- return result;
27103
- }
27104
- ngOnDestroy() {
27105
- if (!this.observer)
27106
- return;
27107
- this.observer.unobserve(this.container.nativeElement.children[0]);
27108
- }
27109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27111
- }
27112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
27113
- type: Component,
27114
- args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
27115
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
27116
- type: Input
27117
- }], container: [{
27118
- type: ViewChild,
27119
- args: ['container']
27120
- }] } });
27121
-
27122
27264
  class MetadataCatalogComponent {
27123
27265
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27124
27266
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataCatalogComponent, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-700 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -27332,7 +27474,7 @@ class MetadataInfoComponent {
27332
27474
  this.keyword.emit(keyword);
27333
27475
  }
27334
27476
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27477
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27336
27478
  }
27337
27479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
27338
27480
  type: Component,
@@ -27465,7 +27607,7 @@ class PaginationComponent {
27465
27607
  this.setPage(this.currentPage - 1);
27466
27608
  }
27467
27609
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27468
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PaginationComponent, selector: "gn-ui-pagination", inputs: { currentPage: "currentPage", nPages: "nPages", hideButton: "hideButton" }, outputs: { newCurrentPageEvent: "newCurrentPageEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <div class=\"sm:absolute sm:inset-0\" *ngIf=\"!hideButton\">\n <gn-ui-button\n (buttonClick)=\"nextPage()\"\n type=\"secondary\"\n [disabled]=\"currentPage === nPages\"\n extraClass=\"lg:m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >pagination.nextPage</span\n >\n </gn-ui-button>\n </div>\n <div\n class=\"relative pointer-events-none flex flex-row justify-start sm:justify-end\"\n >\n <div class=\"pointer-events-auto flex flex-row items-center py-[13px]\">\n <span class=\"mr-3 capitalize text-sm text-gray-900\" translate\n >pagination.page</span\n >\n <input\n type=\"number\"\n [ngModel]=\"currentPage\"\n [min]=\"1\"\n [max]=\"nPages\"\n (ngModelChange)=\"setPage($event)\"\n class=\"border border-gray-300 rounded w-[54px] h-[34px] pl-[12px] mr-3 text-center\"\n />\n <span class=\"mr-3 text-sm text-gray-900\"\n ><span translate>pagination.pageOf</span> {{ nPages }}</span\n >\n <gn-ui-button\n (buttonClick)=\"previousPage()\"\n id=\"navigate_previous\"\n class=\"mr-2\"\n [disabled]=\"currentPage === 1\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"prev-page\"\n >\n <mat-icon class=\"material-symbols-outlined\">navigate_before</mat-icon>\n </gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"nextPage()\"\n id=\"navigate_next\"\n [disabled]=\"currentPage === nPages\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"next-page\"\n >\n <mat-icon class=\"material-symbols-outlined\">navigate_next</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: i2$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: i2$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27610
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PaginationComponent, selector: "gn-ui-pagination", inputs: { currentPage: "currentPage", nPages: "nPages", hideButton: "hideButton" }, outputs: { newCurrentPageEvent: "newCurrentPageEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <div class=\"sm:absolute sm:inset-0\" *ngIf=\"!hideButton\">\n <gn-ui-button\n (buttonClick)=\"nextPage()\"\n type=\"secondary\"\n [disabled]=\"currentPage === nPages\"\n extraClass=\"lg:m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >pagination.nextPage</span\n >\n </gn-ui-button>\n </div>\n <div\n class=\"relative pointer-events-none flex flex-row justify-start sm:justify-end\"\n >\n <div class=\"pointer-events-auto flex flex-row items-center py-[13px]\">\n <span class=\"mr-3 capitalize text-sm text-gray-900\" translate\n >pagination.page</span\n >\n <input\n type=\"number\"\n [ngModel]=\"currentPage\"\n [min]=\"1\"\n [max]=\"nPages\"\n (ngModelChange)=\"setPage($event)\"\n class=\"border border-gray-300 rounded w-[54px] h-[34px] pl-[12px] mr-3 text-center\"\n />\n <span class=\"mr-3 text-sm text-gray-900\"\n ><span translate>pagination.pageOf</span> {{ nPages }}</span\n >\n <gn-ui-button\n (buttonClick)=\"previousPage()\"\n id=\"navigate_previous\"\n class=\"mr-2\"\n [disabled]=\"currentPage === 1\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"prev-page\"\n >\n <mat-icon class=\"material-symbols-outlined\">navigate_before</mat-icon>\n </gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"nextPage()\"\n id=\"navigate_next\"\n [disabled]=\"currentPage === nPages\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"next-page\"\n >\n <mat-icon class=\"material-symbols-outlined\">navigate_next</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27469
27611
  }
27470
27612
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginationComponent, decorators: [{
27471
27613
  type: Component,
@@ -27593,7 +27735,7 @@ class RecordApiFormComponent {
27593
27735
  }
27594
27736
  }
27595
27737
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27596
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27738
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27597
27739
  }
27598
27740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
27599
27741
  type: Component,
@@ -27603,13 +27745,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27603
27745
  }] } });
27604
27746
 
27605
27747
  class RelatedRecordCardComponent {
27748
+ constructor() {
27749
+ this.extraClass = '';
27750
+ this.baseClasses = [
27751
+ 'w-72',
27752
+ 'h-96',
27753
+ 'overflow-hidden',
27754
+ 'rounded-lg',
27755
+ 'bg-white',
27756
+ 'cursor-pointer',
27757
+ 'block',
27758
+ 'hover:-translate-y-2 ',
27759
+ 'duration-[180ms]',
27760
+ ].join(' ');
27761
+ }
27762
+ get classList() {
27763
+ return `${this.baseClasses} ${this.extraClass}`;
27764
+ }
27606
27765
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27607
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27608
27767
  }
27609
27768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
27610
27769
  type: Component,
27611
- args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n" }]
27612
- }], propDecorators: { record: [{
27770
+ args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n" }]
27771
+ }], ctorParameters: function () { return []; }, propDecorators: { record: [{
27772
+ type: Input
27773
+ }], extraClass: [{
27613
27774
  type: Input
27614
27775
  }] } });
27615
27776
 
@@ -27777,7 +27938,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27777
27938
 
27778
27939
  class FormFieldWrapperComponent {
27779
27940
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27780
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27941
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27781
27942
  }
27782
27943
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
27783
27944
  type: Component,
@@ -27788,6 +27949,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27788
27949
  type: Input
27789
27950
  }] } });
27790
27951
 
27952
+ class MaxLinesComponent {
27953
+ constructor(cdr) {
27954
+ this.cdr = cdr;
27955
+ this.maxLines = 6;
27956
+ this.isExpanded = false;
27957
+ this.maxHeight = '';
27958
+ this.showToggleButton = false;
27959
+ }
27960
+ ngAfterViewInit() {
27961
+ this.calculateMaxHeight();
27962
+ this.observer = new ResizeObserver((mutations) => {
27963
+ mutations.forEach(() => {
27964
+ this.calculateMaxHeight();
27965
+ });
27966
+ });
27967
+ this.observer.observe(this.container.nativeElement.children[0]);
27968
+ }
27969
+ toggleDisplay() {
27970
+ this.isExpanded = !this.isExpanded;
27971
+ this.calculateMaxHeight();
27972
+ }
27973
+ calculateMaxHeight() {
27974
+ const containerElement = this.container.nativeElement;
27975
+ const contentElement = containerElement.children[0];
27976
+ const contentHeight = contentElement.getBoundingClientRect().height;
27977
+ if (contentHeight) {
27978
+ if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27979
+ this.showToggleButton = true;
27980
+ this.maxHeight = this.isExpanded
27981
+ ? `${contentHeight}px`
27982
+ : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27983
+ }
27984
+ else {
27985
+ this.showToggleButton = false;
27986
+ this.maxHeight = `${contentHeight}px`;
27987
+ }
27988
+ containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27989
+ this.cdr.detectChanges();
27990
+ }
27991
+ }
27992
+ getLineHeight(element) {
27993
+ const computedStyle = window.getComputedStyle(element);
27994
+ const lineHeight = parseFloat(computedStyle.lineHeight);
27995
+ const fontSize = parseFloat(computedStyle.fontSize || '14');
27996
+ const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27997
+ return result;
27998
+ }
27999
+ ngOnDestroy() {
28000
+ if (!this.observer)
28001
+ return;
28002
+ this.observer.unobserve(this.container.nativeElement.children[0]);
28003
+ }
28004
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
28005
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28006
+ }
28007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
28008
+ type: Component,
28009
+ args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
28010
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
28011
+ type: Input
28012
+ }], container: [{
28013
+ type: ViewChild,
28014
+ args: ['container']
28015
+ }] } });
28016
+
27791
28017
  class InteractiveTableColumnComponent {
27792
28018
  constructor() {
27793
28019
  this.grow = false;
@@ -28033,7 +28259,7 @@ class UserPreviewComponent {
28033
28259
  return (this.user.name + ' ' + this.user.surname).trim();
28034
28260
  }
28035
28261
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28036
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28262
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28037
28263
  }
28038
28264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
28039
28265
  type: Component,
@@ -28166,7 +28392,6 @@ class UiElementsModule {
28166
28392
  UserPreviewComponent,
28167
28393
  GnUiLinkifyDirective,
28168
28394
  PaginationButtonsComponent,
28169
- MaxLinesComponent,
28170
28395
  RecordApiFormComponent,
28171
28396
  UserFeedbackItemComponent,
28172
28397
  ImageOverlayPreviewComponent], imports: [CommonModule,
@@ -28197,7 +28422,6 @@ class UiElementsModule {
28197
28422
  AvatarComponent,
28198
28423
  UserPreviewComponent,
28199
28424
  PaginationButtonsComponent,
28200
- MaxLinesComponent,
28201
28425
  RecordApiFormComponent,
28202
28426
  MarkdownParserComponent,
28203
28427
  UserFeedbackItemComponent,
@@ -28252,7 +28476,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28252
28476
  UserPreviewComponent,
28253
28477
  GnUiLinkifyDirective,
28254
28478
  PaginationButtonsComponent,
28255
- MaxLinesComponent,
28256
28479
  RecordApiFormComponent,
28257
28480
  UserFeedbackItemComponent,
28258
28481
  ImageOverlayPreviewComponent,
@@ -28274,7 +28497,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28274
28497
  AvatarComponent,
28275
28498
  UserPreviewComponent,
28276
28499
  PaginationButtonsComponent,
28277
- MaxLinesComponent,
28278
28500
  RecordApiFormComponent,
28279
28501
  MarkdownParserComponent,
28280
28502
  UserFeedbackItemComponent,
@@ -28387,6 +28609,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28387
28609
  }]
28388
28610
  }] });
28389
28611
 
28612
+ class ResultsTableComponent {
28613
+ constructor() {
28614
+ this.records = [];
28615
+ this.selectedRecordsIdentifiers = [];
28616
+ this.sortOrder = null;
28617
+ this.recordHasDraft = () => false;
28618
+ // emits the column (field) as well as the order
28619
+ this.sortByChange = new EventEmitter();
28620
+ this.recordClick = new EventEmitter();
28621
+ this.recordsSelectedChange = new EventEmitter();
28622
+ }
28623
+ dateToString(date) {
28624
+ return date?.toLocaleDateString(undefined, {
28625
+ year: 'numeric',
28626
+ month: 'long',
28627
+ day: 'numeric',
28628
+ timeZone: 'UTC',
28629
+ });
28630
+ }
28631
+ getStatus(isPublishedToAll) {
28632
+ return isPublishedToAll ? 'published' : 'not published';
28633
+ }
28634
+ getRecordFormats(record) {
28635
+ if (record.kind === 'service' || !('distributions' in record)) {
28636
+ return [];
28637
+ }
28638
+ const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
28639
+ formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
28640
+ return formats;
28641
+ }
28642
+ formatUserInfo(userInfo) {
28643
+ const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
28644
+ if (infos && infos.length === 4) {
28645
+ return `${infos[2]} ${infos[1]}`;
28646
+ }
28647
+ return undefined;
28648
+ }
28649
+ getBadgeColor(format) {
28650
+ return getBadgeColor(format);
28651
+ }
28652
+ handleRecordClick(item) {
28653
+ this.recordClick.emit(item);
28654
+ }
28655
+ setSortBy(col, order) {
28656
+ this.sortByChange.emit([col, order]);
28657
+ }
28658
+ isSortedBy(col) {
28659
+ if (!this.sortOrder) {
28660
+ return null;
28661
+ }
28662
+ const sortArray = Array.isArray(this.sortOrder[0])
28663
+ ? this.sortOrder
28664
+ : [this.sortOrder];
28665
+ for (const sort of sortArray) {
28666
+ if (sort[1] === col) {
28667
+ return sort[0];
28668
+ }
28669
+ }
28670
+ return null;
28671
+ }
28672
+ isChecked(record) {
28673
+ return this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier);
28674
+ }
28675
+ handleRecordSelectedChange(selected, record) {
28676
+ this.recordsSelectedChange.emit([[record], selected]);
28677
+ }
28678
+ async toggleSelectAll() {
28679
+ this.recordsSelectedChange.emit([this.records, !this.isAllSelected()]);
28680
+ }
28681
+ isAllSelected() {
28682
+ return this.records.every((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28683
+ }
28684
+ isSomeSelected() {
28685
+ const allSelected = this.records.every((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28686
+ const someSelected = this.records.some((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28687
+ return !allSelected && someSelected;
28688
+ }
28689
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28690
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", recordHasDraft: "recordHasDraft" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
28691
+ }
28692
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
28693
+ type: Component,
28694
+ args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
28695
+ CommonModule,
28696
+ UiInputsModule,
28697
+ InteractiveTableComponent,
28698
+ InteractiveTableColumnComponent,
28699
+ MatIconModule,
28700
+ TranslateModule,
28701
+ BadgeComponent,
28702
+ ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
28703
+ }], propDecorators: { records: [{
28704
+ type: Input
28705
+ }], selectedRecordsIdentifiers: [{
28706
+ type: Input
28707
+ }], sortOrder: [{
28708
+ type: Input
28709
+ }], recordHasDraft: [{
28710
+ type: Input
28711
+ }], sortByChange: [{
28712
+ type: Output
28713
+ }], recordClick: [{
28714
+ type: Output
28715
+ }], recordsSelectedChange: [{
28716
+ type: Output
28717
+ }] } });
28718
+
28390
28719
  const ADD_SEARCH = '[Search] Add search instance';
28391
28720
  const SET_FILTERS = '[Search] Set Filters';
28392
28721
  const SET_CONFIG_FILTERS = '[Search] Set config filters';
@@ -28924,6 +29253,9 @@ const getSearchResults = createSelector(getSearchStateSearch, (state) => state.r
28924
29253
  const getSearchResultsLoading = createSelector(getSearchStateSearch, (state) => state.loadingResults);
28925
29254
  const getSearchResultsAggregations = createSelector(getSearchStateSearch, (state) => state.results.aggregations);
28926
29255
  const getSearchResultsHits = createSelector(getSearchStateSearch, (state) => state.results.count);
29256
+ const isBeginningOfResults = createSelector(getSearchStateSearch, (state) => {
29257
+ return state.params.currentPage === 0;
29258
+ });
28927
29259
  const isEndOfResults = createSelector(getSearchStateSearch, (state) => {
28928
29260
  return (state.params.currentPage * state.params.pageSize +
28929
29261
  state.params.pageSize >=
@@ -28957,6 +29289,7 @@ class SearchFacade {
28957
29289
  this.isLoading$ = this.store.pipe(select(getSearchResultsLoading, searchId));
28958
29290
  this.searchFilters$ = this.store.pipe(select(getSearchFilters, searchId));
28959
29291
  this.resultsHits$ = this.store.pipe(select(getSearchResultsHits, searchId));
29292
+ this.isBeginningOfResults$ = this.store.pipe(select(isBeginningOfResults, searchId));
28960
29293
  this.isEndOfResults$ = this.store.pipe(select(isEndOfResults, searchId));
28961
29294
  this.totalPages$ = this.store.pipe(select(totalPages, searchId));
28962
29295
  this.currentPage$ = this.store.pipe(select(currentPage, searchId));
@@ -29364,7 +29697,7 @@ class SearchService {
29364
29697
  }
29365
29698
  updateFilters(params) {
29366
29699
  this.facade.searchFilters$
29367
- .pipe(first(), map$1((filters) => ({ ...filters, ...params })))
29700
+ .pipe(first$1(), map$1((filters) => ({ ...filters, ...params })))
29368
29701
  .subscribe((filters) => this.facade.setFilters(filters));
29369
29702
  }
29370
29703
  setFilters(params) {
@@ -29397,7 +29730,7 @@ class FuzzySearchComponent {
29397
29730
  this.autoFocus = false;
29398
29731
  this.itemSelected = new EventEmitter();
29399
29732
  this.inputSubmitted = new EventEmitter();
29400
- this.displayWithFn = (record) => record?.title;
29733
+ this.displayWithFn = (record) => record.title;
29401
29734
  this.autoCompleteAction = (query) => this.recordsRepository
29402
29735
  .fuzzySearch(query)
29403
29736
  .pipe(map$1((result) => result.records));
@@ -29437,7 +29770,7 @@ class FuzzySearchComponent {
29437
29770
  }
29438
29771
  }
29439
29772
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
29440
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29773
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29441
29774
  }
29442
29775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, decorators: [{
29443
29776
  type: Component,
@@ -30265,7 +30598,8 @@ class FeatureSearchModule {
30265
30598
  UiElementsModule,
30266
30599
  FacetsModule,
30267
30600
  MatIconModule,
30268
- UiWidgetsModule], exports: [SortByComponent,
30601
+ UiWidgetsModule,
30602
+ AutocompleteComponent], exports: [SortByComponent,
30269
30603
  ResultsLayoutComponent,
30270
30604
  FuzzySearchComponent,
30271
30605
  RecordsMetricsComponent,
@@ -30293,7 +30627,8 @@ class FeatureSearchModule {
30293
30627
  UiElementsModule,
30294
30628
  FacetsModule,
30295
30629
  MatIconModule,
30296
- UiWidgetsModule, FacetsModule] }); }
30630
+ UiWidgetsModule,
30631
+ AutocompleteComponent, FacetsModule] }); }
30297
30632
  }
30298
30633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureSearchModule, decorators: [{
30299
30634
  type: NgModule,
@@ -30324,6 +30659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30324
30659
  FacetsModule,
30325
30660
  MatIconModule,
30326
30661
  UiWidgetsModule,
30662
+ AutocompleteComponent,
30327
30663
  ],
30328
30664
  exports: [
30329
30665
  SortByComponent,
@@ -30346,7 +30682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30346
30682
  }]
30347
30683
  }] });
30348
30684
 
30349
- class ResultsTableComponent {
30685
+ class ResultsTableContainerComponent {
30350
30686
  constructor(searchFacade, searchService, selectionService, recordsRepository) {
30351
30687
  this.searchFacade = searchFacade;
30352
30688
  this.searchService = searchService;
@@ -30355,106 +30691,29 @@ class ResultsTableComponent {
30355
30691
  this.recordClick = new EventEmitter();
30356
30692
  this.records$ = this.searchFacade.results$;
30357
30693
  this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
30358
- }
30359
- dateToString(date) {
30360
- return date?.toLocaleDateString(undefined, {
30361
- year: 'numeric',
30362
- month: 'long',
30363
- day: 'numeric',
30364
- timeZone: 'UTC',
30365
- });
30366
- }
30367
- getStatus(isPublishedToAll) {
30368
- return isPublishedToAll ? 'published' : 'not published';
30369
- }
30370
- getRecordFormats(record) {
30371
- if (record.kind === 'service' || !('distributions' in record)) {
30372
- return [];
30373
- }
30374
- const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
30375
- formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
30376
- return formats;
30377
- }
30378
- formatUserInfo(userInfo) {
30379
- const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
30380
- if (infos && infos.length === 4) {
30381
- return `${infos[2]} ${infos[1]}`;
30382
- }
30383
- return undefined;
30384
- }
30385
- getBadgeColor(format) {
30386
- return getBadgeColor(format);
30694
+ this.sortBy$ = this.searchFacade.sortBy$;
30695
+ this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
30387
30696
  }
30388
30697
  handleRecordClick(item) {
30389
30698
  this.recordClick.emit(item);
30390
30699
  }
30391
- setSortBy(col, order) {
30700
+ handleSortByChange(col, order) {
30392
30701
  this.searchService.setSortBy([order, col]);
30393
30702
  }
30394
- isSortedBy(col) {
30395
- return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
30396
- const sortArray = Array.isArray(sortOrder[0])
30397
- ? sortOrder
30398
- : [sortOrder];
30399
- for (const sort of sortArray) {
30400
- if (sort[1] === col) {
30401
- return sort[0];
30402
- }
30403
- }
30404
- return null;
30405
- }));
30406
- }
30407
- isChecked(record) {
30408
- return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
30409
- return selectedRecords.includes(record.uniqueIdentifier);
30410
- }));
30411
- }
30412
- handleRecordSelectedChange(selected, record) {
30703
+ handleRecordsSelectedChange(records, selected) {
30413
30704
  if (!selected) {
30414
- this.selectionService.deselectRecords([record]);
30415
- }
30416
- else {
30417
- this.selectionService.selectRecords([record]);
30418
- }
30419
- }
30420
- async toggleSelectAll() {
30421
- const records = await firstValueFrom(this.records$);
30422
- if (await firstValueFrom(this.isAllSelected())) {
30423
30705
  this.selectionService.deselectRecords(records);
30424
30706
  }
30425
30707
  else {
30426
30708
  this.selectionService.selectRecords(records);
30427
30709
  }
30428
30710
  }
30429
- isAllSelected() {
30430
- return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
30431
- return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
30432
- }));
30433
- }
30434
- isSomeSelected() {
30435
- return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
30436
- const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
30437
- const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
30438
- return !allSelected && someSelected;
30439
- }));
30440
- }
30441
- hasDraft(record) {
30442
- return this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
30443
- }
30444
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
30445
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
30711
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
30712
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "recordHasDraft"], outputs: ["sortByChange", "recordClick", "recordsSelectedChange"] }] }); }
30446
30713
  }
30447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
30714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
30448
30715
  type: Component,
30449
- args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
30450
- CommonModule,
30451
- UiInputsModule,
30452
- InteractiveTableComponent,
30453
- InteractiveTableColumnComponent,
30454
- MatIconModule,
30455
- TranslateModule,
30456
- BadgeComponent,
30457
- ], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
30716
+ args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
30458
30717
  }], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
30459
30718
  type: Output
30460
30719
  }] } });
@@ -30756,7 +31015,7 @@ class LayersPanelComponent {
30756
31015
  this.mapFacade.addLayer(layer);
30757
31016
  }
30758
31017
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
30759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31018
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30760
31019
  }
30761
31020
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
30762
31021
  type: Component,
@@ -31270,12 +31529,9 @@ const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => sta
31270
31529
 
31271
31530
  class FigureComponent {
31272
31531
  constructor() {
31532
+ this.unit = '';
31273
31533
  this.color = 'primary';
31274
31534
  }
31275
- get hoverTitle() {
31276
- return `${this.figure.toString()} ${this.unit || ''}
31277
- ${this.title}`;
31278
- }
31279
31535
  get textClass() {
31280
31536
  return this.color === 'primary' ? 'text-primary' : 'text-secondary';
31281
31537
  }
@@ -31283,11 +31539,11 @@ ${this.title}`;
31283
31539
  return this.color === 'primary' ? 'bg-primary-white' : 'bg-secondary-white';
31284
31540
  }
31285
31541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FigureComponent, selector: "gn-ui-figure", inputs: { icon: "icon", title: "title", figure: "figure", unit: "unit", color: "color" }, ngImport: i0, template: "<div\n translate\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n [title]=\"hoverTitle\"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\">{{ figure }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31542
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FigureComponent, selector: "gn-ui-figure", inputs: { icon: "icon", title: "title", figure: "figure", unit: "unit", color: "color" }, ngImport: i0, template: "<div\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n data-test=\"figureTitle\"\n [title]=\"\n figure.toString() +\n ' ' +\n unit +\n ' ' +\n (title | translate: { count: figure })\n \"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\" data-test=\"figure\">{{\n figure\n }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31287
31543
  }
31288
31544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, decorators: [{
31289
31545
  type: Component,
31290
- args: [{ selector: 'gn-ui-figure', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n translate\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n [title]=\"hoverTitle\"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\">{{ figure }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"] }]
31546
+ args: [{ selector: 'gn-ui-figure', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n data-test=\"figureTitle\"\n [title]=\"\n figure.toString() +\n ' ' +\n unit +\n ' ' +\n (title | translate: { count: figure })\n \"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\" data-test=\"figure\">{{\n figure\n }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"] }]
31291
31547
  }], propDecorators: { icon: [{
31292
31548
  type: Input
31293
31549
  }], title: [{
@@ -31501,7 +31757,7 @@ class TableComponent {
31501
31757
  return rowIdPrefix + id;
31502
31758
  }
31503
31759
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
31504
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n >&nbsp;<span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$2.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31505
31761
  }
31506
31762
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
31507
31763
  type: Component,
@@ -32602,7 +32858,7 @@ class TableViewComponent {
32602
32858
  this.loading = false;
32603
32859
  }
32604
32860
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
32605
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableViewComponent, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32861
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableViewComponent, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32606
32862
  }
32607
32863
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableViewComponent, decorators: [{
32608
32864
  type: Component,
@@ -32764,7 +33020,7 @@ class ChartViewComponent {
32764
33020
  this.changeDetector.detectChanges();
32765
33021
  }
32766
33022
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
32767
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33023
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32768
33024
  }
32769
33025
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartViewComponent, decorators: [{
32770
33026
  type: Component,
@@ -32796,7 +33052,8 @@ class FeatureDatavizModule {
32796
33052
  UiWidgetsModule,
32797
33053
  TranslateModule,
32798
33054
  ChartComponent,
32799
- UiInputsModule], exports: [GeoTableViewComponent,
33055
+ UiInputsModule,
33056
+ PopupAlertComponent], exports: [GeoTableViewComponent,
32800
33057
  FigureContainerComponent,
32801
33058
  TableViewComponent,
32802
33059
  ChartViewComponent] }); }
@@ -32807,7 +33064,8 @@ class FeatureDatavizModule {
32807
33064
  TableComponent,
32808
33065
  UiWidgetsModule,
32809
33066
  TranslateModule,
32810
- UiInputsModule] }); }
33067
+ UiInputsModule,
33068
+ PopupAlertComponent] }); }
32811
33069
  }
32812
33070
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureDatavizModule, decorators: [{
32813
33071
  type: NgModule,
@@ -32822,6 +33080,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
32822
33080
  TranslateModule,
32823
33081
  ChartComponent,
32824
33082
  UiInputsModule,
33083
+ PopupAlertComponent,
32825
33084
  ],
32826
33085
  declarations: [
32827
33086
  GeoTableViewComponent,
@@ -32863,9 +33122,7 @@ class MdViewFacade {
32863
33122
  this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
32864
33123
  this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
32865
33124
  this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
32866
- this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(mergeMap((links) => {
32867
- return from(links);
32868
- }), mergeMap((link) => {
33125
+ this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(switchMap$1((links) => from(links).pipe(mergeMap((link) => {
32869
33126
  if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
32870
33127
  if (link.type === 'service' &&
32871
33128
  link.accessServiceProtocol === 'ogcFeatures') {
@@ -32873,7 +33130,10 @@ class MdViewFacade {
32873
33130
  return collectionRecords && collectionRecords.geometry
32874
33131
  ? link
32875
33132
  : null;
32876
- }), defaultIfEmpty(null));
33133
+ }), defaultIfEmpty(null), catchError((e) => {
33134
+ console.error(e);
33135
+ return of(null);
33136
+ }));
32877
33137
  }
32878
33138
  else {
32879
33139
  return of(link);
@@ -32882,12 +33142,7 @@ class MdViewFacade {
32882
33142
  else {
32883
33143
  return of(null);
32884
33144
  }
32885
- }), scan((acc, val) => {
32886
- if (val !== null && !acc.includes(val)) {
32887
- acc.push(val);
32888
- }
32889
- return acc;
32890
- }, []));
33145
+ }), toArray(), map$1((links) => links.filter((link) => link !== null)))));
32891
33146
  this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
32892
33147
  this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
32893
33148
  this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
@@ -33154,7 +33409,7 @@ class MapViewComponent {
33154
33409
  this.selectedLinkIndex$.next(link);
33155
33410
  }
33156
33411
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token: FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
33157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33412
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33158
33413
  }
33159
33414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapViewComponent, decorators: [{
33160
33415
  type: Component,
@@ -33239,15 +33494,15 @@ class OrganisationPreviewComponent {
33239
33494
  }
33240
33495
  clickOrganisation(event) {
33241
33496
  event.preventDefault();
33242
- this.clickedOrganisation.emit(this.organisation);
33497
+ this.clickedOrganisation.emit(this.organization);
33243
33498
  }
33244
33499
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organization: "organization", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organization.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organization.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organization.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organization.recordCount\n }}</span>\n <span translate [translateParams]=\"{ count: organization.recordCount }\"\n >record.metadata.publications</span\n >\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33246
33501
  }
33247
33502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, decorators: [{
33248
33503
  type: Component,
33249
- args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"] }]
33250
- }], propDecorators: { organisation: [{
33504
+ args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organization.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organization.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organization.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organization.recordCount\n }}</span>\n <span translate [translateParams]=\"{ count: organization.recordCount }\"\n >record.metadata.publications</span\n >\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"] }]
33505
+ }], propDecorators: { organization: [{
33251
33506
  type: Input
33252
33507
  }], organisationUrl: [{
33253
33508
  type: Input
@@ -33359,7 +33614,8 @@ class UiCatalogModule {
33359
33614
  LanguageSwitcherComponent,
33360
33615
  OrganisationsResultComponent], imports: [CommonModule, i1$1.TranslateModule, UiElementsModule,
33361
33616
  UiInputsModule,
33362
- MatIconModule], exports: [CatalogTitleComponent,
33617
+ MatIconModule,
33618
+ RouterLink], exports: [CatalogTitleComponent,
33363
33619
  OrganisationPreviewComponent,
33364
33620
  OrganisationsFilterComponent,
33365
33621
  LanguageSwitcherComponent,
@@ -33386,6 +33642,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33386
33642
  UiElementsModule,
33387
33643
  UiInputsModule,
33388
33644
  MatIconModule,
33645
+ RouterLink,
33389
33646
  ],
33390
33647
  exports: [
33391
33648
  CatalogTitleComponent,
@@ -33433,6 +33690,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33433
33690
  type: Input
33434
33691
  }] } });
33435
33692
 
33693
+ // expects the replacement key ${name}
33694
+ const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken('organization-page-url-token');
33695
+
33436
33696
  class OrganisationsComponent {
33437
33697
  constructor(organisationsService, urlTemplate) {
33438
33698
  this.organisationsService = organisationsService;
@@ -33504,17 +33764,17 @@ class OrganisationsComponent {
33504
33764
  return null;
33505
33765
  return this.urlTemplate.replace('${name}', organisation.name);
33506
33766
  }
33507
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, deps: [{ token: OrganizationsServiceInterface }, { token: ORGANIZATION_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33508
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationsComponent, selector: "gn-ui-organisations", inputs: { itemsOnPage: "itemsOnPage" }, outputs: { orgSelect: "orgSelect" }, ngImport: i0, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organisation]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: ["organisation", "organisationUrl"], outputs: ["clickedOrganisation"] }, { kind: "component", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: ["sortBy", "filterBy"] }, { kind: "component", type: OrganisationsResultComponent, selector: "gn-ui-organisations-result", inputs: ["hits", "total"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: PaginationComponent, selector: "gn-ui-pagination", inputs: ["currentPage", "nPages", "hideButton"], outputs: ["newCurrentPageEvent"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, deps: [{ token: OrganizationsServiceInterface }, { token: ORGANIZATION_PAGE_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationsComponent, selector: "gn-ui-organisations", inputs: { itemsOnPage: "itemsOnPage" }, outputs: { orgSelect: "orgSelect" }, ngImport: i0, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organization]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: ["organization", "organisationUrl"], outputs: ["clickedOrganisation"] }, { kind: "component", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: ["sortBy", "filterBy"] }, { kind: "component", type: OrganisationsResultComponent, selector: "gn-ui-organisations-result", inputs: ["hits", "total"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: PaginationComponent, selector: "gn-ui-pagination", inputs: ["currentPage", "nPages", "hideButton"], outputs: ["newCurrentPageEvent"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33509
33769
  }
33510
33770
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, decorators: [{
33511
33771
  type: Component,
33512
- args: [{ selector: 'gn-ui-organisations', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organisation]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n" }]
33772
+ args: [{ selector: 'gn-ui-organisations', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organization]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n" }]
33513
33773
  }], ctorParameters: function () { return [{ type: OrganizationsServiceInterface }, { type: undefined, decorators: [{
33514
33774
  type: Optional
33515
33775
  }, {
33516
33776
  type: Inject,
33517
- args: [ORGANIZATION_URL_TOKEN]
33777
+ args: [ORGANIZATION_PAGE_URL_TOKEN]
33518
33778
  }] }]; }, propDecorators: { itemsOnPage: [{
33519
33779
  type: Input
33520
33780
  }], orgSelect: [{
@@ -33593,9 +33853,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33593
33853
  class RecordsService {
33594
33854
  constructor(recordsRepository) {
33595
33855
  this.recordsRepository = recordsRepository;
33596
- this.recordsCount$ = this.recordsRepository
33597
- .getMatchesCount({})
33598
- .pipe(shareReplay(1), catchError(() => of(0)));
33856
+ this.recordsCount$ = of(true).pipe(switchMap(() => this.recordsRepository.getMatchesCount({})), shareReplay(1));
33599
33857
  }
33600
33858
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, deps: [{ token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
33601
33859
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, providedIn: 'root' }); }
@@ -33739,7 +33997,7 @@ class DataViewShareComponent {
33739
33997
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
33740
33998
  }
33741
33999
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34000
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33743
34001
  }
33744
34002
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
33745
34003
  type: Component,
@@ -33769,7 +34027,8 @@ class FeatureRecordModule {
33769
34027
  UiWidgetsModule,
33770
34028
  TranslateModule,
33771
34029
  TableComponent,
33772
- FeatureDatavizModule], exports: [MapViewComponent,
34030
+ FeatureDatavizModule,
34031
+ PopupAlertComponent], exports: [MapViewComponent,
33773
34032
  DataViewComponent,
33774
34033
  DataViewPermalinkComponent,
33775
34034
  DataViewWebComponentComponent,
@@ -33788,7 +34047,8 @@ class FeatureRecordModule {
33788
34047
  UiWidgetsModule,
33789
34048
  TranslateModule,
33790
34049
  TableComponent,
33791
- FeatureDatavizModule] }); }
34050
+ FeatureDatavizModule,
34051
+ PopupAlertComponent] }); }
33792
34052
  }
33793
34053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureRecordModule, decorators: [{
33794
34054
  type: NgModule,
@@ -33817,6 +34077,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33817
34077
  TranslateModule,
33818
34078
  TableComponent,
33819
34079
  FeatureDatavizModule,
34080
+ PopupAlertComponent,
33820
34081
  ],
33821
34082
  providers: [MdViewFacade],
33822
34083
  exports: [
@@ -34295,7 +34556,7 @@ class WizardFieldComponent {
34295
34556
  deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
34296
34557
  },
34297
34558
  { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
34298
- ], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34559
+ ], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34299
34560
  }
34300
34561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
34301
34562
  type: Component,
@@ -34487,46 +34748,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
34487
34748
  class FormFieldKeywordsComponent {
34488
34749
  constructor(platformService) {
34489
34750
  this.platformService = platformService;
34490
- this.itemSelected = new EventEmitter();
34491
- this.inputSubmitted = new EventEmitter();
34492
34751
  this.displayWithFn = (item) => {
34493
- if (item) {
34494
- return `${item?.title} (${item?.value?.name})`;
34495
- }
34496
- return null;
34752
+ return `${item.title} (${item.value.thesaurus?.name})`;
34497
34753
  };
34498
34754
  this.autoCompleteAction = (query) => {
34499
- const keywords$ = this.platformService.searchKeywords(query).pipe(map$2((thesaurus) => thesaurus.map((thes) => {
34500
- return { title: thes.label, value: thes.thesaurus };
34755
+ return this.platformService
34756
+ .searchKeywords(query, ['temporal', 'theme', 'other'])
34757
+ .pipe(map$2((keywords) => keywords.map((keyword) => {
34758
+ return { title: keyword.label, value: keyword };
34501
34759
  })));
34502
- return keywords$;
34503
34760
  };
34504
34761
  }
34505
- ngOnInit() {
34506
- this.searchInputValue$ = this.autoCompleteAction('')[0];
34507
- }
34508
- // type: { title: string; value: ThesaurusModel }
34509
34762
  handleItemSelection(item) {
34510
- this.addKeyword({
34511
- label: item.title,
34512
- thesaurus: item.value,
34513
- type: item.value.type,
34514
- });
34763
+ this.addKeyword(item.value);
34515
34764
  }
34516
- handleInputSubmission(any) {
34517
- // Should there be an input submission?
34518
- if (this.inputSubmitted.observers.length > 0) {
34519
- this.inputSubmitted.emit(any);
34520
- }
34521
- else {
34522
- // this.searchService.updateFilters({ any })
34523
- }
34524
- }
34525
- async handleInputCleared() {
34526
- this.autoCompleteAction('');
34527
- }
34528
- addKeyword(item) {
34529
- const addedKeywords = [...this.control.value, item];
34765
+ addKeyword(keyword) {
34766
+ const addedKeywords = [...this.control.value, keyword];
34530
34767
  // remove duplicates from keyword
34531
34768
  const filteredKeywords = addedKeywords.filter((value, index, self) => {
34532
34769
  return (index ===
@@ -34541,7 +34778,7 @@ class FormFieldKeywordsComponent {
34541
34778
  this.control.setValue(removeKeywords);
34542
34779
  }
34543
34780
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Component }); }
34544
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiWidgetsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [clearOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34545
34782
  }
34546
34783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
34547
34784
  type: Component,
@@ -34550,13 +34787,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
34550
34787
  UiInputsModule,
34551
34788
  CommonModule,
34552
34789
  UiWidgetsModule,
34553
- ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n" }]
34790
+ AutocompleteComponent,
34791
+ ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [clearOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n" }]
34554
34792
  }], ctorParameters: function () { return [{ type: PlatformServiceInterface }]; }, propDecorators: { control: [{
34555
34793
  type: Input
34556
- }], itemSelected: [{
34557
- type: Output
34558
- }], inputSubmitted: [{
34559
- type: Output
34560
34794
  }] } });
34561
34795
 
34562
34796
  class FormFieldLicenseComponent {
@@ -34770,7 +35004,7 @@ class FormFieldSimpleComponent {
34770
35004
  return this.type === 'list';
34771
35005
  }
34772
35006
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34773
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldSimpleComponent, isStandalone: true, selector: "gn-ui-form-field-simple", inputs: { type: "type", control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder", options: "options" }, ngImport: i0, template: "<input\n *ngIf=\"!isSelect\"\n [type]=\"inputType\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n/>\n<select\n *ngIf=\"isSelect\"\n [formControl]=\"control\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n>\n <option *ngFor=\"let option of options\" [ngValue]=\"option.value\">\n {{ option.label }}\n </option>\n</select>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$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: i2$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35007
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldSimpleComponent, isStandalone: true, selector: "gn-ui-form-field-simple", inputs: { type: "type", control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder", options: "options" }, ngImport: i0, template: "<input\n *ngIf=\"!isSelect\"\n [type]=\"inputType\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n/>\n<select\n *ngIf=\"isSelect\"\n [formControl]=\"control\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n>\n <option *ngFor=\"let option of options\" [ngValue]=\"option.value\">\n {{ option.label }}\n </option>\n</select>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34774
35008
  }
34775
35009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldSimpleComponent, decorators: [{
34776
35010
  type: Component,
@@ -34796,7 +35030,7 @@ class FormFieldFileComponent {
34796
35030
  this.placeholder = '';
34797
35031
  }
34798
35032
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34799
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldFileComponent, isStandalone: true, selector: "gn-ui-form-field-file", inputs: { control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder" }, ngImport: i0, template: "<input\n type=\"file\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35033
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldFileComponent, isStandalone: true, selector: "gn-ui-form-field-file", inputs: { control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder" }, ngImport: i0, template: "<input\n type=\"file\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly\n }\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34800
35034
  }
34801
35035
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldFileComponent, decorators: [{
34802
35036
  type: Component,
@@ -35034,7 +35268,7 @@ class FormFieldComponent {
35034
35268
  return this.model === 'title' || this.model === 'abstract';
35035
35269
  }
35036
35270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35037
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"], outputs: ["itemSelected", "inputSubmitted"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35038
35272
  }
35039
35273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
35040
35274
  type: Component,
@@ -35096,6 +35330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35096
35330
  const ROUTER_STATE_KEY = 'router';
35097
35331
  const ROUTER_ROUTE_SEARCH = 'search';
35098
35332
  const ROUTER_ROUTE_DATASET = 'dataset';
35333
+ const ROUTER_ROUTE_ORGANIZATION = 'organization';
35099
35334
  var ROUTE_PARAMS;
35100
35335
  (function (ROUTE_PARAMS) {
35101
35336
  ROUTE_PARAMS["SORT"] = "_sort";
@@ -35127,11 +35362,18 @@ class RouterService {
35127
35362
  path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
35128
35363
  component: this.routerConfig.recordRouteComponent,
35129
35364
  },
35365
+ {
35366
+ path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
35367
+ component: this.routerConfig.organizationRouteComponent,
35368
+ },
35130
35369
  ];
35131
35370
  }
35132
35371
  getSearchRoute() {
35133
35372
  return ROUTER_ROUTE_SEARCH;
35134
35373
  }
35374
+ getOrganizationPageRoute() {
35375
+ return ROUTER_ROUTE_ORGANIZATION;
35376
+ }
35135
35377
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$7.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
35136
35378
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
35137
35379
  }
@@ -35178,6 +35420,13 @@ class RouterFacade {
35178
35420
  this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
35179
35421
  });
35180
35422
  }
35423
+ goToOrganization(organizationName) {
35424
+ const path = `${this.routerService.getOrganizationPageRoute()}/${organizationName}`;
35425
+ this.go({
35426
+ path,
35427
+ queryParamsHandling: '',
35428
+ });
35429
+ }
35181
35430
  updateSearch(query) {
35182
35431
  this.go({
35183
35432
  path: this.routerService.getSearchRoute(),
@@ -35415,7 +35664,7 @@ class DefaultRouterModule {
35415
35664
  };
35416
35665
  }
35417
35666
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
35418
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$2.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
35667
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$3.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
35419
35668
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
35420
35669
  RouterFacade,
35421
35670
  {
@@ -35458,5 +35707,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35458
35707
  * Generated bundle index. Do not edit.
35459
35708
  */
35460
35709
 
35461
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectRecordSource, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
35710
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectRecordSource, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
35462
35711
  //# sourceMappingURL=geonetwork-ui.mjs.map