geonetwork-ui 2.4.2-dev.9237c52b5 → 2.4.2-dev.a73b34bf9

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 (73) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -1
  3. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  4. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +3 -3
  5. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +3 -4
  6. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +3 -3
  7. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +31 -40
  8. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +3 -3
  9. 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 -3
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +8 -9
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +5 -25
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -4
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +3 -3
  15. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +10 -2
  16. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  17. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +3 -1
  18. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
  19. package/esm2022/translations/de.json +13 -5
  20. package/esm2022/translations/en.json +22 -14
  21. package/esm2022/translations/es.json +13 -5
  22. package/esm2022/translations/fr.json +23 -15
  23. package/esm2022/translations/it.json +32 -26
  24. package/esm2022/translations/nl.json +13 -5
  25. package/esm2022/translations/pt.json +13 -5
  26. package/fesm2022/geonetwork-ui.mjs +198 -162
  27. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  28. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  29. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  30. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +0 -1
  31. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  32. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +7 -14
  33. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  34. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +2 -2
  35. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  36. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +1 -6
  37. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  38. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  39. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  40. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -0
  43. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -2
  44. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -0
  45. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -1
  46. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +1 -1
  47. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +4 -1
  48. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +0 -4
  49. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -2
  50. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +8 -8
  51. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +32 -45
  52. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +1 -1
  53. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +3 -1
  54. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
  55. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +0 -1
  56. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +6 -6
  57. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +24 -17
  58. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -27
  59. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +1 -1
  60. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -1
  61. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +1 -1
  62. package/src/libs/feature/editor/src/lib/fields.config.ts +9 -1
  63. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  64. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +3 -0
  65. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -1
  66. package/translations/de.json +13 -5
  67. package/translations/en.json +22 -14
  68. package/translations/es.json +13 -5
  69. package/translations/fr.json +23 -15
  70. package/translations/it.json +32 -26
  71. package/translations/nl.json +13 -5
  72. package/translations/pt.json +13 -5
  73. package/translations/sk.json +14 -6
@@ -26,7 +26,7 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
26
26
  import EmblaCarousel from 'embla-carousel';
27
27
  import * as i2$3 from '@ng-icons/core';
28
28
  import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
29
- import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment } from '@ng-icons/iconoir';
29
+ import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
30
30
  import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matMoreHoriz, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
31
31
  import * as i1$3 from '@angular/material/tooltip';
32
32
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -1114,12 +1114,11 @@ function extractDatasetOnlineResources(getMimeTypeFn) {
1114
1114
  ...descriptionTranslations,
1115
1115
  };
