geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.8be73f10b

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 (291) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +50 -32
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +23 -3
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  8. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  9. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +24 -14
  10. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +16 -18
  11. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  13. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +3 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  17. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  18. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  19. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  20. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  21. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  22. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  23. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  24. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  26. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  29. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
  30. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  31. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  32. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  33. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  34. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  35. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  36. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  37. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  38. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  39. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +78 -0
  40. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  41. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +2 -1
  42. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  43. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  44. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +43 -3
  45. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  46. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  47. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  48. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  49. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  50. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  51. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  52. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  53. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  54. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  59. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  60. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  61. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +35 -9
  62. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +14 -10
  63. package/esm2022/translations/de.json +10 -75
  64. package/esm2022/translations/en.json +10 -75
  65. package/esm2022/translations/es.json +9 -74
  66. package/esm2022/translations/fr.json +22 -87
  67. package/esm2022/translations/it.json +27 -91
  68. package/esm2022/translations/nl.json +9 -74
  69. package/esm2022/translations/pt.json +9 -74
  70. package/fesm2022/geonetwork-ui.mjs +911 -975
  71. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  72. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  73. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  74. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  75. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +3 -1
  76. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  77. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  78. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  79. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  80. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  81. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  82. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  83. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  84. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  85. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  86. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  87. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  88. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  89. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -7
  90. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  91. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  92. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  93. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  94. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  95. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  96. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  97. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  98. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  99. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  100. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  101. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  102. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  103. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  104. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  105. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  106. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  108. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  109. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  110. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  112. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  113. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  114. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  115. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  116. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  117. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  118. package/libs/ui/dataviz/src/index.d.ts +2 -2
  119. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  120. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  121. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  122. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  123. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  124. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  125. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  126. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  127. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  128. package/libs/ui/elements/src/index.d.ts +1 -0
  129. package/libs/ui/elements/src/index.d.ts.map +1 -1
  130. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts +16 -0
  131. package/libs/ui/elements/src/lib/application-banner/application-banner.component.d.ts.map +1 -0
  132. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  133. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  134. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  135. package/libs/ui/inputs/src/index.d.ts +0 -1
  136. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  137. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
  138. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  139. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  140. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  141. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  142. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  143. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  144. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  145. package/libs/ui/widgets/src/index.d.ts +0 -1
  146. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  147. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  148. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  149. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  150. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  151. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  152. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  153. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  154. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  155. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  156. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  157. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  158. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  159. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  160. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  161. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  162. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  163. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  164. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  165. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  166. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  167. package/package.json +1 -1
  168. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  169. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  170. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +55 -32
  171. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +42 -7
  172. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  173. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  174. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +75 -0
  175. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  176. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  177. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  178. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +43 -20
  179. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  180. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +10 -18
  181. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  182. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +1 -0
  183. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  184. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  185. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  186. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  187. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  188. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  189. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  190. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  191. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  192. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  193. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  194. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  195. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  196. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  197. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  198. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  199. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  200. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  201. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  202. package/src/libs/ui/dataviz/src/index.ts +2 -2
  203. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  204. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  205. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  206. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  207. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  208. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  209. package/src/libs/ui/elements/src/index.ts +1 -0
  210. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.css +0 -0
  211. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +25 -0
  212. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +70 -0
  213. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  214. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -0
  215. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  216. package/src/libs/ui/inputs/src/index.ts +0 -1
  217. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +48 -0
  218. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  219. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  220. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  221. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  222. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  223. package/src/libs/ui/widgets/src/index.ts +0 -1
  224. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  225. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  226. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  227. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  228. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  229. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  230. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  231. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  232. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  233. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  234. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  235. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  236. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +53 -8
  237. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  238. package/translations/de.json +10 -75
  239. package/translations/en.json +10 -75
  240. package/translations/es.json +9 -74
  241. package/translations/fr.json +22 -87
  242. package/translations/it.json +27 -91
  243. package/translations/nl.json +9 -74
  244. package/translations/pt.json +9 -74
  245. package/translations/sk.json +9 -74
  246. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  247. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  248. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  249. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  250. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  251. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  252. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  253. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  254. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  255. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  256. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  257. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  258. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  259. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  260. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  261. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  262. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  263. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  264. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  265. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  266. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  267. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  268. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  269. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  270. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  271. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  272. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  273. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  274. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  275. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  276. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  277. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  278. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  279. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  280. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  281. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  282. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  283. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  284. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  285. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
  286. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  287. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  288. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  289. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  290. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  291. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -0,0 +1,173 @@
