geonetwork-ui 2.5.0-dev.a16ba6619 → 2.5.0-dev.a89d8b5db

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 (260) 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 +20 -17
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +25 -9
  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/service/data.service.mjs +8 -8
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
  10. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  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/import-record/import-record.component.mjs +5 -5
  14. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -3
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -11
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +2 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +2 -2
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  21. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  22. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  23. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  24. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  25. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  26. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  29. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  30. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  31. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  32. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +15 -3
  33. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  34. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
  35. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +32 -31
  36. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  37. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +23 -3
  38. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  39. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +88 -7
  40. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +2 -2
  41. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  42. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +6 -4
  43. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +3 -3
  44. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  45. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  46. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  47. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +10 -3
  48. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  49. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  50. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  51. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  52. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  53. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  54. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
  59. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +13 -9
  60. package/esm2022/translations/de.json +5 -77
  61. package/esm2022/translations/en.json +5 -77
  62. package/esm2022/translations/es.json +3 -75
  63. package/esm2022/translations/fr.json +17 -89
  64. package/esm2022/translations/it.json +22 -93
  65. package/esm2022/translations/nl.json +3 -75
  66. package/esm2022/translations/pt.json +3 -75
  67. package/fesm2022/geonetwork-ui.mjs +545 -928
  68. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  69. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  70. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  71. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  72. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
  73. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  74. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  75. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  76. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  77. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  78. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  79. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  80. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  81. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  82. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  83. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  84. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
  85. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  86. package/libs/feature/editor/src/index.d.ts +1 -0
  87. package/libs/feature/editor/src/index.d.ts.map +1 -1
  88. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +1 -0
  89. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  90. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
  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/record-form/form-field/index.d.ts +1 -0
  94. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  95. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  96. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  97. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  98. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  99. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  100. package/libs/feature/record/src/lib/data-view/data-view.component.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 +5 -1
  114. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  115. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts +5 -6
  116. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
  117. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  118. package/libs/ui/inputs/src/index.d.ts +0 -1
  119. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  120. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +23 -1
  121. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  122. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  123. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  124. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -1
  125. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  126. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  127. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  128. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  129. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  130. package/libs/ui/widgets/src/index.d.ts +0 -1
  131. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  132. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts +1 -1
  133. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts.map +1 -1
  134. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  135. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  136. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  137. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  138. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  139. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  140. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  141. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  142. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  143. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  144. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  145. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  146. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  147. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  148. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  149. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  150. package/package.json +1 -1
  151. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  152. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  153. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +22 -16
  154. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +44 -13
  155. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  156. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  157. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
  158. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  159. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
  160. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
  161. package/src/libs/feature/editor/src/index.ts +1 -0
  162. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  163. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  164. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +1 -0
  165. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -0
  166. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
  167. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -10
  168. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  169. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  170. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  171. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  172. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  173. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  174. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  175. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  176. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  177. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  178. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  179. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  180. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  181. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  182. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  183. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +3 -0
  184. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +7 -0
  185. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
  186. package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +20 -14
  187. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +29 -32
  188. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  189. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +21 -9
  190. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +13 -0
  191. package/src/libs/ui/inputs/src/index.ts +0 -1
  192. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +36 -19
  193. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +85 -2
  194. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  195. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +3 -2
  196. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +1 -1
  197. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  198. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  199. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  200. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  201. package/src/libs/ui/widgets/src/index.ts +0 -1
  202. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +36 -11
  203. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.ts +9 -1
  204. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  205. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  206. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  207. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  208. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  209. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  210. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  211. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  212. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  213. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  214. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
  215. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  216. package/translations/de.json +5 -77
  217. package/translations/en.json +5 -77
  218. package/translations/es.json +3 -75
  219. package/translations/fr.json +17 -89
  220. package/translations/it.json +22 -93
  221. package/translations/nl.json +3 -75
  222. package/translations/pt.json +3 -75
  223. package/translations/sk.json +3 -75
  224. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  225. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  226. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  227. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  228. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  229. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  230. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  231. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  232. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  233. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  234. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  235. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  236. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  237. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  238. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  239. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  240. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  241. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  242. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  243. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  244. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  245. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  246. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  247. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  248. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  249. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  250. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  251. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  252. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  253. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  254. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  255. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  256. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  257. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  258. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  259. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  260. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -14,7 +14,11 @@