1116
1116
  if (isService) {
1117
- const hasIdentifier = protocol === 'wms' || protocol === 'wfs';
1118
1117
  return {
1119
1118
  type: 'service',
1120
1119
  url: url,
1121
1120
  accessServiceProtocol: protocol,
1122
- ...(name && hasIdentifier && { identifierInService: name }),
1121
+ ...(name && { identifierInService: name }), // should we keep the identifierInService? read-write duplicate with name
1123
1122
  ...(name && { name }),
1124
1123
  ...(description && { description }),
1125
1124
  translations,
@@ -1542,6 +1541,8 @@ function getRoleCode(role) {
1542
1541
  }
1543
1542
  function getServiceDistributionProtocol(distribution) {
1544
1543
  switch (distribution.accessServiceProtocol.toLowerCase()) {
1544
+ case 'ogcfeatures':
1545
+ return 'OGC API Features';
1545
1546
  case 'wfs':
1546
1547
  return 'OGC:WFS';
1547
1548
  case 'wms':
@@ -1718,6 +1719,7 @@ function appendOnlineResource(onlineResource, appendFormatFn, translations, defa
1718
1719
  let functionCode;
1719
1720
  let protocol;
1720
1721
  if (onlineResource.type === 'service') {
1722
+ // should we keep the identifierInService? read-write duplicate with name
1721
1723
  name = onlineResource.identifierInService; // this is for GeoNetwork to know the layer name
1722
1724
  functionCode = 'download';
1723
1725
  protocol = getServiceDistributionProtocol(onlineResource);
@@ -18624,7 +18626,8 @@ var de = {
18624
18626
  "dashboard.createRecord": "Neuer Eintrag",
18625
18627
  "dashboard.importRecord": "",
18626
18628
  "dashboard.importRecord.importExternal": "",
18627
- "dashboard.importRecord.importExternalLabel": "",
18629
+ "dashboard.importRecord.importExternal.subtitle": "",
18630
+ "dashboard.importRecord.importExternal.title": "",
18628
18631
  "dashboard.labels.catalog": "Katalog",
18629
18632
  "dashboard.labels.mySpace": "Mein Bereich",
18630
18633
  "dashboard.records.all": "Metadatenkatalog",
@@ -18793,8 +18796,7 @@ var de = {
18793
18796
  "downloads.format.unknown": "unbekannt",
18794
18797
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
18795
18798
  dropFile: dropFile$6,
18796
- "editor.form.keywords.placeholder": "",
18797
- "editor.form.placeKeywordWithoutExtent": "",
18799
+ "editor.new.record.title": "",
18798
18800
  "editor.record.delete.confirmation.cancelText": "Stornieren",
18799
18801
  "editor.record.delete.confirmation.confirmText": "Löschen",
18800
18802
  "editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
@@ -18827,7 +18829,9 @@ var de = {
18827
18829
  "editor.record.form.field.abstract": "Kurzbeschreibung",
18828
18830
  "editor.record.form.field.constraintsShortcuts": "",
18829
18831
  "editor.record.form.field.contacts.noContact": "",
18832
+ "editor.record.form.field.contacts.placeholder": "",
18830
18833
  "editor.record.form.field.contactsForResource.noContact": "",
18834
+ "editor.record.form.field.contactsForResource.placeholder": "",
18831
18835
  "editor.record.form.field.keywords": "Schlagwörter",
18832
18836
  "editor.record.form.field.legalConstraints": "Rechtliche Einschränkung",
18833
18837
  "editor.record.form.field.license": "Lizenz",
@@ -18836,12 +18840,12 @@ var de = {
18836
18840
  "editor.record.form.field.onlineResource.confirm": "",
18837
18841
  "editor.record.form.field.onlineResource.dialogTitle": "",
18838
18842
  "editor.record.form.field.onlineResource.edit.description": "",
18839
- "editor.record.form.field.onlineResource.edit.protocol": "",
18840
18843
  "editor.record.form.field.onlineResource.edit.identifier.error": "Schichten konnten nicht vom Protokoll abgerufen werden",
18841
18844
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Ebenenname",
18842
18845
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Prozessname",
18843
18846
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Wählen Sie eine Ebene",
18844
18847
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Link zum Dienst",
18848
+ "editor.record.form.field.onlineResource.edit.protocol": "",
18845
18849
  "editor.record.form.field.onlineResource.edit.title": "",
18846
18850
  "editor.record.form.field.onlineResource.fileSize": "",
18847
18851
  "editor.record.form.field.onlineResource.modify": "",
@@ -18861,6 +18865,9 @@ var de = {
18861
18865
  "editor.record.form.field.title.placeholder": "Geben Sie einen Titel ein",
18862
18866
  "editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
18863
18867
  "editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
18868
+ "editor.record.form.keywords.place.placeholder": "",
18869
+ "editor.record.form.keywords.place.withoutExtent": "",
18870
+ "editor.record.form.keywords.placeholder": "",
18864
18871
  "editor.record.form.license.cc-by": "",
18865
18872
  "editor.record.form.license.cc-by-sa": "",
18866
18873
  "editor.record.form.license.cc-zero": "",
@@ -18872,7 +18879,7 @@ var de = {
18872
18879
  "editor.record.form.license.unknown": "",
18873
18880
  "editor.record.form.page.accessAndContact": "",
18874
18881
  "editor.record.form.page.description": "",
18875
- "editor.record.form.page.ressources": "",
18882
+ "editor.record.form.page.resources": "",
18876
18883
  "editor.record.form.section.about.description": "",
18877
18884
  "editor.record.form.section.about.label": "",
18878
18885
  "editor.record.form.section.annexes.description": "",
@@ -19049,6 +19056,8 @@ var de = {
19049
19056
  "record.metadata.api.form.productTooltip": "",
19050
19057
  "record.metadata.api.form.reset": "Zurücksetzen",
19051
19058
  "record.metadata.api.form.resetTooltip": "",
19059
+ "record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
19060
+ "record.metadata.api.form.title.gpf": "",
19052
19061
  "record.metadata.api.form.type": "Ausgabeformat",
19053
19062
  "record.metadata.api.form.zoneTitle": "",
19054
19063
  "record.metadata.api.form.zoneTooltip": "",
@@ -19117,6 +19126,7 @@ var de = {
19117
19126
  "record.tab.chart": "Diagramm",
19118
19127
  "record.tab.data": "Tabelle",
19119
19128
  "record.tab.map": "Karte",
19129
+ "record.was.created.time": "erstellte diesen Datensatz {time}",
19120
19130
  records: records$6,
19121
19131
  "results.layout.selectOne": "Layout auswählen",
19122
19132
  "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
@@ -19226,7 +19236,8 @@ var en = {
19226
19236
  "dashboard.createRecord": "New dataset",
19227
19237
  "dashboard.importRecord": "Import",
19228
19238
  "dashboard.importRecord.importExternal": "Import an external file",
19229
- "dashboard.importRecord.importExternalLabel": "External file URL",
19239
+ "dashboard.importRecord.importExternal.subtitle": "(link to an XML file)",
19240
+ "dashboard.importRecord.importExternal.title": "External file URL",
19230
19241
  "dashboard.labels.catalog": "Catalog",
19231
19242
  "dashboard.labels.mySpace": "My space",
19232
19243
  "dashboard.records.all": "Datasets",
@@ -19395,8 +19406,7 @@ var en = {
19395
19406
  "downloads.format.unknown": "Unknown",
19396
19407
  "downloads.wfs.featuretype.not.found": "The layer was not found",
19397
19408
  dropFile: dropFile$5,
19398
- "editor.form.keywords.placeholder": "Select a keyword",
19399
- "editor.form.placeKeywordWithoutExtent": "This keyword is not associated with any geographical extent",
19409
+ "editor.new.record.title": "My dataset",
19400
19410
  "editor.record.delete.confirmation.cancelText": "Cancel",
19401
19411
  "editor.record.delete.confirmation.confirmText": "Delete",
19402
19412
  "editor.record.delete.confirmation.message": "Are you sure you want to delete this dataset?",
@@ -19421,15 +19431,17 @@ var en = {
19421
19431
  "editor.record.form.constraint.header.securityConstraints": "Applicable security conditions",
19422
19432
  "editor.record.form.constraint.legalConstraints": "Legal constraints",
19423
19433
  "editor.record.form.constraint.markdown.placeholder": "Your text here",
19424
- "editor.record.form.constraint.not.applicable": "No conditions apply.",
19425
- "editor.record.form.constraint.not.known": "The conditions are unknown.",
19434
+ "editor.record.form.constraint.not.applicable": "No conditions apply",
19435
+ "editor.record.form.constraint.not.known": "The conditions are unknown",
19426
19436
  "editor.record.form.constraint.otherConstraints": "Other constraints",
19427
19437
  "editor.record.form.constraint.securityConstraints": "Security constraints",
19428
19438
  "editor.record.form.draft.updateAlert": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
19429
19439
  "editor.record.form.field.abstract": "Abstract",
19430
19440
  "editor.record.form.field.constraintsShortcuts": "",
19431
19441
  "editor.record.form.field.contacts.noContact": "Please provide at least one point of contact.",
19442
+ "editor.record.form.field.contacts.placeholder": "Choose a contact",
19432
19443
  "editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
19444
+ "editor.record.form.field.contactsForResource.placeholder": "Choose a contact",
19433
19445
  "editor.record.form.field.keywords": "Keywords",
19434
19446
  "editor.record.form.field.legalConstraints": "Legal constraint",
19435
19447
  "editor.record.form.field.license": "License",
@@ -19438,12 +19450,12 @@ var en = {
19438
19450
  "editor.record.form.field.onlineResource.confirm": "Confirm",
19439
19451
  "editor.record.form.field.onlineResource.dialogTitle": "Modify the dataset preview",
19440
19452
  "editor.record.form.field.onlineResource.edit.description": "Description",
19441
- "editor.record.form.field.onlineResource.edit.protocol": "Protocol",
19442
19453
  "editor.record.form.field.onlineResource.edit.identifier.error": "Unable to retrieve layers from protocol",
19443
19454
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Layer name",
19444
19455
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Process name",
19445
19456
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Select a layer",
19446
19457
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Link to the service",
19458
+ "editor.record.form.field.onlineResource.edit.protocol": "Protocol",
19447
19459
  "editor.record.form.field.onlineResource.edit.title": "Title",
19448
19460
  "editor.record.form.field.onlineResource.fileSize": "{sizeMB}MB",
19449
19461
  "editor.record.form.field.onlineResource.modify": "Modify",
@@ -19451,7 +19463,7 @@ var en = {
19451
19463
  "editor.record.form.field.onlineResource.toggle.service": "Link to a service",
19452
19464
  "editor.record.form.field.onlineResources": "Distribution",
19453
19465
  "editor.record.form.field.otherConstraints": "Other constraint",
19454
- "editor.record.form.field.overviews": "Overviews",
19466
+ "editor.record.form.field.overviews": "Overview",
19455
19467
  "editor.record.form.field.recordUpdated": "Record updated",
19456
19468
  "editor.record.form.field.resourceCreated": "Dataset created",
19457
19469
  "editor.record.form.field.resourceIdentifier": "Identifier",
@@ -19463,6 +19475,9 @@ var en = {
19463
19475
  "editor.record.form.field.title.placeholder": "Enter a title",
19464
19476
  "editor.record.form.field.uniqueIdentifier": "Unique identifier",
19465
19477
  "editor.record.form.field.updateFrequency": "Update frequency",
19478
+ "editor.record.form.keywords.place.placeholder": "Search for place keywords",
19479
+ "editor.record.form.keywords.place.withoutExtent": "This keyword is not associated with any geographical extent",
19480
+ "editor.record.form.keywords.placeholder": "Select a keyword",
19466
19481
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
19467
19482
  "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
19468
19483
  "editor.record.form.license.cc-zero": "Creative Commons CC-0",
@@ -19474,26 +19489,26 @@ var en = {
19474
19489
  "editor.record.form.license.unknown": "Unknown or absent",
19475
19490
  "editor.record.form.page.accessAndContact": "Information for use",
19476
19491
  "editor.record.form.page.description": "Dataset description",
19477
- "editor.record.form.page.ressources": "Resources",
19478
- "editor.record.form.section.about.description": "This section describes the dataset.",
19492
+ "editor.record.form.page.resources": "Resources",
19493
+ "editor.record.form.section.about.description": "This section describes the dataset",
19479
19494
  "editor.record.form.section.about.label": "About the dataset",
19480
19495
  "editor.record.form.section.annexes.description": "Annexes are optional resources. They are attached to the dataset, and help understand the data (manual, etc.).",
19481
19496
  "editor.record.form.section.annexes.label": "Annexes",
19482
- "editor.record.form.section.associatedResources.description": "Point out where the data can be found.",
19497
+ "editor.record.form.section.associatedResources.description": "Point out where the data can be found",
19483
19498
  "editor.record.form.section.associatedResources.label": "Associated resources",
19484
- "editor.record.form.section.classification.description": "Appropriate keywords help users find the dataset.",
19499
+ "editor.record.form.section.classification.description": "Appropriate keywords help users find the dataset",
19485
19500
  "editor.record.form.section.classification.label": "Keywords",
19486
- "editor.record.form.section.dataManagers.description": "The data managers are responsible for the data.",
19501
+ "editor.record.form.section.dataManagers.description": "The data managers are responsible for the data",
19487
19502
  "editor.record.form.section.dataManagers.label": "Data managers",
19488
19503
  "editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
19489
- "editor.record.form.section.metadataPointOfContact.description": "This information concerns the metadata.",
19504
+ "editor.record.form.section.metadataPointOfContact.description": "This information concerns the metadata",
19490
19505
  "editor.record.form.section.metadataPointOfContact.label": "Metadata point of contact",
19491
19506
  "editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
19492
19507
  "editor.record.form.temporalExtents.addDate": "Time instant",
19493
19508
  "editor.record.form.temporalExtents.addRange": "Time period",
19494
19509
  "editor.record.form.temporalExtents.date": "Date",
19495
19510
  "editor.record.form.temporalExtents.range": "Date range",
19496
- "editor.record.form.updateFrequency.planned": "This dataset is updated regularly.",
19511
+ "editor.record.form.updateFrequency.planned": "This dataset is updated regularly",
19497
19512
  "editor.record.importFromExternalFile.failure.body": "Failure",
19498
19513
  "editor.record.importFromExternalFile.failure.title": "The dataset import failed: ",
19499
19514
  "editor.record.importFromExternalFile.success.body": "Import successful",
@@ -19651,6 +19666,8 @@ var en = {
19651
19666
  "record.metadata.api.form.productTooltip": "",
19652
19667
  "record.metadata.api.form.reset": "Reset",
19653
19668
  "record.metadata.api.form.resetTooltip": "Reset all filters",
19669
+ "record.metadata.api.form.title": "Generate a custom URL",
19670
+ "record.metadata.api.form.title.gpf": "Download data",
19654
19671
  "record.metadata.api.form.type": "Output format",
19655
19672
  "record.metadata.api.form.zoneTitle": "Zone",
19656
19673
  "record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
@@ -19719,6 +19736,7 @@ var en = {
19719
19736
  "record.tab.chart": "Chart",
19720
19737
  "record.tab.data": "Table",
19721
19738
  "record.tab.map": "Map",
19739
+ "record.was.created.time": "created this dataset {time}",
19722
19740
  records: records$5,
19723
19741
  "results.layout.selectOne": "Results layout",
19724
19742
  "results.records.hits.displayedOn": "{displayed, plural, =0{No dataset.} one{1 } other{{displayed} }} {hits, plural, other{displayed on {hits} total.}}",
@@ -19828,7 +19846,8 @@ var es = {
19828
19846
  "dashboard.createRecord": "",
19829
19847
  "dashboard.importRecord": "",
19830
19848
  "dashboard.importRecord.importExternal": "",
19831
- "dashboard.importRecord.importExternalLabel": "",
19849
+ "dashboard.importRecord.importExternal.subtitle": "",
19850
+ "dashboard.importRecord.importExternal.title": "",
19832
19851
  "dashboard.labels.catalog": "Catálogo",
19833
19852
  "dashboard.labels.mySpace": "Mi espacio",
19834
19853
  "dashboard.records.all": "Catálogo",
@@ -19997,8 +20016,7 @@ var es = {
19997
20016
  "downloads.format.unknown": "",
19998
20017
  "downloads.wfs.featuretype.not.found": "",
19999
20018
  dropFile: dropFile$4,
20000
- "editor.form.keywords.placeholder": "",
20001
- "editor.form.placeKeywordWithoutExtent": "",
20019
+ "editor.new.record.title": "",
20002
20020
  "editor.record.delete.confirmation.cancelText": "",
20003
20021
  "editor.record.delete.confirmation.confirmText": "",
20004
20022
  "editor.record.delete.confirmation.message": "",
@@ -20031,7 +20049,9 @@ var es = {
20031
20049
  "editor.record.form.field.abstract": "",
20032
20050
  "editor.record.form.field.constraintsShortcuts": "",
20033
20051
  "editor.record.form.field.contacts.noContact": "",
20052
+ "editor.record.form.field.contacts.placeholder": "",
20034
20053
  "editor.record.form.field.contactsForResource.noContact": "",
20054
+ "editor.record.form.field.contactsForResource.placeholder": "",
20035
20055
  "editor.record.form.field.keywords": "",
20036
20056
  "editor.record.form.field.legalConstraints": "",
20037
20057
  "editor.record.form.field.license": "",
@@ -20040,12 +20060,12 @@ var es = {
20040
20060
  "editor.record.form.field.onlineResource.confirm": "",
20041
20061
  "editor.record.form.field.onlineResource.dialogTitle": "",
20042
20062
  "editor.record.form.field.onlineResource.edit.description": "",
20043
- "editor.record.form.field.onlineResource.edit.protocol": "",
20044
20063
  "editor.record.form.field.onlineResource.edit.identifier.error": "No se pueden recuperar las capas del protocolo",
20045
20064
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nombre de la capa",
20046
20065
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nombre del proceso",
20047
20066
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Selecciona una capa",
20048
20067
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Enlace al servicio",
20068
+ "editor.record.form.field.onlineResource.edit.protocol": "",
20049
20069
  "editor.record.form.field.onlineResource.edit.title": "",
20050
20070
  "editor.record.form.field.onlineResource.fileSize": "",
20051
20071
  "editor.record.form.field.onlineResource.modify": "",
@@ -20065,6 +20085,9 @@ var es = {
20065
20085
  "editor.record.form.field.title.placeholder": "Introduzca un título",
20066
20086
  "editor.record.form.field.uniqueIdentifier": "",
20067
20087
  "editor.record.form.field.updateFrequency": "",
20088
+ "editor.record.form.keywords.place.placeholder": "",
20089
+ "editor.record.form.keywords.place.withoutExtent": "",
20090
+ "editor.record.form.keywords.placeholder": "",
20068
20091
  "editor.record.form.license.cc-by": "",
20069
20092
  "editor.record.form.license.cc-by-sa": "",
20070
20093
  "editor.record.form.license.cc-zero": "",
@@ -20076,7 +20099,7 @@ var es = {
20076
20099
  "editor.record.form.license.unknown": "",
20077
20100
  "editor.record.form.page.accessAndContact": "",
20078
20101
  "editor.record.form.page.description": "",
20079
- "editor.record.form.page.ressources": "",
20102
+ "editor.record.form.page.resources": "",
20080
20103
  "editor.record.form.section.about.description": "",
20081
20104
  "editor.record.form.section.about.label": "",
20082
20105
  "editor.record.form.section.annexes.description": "",
@@ -20253,6 +20276,8 @@ var es = {
20253
20276
  "record.metadata.api.form.productTooltip": "",
20254
20277
  "record.metadata.api.form.reset": "",
20255
20278
  "record.metadata.api.form.resetTooltip": "",
20279
+ "record.metadata.api.form.title": "",
20280
+ "record.metadata.api.form.title.gpf": "",
20256
20281
  "record.metadata.api.form.type": "",
20257
20282
  "record.metadata.api.form.zoneTitle": "",
20258
20283
  "record.metadata.api.form.zoneTooltip": "",
@@ -20321,6 +20346,7 @@ var es = {
20321
20346
  "record.tab.chart": "",
20322
20347
  "record.tab.data": "",
20323
20348
  "record.tab.map": "",
20349
+ "record.was.created.time": "",
20324
20350
  records: records$4,
20325
20351
  "results.layout.selectOne": "",
20326
20352
  "results.records.hits.displayedOn": "",
@@ -20430,7 +20456,8 @@ var fr = {
20430
20456
  "dashboard.createRecord": "Nouveau jeu de données",
20431
20457
  "dashboard.importRecord": "Importer",
20432
20458
  "dashboard.importRecord.importExternal": "Importer un jeu de données externe",
20433
- "dashboard.importRecord.importExternalLabel": "URL du jeu de données externe",
20459
+ "dashboard.importRecord.importExternal.subtitle": "(lien vers un fichier XML)",
20460
+ "dashboard.importRecord.importExternal.title": "URL du jeu de données externe",
20434
20461
  "dashboard.labels.catalog": "Catalogue",
20435
20462
  "dashboard.labels.mySpace": "Mon espace",
20436
20463
  "dashboard.records.all": "Jeux de données",
@@ -20599,8 +20626,7 @@ var fr = {
20599
20626
  "downloads.format.unknown": "inconnu",
20600
20627
  "downloads.wfs.featuretype.not.found": "La couche n'a pas été trouvée",
20601
20628
  dropFile: dropFile$3,
20602
- "editor.form.keywords.placeholder": "Sélectionnez un mot-clé",
20603
- "editor.form.placeKeywordWithoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
20629
+ "editor.new.record.title": "Mon jeu de données",
20604
20630
  "editor.record.delete.confirmation.cancelText": "Annuler",
20605
20631
  "editor.record.delete.confirmation.confirmText": "Supprimer",
20606
20632
  "editor.record.delete.confirmation.message": "Êtes-vous sûr de vouloir supprimer ce jeu de données ?",
@@ -20625,15 +20651,17 @@ var fr = {
20625
20651
  "editor.record.form.constraint.header.securityConstraints": "Conditions applicables de type sécurité",
20626
20652
  "editor.record.form.constraint.legalConstraints": "Contraintes légales",
20627
20653
  "editor.record.form.constraint.markdown.placeholder": "Votre texte ici",
20628
- "editor.record.form.constraint.not.applicable": "Aucune condition ne s’applique.",
20629
- "editor.record.form.constraint.not.known": "Les conditions sont inconnues.",
20654
+ "editor.record.form.constraint.not.applicable": "Aucune condition ne s’applique",
20655
+ "editor.record.form.constraint.not.known": "Les conditions sont inconnues",
20630
20656
  "editor.record.form.constraint.otherConstraints": "Autres contraintes",
20631
20657
  "editor.record.form.constraint.securityConstraints": "Contraintes de sécurité",
20632
20658
  "editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
20633
20659
  "editor.record.form.field.abstract": "Résumé",
20634
20660
  "editor.record.form.field.constraintsShortcuts": "",
20635
20661
  "editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
20662
+ "editor.record.form.field.contacts.placeholder": "Choisissez un contact",
20636
20663
  "editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
20664
+ "editor.record.form.field.contactsForResource.placeholder": "Choisissez un contact",
20637
20665
  "editor.record.form.field.keywords": "Mots-clés",
20638
20666
  "editor.record.form.field.legalConstraints": "Contrainte légale",
20639
20667
  "editor.record.form.field.license": "Licence",
@@ -20642,12 +20670,12 @@ var fr = {
20642
20670
  "editor.record.form.field.onlineResource.confirm": "Valider",
20643
20671
  "editor.record.form.field.onlineResource.dialogTitle": "Modifier l'aperçu du jeu de données",
20644
20672
  "editor.record.form.field.onlineResource.edit.description": "Description",
20645
- "editor.record.form.field.onlineResource.edit.protocol": "Protocole",
20646
20673
  "editor.record.form.field.onlineResource.edit.identifier.error": "Impossible de récupérer les couches depuis le protocole",
20647
20674
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nom de la couche",
20648
20675
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nom du processus",
20649
20676
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Sélectionner une couche",
20650
20677
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Lier le service",
20678
+ "editor.record.form.field.onlineResource.edit.protocol": "Protocole",
20651
20679
  "editor.record.form.field.onlineResource.edit.title": "Titre",
20652
20680
  "editor.record.form.field.onlineResource.fileSize": "{sizeMB} Mo",
20653
20681
  "editor.record.form.field.onlineResource.modify": "Modifier",
@@ -20655,7 +20683,7 @@ var fr = {
20655
20683
  "editor.record.form.field.onlineResource.toggle.service": "Lier un service",
20656
20684
  "editor.record.form.field.onlineResources": "Distribution",
20657
20685
  "editor.record.form.field.otherConstraints": "Contrainte générale",
20658
- "editor.record.form.field.overviews": "Aperçus",
20686
+ "editor.record.form.field.overviews": "Aperçu",
20659
20687
  "editor.record.form.field.recordUpdated": "Date de mise à jour",
20660
20688
  "editor.record.form.field.resourceCreated": "Date de création",
20661
20689
  "editor.record.form.field.resourceIdentifier": "Identifiant",
@@ -20667,6 +20695,9 @@ var fr = {
20667
20695
  "editor.record.form.field.title.placeholder": "Saisir un titre",
20668
20696
  "editor.record.form.field.uniqueIdentifier": "Identifiant unique",
20669
20697
  "editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
20698
+ "editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
20699
+ "editor.record.form.keywords.place.withoutExtent": "Ce mot-clé n'a pas de localisation géographique associée",
20700
+ "editor.record.form.keywords.placeholder": "Sélectionnez un mot-clé",
20670
20701
  "editor.record.form.license.cc-by": "",
20671
20702
  "editor.record.form.license.cc-by-sa": "",
20672
20703
  "editor.record.form.license.cc-zero": "",
@@ -20675,29 +20706,29 @@ var fr = {
20675
20706
  "editor.record.form.license.odbl": "",
20676
20707
  "editor.record.form.license.odc-by": "",
20677
20708
  "editor.record.form.license.pddl": "",
20678
- "editor.record.form.license.unknown": "",
20709
+ "editor.record.form.license.unknown": "Inconnue ou absente",
20679
20710
  "editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
20680
20711
  "editor.record.form.page.description": "Description du jeu de données",
20681
- "editor.record.form.page.ressources": "Ressources",
20682
- "editor.record.form.section.about.description": "Ces informations concernent le jeu de données.",
20712
+ "editor.record.form.page.resources": "Ressources",
20713
+ "editor.record.form.section.about.description": "Ces informations concernent le jeu de données",
20683
20714
  "editor.record.form.section.about.label": "À propos du jeu de données",
20684
20715
  "editor.record.form.section.annexes.description": "Les annexes sont des ressources optionnelles. Elles sont attachées au jeu de données, et aident à mieux comprendre la donnée (notice, etc.).",
20685
20716
  "editor.record.form.section.annexes.label": "Annexes",
20686
- "editor.record.form.section.associatedResources.description": "Indiquez où la donnée se trouve.",
20717
+ "editor.record.form.section.associatedResources.description": "Indiquez où la donnée se trouve",
20687
20718
  "editor.record.form.section.associatedResources.label": "Ressources associées",
20688
- "editor.record.form.section.classification.description": "Des mots-clés appropriés aident à trouver le jeu de données.",
20719
+ "editor.record.form.section.classification.description": "Des mots-clés appropriés aident à trouver le jeu de données",
20689
20720
  "editor.record.form.section.classification.label": "Mots-clés",
20690
- "editor.record.form.section.dataManagers.description": "Cette information concerne la donnée.",
20721
+ "editor.record.form.section.dataManagers.description": "Cette information concerne la donnée",
20691
20722
  "editor.record.form.section.dataManagers.label": "Responsables de la donnée",
20692
20723
  "editor.record.form.section.geographicalCoverage.label": "Couverture géographique",
20693
- "editor.record.form.section.metadataPointOfContact.description": "Cette information concerne la métadonnée.",
20724
+ "editor.record.form.section.metadataPointOfContact.description": "Cette information concerne la métadonnée",
20694
20725
  "editor.record.form.section.metadataPointOfContact.label": "Point de contact de la métadonnée",
20695
20726
  "editor.record.form.section.useAndAccessConditions.label": "Conditions d'accès et d'utilisation",
20696
20727
  "editor.record.form.temporalExtents.addDate": "Date déterminée",
20697
20728
  "editor.record.form.temporalExtents.addRange": "Période de temps",
20698
20729
  "editor.record.form.temporalExtents.date": "Date concernée",
20699
20730
  "editor.record.form.temporalExtents.range": "Période concernée",
20700
- "editor.record.form.updateFrequency.planned": "Ce jeu de données est mis à jour régulièrement.",
20731
+ "editor.record.form.updateFrequency.planned": "Ce jeu de données est mis à jour régulièrement",
20701
20732
  "editor.record.importFromExternalFile.failure.body": "Une erreur est survenue pendant l'import du jeu de données : ",
20702
20733
  "editor.record.importFromExternalFile.failure.title": "Erreur",
20703
20734
  "editor.record.importFromExternalFile.success.body": "L'import du jeu de données à été realisé avec succès.",
@@ -20855,6 +20886,8 @@ var fr = {
20855
20886
  "record.metadata.api.form.productTooltip": "",
20856
20887
  "record.metadata.api.form.reset": "Réinitialiser",
20857
20888
  "record.metadata.api.form.resetTooltip": "Réinitialiser tous les filtres",
20889
+ "record.metadata.api.form.title": "Générer une URL personnalisée",
20890
+ "record.metadata.api.form.title.gpf": "Téléchargement de données",
20858
20891
  "record.metadata.api.form.type": "Format en sortie",
20859
20892
  "record.metadata.api.form.zoneTitle": "Zone",
20860
20893
  "record.metadata.api.form.zoneTooltip": "Menu déroulant pour sélectionner une zone géographique",
@@ -20923,6 +20956,7 @@ var fr = {
20923
20956
  "record.tab.chart": "Graphique",
20924
20957
  "record.tab.data": "Tableau",
20925
20958
  "record.tab.map": "Carte",
20959
+ "record.was.created.time": "a créé ce jeu de données {time}",
20926
20960
  records: records$3,
20927
20961
  "results.layout.selectOne": "Affichage des résultats",
20928
20962
  "results.records.hits.displayedOn": "{displayed, plural, =0{Aucun jeu de données} one{1 affiché} other{{displayed} affichés}} {hits, plural, other{sur {hits} au total.}}",
@@ -21032,7 +21066,8 @@ var it = {
21032
21066
  "dashboard.createRecord": "Crea un record",
21033
21067
  "dashboard.importRecord": "Importare",
21034
21068
  "dashboard.importRecord.importExternal": "Importare un dataset esterno",
21035
- "dashboard.importRecord.importExternalLabel": "URL del dataset esterno",
21069
+ "dashboard.importRecord.importExternal.subtitle": "(collegamento a un file XML)",
21070
+ "dashboard.importRecord.importExternal.title": "URL del dataset esterno",
21036
21071
  "dashboard.labels.catalog": "Catalogo",
21037
21072
  "dashboard.labels.mySpace": "Il mio spazio",
21038
21073
  "dashboard.records.all": "Catalogo",
@@ -21201,8 +21236,7 @@ var it = {
21201
21236
  "downloads.format.unknown": "sconosciuto",
21202
21237
  "downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
21203
21238
  dropFile: dropFile$2,
21204
- "editor.form.keywords.placeholder": "Seleziona una parola chiave",
21205
- "editor.form.placeKeywordWithoutExtent": "Questa parola chiave non ha una posizione geografica associata",
21239
+ "editor.new.record.title": "Il mio dataset",
21206
21240
  "editor.record.delete.confirmation.cancelText": "Annulla",
21207
21241
  "editor.record.delete.confirmation.confirmText": "Elimina",
21208
21242
  "editor.record.delete.confirmation.message": "E sicuro di voler eliminare questo dataset?",
@@ -21212,6 +21246,9 @@ var it = {
21212
21246
  "editor.record.deleteError.title": "Errore durante l'eliminazione",
21213
21247
  "editor.record.deleteSuccess.body": "Il dataset è stato eliminato correttamente",
21214
21248
  "editor.record.deleteSuccess.title": "Eliminazione riuscita",
21249
+ "editor.record.error.back": "",
21250
+ "editor.record.error.explanation": "",
21251
+ "editor.record.error.message": "",
21215
21252
  "editor.record.form.bottomButtons.comeBackLater": "Ritorna più tardi",
21216
21253
  "editor.record.form.bottomButtons.next": "Avanti",
21217
21254
  "editor.record.form.bottomButtons.previous": "Precedente",
@@ -21224,32 +21261,30 @@ var it = {
21224
21261
  "editor.record.form.constraint.header.securityConstraints": "Condizioni di tipo di sicurezza applicabili",
21225
21262
  "editor.record.form.constraint.legalConstraints": "Vincoli legali",
21226
21263
  "editor.record.form.constraint.markdown.placeholder": "Il suo testo qui",
21227
- "editor.record.form.constraint.not.applicable": "Non si applicano condizioni.",
21228
- "editor.record.form.constraint.not.known": "Le condizioni sono sconosciute.",
21264
+ "editor.record.form.constraint.not.applicable": "Non si applicano condizioni",
21265
+ "editor.record.form.constraint.not.known": "Le condizioni sono sconosciute",
21229
21266
  "editor.record.form.constraint.otherConstraints": "Altri vincoli",
21230
21267
  "editor.record.form.constraint.securityConstraints": "Vincoli di sicurezza",
21231
21268
  "editor.record.form.draft.updateAlert": "Da quando è stata creata questa bozza, questo dataset è stato modificato il { date } da { user }. La pubblicazione della sua versione potrebbe rimuovere le loro modifiche. Per evitarlo, puoi annullare le sue modifiche o pubblicare la sua versione consapevolmente.",
21232
21269
  "editor.record.form.field.abstract": "Riassunto",
21233
- "editor.record.error.back": "",
21234
- "editor.record.error.explanation": "",
21235
- "editor.record.error.message": "",
21236
21270
  "editor.record.form.field.constraintsShortcuts": "",
21237
21271
  "editor.record.form.field.contacts.noContact": "Inserisci almeno un punto di contatto.",
21272
+ "editor.record.form.field.contacts.placeholder": "Scegli un contatto",
21238
21273
  "editor.record.form.field.contactsForResource.noContact": "Inserisci almeno un punto di contatto responsabile dei dati.",
21274
+ "editor.record.form.field.contactsForResource.placeholder": "Scegli un contatto",
21239
21275
  "editor.record.form.field.keywords": "Parole chiave",
21240
21276
  "editor.record.form.field.legalConstraints": "Vincolo legale",
21241
21277
  "editor.record.form.field.license": "Licenza",
21242
- "editor.record.form.field.onlineResource.edit.identifier.error": "Impossibile recuperare i livelli dal protocollo",
21243
- "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nome del livello",
21244
- "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nome del processo",
21245
- "editor.record.form.field.onlineResource.edit.identifier.select.label": "Seleziona un livello",
21246
- "editor.record.form.field.onlineResource.edit.identifier.submit": "Collegare il servizio",
21247
- "editor.record.form.field.title.placeholder": "Inserisci un titolo",
21248
21278
  "editor.record.form.field.onlineLinkResources": "Risorse allegate",
21249
21279
  "editor.record.form.field.onlineResource.cancel": "Annulla",
21250
21280
  "editor.record.form.field.onlineResource.confirm": "Convalida",
21251
21281
  "editor.record.form.field.onlineResource.dialogTitle": "Modifica anteprima dataset",
21252
21282
  "editor.record.form.field.onlineResource.edit.description": "Descrizione",
21283
+ "editor.record.form.field.onlineResource.edit.identifier.error": "Impossibile recuperare i livelli dal protocollo",
21284
+ "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nome del livello",
21285
+ "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nome del processo",
21286
+ "editor.record.form.field.onlineResource.edit.identifier.select.label": "Seleziona un livello",
21287
+ "editor.record.form.field.onlineResource.edit.identifier.submit": "Collegare il servizio",
21253
21288
  "editor.record.form.field.onlineResource.edit.protocol": "Protocollo",
21254
21289
  "editor.record.form.field.onlineResource.edit.title": "Titolo",
21255
21290
  "editor.record.form.field.onlineResource.fileSize": "{sizeMB} MB",
@@ -21258,7 +21293,7 @@ var it = {
21258
21293
  "editor.record.form.field.onlineResource.toggle.service": "Collega un servizio",
21259
21294
  "editor.record.form.field.onlineResources": "Distribuzione",
21260
21295
  "editor.record.form.field.otherConstraints": "Vincolo generale",
21261
- "editor.record.form.field.overviews": "Panoramiche",
21296
+ "editor.record.form.field.overviews": "Panoramica",
21262
21297
  "editor.record.form.field.recordUpdated": "Data di aggiornamento",
21263
21298
  "editor.record.form.field.resourceCreated": "Data di creazione",
21264
21299
  "editor.record.form.field.resourceIdentifier": "Identificatore",
@@ -21267,8 +21302,12 @@ var it = {
21267
21302
  "editor.record.form.field.spatialExtents": "Estensioni spaziali",
21268
21303
  "editor.record.form.field.temporalExtents": "Estensioni temporali",
21269
21304
  "editor.record.form.field.title": "Titolo",
21305
+ "editor.record.form.field.title.placeholder": "Inserisci un titolo",
21270
21306
  "editor.record.form.field.uniqueIdentifier": "Identificatore univoco",
21271
21307
  "editor.record.form.field.updateFrequency": "Frequenza di aggiornamento",
21308
+ "editor.record.form.keywords.place.placeholder": "Cerca una posizione per parola chiave",
21309
+ "editor.record.form.keywords.place.withoutExtent": "Questa parola chiave non ha una posizione geografica associata",
21310
+ "editor.record.form.keywords.placeholder": "Seleziona una parola chiave",
21272
21311
  "editor.record.form.license.cc-by": "",
21273
21312
  "editor.record.form.license.cc-by-sa": "",
21274
21313
  "editor.record.form.license.cc-zero": "",
@@ -21277,29 +21316,29 @@ var it = {
21277
21316
  "editor.record.form.license.odbl": "",
21278
21317
  "editor.record.form.license.odc-by": "",
21279
21318
  "editor.record.form.license.pddl": "",
21280
- "editor.record.form.license.unknown": "",
21319
+ "editor.record.form.license.unknown": "Sconosciuto o assente",
21281
21320
  "editor.record.form.page.accessAndContact": "Informazioni per l'uso",
21282
21321
  "editor.record.form.page.description": "Descrizione del dataset",
21283
- "editor.record.form.page.resources": "Risorse",
21284
- "editor.record.form.section.about.description": "Queste informazioni riguardano il dataset.",
21322
+ "editor.record.form.page.resources": "",
21323
+ "editor.record.form.section.about.description": "Queste informazioni riguardano il dataset",
21285
21324
  "editor.record.form.section.about.label": "Informazioni sul dataset",
21286
21325
  "editor.record.form.section.annexes.description": "Gli allegati sono risorse facoltative. Sono allegati al dataset e aiutano a comprendere meglio i dati (avviso, ecc.).",
21287
21326
  "editor.record.form.section.annexes.label": "Allegati",
21288
- "editor.record.form.section.associatedResources.description": "Indica dove si trovano i dati.",
21327
+ "editor.record.form.section.associatedResources.description": "Indica dove si trovano i dati",
21289
21328
  "editor.record.form.section.associatedResources.label": "Risorse associate",
21290
- "editor.record.form.section.classification.description": "Parole chiave appropriate aiutano a trovare il dataset.",
21329
+ "editor.record.form.section.classification.description": "Parole chiave appropriate aiutano a trovare il dataset",
21291
21330
  "editor.record.form.section.classification.label": "Parole chiave",
21292
- "editor.record.form.section.dataManagers.description": "Queste informazioni riguardano i dati.",
21331
+ "editor.record.form.section.dataManagers.description": "Queste informazioni riguardano i dati",
21293
21332
  "editor.record.form.section.dataManagers.label": "Gestori dei dati",
21294
21333
  "editor.record.form.section.geographicalCoverage.label": "Copertura geografica",
21295
- "editor.record.form.section.metadataPointOfContact.description": "Queste informazioni riguardano i metadati.",
21334
+ "editor.record.form.section.metadataPointOfContact.description": "Queste informazioni riguardano i metadati",
21296
21335
  "editor.record.form.section.metadataPointOfContact.label": "Punto di contatto dei metadati",
21297
21336
  "editor.record.form.section.useAndAccessConditions.label": "Condizioni di accesso e utilizzo",
21298
21337
  "editor.record.form.temporalExtents.addDate": "Data specificata",
21299
21338
  "editor.record.form.temporalExtents.addRange": "Periodo di tempo",
21300
21339
  "editor.record.form.temporalExtents.date": "Data rilevante",
21301
21340
  "editor.record.form.temporalExtents.range": "Periodo interessato",
21302
- "editor.record.form.updateFrequency.planned": "Questi dati dovrebbero essere aggiornati regolarmente.",
21341
+ "editor.record.form.updateFrequency.planned": "Questi dati dovrebbero essere aggiornati regolarmente",
21303
21342
  "editor.record.importFromExternalFile.failure.body": "Ha successo un'errore durante l'importazione del dataset: ",
21304
21343
  "editor.record.importFromExternalFile.failure.title": "Errore",
21305
21344
  "editor.record.importFromExternalFile.success.body": "L'importazione del dataset è riuscita.",
@@ -21307,6 +21346,7 @@ var it = {
21307
21346
  "editor.record.loadError.body": "Impossibile caricare il dataset:",
21308
21347
  "editor.record.loadError.closeMessage": "Capito",
21309
21348
  "editor.record.loadError.title": "Errore durante il caricamento",
21349
+ "editor.record.lock.reason": "",
21310
21350
  "editor.record.onlineResource.protocol.other": "Altro",
21311
21351
  "editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
21312
21352
  "editor.record.onlineResourceError.closeMessage": "Capito",
@@ -21338,9 +21378,6 @@ var it = {
21338
21378
  "editor.record.undo.tooltip.enabled": "Fare clic su questo pulsante per annullare le modifiche apportate a questo dataset",
21339
21379
  "editor.record.upToDate": "Questo dataset è aggiornato",
21340
21380
  "editor.sidebar.logout": "Esci",
21341
- "editor.record.form.page.ressources": "",
21342
- "editor.record.lock.reason": "",
21343
- "editor.record.saveStatus.asDraftOnly": "",
21344
21381
  "editor.sidebar.menu.editor": "",
21345
21382
  "editor.temporary.disabled": "Non ancora implementato",
21346
21383
  "externalviewer.dataset.unnamed": "Layer del datahub",
@@ -21459,6 +21496,8 @@ var it = {
21459
21496
  "record.metadata.api.form.productTooltip": "",
21460
21497
  "record.metadata.api.form.reset": "Reimposta",
21461
21498
  "record.metadata.api.form.resetTooltip": "Reimposta tutti i filtri",
21499
+ "record.metadata.api.form.title": "Genera un URL personalizzata",
21500
+ "record.metadata.api.form.title.gpf": "Scarica i dati",
21462
21501
  "record.metadata.api.form.type": "Formato di output",
21463
21502
  "record.metadata.api.form.zoneTitle": "Zona",
21464
21503
  "record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
@@ -21527,6 +21566,7 @@ var it = {
21527
21566
  "record.tab.chart": "Grafico",
21528
21567
  "record.tab.data": "Tabella",
21529
21568
  "record.tab.map": "Mappa",
21569
+ "record.was.created.time": "ha creato questi dati {time}",
21530
21570
  records: records$2,
21531
21571
  "results.layout.selectOne": "Mostra risultati",
21532
21572
  "results.records.hits.displayedOn": "{displayed, plural, =0{Nessun record} one{1 record visualizzato} other{{displayed} records visualizzati}} {hits, plural, other{su {hits} in totale.}}",
@@ -21636,7 +21676,8 @@ var nl = {
21636
21676
  "dashboard.createRecord": "",
21637
21677
  "dashboard.importRecord": "",
21638
21678
  "dashboard.importRecord.importExternal": "",
21639
- "dashboard.importRecord.importExternalLabel": "",
21679
+ "dashboard.importRecord.importExternal.subtitle": "",
21680
+ "dashboard.importRecord.importExternal.title": "",
21640
21681
  "dashboard.labels.catalog": "Catalogus",
21641
21682
  "dashboard.labels.mySpace": "Mijn ruimte",
21642
21683
  "dashboard.records.all": "Catalogus",
@@ -21805,8 +21846,7 @@ var nl = {
21805
21846
  "downloads.format.unknown": "",
21806
21847
  "downloads.wfs.featuretype.not.found": "",
21807
21848
  dropFile: dropFile$1,
21808
- "editor.form.keywords.placeholder": "",
21809
- "editor.form.placeKeywordWithoutExtent": "",
21849
+ "editor.new.record.title": "",
21810
21850
  "editor.record.delete.confirmation.cancelText": "",
21811
21851
  "editor.record.delete.confirmation.confirmText": "",
21812
21852
  "editor.record.delete.confirmation.message": "",
@@ -21839,7 +21879,9 @@ var nl = {
21839
21879
  "editor.record.form.field.abstract": "",
21840
21880
  "editor.record.form.field.constraintsShortcuts": "",
21841
21881
  "editor.record.form.field.contacts.noContact": "",
21882
+ "editor.record.form.field.contacts.placeholder": "",
21842
21883
  "editor.record.form.field.contactsForResource.noContact": "",
21884
+ "editor.record.form.field.contactsForResource.placeholder": "",
21843
21885
  "editor.record.form.field.keywords": "",
21844
21886
  "editor.record.form.field.legalConstraints": "",
21845
21887
  "editor.record.form.field.license": "",
@@ -21848,12 +21890,12 @@ var nl = {
21848
21890
  "editor.record.form.field.onlineResource.confirm": "",
21849
21891
  "editor.record.form.field.onlineResource.dialogTitle": "",
21850
21892
  "editor.record.form.field.onlineResource.edit.description": "",
21851
- "editor.record.form.field.onlineResource.edit.protocol": "",
21852
21893
  "editor.record.form.field.onlineResource.edit.identifier.error": "Kan lagen niet ophalen van het protocol",
21853
21894
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Laagnaam",
21854
21895
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Procesnaam",
21855
21896
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Selecteer een laag",
21856
21897
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Link naar de dienst",
21898
+ "editor.record.form.field.onlineResource.edit.protocol": "",
21857
21899
  "editor.record.form.field.onlineResource.edit.title": "",
21858
21900
  "editor.record.form.field.onlineResource.fileSize": "",
21859
21901
  "editor.record.form.field.onlineResource.modify": "",
@@ -21873,6 +21915,9 @@ var nl = {
21873
21915
  "editor.record.form.field.title.placeholder": "Voer een titel in",
21874
21916
  "editor.record.form.field.uniqueIdentifier": "",
21875
21917
  "editor.record.form.field.updateFrequency": "",
21918
+ "editor.record.form.keywords.place.placeholder": "",
21919
+ "editor.record.form.keywords.place.withoutExtent": "",
21920
+ "editor.record.form.keywords.placeholder": "",
21876
21921
  "editor.record.form.license.cc-by": "",
21877
21922
  "editor.record.form.license.cc-by-sa": "",
21878
21923
  "editor.record.form.license.cc-zero": "",
@@ -21884,7 +21929,7 @@ var nl = {
21884
21929
  "editor.record.form.license.unknown": "",
21885
21930
  "editor.record.form.page.accessAndContact": "",
21886
21931
  "editor.record.form.page.description": "",
21887
- "editor.record.form.page.ressources": "",
21932
+ "editor.record.form.page.resources": "",
21888
21933
  "editor.record.form.section.about.description": "",
21889
21934
  "editor.record.form.section.about.label": "",
21890
21935
  "editor.record.form.section.annexes.description": "",
@@ -22061,6 +22106,8 @@ var nl = {
22061
22106
  "record.metadata.api.form.productTooltip": "",
22062
22107
  "record.metadata.api.form.reset": "",
22063
22108
  "record.metadata.api.form.resetTooltip": "",
22109
+ "record.metadata.api.form.title": "",
22110
+ "record.metadata.api.form.title.gpf": "",
22064
22111
  "record.metadata.api.form.type": "",
22065
22112
  "record.metadata.api.form.zoneTitle": "",
22066
22113
  "record.metadata.api.form.zoneTooltip": "",
@@ -22129,6 +22176,7 @@ var nl = {
22129
22176
  "record.tab.chart": "",
22130
22177
  "record.tab.data": "",
22131
22178
  "record.tab.map": "",
22179
+ "record.was.created.time": "",
22132
22180
  records: records$1,
22133
22181
  "results.layout.selectOne": "",
22134
22182
  "results.records.hits.displayedOn": "",
@@ -22238,7 +22286,8 @@ var pt = {
22238
22286
  "dashboard.createRecord": "",
22239
22287
  "dashboard.importRecord": "",
22240
22288
  "dashboard.importRecord.importExternal": "",
22241
- "dashboard.importRecord.importExternalLabel": "",
22289
+ "dashboard.importRecord.importExternal.subtitle": "",
22290
+ "dashboard.importRecord.importExternal.title": "",
22242
22291
  "dashboard.labels.catalog": "Catálogo",
22243
22292
  "dashboard.labels.mySpace": "Meu espaço",
22244
22293
  "dashboard.records.all": "Catálogo",
@@ -22407,8 +22456,7 @@ var pt = {
22407
22456
  "downloads.format.unknown": "",
22408
22457
  "downloads.wfs.featuretype.not.found": "",
22409
22458
  dropFile: dropFile,
22410
- "editor.form.keywords.placeholder": "",
22411
- "editor.form.placeKeywordWithoutExtent": "",
22459
+ "editor.new.record.title": "",
22412
22460
  "editor.record.delete.confirmation.cancelText": "",
22413
22461
  "editor.record.delete.confirmation.confirmText": "",
22414
22462
  "editor.record.delete.confirmation.message": "",
@@ -22441,7 +22489,9 @@ var pt = {
22441
22489
  "editor.record.form.field.abstract": "",
22442
22490
  "editor.record.form.field.constraintsShortcuts": "",
22443
22491
  "editor.record.form.field.contacts.noContact": "",
22492
+ "editor.record.form.field.contacts.placeholder": "",
22444
22493
  "editor.record.form.field.contactsForResource.noContact": "",
22494
+ "editor.record.form.field.contactsForResource.placeholder": "",
22445
22495
  "editor.record.form.field.keywords": "",
22446
22496
  "editor.record.form.field.legalConstraints": "",
22447
22497
  "editor.record.form.field.license": "",
@@ -22450,12 +22500,12 @@ var pt = {
22450
22500
  "editor.record.form.field.onlineResource.confirm": "",
22451
22501
  "editor.record.form.field.onlineResource.dialogTitle": "",
22452
22502
  "editor.record.form.field.onlineResource.edit.description": "",
22453
- "editor.record.form.field.onlineResource.edit.protocol": "",
22454
22503
  "editor.record.form.field.onlineResource.edit.identifier.error": "Não é possível recuperar camadas do protocolo",
22455
22504
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Nome da camada",
22456
22505
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Nome do processo",
22457
22506
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Selecione uma camada",
22458
22507
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Link para o serviço",
22508
+ "editor.record.form.field.onlineResource.edit.protocol": "",
22459
22509
  "editor.record.form.field.onlineResource.edit.title": "",
22460
22510
  "editor.record.form.field.onlineResource.fileSize": "",
22461
22511
  "editor.record.form.field.onlineResource.modify": "",
@@ -22475,6 +22525,9 @@ var pt = {
22475
22525
  "editor.record.form.field.title.placeholder": "Insira um título",
22476
22526
  "editor.record.form.field.uniqueIdentifier": "",
22477
22527
  "editor.record.form.field.updateFrequency": "",
22528
+ "editor.record.form.keywords.place.placeholder": "",
22529
+ "editor.record.form.keywords.place.withoutExtent": "",
22530
+ "editor.record.form.keywords.placeholder": "",
22478
22531
  "editor.record.form.license.cc-by": "",
22479
22532
  "editor.record.form.license.cc-by-sa": "",
22480
22533
  "editor.record.form.license.cc-zero": "",
@@ -22486,7 +22539,7 @@ var pt = {
22486
22539
  "editor.record.form.license.unknown": "",
22487
22540
  "editor.record.form.page.accessAndContact": "",
22488
22541
  "editor.record.form.page.description": "",
22489
- "editor.record.form.page.ressources": "",
22542
+ "editor.record.form.page.resources": "",
22490
22543
  "editor.record.form.section.about.description": "",
22491
22544
  "editor.record.form.section.about.label": "",
22492
22545
  "editor.record.form.section.annexes.description": "",
@@ -22663,6 +22716,8 @@ var pt = {
22663
22716
  "record.metadata.api.form.productTooltip": "",
22664
22717
  "record.metadata.api.form.reset": "",
22665
22718
  "record.metadata.api.form.resetTooltip": "",
22719
+ "record.metadata.api.form.title": "",
22720
+ "record.metadata.api.form.title.gpf": "",
22666
22721
  "record.metadata.api.form.type": "",
22667
22722
  "record.metadata.api.form.zoneTitle": "",
22668
22723
  "record.metadata.api.form.zoneTooltip": "",
@@ -22731,6 +22786,7 @@ var pt = {
22731
22786
  "record.tab.chart": "",
22732
22787
  "record.tab.data": "",
22733
22788
  "record.tab.map": "",
22789
+ "record.was.created.time": "",
22734
22790
  records: records,
22735
22791
  "results.layout.selectOne": "",
22736
22792
  "results.records.hits.displayedOn": "",
@@ -28842,6 +28898,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
28842
28898
  type: Input
28843
28899
  }] } });
28844
28900
 
28901
+ marker('record.was.created.time');
28845
28902
  class RecordPreviewFeedComponent extends RecordPreviewComponent {
28846
28903
  constructor(elementRef, translate) {
28847
28904
  super(elementRef);
@@ -30499,7 +30556,7 @@ class ResultsTableComponent {
30499
30556
  this.recordsSelectedChange.emit([[record], selected]);
30500
30557
  }
30501
30558
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$8.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
30502
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\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 [grow]=\"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 font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\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 [width]=\"'9rem'\">\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 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 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-xs text-gray-900 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 text-xs\" *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 [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
30559
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\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 [grow]=\"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 font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\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 [width]=\"'9rem'\">\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 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 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-xs text-gray-900 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 text-xs\" *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 [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
30503
30560
  }
30504
30561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
30505
30562
  type: Component,
@@ -30513,7 +30570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30513
30570
  ActionMenuComponent,
30514
30571
  NgIconComponent,
30515
30572
  CdkOverlayOrigin,
30516
- ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\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 [grow]=\"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 font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\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 [width]=\"'9rem'\">\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 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 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-xs text-gray-900 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 text-xs\" *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 [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
30573
+ ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\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 [grow]=\"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 font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\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 [width]=\"'9rem'\">\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 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 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-xs text-gray-900 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 text-xs\" *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 [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
30517
30574
  }], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { records: [{
30518
30575
  type: Input
30519
30576
  }], selectedRecordsIdentifiers: [{
@@ -37411,7 +37468,7 @@ class DataViewShareComponent {
37411
37468
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
37412
37469
  }
37413
37470
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
37414
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewShareComponent, isStandalone: true, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, 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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37471
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewShareComponent, isStandalone: true, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, ngImport: i0, template: "<div class=\"px-5 my-1\">\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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37415
37472
  }
37416
37473
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewShareComponent, decorators: [{
37417
37474
  type: Component,
@@ -37421,7 +37478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37421
37478
  DataViewPermalinkComponent,
37422
37479
  DataViewWebComponentComponent,
37423
37480
  TranslateModule,
37424
- ], standalone: true, 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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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"] }]
37481
+ ], standalone: true, template: "<div class=\"px-5 my-1\">\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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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"] }]
37425
37482
  }], ctorParameters: () => [{ type: undefined, decorators: [{
37426
37483
  type: Optional
37427
37484
  }, {
@@ -37944,6 +38001,8 @@ const RECORD_KEYWORDS_FIELD = {
37944
38001
  model: 'keywords',
37945
38002
  formFieldConfig: {},
37946
38003
  };
38004
+ // keeping track of the label to not lose existing translation
38005
+ marker('editor.record.form.field.keywords');
37947
38006
  const RECORD_RESOURCE_CREATED_FIELD = {
37948
38007
  model: 'resourceCreated',
37949
38008
  formFieldConfig: {
@@ -38024,16 +38083,22 @@ const RECORD_SPATIAL_EXTENTS_FIELD = {
38024
38083
  model: 'spatialExtents',
38025
38084
  formFieldConfig: {},
38026
38085
  };
38086
+ // keeping track of the label to not lose existing translation
38087
+ marker('editor.record.form.field.spatialExtents');
38027
38088
  const RECORD_ONLINE_RESOURCES = {
38028
38089
  model: 'onlineResources',
38029
38090
  modelSpecifier: 'onlineResourceType:!link',
38030
38091
  formFieldConfig: {},
38031
38092
  };
38093
+ // keeping track of the label to not lose existing translation
38094
+ marker('editor.record.form.field.onlineResources');
38032
38095
  const RECORD_ONLINE_LINK_RESOURCES = {
38033
38096
  model: 'onlineResources',
38034
38097
  modelSpecifier: 'onlineResourceType:link',
38035
38098
  formFieldConfig: {},
38036
38099
  };
38100
+ // keeping track of the label to not lose existing translation
38101
+ marker('editor.record.form.field.onlineLinkResources');
38037
38102
  /************************************************************
38038
38103
  *************** SECTIONS *****************
38039
38104
  ************************************************************
@@ -38122,7 +38187,7 @@ const DEFAULT_CONFIGURATION = {
38122
38187
  ],
38123
38188
  },
38124
38189
  {
38125
- labelKey: marker('editor.record.form.page.ressources'),
38190
+ labelKey: marker('editor.record.form.page.resources'),
38126
38191
  sections: [ASSOCIATED_RESOURCES_SECTION, ANNEXES_SECTION],
38127
38192
  },
38128
38193
  {
@@ -38895,7 +38960,6 @@ class ImportRecordComponent {
38895
38960
  ];
38896
38961
  this.isRecordImportInProgress = false;
38897
38962
  this.sectionDisplayed = 'mainMenu';
38898
- this.externalImportBackLabel = this.translateService.instant('dashboard.importRecord.importExternalLabel');
38899
38963
  }
38900
38964
  displayMainMenu() {
38901
38965
  this.sectionDisplayed = 'mainMenu';
@@ -38942,7 +39006,7 @@ class ImportRecordComponent {
38942
39006
  provideNgIconsConfig({
38943
39007
  size: '1.5em',
38944
39008
  }),
38945
- ], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\"> {{ externalImportBackLabel }}</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39009
+ ], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38946
39010
  }
38947
39011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, decorators: [{
38948
39012
  type: Component,
@@ -38962,7 +39026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
38962
39026
  provideNgIconsConfig({
38963
39027
  size: '1.5em',
38964
39028
  }),
38965
- ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\"> {{ externalImportBackLabel }}</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
39029
+ ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
38966
39030
  }], ctorParameters: () => [{ type: i1$e.Router }, { type: i2.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
38967
39031
  type: Output
38968
39032
  }] } });
@@ -39008,7 +39072,7 @@ class GenericKeywordsComponent {
39008
39072
  provideIcons({
39009
39073
  matWarningAmberOutline,
39010
39074
  }),
39011
- ], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.form.placeKeywordWithoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"], 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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39075
+ ], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.record.form.keywords.place.withoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"], 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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39012
39076
  }
39013
39077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GenericKeywordsComponent, decorators: [{
39014
39078
  type: Component,
@@ -39024,7 +39088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39024
39088
  provideIcons({
39025
39089
  matWarningAmberOutline,
39026
39090
  }),
39027
- ], template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.form.placeKeywordWithoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"] }]
39091
+ ], template: "<div class=\"flex flex-col gap-4\">\n <gn-ui-autocomplete\n [placeholder]=\"placeholder\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"false\"\n [minCharacterCount]=\"1\"\n [allowSubmit]=\"false\"\n [clearOnSelection]=\"true\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of keywords\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(keyword)\"\n >{{ keyword.label }}\n\n <ng-icon\n *ngIf=\"isPlaceWithoutExtent(keyword)\"\n [title]=\"'editor.record.form.keywords.place.withoutExtent' | translate\"\n class=\"badge-warning\"\n name=\"matWarningAmberOutline\"\n ></ng-icon>\n </gn-ui-badge>\n </div>\n</div>\n", styles: [".badge-warning{font-size:1.4em}\n"] }]
39028
39092
  }], ctorParameters: () => [{ type: PlatformServiceInterface }], propDecorators: { keywords: [{
39029
39093
  type: Input
39030
39094
  }], keywordTypes: [{
@@ -39060,7 +39124,7 @@ class FormFieldKeywordsComponent {
39060
39124
  this.valueChange.emit(allKeywords);
39061
39125
  }
39062
39126
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
39063
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39064
39128
  }
39065
39129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
39066
39130
  type: Component,
@@ -39072,7 +39136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39072
39136
  AutocompleteComponent,
39073
39137
  GenericKeywordsComponent,
39074
39138
  TranslateModule,
39075
- ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n" }]
39139
+ ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n" }]
39076
39140
  }], ctorParameters: () => [{ type: EditorFacade }], propDecorators: { value: [{
39077
39141
  type: Input
39078
39142
  }], valueChange: [{
@@ -39492,7 +39556,7 @@ class FormFieldSpatialExtentComponent {
39492
39556
  this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
39493
39557
  }
39494
39558
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, deps: [{ token: PlatformServiceInterface }, { token: EditorFacade }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
39495
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'Search for place keywords'\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-form-field-map-container\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-form-field-map-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "component", type: FormFieldMapContainerComponent, selector: "gn-ui-form-field-map-container", inputs: ["spatialExtents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39559
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSpatialExtentComponent, isStandalone: true, selector: "gn-ui-form-field-spatial-extent", ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-form-field-map-container\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-form-field-map-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "component", type: FormFieldMapContainerComponent, selector: "gn-ui-form-field-map-container", inputs: ["spatialExtents"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39496
39560
  }
39497
39561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
39498
39562
  type: Component,
@@ -39500,7 +39564,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39500
39564
  CommonModule,
39501
39565
  GenericKeywordsComponent,
39502
39566
  FormFieldMapContainerComponent,
39503
- ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'Search for place keywords'\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-form-field-map-container\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-form-field-map-container>\n </div>\n</div>\n" }]
39567
+ TranslateModule,
39568
+ ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [placeholder]=\"'editor.record.form.keywords.place.placeholder' | translate\"\n [keywords]=\"shownKeywords$ | async\"\n [keywordTypes]=\"['place']\"\n (deletedKeyword)=\"handleKeywordDelete($event)\"\n (addedKeyword)=\"handleKeywordAdd($event)\"\n >\n </gn-ui-generic-keywords>\n <div class=\"w-full h-96 mt-2\">\n <gn-ui-form-field-map-container\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-form-field-map-container>\n </div>\n</div>\n" }]
39504
39569
  }], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i2.TranslateService }] });
39505
39570
 
39506
39571
  class ContactCardComponent {
@@ -39624,7 +39689,7 @@ class FormFieldContactsForResourceComponent {
39624
39689
  provideNgIconsConfig({
39625
39690
  size: '1.5rem',
39626
39691
  }),
39627
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39692
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39628
39693
  }
39629
39694
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
39630
39695
  type: Component,
@@ -39643,7 +39708,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39643
39708
  provideNgIconsConfig({
39644
39709
  size: '1.5rem',
39645
39710
  }),
39646
- ], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
39711
+ ], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
39647
39712
  }], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }], propDecorators: { value: [{
39648
39713
  type: Input
39649
39714
  }], valueChange: [{
@@ -39722,7 +39787,7 @@ class FormFieldContactsComponent {
39722
39787
  this.subscription.unsubscribe();
39723
39788
  }
39724
39789
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
39725
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39726
39791
  }
39727
39792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
39728
39793
  type: Component,
@@ -39735,7 +39800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39735
39800
  TranslateModule,
39736
39801
  ContactCardComponent,
39737
39802
  SortableListComponent,
39738
- ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n" }]
39803
+ ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n" }]
39739
39804
  }], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
39740
39805
  type: Input
39741
39806
  }], valueChange: [{
@@ -39751,8 +39816,8 @@ class OnlineResourceCardComponent {
39751
39816
  case 'link':
39752
39817
  case 'service':
39753
39818
  case 'download':
39754
- return (this.onlineResource.name ??
39755
- this.onlineResource.description ??
39819
+ return (this.onlineResource.description ||
39820
+ this.onlineResource.name ||
39756
39821
  '(unknown)');
39757
39822
  case 'endpoint':
39758
39823
  return this.onlineResource.description;
@@ -39927,7 +39992,7 @@ class FormFieldOnlineLinkResourcesComponent {
39927
39992
  });
39928
39993
  }
39929
39994
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: NotificationsService }, { token: i2.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$a.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
39930
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [disabled]=\"disabled$ | async\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39995
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39931
39996
  }
39932
39997
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, decorators: [{
39933
39998
  type: Component,
@@ -39940,7 +40005,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39940
40005
  TextAreaComponent,
39941
40006
  UrlInputComponent,
39942
40007
  TranslateModule,
39943
- ], template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [disabled]=\"disabled$ | async\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n" }]
40008
+ ], template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n" }]
39944
40009
  }], ctorParameters: () => [{ type: NotificationsService }, { type: i2.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$a.MatDialog }], propDecorators: { metadataUuid: [{
39945
40010
  type: Input
39946
40011
  }], value: [{
@@ -39952,15 +40017,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
39952
40017
  args: ['dialogTemplate']
39953
40018
  }] } });
39954
40019
 
40020
+ marker('editor.record.form.field.onlineResource.edit.identifier.placeholder');
40021
+ marker('editor.record.form.field.onlineResource.edit.identifier.placeholder.wps');
39955
40022
  class OnlineServiceResourceInputComponent {
40023
+ set service(service) {
40024
+ this._service = { ...service };
40025
+ }
39956
40026
  constructor(cdr) {
39957
40027
  this.cdr = cdr;
39958
40028
  this.disabled = false;
39959
40029
  this.modifyMode = false;
39960
- this.urlChange = new EventEmitter();
39961
- this.identifierSubmit = new EventEmitter();
40030
+ this.serviceChange = new EventEmitter();
39962
40031
  this.errorMessage = false;
39963
- this.url = '';
39964
40032
  this.layersSubject = new BehaviorSubject([]);
39965
40033
  this.layers$ = this.layersSubject.asObservable();
39966
40034
  this.protocolOptions = [
@@ -40004,27 +40072,15 @@ class OnlineServiceResourceInputComponent {
40004
40072
  };
40005
40073
  }
40006
40074
  get activeLayerSuggestion() {
40007
- return !['wps', 'GPFDL', 'esriRest', 'other'].includes(this.service.accessServiceProtocol);
40008
- }
40009
- ngOnChanges() {
40010
- this.selectedProtocol =
40011
- this.protocolOptions.find((option) => option.value === this.service.accessServiceProtocol)?.value ?? 'other';
40012
- }
40013
- ngOnInit() {
40014
- if (this.service.url) {
40015
- this.url = this.service.url.toString();
40016
- }
40075
+ return !['wps', 'GPFDL', 'esriRest', 'other'].includes(this._service.accessServiceProtocol);
40017
40076
  }
40018
40077
  handleUrlValueChange(url) {
40019
- this.url = url;
40020
- this.service.url = url ? new URL(url) : undefined;
40078
+ this._service.url = url ? new URL(url) : undefined;
40021
40079
  this.resetLayersSuggestion();
40022
- this.urlChange.emit(this.url);
40023
40080
  }
40024
40081
  async handleUploadClick(url) {
40025
- this.url = url;
40026
40082
  try {
40027
- const layers = await getLayers(url, this.service.accessServiceProtocol);
40083
+ const layers = await getLayers(url, this._service.accessServiceProtocol);
40028
40084
  if (layers.length === 0) {
40029
40085
  throw new Error('No layers found');
40030
40086
  }
@@ -40037,24 +40093,25 @@ class OnlineServiceResourceInputComponent {
40037
40093
  this.cdr.detectChanges();
40038
40094
  }
40039
40095
  resetAllFormFields() {
40040
- this.url = '';
40041
- this.service.url = null;
40096
+ this._service.url = null;
40042
40097
  this.resetLayersSuggestion();
40043
40098
  }
40044
40099
  resetLayersSuggestion() {
40045
40100
  this.errorMessage = false;
40046
40101
  this.layersSubject.next([]);
40047
- this.service.identifierInService = null;
40102
+ this._service.identifierInService = null;
40048
40103
  }
40049
- submitIdentifier(identifier) {
40050
- if (!identifier)
40051
- return;
40052
- this.identifierSubmit.emit({ url: this.url, identifier });
40053
- this.service.identifierInService = null;
40104
+ submit() {
40105
+ this.serviceChange.emit({
40106
+ ...this._service,
40107
+ name: this._service.identifierInService, // should we keep the identifierInService? read-write duplicate with name
40108
+ });
40109
+ this._service.accessServiceProtocol = 'ogcFeatures';
40110
+ this.resetAllFormFields();
40054
40111
  }
40055
40112
  getIdentifierPlaceholder() {
40056
40113
  const baseKey = 'editor.record.form.field.onlineResource.edit.identifier.placeholder';
40057
- return this.service.accessServiceProtocol === 'wps'
40114
+ return this._service.accessServiceProtocol === 'wps'
40058
40115
  ? `${baseKey}.wps`
40059
40116
  : baseKey;
40060
40117
  }
@@ -40070,15 +40127,16 @@ class OnlineServiceResourceInputComponent {
40070
40127
  * gn-ui-autocomplete
40071
40128
  */
40072
40129
  handleSelectValue(val) {
40073
- this.service.identifierInService = val.name;
40130
+ this._service.identifierInService = val.name; // should we keep the identifierInService? read-write duplicate with name
40131
+ this._service.description = val.title;
40074
40132
  }
40075
40133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnlineServiceResourceInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
40076
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OnlineServiceResourceInputComponent, isStandalone: true, selector: "gn-ui-online-service-resource-input", inputs: { service: "service", protocolHint: "protocolHint", disabled: "disabled", modifyMode: "modifyMode" }, outputs: { urlChange: "urlChange", identifierSubmit: "identifierSubmit" }, providers: [
40077
- provideIcons({ iconoirCloudUpload }),
40134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OnlineServiceResourceInputComponent, isStandalone: true, selector: "gn-ui-online-service-resource-input", inputs: { service: "service", protocolHint: "protocolHint", disabled: "disabled", modifyMode: "modifyMode" }, outputs: { serviceChange: "serviceChange" }, providers: [
40135
+ provideIcons({ iconoirRefresh }),
40078
40136
  provideNgIconsConfig({
40079
40137
  size: '1.5em',
40080
40138
  }),
40081
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"url\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirCloudUpload\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submitIdentifier(service.identifierInService)\"\n [disabled]=\"disabled || !service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40139
+ ], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40082
40140
  }
40083
40141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnlineServiceResourceInputComponent, decorators: [{
40084
40142
  type: Component,
@@ -40094,11 +40152,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40094
40152
  TranslateModule,
40095
40153
  UrlInputComponent,
40096
40154
  ], providers: [
40097
- provideIcons({ iconoirCloudUpload }),
40155
+ provideIcons({ iconoirRefresh }),
40098
40156
  provideNgIconsConfig({
40099
40157
  size: '1.5em',
40100
40158
  }),
40101
- ], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"url\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirCloudUpload\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submitIdentifier(service.identifierInService)\"\n [disabled]=\"disabled || !service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n" }]
40159
+ ], template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n" }]
40102
40160
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { service: [{
40103
40161
  type: Input
40104
40162
  }], protocolHint: [{
@@ -40107,9 +40165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40107
40165
  type: Input
40108
40166
  }], modifyMode: [{
40109
40167
  type: Input
40110
- }], urlChange: [{
40111
- type: Output
40112
- }], identifierSubmit: [{
40168
+ }], serviceChange: [{
40113
40169
  type: Output
40114
40170
  }] } });
40115
40171
 
@@ -40198,28 +40254,8 @@ class FormFieldOnlineResourcesComponent {
40198
40254
  this.handleError(e);
40199
40255
  }
40200
40256
  }
40201
- handleServiceUrlChange(url) {
40202
- this.valueChange.emit([
40203
- ...this.allResources,
40204
- {
40205
- ...this.newService,
40206
- url: new URL(url),
40207
- },
40208
- ]);
40209
- }
40210
- handleIdentifierSubmit(payload) {
40211
- this.valueChange.emit([
40212
- ...this.allResources,
40213
- {
40214
- ...this.newService,
40215
- url: new URL(payload.url),
40216
- },
40217
- ]);
40218
- }
40219
- handleServiceModify(oldService, newService) {
40220
- oldService.accessServiceProtocol = newService.accessServiceProtocol;
40221
- oldService.identifierInService = newService.identifierInService;
40222
- oldService.url = newService.url;
40257
+ handleServiceChange(service) {
40258
+ this.valueChange.emit([...this.allResources, service]);
40223
40259
  }
40224
40260
  handleResourcesChange(items) {
40225
40261
  const notLinks = items;
@@ -40269,7 +40305,7 @@ class FormFieldOnlineResourcesComponent {
40269
40305
  });
40270
40306
  }
40271
40307
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: NotificationsService }, { token: i2.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$a.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
40272
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n [disabled]=\"disabled$ | async\"\n (identifierSubmit)=\"handleIdentifierSubmit($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n ></gn-ui-online-service-resource-input>\n </ng-container>\n <ng-template #urlInput>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled", "modifyMode"], outputs: ["urlChange", "identifierSubmit"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled", "modifyMode"], outputs: ["serviceChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40273
40309
  }
40274
40310
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, decorators: [{
40275
40311
  type: Component,
@@ -40284,7 +40320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40284
40320
  TextInputComponent,
40285
40321
  TextAreaComponent,
40286
40322
  TranslateModule,
40287
- ], template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n [disabled]=\"disabled$ | async\"\n (identifierSubmit)=\"handleIdentifierSubmit($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n ></gn-ui-online-service-resource-input>\n </ng-container>\n <ng-template #urlInput>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n" }]
40323
+ ], template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n" }]
40288
40324
  }], ctorParameters: () => [{ type: NotificationsService }, { type: i2.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$a.MatDialog }], propDecorators: { metadataUuid: [{
40289
40325
  type: Input
40290
40326
  }], value: [{
@@ -40505,11 +40541,11 @@ class FormFieldUpdateFrequencyComponent {
40505
40541
  })));
40506
40542
  }
40507
40543
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldUpdateFrequencyComponent, deps: [{ token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
40508
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldUpdateFrequencyComponent, isStandalone: true, selector: "gn-ui-form-field-update-frequency", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n ></gn-ui-check-toggle>\n <gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n [extraBtnClass]=\"'input-as-button gn-ui-text-input'\"\n >\n </gn-ui-dropdown-selector>\n</div>\n", styles: ["gn-ui-dropdown-selector{max-width:calc(50% - 16px)}\n"], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40544
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldUpdateFrequencyComponent, isStandalone: true, selector: "gn-ui-form-field-update-frequency", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n ></gn-ui-check-toggle>\n <gn-ui-dropdown-selector\n [title]=\"'editor.record.form.field.updateFrequency' | translate\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n [extraBtnClass]=\"'input-as-button gn-ui-text-input'\"\n >\n </gn-ui-dropdown-selector>\n</div>\n", styles: ["gn-ui-dropdown-selector{max-width:calc(50% - 16px)}\n"], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40509
40545
  }
40510
40546
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldUpdateFrequencyComponent, decorators: [{
40511
40547
  type: Component,
40512
- args: [{ selector: 'gn-ui-form-field-update-frequency', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CheckToggleComponent, DropdownSelectorComponent, TranslateModule], template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n ></gn-ui-check-toggle>\n <gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n [extraBtnClass]=\"'input-as-button gn-ui-text-input'\"\n >\n </gn-ui-dropdown-selector>\n</div>\n", styles: ["gn-ui-dropdown-selector{max-width:calc(50% - 16px)}\n"] }]
40548
+ args: [{ selector: 'gn-ui-form-field-update-frequency', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CheckToggleComponent, DropdownSelectorComponent, TranslateModule], template: "<div class=\"flex flex-col gap-2\">\n <gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n ></gn-ui-check-toggle>\n <gn-ui-dropdown-selector\n [title]=\"'editor.record.form.field.updateFrequency' | translate\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n [extraBtnClass]=\"'input-as-button gn-ui-text-input'\"\n >\n </gn-ui-dropdown-selector>\n</div>\n", styles: ["gn-ui-dropdown-selector{max-width:calc(50% - 16px)}\n"] }]
40513
40549
  }], ctorParameters: () => [{ type: i2.TranslateService }], propDecorators: { value: [{
40514
40550
  type: Input
40515
40551
  }], valueChange: [{