1
+ import { ScrollingModule } from '@angular/cdk/scrolling'
2
+ import {
3
+ AfterViewInit,
4
+ ChangeDetectionStrategy,
5
+ ChangeDetectorRef,
6
+ Component,
7
+ ElementRef,
8
+ EventEmitter,
9
+ Input,
10
+ OnChanges,
11
+ OnInit,
12
+ Output,
13
+ ViewChild,
14
+ } from '@angular/core'
15
+ import { MatSort, MatSortModule } from '@angular/material/sort'
16
+ import { MatTableModule } from '@angular/material/table'
17
+ import { TranslateModule, TranslateService } from '@ngx-translate/core'
18
+ import { DataTableDataSource } from './data-table.data.source'
19
+ import { BaseReader, FetchError } from '../../../../../../libs/util/data-fetcher/src'
20
+ import {
21
+ MatPaginator,
22
+ MatPaginatorIntl,
23
+ MatPaginatorModule,
24
+ } from '@angular/material/paginator'
25
+ import { CustomMatPaginatorIntl } from './custom.mat.paginator.intl'
26
+ import { CommonModule } from '@angular/common'
27
+ import { BehaviorSubject, filter, firstValueFrom } from 'rxjs'
28
+ import {
29
+ LoadingMaskComponent,
30
+ PopupAlertComponent,
31
+ } from '../../../../../../libs/ui/widgets/src'
32
+ import { LetDirective } from '@ngrx/component'
33
+
34
+ const rowIdPrefix = 'table-item-'
35
+
36
+ export type TableItemId = string | number
37
+ type TableItemType = string | number | Date
38
+
39
+ export interface TableItemModel {
40
+ id: TableItemId
41
+ [key: string]: TableItemType
42
+ }
43
+
44
+ @Component({
45
+ standalone: true,
46
+ imports: [
47
+ MatTableModule,
48
+ MatSortModule,
49
+ MatPaginatorModule,
50
+ ScrollingModule,
51
+ TranslateModule,
52
+ CommonModule,
53
+ LoadingMaskComponent,
54
+ PopupAlertComponent,
55
+ LetDirective,
56
+ ],
57
+ providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }],
58
+ selector: 'gn-ui-data-table',
59
+ templateUrl: './data-table.component.html',
60
+ styleUrls: ['./data-table.component.css'],
61
+ changeDetection: ChangeDetectionStrategy.OnPush,
62
+ })
63
+ export class DataTableComponent implements OnInit, AfterViewInit, OnChanges {
64
+ @Input() set dataset(value: BaseReader) {
65
+ this.properties$.next(null)
66
+ this.dataset_ = value
67
+ this.dataset_.load()
68
+ this.dataset_.properties.then((properties) =>
69
+ this.properties$.next(properties.map((p) => p.name))
70
+ )
71
+ this.dataset_.info.then((info) => (this.count = info.itemsCount))
72
+ }
73
+ @Input() activeId: TableItemId
74
+ @Output() selected = new EventEmitter<any>()
75
+
76
+ @ViewChild(MatSort) sort: MatSort
77
+ @ViewChild(MatPaginator) paginator: MatPaginator
78
+
79
+ dataset_: BaseReader
80
+ properties$ = new BehaviorSubject<string[]>(null)
81
+ dataSource: DataTableDataSource
82
+ headerHeight: number
83
+ count: number
84
+ loading$ = new BehaviorSubject<boolean>(false)
85
+ error = null
86
+
87
+ constructor(
88
+ private eltRef: ElementRef,
89
+ private cdr: ChangeDetectorRef,
90
+ private translateService: TranslateService
91
+ ) {}
92
+
93
+ ngOnInit() {
94
+ this.dataSource = new DataTableDataSource()
95
+ }
96
+
97
+ ngAfterViewInit() {
98
+ this.headerHeight =
99
+ this.eltRef.nativeElement.querySelector('thead').offsetHeight
100
+ this.setPagination()
101
+ this.cdr.detectChanges()
102
+ }
103
+
104
+ ngOnChanges() {
105
+ this.setPagination()
106
+ }
107
+
108
+ setSort(sort: MatSort) {
109
+ if (!this.dataset_) return
110
+ if (!sort.active) {
111
+ this.dataset_.orderBy()
112
+ } else {
113
+ this.dataset_.orderBy([sort.direction || 'asc', sort.active])
114
+ }
115
+ this.readData()
116
+ }
117
+
118
+ setPagination() {
119
+ if (!this.paginator) return
120
+ if (!this.dataset_) return
121
+ this.dataset_.limit(
122
+ this.paginator.pageIndex * this.paginator.pageSize,
123
+ this.paginator.pageSize
124
+ )
125
+ this.readData()
126
+ }
127
+
128
+ async readData() {
129
+ this.loading$.next(true)
130
+ // wait for properties to be read
131
+ const properties = await firstValueFrom(
132
+ this.properties$.pipe(filter((p) => !!p))
133
+ )
134
+ const propsWithoutGeom = properties.filter(
135
+ (p) => !p.toLowerCase().startsWith('geom')
136
+ )
137
+ this.dataset_.select(...propsWithoutGeom)
138
+ try {
139
+ await this.dataSource.showData(this.dataset_.read())
140
+ this.error = null
141
+ } catch (error) {
142
+ this.handleError(error as FetchError | Error)
143
+ }
144
+ this.loading$.next(false)
145
+ }
146
+
147
+ scrollToItem(itemId: TableItemId): void {
148
+ const row = this.eltRef.nativeElement.querySelector(
149
+ `#${this.getRowEltId(itemId)}`
150
+ )
151
+ this.eltRef.nativeElement.scrollTop = row.offsetTop - this.headerHeight
152
+ }
153
+
154
+ public getRowEltId(id: TableItemId): string {
155
+ return rowIdPrefix + id
156
+ }
157
+
158
+ handleError(error: FetchError | Error) {
159
+ this.dataSource.clearData()
160
+ if (error instanceof FetchError) {
161
+ this.error = this.translateService.instant(
162
+ `dataset.error.${error.type}`,
163
+ {
164
+ info: error.info,
165
+ }
166
+ )
167
+ console.warn(error.message)
168
+ } else {
169
+ this.error = this.translateService.instant(error.message)
170
+ console.warn(error.stack || error)
171
+ }
172
+ }
173
+ }
@@ -0,0 +1,33 @@
1
+ import { DataSource } from '@angular/cdk/collections'
2
+ import { BehaviorSubject, Observable } from 'rxjs'
3
+ import { DataItem } from '../../../../../../libs/util/data-fetcher/src'
4
+ import { map } from 'rxjs/operators'
5
+ import { TableItemModel } from './data-table.component'
6
+
7
+ export class DataTableDataSource implements DataSource<TableItemModel> {
8
+ private dataItems$ = new BehaviorSubject<DataItem[]>([])
9
+
10
+ connect(): Observable<TableItemModel[]> {
11
+ return this.dataItems$.asObservable().pipe(
12
+ map((items) =>
13
+ items.map((item) => ({
14
+ id: item.id,
15
+ ...item.properties,
16
+ }))
17
+ )
18
+ )
19
+ }
20
+
21
+ disconnect(): void {
22
+ this.dataItems$.complete()
23
+ }
24
+
25
+ async showData(itemsPromise: Promise<DataItem[]>) {
26
+ const items = await itemsPromise
27
+ this.dataItems$.next(items)
28
+ }
29
+
30
+ clearData() {
31
+ this.dataItems$.next([])
32
+ }
33
+ }
@@ -0,0 +1,84 @@
1
+ import { DataItem, PropertyInfo } from '../../../../../../libs/util/data-fetcher/src'
2
+
3
+ export const tableItemsFixture = {
4
+ items: [
5
+ {
6
+ type: 'Feature',
7
+ geometry: null,
8
+ properties: {
9
+ id: '0001',
10
+ firstName: 'John',
11
+ lastName: 'Lennon',
12
+ },
13
+ },
14
+ {
15
+ type: 'Feature',
16
+ geometry: null,
17
+ properties: {
18
+ id: '0002',
19
+ firstName: 'Ozzy',
20
+ lastName: 'Osbourne',
21
+ },
22
+ },
23
+ {
24
+ type: 'Feature',
25
+ geometry: null,
26
+ properties: {
27
+ id: '0003',
28
+ firstName: 'Claude',
29
+ lastName: 'François',
30
+ },
31
+ },
32
+ ] as DataItem[],
33
+ properties: [
34
+ { name: 'id', label: 'id', type: 'string' },
35
+ { name: 'firstName', label: 'Firstname', type: 'string' },
36
+ { name: 'lastName', label: 'Lastname', type: 'string' },
37
+ ] as PropertyInfo[],
38
+ }
39
+
40
+ export const someHabTableItemFixture = {
41
+ items: [
42
+ {
43
+ type: 'Feature',
44
+ geometry: null,
45
+ properties: {
46
+ id: '1',
47
+ name: 'France',
48
+ pop: 50500000,
49
+ },
50
+ },
51
+ {
52
+ type: 'Feature',
53
+ geometry: null,
54
+ properties: {
55
+ id: '2',
56
+ name: 'Italy',
57
+ pop: 155878789655,
58
+ },
59
+ },
60
+ {
61
+ type: 'Feature',
62
+ geometry: null,
63
+ properties: {
64
+ id: '3',
65
+ name: 'UK',
66
+ pop: 31522456,
67
+ },
68
+ },
69
+ {
70
+ type: 'Feature',
71
+ geometry: null,
72
+ properties: {
73
+ id: '4',
74
+ name: 'US',
75
+ pop: 3215448888,
76
+ },
77
+ },
78
+ ] as DataItem[],
79
+ properties: [
80
+ { name: 'id', label: 'ID', type: 'string' },
81
+ { name: 'name', label: 'Name', type: 'string' },
82
+ { name: 'pop', label: 'Population', type: 'number' },
83
+ ] as PropertyInfo[],
84
+ }
@@ -22,3 +22,4 @@ export * from './lib/thumbnail/thumbnail.component'
22
22
  export * from './lib/ui-elements.module'