14
14
  [disabled]="true"
15
15
  ></gn-ui-text-input>
16
16
  <div class="flex flex-row gap-2 mt-2">
17
- <gn-ui-button type="gray" (buttonClick)="handleDelete()">
17
+ <gn-ui-button
18
+ type="gray"
19
+ (buttonClick)="handleDelete()"
20
+ data-cy="delete-image"
21
+ >
18
22
  <ng-icon class="me-1 text-primary" name="iconoirBin"></ng-icon>
19
23
  {{ 'input.image.delete' | translate }}
20
24
  </gn-ui-button>
@@ -38,20 +42,17 @@
38
42
  [ngClass]="{
39
43
  'border-primary-lighter bg-primary-white': dragFilesOver,
40
44
  'border-gray-300': !dragFilesOver,
41
- 'cursor-pointer hover:border-gray-500':
42
- !isUploadInProgress && !uploadError && !showUrlInput && !disabled,
45
+ 'cursor-pointer hover:border-gray-500': !getIsActionBlocked(),
43
46
  'cursor-not-allowed': disabled,
44
47
  }"
45
- [attr.tabindex]="
46
- isUploadInProgress || uploadError || showUrlInput || disabled ? null : 0
47
- "
48
+ [attr.tabindex]="getIsActionBlocked() ? null : 0"
48
49
  (keydown.enter)="fileInput.click()"
49
50
  (dragFilesOver)="handleDragFilesOver($event)"
50
51
  (dropFiles)="handleDropFiles($event)"
51
52
  >
52
53
  <div
53
54
  class="w-14 h-14 rounded-md bg-gray-50 grid"
54
- *ngIf="!isUploadInProgress && !uploadError"
55
+ *ngIf="!isUploadInProgress && !imageFileError"
55
56
  >
56
57
  <ng-icon
57
58
  *ngIf="!dragFilesOver"
@@ -66,7 +67,7 @@
66
67
  </div>
67
68
 
68
69
  <div
69
- *ngIf="isUploadInProgress && !uploadError"
70
+ *ngIf="isUploadInProgress && !imageFileError"
70
71
  class="w-14 h-14 grid items-center justify-center relative"
71
72
  >
72
73
  <div class="text-gray-100 absolute">
@@ -88,19 +89,23 @@
88
89
  <span class="text-sm text-main font-bold">{{ uploadProgress }}%</span>
89
90
  </div>
90
91
 
91
- <div class="w-14 h-14 rounded-md bg-gray-50 grid" *ngIf="uploadError">
92
+ <div class="w-14 h-14 rounded-md bg-gray-50 grid" *ngIf="imageFileError">
92
93
  <ng-icon
93
94
  name="iconoirMediaImageXmark"
94
95
  class="place-self-center text-rose-500"
96
+ data-cy="imgErrorIcon"
95
97
  ></ng-icon>
96
98
  </div>
97
99
 
98
100
  <div class="flex flex-col items-center gap-1">
99
- <p class="font-medium">{{ getPrimaryText() | translate }}</p>
101
+ <p class="font-medium" data-cy="imgInputMsgPrimary">
102
+ {{ getPrimaryText() | translate }}
103
+ </p>
100
104
  <p
101
105
  class="text-sm"
106
+ data-cy="imgInputMsgSecondary"
102
107
  [class]="
103
- isUploadInProgress || uploadError
108
+ isUploadInProgress
104
109
  ? 'font-bold text-blue-500 cursor-pointer'
105
110
  : 'font-medium text-gray-500'
106
111
  "
@@ -111,17 +116,17 @@
111
116
  </div>
112
117
  <input