23
23
  export * from './lib/user-feedback-item/user-feedback-item.component'
24
24
  export * from './lib/user-preview/user-preview.component'
25
+ export * from './lib/application-banner/application-banner.component'
@@ -0,0 +1,25 @@
1
+ <div
2
+ *ngIf="message && bannerOpen"
3
+ class="absolute left-0 right-0 text-wrap bg-white mt-4 max-h-24"
4
+ >
5
+ <div
6
+ class="flex flex-row py-2.5 px-5 gap-5 justify-start border max-h-20"
7
+ [ngClass]="classList"
8
+ >
9
+ <div [ngClass]="message.length > 200 ? 'pt-5' : 'pt-1'">
10
+ <ng-icon [name]="icon"></ng-icon>
11
+ </div>
12
+ <div class="flex flex-col justify-start gap-2.5">
13
+ <span *ngIf="title" class="font-bold">{{ title }}</span>
14
+ <span class="font-medium max-w-2xl" [innerHTML]="message"></span>
15
+ </div>
16
+ <button
17
+ *ngIf="closeEnabled"
18
+ class="self-start"
19
+ type="button"
20
+ (click)="closeMessage()"
21
+ >
22
+ <ng-icon name="matCloseOutline"> </ng-icon>
23
+ </button>
24
+ </div>
25
+ </div>
@@ -0,0 +1,70 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
2
+ import { CommonModule } from '@angular/common'
3
+ import {
4
+ NgIconComponent,
5
+ provideIcons,
6
+ provideNgIconsConfig,
7
+ } from '@ng-icons/core'
8
+ import {
9
+ matCloseOutline,
10
+ matInfoOutline,
11
+ matWarningAmberOutline,
12
+ } from '@ng-icons/material-icons/outline'
13
+ import { matWarning } from '@ng-icons/material-icons/baseline'
14
+
15
+ @Component({
16
+ selector: 'gn-ui-application-banner',
17
+ standalone: true,
18
+ imports: [CommonModule, NgIconComponent],
19
+ changeDetection: ChangeDetectionStrategy.OnPush,
20
+ templateUrl: './application-banner.component.html',
21
+ styleUrl: './application-banner.component.css',
22
+ providers: [
23
+ provideIcons({
24
+ matWarningAmberOutline,
25
+ matInfoOutline,
26
+ matCloseOutline,
27
+ matWarning,
28
+ }),
29
+ provideNgIconsConfig({ size: '1.5em' }),
30
+ ],
31
+ })
32
+ export class ApplicationBannerComponent {
33
+ @Input() message: string
34
+ @Input() title: string
35
+ @Input() closeEnabled = false
36
+ @Input() extraClass = ''
37
+ @Input() icon = ''
38
+ msgClass = ''
39
+ bannerOpen = true
40
+
41
+ @Input() set type(value: 'primary' | 'secondary' | 'light') {
42
+ switch (value) {
43
+ case 'primary':
44
+ this.msgClass = 'bg-primary-darkest border-primary text-white'
45
+ this.icon = 'matWarning'
46
+ break
47
+ case 'light':
48
+ this.msgClass =
49
+ 'bg-primary-opacity-10 border-primary-lightest text-black'
50
+ this.icon = 'matInfoOutline'
51
+ break
52
+ case 'secondary':
53
+ default:
54
+ this.msgClass = 'bg-primary-opacity-50 border-primary-darker text-black'
55
+ this.icon = 'matWarningAmberOutline'
56
+ break
57
+ }
58
+ }
59
+
60
+ get classList() {
61
+ if (this.message.length > 200) {
62
+ return `${this.msgClass} ${this.extraClass} overflow-y-scroll items-start`
63
+ }
64
+ return `${this.msgClass} ${this.extraClass} items-center`
65
+ }
66
+
67
+ closeMessage() {
68
+ this.bannerOpen = false
69
+ }
70
+ }
@@ -1,4 +1,4 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core'
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
2
2
  import { marked } from 'marked'