113
118
  #fileInput
119
+ accept="image/*"
114
120
  type="file"
115
121
  class="hidden"
116
122
  (change)="handleFileInput($event)"
117
- [disabled]="
118
- showUrlInput || isUploadInProgress || uploadError || disabled
119
- "
123
+ [disabled]="isUploadInProgress || disabled"
120
124
  />
121
125
  </label>
122
126
 
123
127
  <div *ngIf="!showUrlInput" class="flex-none mt-2">
124
128
  <gn-ui-button
129
+ data-cy="imgUrlBtn"
125
130
  (buttonClick)="displayUrlInput()"
126
131
  type="gray"
127
132
  [disabled]="disabled"
@@ -135,6 +140,7 @@
135
140
  <gn-ui-url-input
136
141
  *ngIf="showUrlInput"
137
142
  class="mt-3.5"
143
+ data-cy="imgUrlInput"
138
144
  (uploadClick)="downloadUrl($event)"
139
145
  [disabled]="isUploadInProgress || disabled"
140
146
  >
@@ -80,12 +80,9 @@ export class ImageInputComponent {
80
80
 
81
81
  dragFilesOver = false
82
82
  showUrlInput = false
83
- downloadError = false
83
+ imageFileError = this.uploadError
84
84
  showAltTextInput = false
85
85
 
86
- lastUploadType?: 'file' | 'url'
87
- lastUploadContent?: string | File
88
-
89
86
  get isUploadInProgress() {
90
87
  return this.uploadProgress !== undefined
91
88
  }
@@ -95,8 +92,12 @@ export class ImageInputComponent {
95
92
  private cd: ChangeDetectorRef
96
93
  ) {}
97
94
 
95
+ getIsActionBlocked() {
96
+ return this.isUploadInProgress || this.disabled
97
+ }
98
+
98
99
  getPrimaryText() {
99
- if (this.uploadError) {
100
+ if (this.imageFileError) {
100
101
  return marker('input.image.uploadErrorLabel')
101
102
  }
102
103
  if (this.uploadProgress) {
@@ -106,8 +107,8 @@ export class ImageInputComponent {
106
107
  }
107
108
 
108
109
  getSecondaryText() {
109
- if (this.uploadError) {
110
- return marker('input.image.uploadErrorRetry')
110
+ if (this.imageFileError) {
111
+ return '\u00A0' // (only to keep same spacing, next step is to handle "Retry")
111
112
  }
112
113
  if (this.uploadProgress) {
113
114
  return marker('input.image.uploadProgressCancel')
@@ -123,19 +124,24 @@ export class ImageInputComponent {
123
124
  }
124
125
 
125
126
  handleDropFiles(files: File[]) {
126
- if (!this.showUrlInput) {
127
- const validFiles = this.filterTypeImage(files)
128
- if (validFiles.length > 0) {
129
- this.resizeAndEmit(validFiles[0])
130
- }
127
+ this.resetErrors()
128
+ const validFiles = this.filterTypeImage(files)
129
+ if (validFiles.length > 0) {
130
+ this.showUrlInput = false
131
+ this.resizeAndEmit(validFiles[0])
132
+ } else {
133
+ this.imageFileError = true
131
134
  }
132
135
  }
133
136
 
134
137
  handleFileInput(event: Event) {
138
+ this.resetErrors()
135
139
  const inputFiles = Array.from((event.target as HTMLInputElement).files)
136
140
  const validFiles = this.filterTypeImage(inputFiles)
137
141
  if (validFiles.length > 0) {
138
142
  this.resizeAndEmit(validFiles[0])
143
+ } else {
144
+ this.imageFileError = true
139
145
  }
140
146
  }
141
147
 
@@ -145,9 +151,8 @@ export class ImageInputComponent {
145
151
  }
146
152
 
147
153
  async downloadUrl(url: string) {
148
- this.downloadError = false
154
+ this.resetErrors()
149
155
  const name = url.split('/').pop()
150
-
151
156
  try {
152
157
  const response = await firstValueFrom(
153
158
  this.http.head(url, { observe: 'response' })
@@ -164,47 +169,39 @@ export class ImageInputComponent {
164
169
  this.fileChange.emit(file)
165
170
  },
166
171
  error: () => {
167
- this.downloadError = true
172
+ this.imageFileError = true
168
173
  this.cd.markForCheck()
169
174
  this.urlChange.emit(url)
170
175
  },
171
176
  })
172
177
  }
173
178
  } catch {
174
- this.downloadError = true
179
+ this.imageFileError = true
175
180
  this.cd.markForCheck()
176
181
  return
177
182
  }
178
183
  }
179
184
 
180
185
  handleSecondaryTextClick(event: Event) {
181
- if (this.uploadError) {
182
- this.handleRetry()
183
- } else if (this.uploadProgress) {
184
- this.handleCancel()
186
+ if (this.uploadProgress) {
187
+ this.handleCancelUpload()
185
188
  event.preventDefault()
186
189
  }
187
190
  }
188
191
 
189
- handleCancel() {
192
+ handleCancelUpload() {
190
193
  this.uploadCancel.emit()
191
194
  }
192
195
 
193
- handleRetry() {
194
- switch (this.lastUploadType) {
195
- case 'file':
196
- this.fileChange.emit(this.lastUploadContent as File)
197
- break
198
- case 'url':
199
- this.urlChange.emit(this.lastUploadContent as string)
200
- break
201
- }
202
- }
203
-
204
196
  handleDelete() {
205
197
  this.delete.emit()
206
198
  }
207
199
 
200
+ resetErrors() {
201
+ this.imageFileError = false
202
+ this.uploadError = false
203
+ }
204
+
208
205
  toggleAltTextInput() {
209
206
  this.showAltTextInput = !this.showAltTextInput
210
207
  }
@@ -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
  }
@@ -1,13 +1,25 @@
1
1
  <div *ngIf="metadataQualityDisplay" class="mb-6 metadata-quality">
2
- <gn-ui-popover [content]="popoverItems" theme="light-border">
3
- <div class="min-w-[200px]" [class]="smaller ? 'leading-[8px]' : ''">
4
- <gn-ui-progress-bar
5
- tabindex="0"
6
- [value]="qualityScore"
7
- type="primary"
8
- ></gn-ui-progress-bar>
9
- </div>
10
- </gn-ui-popover>
2
+ <div
3
+ class="flex items-center"
4
+ [class]="smaller ? 'leading-[8px] min-w-[120px]' : 'min-w-[200px]'"
5
+ >
6
+ <gn-ui-progress-bar
7
+ tabindex="0"
8
+ [value]="qualityScore"
9
+ [type]="'light'"
10
+ class="flex-grow"
11
+ ></gn-ui-progress-bar>
12
+ <gn-ui-popover
13
+ [content]="popoverItems"
14
+ theme="light-border"
15
+ [class]="smaller ? 'ml-2' : 'ml-2 mt-1'"
16
+ >
17
+ <ng-icon
18
+ name="matInfoOutline"
19
+ class="flex-shrink-0 text-gray-600"
20
+ ></ng-icon>
21
+ </gn-ui-popover>
22
+ </div>
11
23
  </div>
12
24
  <ng-template #popoverItems>
13
25
  <div class="p-2 py-4">
@@ -16,6 +16,9 @@ import {
16
16
  } from '../../../../../../libs/ui/widgets/src'
17
17
  import { CommonModule } from '@angular/common'
18
18
  import { TranslateModule } from '@ngx-translate/core'
19
+ import { NgIcon } from '@ng-icons/core'
20
+ import { matInfoOutline } from '@ng-icons/material-icons/outline'
21
+ import { provideIcons, provideNgIconsConfig } from '@ng-icons/core'
19
22
 
20
23
  @Component({
21
24
  selector: 'gn-ui-metadata-quality',
@@ -29,6 +32,16 @@ import { TranslateModule } from '@ngx-translate/core'
29
32
  ProgressBarComponent,
30
33
  MetadataQualityItemComponent,
31
34
  TranslateModule,
35
+ NgIcon,
36
+ ],
37
+ providers: [
38
+ provideIcons({
39
+ matInfoOutline,
40
+ }),
41
+ provideNgIconsConfig({
42
+ size: '1.2em',
43
+ strokeWidth: '1.5px',
44
+ }),
32
45
  ],
33
46
  })
34
47
  export class MetadataQualityComponent implements OnChanges {
@@ -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'
@@ -5,31 +5,48 @@
5
5
  >
6
6
  <ng-icon name="iconoirSearch" class="text-primary search"></ng-icon>
7
7
  </div>
8
- <input
9
- #searchInput
10
- type="text"
11
- class="gn-ui-text-input"
12
- [ngClass]="{
13
- 'px-[--icon-width]': !allowSubmit,
14
- }"
15
- [placeholder]="placeholder"
16
- [formControl]="control"
17
- [matAutocomplete]="auto"
18
- (keyup.enter)="handleEnter(searchInput.value)"
19
- />
8
+ <div class="flex flex-row">
9
+ <input
10
+ #searchInput
11
+ type="text"
12
+ class="gn-ui-text-input"
13
+ (input)="handleInput($event)"
14
+ [placeholder]="placeholder"
15
+ [formControl]="control"
16
+ [matAutocomplete]="auto"
17
+ (keyup.enter)="handleEnter(searchInput.value)"
18
+ [ngClass]="{
19
+ 'text-primary': searchActive && enterButton,
20
+ 'text-gray-900': !searchActive,
21
+ 'px-[--icon-width]': !allowSubmit,
22
+ }"
23
+ />
24
+ <gn-ui-button
25
+ type="gray"
26
+ *ngIf="searchInput.value && displayEnterBtn"
27
+ extraClass="w-32 h-8 !opacity-100"
28
+ [ngStyle]="{ left: enterBtnPosition + 'px' }"
29
+ class="absolute"
30
+ disabled="true"
31
+ >
32
+ <ng-icon
33
+ name="iconoirLongArrowDownLeft"
34
+ class="!w-4 text-gray-900 font-bold"
35
+ ></ng-icon>
36
+ <span translate class="text-bold text-gray-900 font-bold">
37
+ Enter to search
38
+ </span>
39
+ </gn-ui-button>
40
+ </div>
20
41
  <gn-ui-button
21
- type="light"
22
- extraClass="border-0 text-primary-lightest hover:text-primary focus:text-primary absolute inset-y-[--icon-padding] {{
23
- allowSubmit
24
- ? 'right-[calc(var(--icon-width)+var(--icon-padding))]'
25
- : 'right-[--icon-padding]'
26
- }}"
42
+ type="primary"
43
+ [extraClass]="getExtraClass()"
27
44
  data-test="clear-btn"
28
45
  *ngIf="searchInput.value"
29
46
  aria-label="Clear"
30
47
  (buttonClick)="clear()"
31
48
  >
32
- <ng-icon name="matClose"></ng-icon>
49
+ <ng-icon class="text-white" name="matClose"></ng-icon>
33
50
  </gn-ui-button>
34
51
  <gn-ui-button
35
52
  type="light"
@@ -41,7 +41,7 @@ import {
41
41
  provideIcons,
42
42
  provideNgIconsConfig,
43
43
  } from '@ng-icons/core'
44
- import { iconoirSearch } from '@ng-icons/iconoir'
44
+ import { iconoirLongArrowDownLeft, iconoirSearch } from '@ng-icons/iconoir'
45
45
  import { matClose } from '@ng-icons/material-icons/baseline'
46
46
 
47
47
  export type AutocompleteItem = unknown
@@ -65,9 +65,10 @@ export type AutocompleteItem = unknown
65
65
  provideIcons({
66
66
  iconoirSearch,
67
67
  matClose,
68
+ iconoirLongArrowDownLeft,
68
69
  }),
69
70
  provideNgIconsConfig({
70
- size: '1.5rem',
71
+ size: '1.75rem',
71
72
  }),
72
73
  ],
73
74
  })