3
3
 
4
4
  @Component({
@@ -13,6 +13,6 @@ export class MarkdownParserComponent {
13
13
  @Input() whitoutStyles?: boolean
14
14
 
15
15
  get parsedMarkdown() {
16
- return marked.parse(this.textContent)
16
+ return marked.parse(this.textContent ?? '')
17
17
  }
18
18
  }
@@ -161,6 +161,8 @@ export class RecordApiFormComponent {
161
161
  maxFeatures: limit !== '-1' ? Number(limit) : undefined,
162
162
  limit: limit !== '-1' ? Number(limit) : -1,
163
163
  offset: offset !== '' ? Number(offset) : undefined,
164
+ outputCrs:
165
+ format === ('application/json' || 'geojson') ? 'EPSG:4326' : undefined,
164
166
  }
165
167
 
166
168
  if (this.endpoint instanceof WfsEndpoint) {
@@ -19,6 +19,7 @@ import { MarkdownParserComponent } from './markdown-parser/markdown-parser.compo
19
19
  import { ThumbnailComponent } from './thumbnail/thumbnail.component'
20
20
  import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
21
21
  import { UserPreviewComponent } from './user-preview/user-preview.component'
22
+ import { ApplicationBannerComponent } from './application-banner/application-banner.component'
22
23
 
23
24
  @NgModule({
24
25
  imports: [
@@ -40,6 +41,7 @@ import { UserPreviewComponent } from './user-preview/user-preview.component'
40
41
  MaxLinesComponent,
41
42
  TextInputComponent,
42
43
  ImageInputComponent,
44
+ ApplicationBannerComponent,
43
45
  ],
44
46
  providers: [
45
47
  provideNgIconsConfig({
@@ -53,6 +55,7 @@ import { UserPreviewComponent } from './user-preview/user-preview.component'
53
55
  UserPreviewComponent,
54
56
  MarkdownParserComponent,
55
57
  ImageInputComponent,
58
+ ApplicationBannerComponent,
56
59
  ],
57
60
  })
58
61
  export class UiElementsModule {}
@@ -3,7 +3,6 @@ export * from './lib/badge/badge.component'
3
3
  export * from './lib/button/button.component'
4
4
  export * from './lib/check-toggle/check-toggle.component'
5
5
  export * from './lib/checkbox/checkbox.component'
6
- export * from './lib/chips-input/chips-input.component'
7
6
  export * from './lib/copy-text-button/copy-text-button.component'
8
7
  export * from './lib/date-picker/date-picker.component'
9
8
  export * from './lib/date-range-dropdown/date-range-dropdown.component'
@@ -83,6 +83,7 @@ export class AutocompleteComponent
83
83
  @Input() minCharacterCount? = 3
84
84
  // this will show a submit button next to the input; if false, a search icon will appear on the left
85
85
  @Input() allowSubmit = false
86
+ @Input() forceTrackPosition = false
86
87
  @Output() itemSelected = new EventEmitter<AutocompleteItem>()
87
88
  @Output() inputSubmitted = new EventEmitter<string>()
88
89
  @Output() inputCleared = new EventEmitter<void>()
@@ -98,6 +99,8 @@ export class AutocompleteComponent
98
99
  error: string | null = null
99
100
  suggestions$: Observable<AutocompleteItem[]>
100
101
  subscription = new Subscription()
102
+ private lastPosition: DOMRect | null = null
103
+ private intervalIdPosition: number | undefined
101
104
 
102
105
  @Input() displayWithFn: (item: AutocompleteItem) => string = (item) =>
103
106
  item.toString()
@@ -147,6 +150,12 @@ export class AutocompleteComponent
147
150
  this.error = null
148
151
  }),
149
152
  switchMap((value) => this.action(value)),
153
+ tap((suggestions) => {
154
+ // forcing the panel to open if there are suggestions
155
+ if (suggestions.length > 0) {
156
+ this.triggerRef?.openPanel()
157
+ }
158
+ }),
150
159
  catchError((error: Error) => {
151
160
  this.error = error.message
152
161
  return of([])
@@ -191,10 +200,49 @@ export class AutocompleteComponent
191
200
  this.inputRef.nativeElement.focus()
192
201
  this.cdRef.detectChanges()
193
202
  }
203
+
204
+ this.startTrackingPosition()
205
+ }
206
+
207
+ /**
208
+ * !!! This function is used only for web component mode,
209
+ * the autocomplete dropdown may not update its position
210
+ * if the page or container is disabling wind scroll.
211
+ */
212
+ private trackPosition = () => {
213
+ const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen
214
+ const rect = this.inputRef.nativeElement.getBoundingClientRect()
215
+
216
+ if (
217
+ dropdownOpened &&
218
+ (!this.lastPosition ||
219
+ rect.top !== this.lastPosition.top ||
220
+ rect.left !== this.lastPosition.left)
221
+ ) {
222
+ this.triggerRef.updatePosition()
223
+ }
224
+
225
+ this.lastPosition = rect
226
+ requestAnimationFrame(this.trackPosition)
227
+ }
228
+
229
+ /**
230
+ * !!! This function is used only for web component mode,
231
+ * the autocomplete dropdown may not update its position
232
+ * if the page or container is disabling wind scroll.
233
+ */
234
+ startTrackingPosition() {
235
+ if (this.forceTrackPosition) {
236
+ requestAnimationFrame(this.trackPosition)
237
+ }
194
238
  }
195
239
 
196
240
  ngOnDestroy(): void {
197
241
  this.subscription?.unsubscribe()
242
+
243
+ if (this.intervalIdPosition) {
244
+ clearInterval(this.intervalIdPosition)
245
+ }
198
246
  }
199
247
 
200
248
  updateInputValue(value: AutocompleteItem) {
@@ -28,7 +28,6 @@ import { BadgeComponent } from './badge/badge.component'
28
28
  import { ButtonComponent } from './button/button.component'
29
29
  import { CheckToggleComponent } from './check-toggle/check-toggle.component'
30
30
  import { CheckboxComponent } from './checkbox/checkbox.component'
31
- import { ChipsInputComponent } from './chips-input/chips-input.component'
32
31
  import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component'
33
32
  import { DragAndDropFileInputComponent } from './drag-and-drop-file-input/drag-and-drop-file-input.component'
34
33
  import { DropdownMultiselectComponent } from './dropdown-multiselect/dropdown-multiselect.component'
@@ -40,7 +39,6 @@ import { ViewportIntersectorComponent } from './viewport-intersector/viewport-in
40
39
  @NgModule({
41
40
  declarations: [
42
41
  DragAndDropFileInputComponent,
43
- ChipsInputComponent,
44
42
  DropdownMultiselectComponent,
45
43
  ViewportIntersectorComponent,
46
44
  CheckboxComponent,
@@ -86,7 +84,6 @@ import { ViewportIntersectorComponent } from './viewport-intersector/viewport-in
86
84
  ButtonComponent,
87
85
  DragAndDropFileInputComponent,
88
86
  TextAreaComponent,
89
- ChipsInputComponent,
90
87
  DropdownMultiselectComponent,
91
88
  ViewportIntersectorComponent,
92
89
  CheckToggleComponent,
@@ -6,6 +6,7 @@
6
6
  >
7
7
  <ul class="flex flex-col gap-2 w-full">
8
8
  <gn-ui-button
9
+ *ngIf="!isDraftPage"
9
10
  type="light"
10
11
  extraClass="flex flex-row items-center gap-2 w-full justify-start"
11
12
  (buttonClick)="duplicate.emit()"
@@ -23,7 +24,10 @@
23
24
  (buttonClick)="displayDeleteMenu()"
24
25
  [disabled]="!canDelete"
25
26
  data-test="record-menu-delete-button"
26
- ><span translate>record.action.delete</span></gn-ui-button
27
+ ><span *ngIf="!isDraftPage" translate>record.action.delete</span>
28
+ <span *ngIf="isDraftPage" translate
29
+ >record.action.rollback</span
30
+ ></gn-ui-button
27
31
  >
28
32
  </ul>
29
33
  </div>
@@ -60,4 +64,36 @@
60
64
  </div>
61
65
  </div>
62
66
  </ng-container>
67
+ <ng-container *ngSwitchCase="'rollbackMenu'">
68
+ <div
69
+ data-test="rollbackMenuSection"
70
+ class="w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl"
71
+ >
72
+ <span class="text-lg font-bold text-center">{{
73
+ 'editor.record.undo.confirmation.title' | translate
74
+ }}</span>
75
+ <span class="text-center">{{
76
+ 'editor.record.undo.confirmation.message' | translate
77
+ }}</span>
78
+ <div class="flex flex-row gap-8 justify-center">
79
+ <gn-ui-button
80
+ (buttonClick)="rollback.emit()"
81
+ cdkFocusInitial
82
+ type="primary"
83
+ data-cy="confirm-button"
84
+ [style.--gn-ui-button-width]="'120px'"
85
+ >{{
86
+ 'editor.record.undo.confirmation.confirmText' | translate
87
+ }}</gn-ui-button
88
+ >
89
+ <gn-ui-button
90
+ [style.--gn-ui-button-width]="'120px'"
91
+ (buttonClick)="closeActionMenu.emit()"
92
+ >{{
93
+ 'editor.record.undo.confirmation.cancelText' | translate
94
+ }}</gn-ui-button
95
+ >
96
+ </div>
97
+ </div>
98
+ </ng-container>
63
99
  </ng-container>
@@ -13,7 +13,7 @@ import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elemen
13
13
  import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
15
 
16
- type ActionMenuPage = 'mainMenu' | 'deleteMenu'
16
+ type ActionMenuPage = 'mainMenu' | 'deleteMenu' | 'rollbackMenu'
17
17
 
18
18
  @Component({
19
19
  selector: 'gn-ui-action-menu',
@@ -32,9 +32,11 @@ type ActionMenuPage = 'mainMenu' | 'deleteMenu'
32
32
  export class ActionMenuComponent {
33
33
  @Input() canDuplicate: boolean
34
34
  @Input() canDelete: boolean
35
+ @Input() isDraftPage: boolean
35
36
  @Output() duplicate = new EventEmitter<void>()
36
37
  @Output() delete = new EventEmitter<void>()
37
38
  @Output() closeActionMenu = new EventEmitter<void>()
39
+ @Output() rollback = new EventEmitter<void>()
38
40
 
39
41
  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger
40
42
 
@@ -55,7 +57,11 @@ export class ActionMenuComponent {
55
57
  }
56
58
 
57
59
  displayDeleteMenu() {
58
- this.sectionDisplayed = 'deleteMenu'
60
+ if (this.isDraftPage) {
61
+ this.sectionDisplayed = 'rollbackMenu'
62
+ } else {
63
+ this.sectionDisplayed = 'deleteMenu'
64
+ }
59
65
  this.cdr.markForCheck()
60
66
  }
61
67
  }
@@ -162,9 +162,11 @@
162
162
  <gn-ui-action-menu
163
163
  [canDuplicate]="canDuplicate(item) && !isDuplicating"
164
164
  [canDelete]="canDelete(item)"
165
+ [isDraftPage]="isDraftPage"
165
166
  (duplicate)="handleDuplicate(item)"
166
167
  (delete)="handleDelete(item)"
167
168
  (closeActionMenu)="closeActionMenu()"
169
+ (rollback)="handleRollback(item)"
168
170
  >
169
171
  </gn-ui-action-menu>
170
172
  </ng-template>
@@ -74,6 +74,7 @@ export class ResultsTableComponent {
74
74
  @Output() recordClick = new EventEmitter<CatalogRecord>()
75
75
  @Output() duplicateRecord = new EventEmitter<CatalogRecord>()
76
76
  @Output() deleteRecord = new EventEmitter<CatalogRecord>()
77
+ @Output() rollbackDraft = new EventEmitter<CatalogRecord>()
77
78
  @Output() recordsSelectedChange = new EventEmitter<
78
79
  [CatalogRecord[], boolean]
79
80
  >()
@@ -186,6 +187,11 @@ export class ResultsTableComponent {
186
187
  this.closeActionMenu()
187
188
  }
188
189
 
190
+ handleRollback(item: unknown) {
191
+ this.rollbackDraft.emit(item as CatalogRecord)
192
+ this.closeActionMenu()
193
+ }
194
+
189
195
  setSortBy(col: string, order: 'asc' | 'desc') {
190
196
  this.sortByChange.emit([col, order])
191
197
  }
@@ -5,4 +5,3 @@ export * from './lib/loading-mask/loading-mask.component'
5
5
  export * from './lib/color-scale/color-scale.component'
6
6
  export * from './lib/popup-alert/popup-alert.component'
7
7
  export * from './lib/spinning-loader/spinning-loader.component'
8
- export * from './lib/step-bar/step-bar.component'