@@ -75,6 +76,7 @@ export class AutocompleteComponent
75
76
  implements OnInit, AfterViewInit, OnDestroy, OnChanges
76
77
  {
77
78
  @Input() placeholder: string
79
+ @Input() enterButton = false
78
80
  @Input() action: (value: string) => Observable<AutocompleteItem[]>
79
81
  @Input() value?: AutocompleteItem
80
82
  @Input() clearOnSelection = false
@@ -83,9 +85,11 @@ export class AutocompleteComponent
83
85
  @Input() minCharacterCount? = 3
84
86
  // this will show a submit button next to the input; if false, a search icon will appear on the left
85
87
  @Input() allowSubmit = false
88
+ @Input() forceTrackPosition = false
86
89
  @Output() itemSelected = new EventEmitter<AutocompleteItem>()
87
90
  @Output() inputSubmitted = new EventEmitter<string>()
88
91
  @Output() inputCleared = new EventEmitter<void>()
92
+ @Output() isSearchActive = new EventEmitter<boolean>()
89
93
  @ViewChild(MatAutocompleteTrigger) triggerRef: MatAutocompleteTrigger
90
94
  @ViewChild(MatAutocomplete) autocomplete: MatAutocomplete
91
95
  @ViewChild('searchInput') inputRef: ElementRef<HTMLInputElement>
@@ -98,15 +102,38 @@ export class AutocompleteComponent
98
102
  error: string | null = null
99
103
  suggestions$: Observable<AutocompleteItem[]>
100
104
  subscription = new Subscription()
105
+ private lastPosition: DOMRect | null = null
106
+ private intervalIdPosition: number | undefined
107
+ enterBtnPosition = 0
108
+ searchActive = false
101
109
 
102
110
  @Input() displayWithFn: (item: AutocompleteItem) => string = (item) =>
103
111
  item.toString()
104
112
 
113
+ get displayEnterBtn() {
114
+ return this.enterButton && this.allowSubmit && !this.searchActive
115
+ }
116
+
105
117
  displayWithFnInternal = (item?: AutocompleteItem) => {
106
118
  if (item === null || item === undefined) return null
107
119
  return this.displayWithFn(item)
108
120
  }
109
121
 
122
+ getExtraClass(): string {
123
+ if (this.allowSubmit) {
124
+ if (this.enterButton) {
125
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+var(--icon-padding))] inset-y-[--icon-padding]'
126
+ } else {
127
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+0.25*var(--icon-width))] inset-y-[calc(0.25*var(--icon-width))]'
128
+ }
129
+ } else {
130
+ if (!this.enterButton) {
131
+ return 'border rounded-lg absolute w-8 h-8 right-2 inset-y-2'
132
+ }
133
+ }
134
+ return 'border rounded-lg absolute w-8 h-8'
135
+ }
136
+
110
137
  constructor(private cdRef: ChangeDetectorRef) {}
111
138
  ngOnChanges(changes: SimpleChanges): void {
112
139
  const { value } = changes
@@ -114,6 +141,13 @@ export class AutocompleteComponent
114
141
  const previousTextValue = this.displayWithFnInternal(value.previousValue)
115
142
  const currentTextValue = this.displayWithFnInternal(value.currentValue)
116
143
  if (previousTextValue !== currentTextValue) {
144
+ if (currentTextValue) {
145
+ this.searchActive = true
146
+ this.isSearchActive.emit(true)
147
+ } else {
148
+ this.searchActive = false
149
+ this.isSearchActive.emit(false)
150
+ }
117
151
  this.updateInputValue(value.currentValue)
118
152
  }
119
153
  }
@@ -197,10 +231,49 @@ export class AutocompleteComponent
197
231
  this.inputRef.nativeElement.focus()
198
232
  this.cdRef.detectChanges()
199
233
  }
234
+
235
+ this.startTrackingPosition()
236
+ }
237
+
238
+ /**
239
+ * !!! This function is used only for web component mode,
240
+ * the autocomplete dropdown may not update its position
241
+ * if the page or container is disabling wind scroll.
242
+ */
243
+ private trackPosition = () => {
244
+ const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen
245
+ const rect = this.inputRef.nativeElement.getBoundingClientRect()
246
+
247
+ if (
248
+ dropdownOpened &&
249
+ (!this.lastPosition ||
250
+ rect.top !== this.lastPosition.top ||
251
+ rect.left !== this.lastPosition.left)
252
+ ) {
253
+ this.triggerRef.updatePosition()
254
+ }
255
+
256
+ this.lastPosition = rect
257
+ requestAnimationFrame(this.trackPosition)
258
+ }
259
+
260
+ /**
261
+ * !!! This function is used only for web component mode,
262
+ * the autocomplete dropdown may not update its position
263
+ * if the page or container is disabling wind scroll.
264
+ */
265
+ startTrackingPosition() {
266
+ if (this.forceTrackPosition) {
267
+ requestAnimationFrame(this.trackPosition)
268
+ }
200
269
  }
201
270
 
202
271
  ngOnDestroy(): void {
203
272
  this.subscription?.unsubscribe()
273
+
274
+ if (this.intervalIdPosition) {
275
+ clearInterval(this.intervalIdPosition)
276
+ }
204
277
  }
205
278
 
206
279
  updateInputValue(value: AutocompleteItem) {
@@ -214,6 +287,8 @@ export class AutocompleteComponent
214
287
 
215
288
  clear(): void {
216
289
  this.inputRef.nativeElement.value = ''
290
+ this.searchActive = false
291
+ this.isSearchActive.emit(false)
217
292
  this.inputCleared.emit()
218
293
  this.selectionSubject
219
294
  .pipe(take(1))
@@ -223,6 +298,8 @@ export class AutocompleteComponent
223
298
 
224
299
  handleEnter(any: string) {
225
300
  if (!this.cancelEnter && this.allowSubmit) {
301
+ this.isSearchActive.emit(true)
302
+ this.searchActive = true
226
303
  this.inputSubmitted.emit(any)
227
304
  }
228
305
  }
@@ -252,4 +329,10 @@ export class AutocompleteComponent
252
329
  this.control.setValue('')
253
330
  }
254
331
  }
332
+
333
+ handleInput(event: InputEvent) {
334
+ this.searchActive = false
335
+ this.isSearchActive.emit(false)
336
+ this.enterBtnPosition = event.target['value'].length * 8 + 80
337
+ }
255
338
  }
@@ -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,
@@ -48,6 +48,7 @@ export class UrlInputComponent implements OnChanges {
48
48
  @Input() placeholder = 'https://'
49
49
  @Input() disabled: boolean
50
50
  @Input() showValidateButton = true
51
+ @Input() resetUrlOnChange: number
51
52
 
52
53
  /**
53
54
  * This will emit null if the field is emptied
@@ -60,8 +61,8 @@ export class UrlInputComponent implements OnChanges {
60
61
  constructor(private cd: ChangeDetectorRef) {}
61
62
 
62
63
  ngOnChanges(changes: SimpleChanges) {
63
- if (changes['value']) {
64
- this.inputValue = changes['value'].currentValue
64
+ if (changes['resetUrlOnChange']) {
65
+ this.inputValue = ''
65
66
  }
66
67
  }
67
68
 
@@ -64,7 +64,7 @@
64
64
  class="col-start-2 row-start-4 sm:row-start-3 absolute right-[4em] sm:right-[5em]"
65
65
  >
66
66
  <gn-ui-metadata-quality
67
- smaller="true"
67
+ [smaller]="true"
68
68
  [metadata]="record"
69
69
  [metadataQualityDisplay]="metadataQualityDisplay"
70
70
  ></gn-ui-metadata-quality>
@@ -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>