geonetwork-ui 2.5.0-dev.6e4d22b12 → 2.5.0-dev.70f4ef380

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 (42) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +2 -2
  2. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -8
  3. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  4. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +4 -4
  5. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
  6. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  7. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -12
  8. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  9. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +12 -3
  10. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +7 -8
  11. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +53 -7
  12. package/esm2022/translations/de.json +1 -1
  13. package/esm2022/translations/en.json +1 -1
  14. package/esm2022/translations/fr.json +1 -1
  15. package/esm2022/translations/it.json +1 -1
  16. package/fesm2022/geonetwork-ui.mjs +91 -45
  17. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  18. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  19. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
  20. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  21. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +4 -1
  22. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  23. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
  24. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +8 -1
  25. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +1 -1
  28. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +3 -11
  29. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +90 -0
  30. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  31. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
  32. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -11
  33. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +2 -0
  34. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +6 -0
  35. package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +8 -8
  36. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +4 -6
  37. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +36 -19
  38. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +43 -2
  39. package/translations/de.json +1 -1
  40. package/translations/en.json +1 -1
  41. package/translations/fr.json +1 -1
  42. package/translations/it.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gn4-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/api/repository/src/lib/gn4/gn4-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gn4-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/api/repository/src/lib/gn4/gn4-repository.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export declare class FormFieldContactsForResourceComponent implements OnChanges,
10
10
  value: Individual[];
11
11
  valueChange: EventEmitter<Individual[]>;
12
12
  contactsForRessourceByRole: Map<Role, Individual[]>;
13
+ roleValues: string[];
13
14
  rolesToPick: Role[];
14
15
  roleSectionsToDisplay: Role[];
15
16
  allOrganizations: Map<string, Organization>;
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-contacts-for-resource.component.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAEZ,SAAS,EACT,MAAM,EAEP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,IAAI,EAEL,MAAM,oEAAoE,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,kEAAkE,CAAA;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,uFAAuF,CAAA;AACrI,OAAO,EAAE,wBAAwB,EAAE,MAAM,kFAAkF,CAAA;;AAyB3H,qBAwBa,qCACX,YAAW,SAAS,EAAE,MAAM;IAqB1B,OAAO,CAAC,wBAAwB;IAChC,OAAO,CAAC,6BAA6B;IApB9B,KAAK,EAAE,UAAU,EAAE,CAAA;IAClB,WAAW,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAqB;IAEtE,0BAA0B,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAY;IAE/D,WAAW,EAAE,IAAI,EAAE,CAOlB;IAED,qBAAqB,EAAE,IAAI,EAAE,CAAK;IAElC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAY;gBAG7C,wBAAwB,EAAE,wBAAwB,EAClD,6BAA6B,EAAE,6BAA6B;IAGtE,WAAW;IAML,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,gBAAgB,CAAC,SAAS,EAAE,MAAM;IAKlC,iBAAiB;IAMjB,0BAA0B;IAsB1B,2BAA2B,CAAC,mBAAmB,EAAE,UAAU,EAAE;IAY7D,aAAa,CAAC,KAAK,EAAE,MAAM;IAK3B,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI;IAYlD,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAGtC;IAEJ;;OAEG;IACH,kBAAkB,UAAW,MAAM,4CAUlC;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;yCAvI9B,qCAAqC;2CAArC,qCAAqC;CA0JjD"}
1
+ {"version":3,"file":"form-field-contacts-for-resource.component.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAEZ,SAAS,EACT,MAAM,EAEP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,IAAI,EAEL,MAAM,oEAAoE,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,kEAAkE,CAAA;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,uFAAuF,CAAA;AACrI,OAAO,EAAE,wBAAwB,EAAE,MAAM,kFAAkF,CAAA;;AA0B3H,qBAwBa,qCACX,YAAW,SAAS,EAAE,MAAM;IAiB1B,OAAO,CAAC,wBAAwB;IAChC,OAAO,CAAC,6BAA6B;IAhB9B,KAAK,EAAE,UAAU,EAAE,CAAA;IAClB,WAAW,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAqB;IAEtE,0BAA0B,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAY;IAC/D,UAAU,WAAa;IAEvB,WAAW,EAAE,IAAI,EAAE,CAElB;IAED,qBAAqB,EAAE,IAAI,EAAE,CAAK;IAElC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAY;gBAG7C,wBAAwB,EAAE,wBAAwB,EAClD,6BAA6B,EAAE,6BAA6B;IAGtE,WAAW;IAML,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,gBAAgB,CAAC,SAAS,EAAE,MAAM;IAKlC,iBAAiB;IAMjB,0BAA0B;IAsB1B,2BAA2B,CAAC,mBAAmB,EAAE,UAAU,EAAE;IAY7D,aAAa,CAAC,KAAK,EAAE,MAAM;IAK3B,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI;IAYlD,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAKlC;IAER;;OAEG;IACH,kBAAkB,UAAW,MAAM,4CAUlC;IAED;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;yCArI9B,qCAAqC;2CAArC,qCAAqC;CAwJjD"}
@@ -13,8 +13,10 @@ export declare class FuzzySearchComponent implements OnInit {
13
13
  autocomplete: AutocompleteComponent;
14
14
  autoFocus: boolean;
15
15
  forceTrackPosition: boolean;
16
+ enterButton: boolean;
16
17
  itemSelected: EventEmitter<CatalogRecord>;
17
18
  inputSubmitted: EventEmitter<string>;
19
+ isSearchActive: EventEmitter<boolean>;
18
20
  searchInputValue$: Observable<{
19
21
  title: string;
20
22
  }>;
@@ -31,7 +33,8 @@ export declare class FuzzySearchComponent implements OnInit {
31
33
  handleItemSelection(item: AutocompleteItem): void;
32
34
  handleInputSubmission(any: string): void;
33
35
  handleInputCleared(): Promise<void>;
36
+ handleSearchActive(event: boolean): void;
34
37
  static ɵfac: i0.ɵɵFactoryDeclaration<FuzzySearchComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<FuzzySearchComponent, "gn-ui-fuzzy-search", never, { "autoFocus": { "alias": "autoFocus"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; }, never, never, false, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<FuzzySearchComponent, "gn-ui-fuzzy-search", never, { "autoFocus": { "alias": "autoFocus"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; "enterButton": { "alias": "enterButton"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; "isSearchActive": "isSearchActive"; }, never, never, false, never>;
36
39
  }
37
40
  //# sourceMappingURL=fuzzy-search.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy-search.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,MAAM,EAGP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAkB,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAGjI,qBAMa,oBAAqB,YAAW,MAAM;IAgB/C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IAjBO,YAAY,EAAE,qBAAqB,CAAA;IAC5D,SAAS,UAAQ;IACjB,kBAAkB,UAAQ;IACzB,YAAY,8BAAoC;IAChD,cAAc,uBAA6B;IACrD,iBAAiB,EAAE,UAAU,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEhD,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAA2B;IAE3E,kBAAkB,UAAW,MAAM,iCAGO;gBAGhC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,0BAA0B;IAGvD,QAAQ,IAAI,IAAI;IAQhB;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,gBAAgB;IAS1C,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAQ3B,kBAAkB;yCApDb,oBAAoB;2CAApB,oBAAoB;CA4DhC"}
1
+ {"version":3,"file":"fuzzy-search.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,MAAM,EAGP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAkB,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAGjI,qBAMa,oBAAqB,YAAW,MAAM;IAkB/C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IAnBO,YAAY,EAAE,qBAAqB,CAAA;IAC5D,SAAS,UAAQ;IACjB,kBAAkB,UAAQ;IAC1B,WAAW,UAAQ;IAClB,YAAY,8BAAoC;IAChD,cAAc,uBAA6B;IAC3C,cAAc,wBAA8B;IACtD,iBAAiB,EAAE,UAAU,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEhD,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAA2B;IAE3E,kBAAkB,UAAW,MAAM,iCAGO;gBAGhC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,0BAA0B;IAGvD,QAAQ,IAAI,IAAI;IAQhB;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,gBAAgB;IAS1C,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAQ3B,kBAAkB;IASxB,kBAAkB,CAAC,KAAK,EAAE,OAAO;yCA/DtB,oBAAoB;2CAApB,oBAAoB;CAkEhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/image-input/image-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;;AA2BtB,qBA+Ba,mBAAmB;IA0B5B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IA1BH,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAQ;IACzB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACnD,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IAC/C,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IAElE,aAAa,UAAQ;IACrB,YAAY,UAAQ;IACpB,aAAa,UAAQ;IACrB,gBAAgB,UAAQ;IAExB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,IAAI,kBAAkB,YAErB;gBAGS,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,iBAAiB;IAG/B,cAAc;IAUd,gBAAgB;IAUhB,mBAAmB,CAAC,aAAa,EAAE,OAAO;IAO1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;IAS7B,eAAe,CAAC,KAAK,EAAE,KAAK;IAQ5B,eAAe;IAKT,WAAW,CAAC,GAAG,EAAE,MAAM;IAiC7B,wBAAwB,CAAC,KAAK,EAAE,KAAK;IASrC,YAAY;IAIZ,WAAW;IAWX,YAAY;IAIZ,kBAAkB;IAIlB,mBAAmB,CAAC,OAAO,EAAE,MAAM;IAInC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;yCA1JV,mBAAmB;2CAAnB,mBAAmB;CAiK/B"}
1
+ {"version":3,"file":"image-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/image-input/image-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;;AA2BtB,qBA+Ba,mBAAmB;IA0B5B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IA1BH,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAQ;IACzB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACnD,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IAC/C,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IAElE,aAAa,UAAQ;IACrB,YAAY,UAAQ;IACpB,aAAa,UAAQ;IACrB,gBAAgB,UAAQ;IAExB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,IAAI,kBAAkB,YAErB;gBAGS,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,iBAAiB;IAG/B,cAAc;IAUd,gBAAgB;IAUhB,mBAAmB,CAAC,aAAa,EAAE,OAAO;IAO1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;IAQ7B,eAAe,CAAC,KAAK,EAAE,KAAK;IAQ5B,eAAe;IAKT,WAAW,CAAC,GAAG,EAAE,MAAM;IAgC7B,wBAAwB,CAAC,KAAK,EAAE,KAAK;IASrC,YAAY;IAIZ,WAAW;IAWX,YAAY;IAIZ,kBAAkB;IAIlB,mBAAmB,CAAC,OAAO,EAAE,MAAM;IAInC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;yCAxJV,mBAAmB;2CAAnB,mBAAmB;CA+J/B"}
@@ -7,6 +7,7 @@ export type AutocompleteItem = unknown;
7
7
  export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
8
8
  private cdRef;
9
9
  placeholder: string;
10
+ enterButton: boolean;
10
11
  action: (value: string) => Observable<AutocompleteItem[]>;
11
12
  value?: AutocompleteItem;
12
13
  clearOnSelection: boolean;
@@ -18,6 +19,7 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
18
19
  itemSelected: EventEmitter<unknown>;
19
20
  inputSubmitted: EventEmitter<string>;
20
21
  inputCleared: EventEmitter<void>;
22
+ isSearchActive: EventEmitter<boolean>;
21
23
  triggerRef: MatAutocompleteTrigger;
22
24
  autocomplete: MatAutocomplete;
23
25
  inputRef: ElementRef<HTMLInputElement>;
@@ -31,8 +33,12 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
31
33
  subscription: Subscription;
32
34
  private lastPosition;
33
35
  private intervalIdPosition;
36
+ enterBtnPosition: number;
37
+ searchActive: boolean;
34
38
  displayWithFn: (item: AutocompleteItem) => string;
39
+ get displayEnterBtn(): boolean;
35
40
  displayWithFnInternal: (item?: AutocompleteItem) => string;
41
+ getExtraClass(): string;
36
42
  constructor(cdRef: ChangeDetectorRef);
37
43
  ngOnChanges(changes: SimpleChanges): void;
38
44
  ngOnInit(): void;
@@ -62,7 +68,8 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
62
68
  * @param event
63
69
  */
64
70
  handleSelection(event: MatAutocompleteSelectedEvent): void;
71
+ handleInput(event: InputEvent): void;
65
72
  static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
66
- static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "gn-ui-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "action": { "alias": "action"; "required": false; }; "value": { "alias": "value"; "required": false; }; "clearOnSelection": { "alias": "clearOnSelection"; "required": false; }; "preventCompleteOnSelection": { "alias": "preventCompleteOnSelection"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "minCharacterCount": { "alias": "minCharacterCount"; "required": false; }; "allowSubmit": { "alias": "allowSubmit"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; "displayWithFn": { "alias": "displayWithFn"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; "inputCleared": "inputCleared"; }, never, never, true, never>;
73
+ static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "gn-ui-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "enterButton": { "alias": "enterButton"; "required": false; }; "action": { "alias": "action"; "required": false; }; "value": { "alias": "value"; "required": false; }; "clearOnSelection": { "alias": "clearOnSelection"; "required": false; }; "preventCompleteOnSelection": { "alias": "preventCompleteOnSelection"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "minCharacterCount": { "alias": "minCharacterCount"; "required": false; }; "allowSubmit": { "alias": "allowSubmit"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; "displayWithFn": { "alias": "displayWithFn"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; "inputCleared": "inputCleared"; "isSearchActive": "isSearchActive"; }, never, never, true, never>;
67
74
  }
68
75
  //# sourceMappingURL=autocomplete.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAuB,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EACL,eAAe,EAEf,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAM,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;;AAwBhF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEtC,qBAyBa,qBACX,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;IAsC1C,OAAO,CAAC,KAAK;IApChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACzD,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,gBAAgB,UAAQ;IACxB,0BAA0B,UAAQ;IAClC,SAAS,UAAQ;IACjB,iBAAiB,CAAC,SAAI;IAEtB,WAAW,UAAQ;IACnB,kBAAkB,UAAQ;IACzB,YAAY,wBAAuC;IACnD,cAAc,uBAA6B;IAC3C,YAAY,qBAA2B;IACd,UAAU,EAAE,sBAAsB,CAAA;IACzC,YAAY,EAAE,eAAe,CAAA;IAC/B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEhE,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,qBAA2B;IAClC,WAAW,UAAO;IAClB,gBAAgB,8CAAqD;IACrE,eAAe,wBAA+B;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAO;IAC3B,YAAY,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC5C,YAAY,eAAqB;IACjC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,kBAAkB,CAAoB;IAErC,aAAa,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CACzC;IAEjB,qBAAqB,UAAW,gBAAgB,YAG/C;gBAEmB,KAAK,EAAE,iBAAiB;IAC5C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAWzC,QAAQ,IAAI,IAAI;IAwEhB,eAAe,IAAI,IAAI;IAUvB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAepB;IAED;;;;OAIG;IACH,qBAAqB;IAMrB,WAAW,IAAI,IAAI;IAQnB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB;IASxC,KAAK,IAAI,IAAI;IASb,WAAW,CAAC,GAAG,EAAE,MAAM;IAMvB,iBAAiB;IAIjB;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,4BAA4B;yCAjNxC,qBAAqB;2CAArB,qBAAqB;CA+NjC"}
1
+ {"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAuB,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EACL,eAAe,EAEf,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAM,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;;AAwBhF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEtC,qBA0Ba,qBACX,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;IA6D1C,OAAO,CAAC,KAAK;IA3DhB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,UAAQ;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACzD,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,gBAAgB,UAAQ;IACxB,0BAA0B,UAAQ;IAClC,SAAS,UAAQ;IACjB,iBAAiB,CAAC,SAAI;IAEtB,WAAW,UAAQ;IACnB,kBAAkB,UAAQ;IACzB,YAAY,wBAAuC;IACnD,cAAc,uBAA6B;IAC3C,YAAY,qBAA2B;IACvC,cAAc,wBAA8B;IACnB,UAAU,EAAE,sBAAsB,CAAA;IACzC,YAAY,EAAE,eAAe,CAAA;IAC/B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEhE,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,qBAA2B;IAClC,WAAW,UAAO;IAClB,gBAAgB,8CAAqD;IACrE,eAAe,wBAA+B;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAO;IAC3B,YAAY,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC5C,YAAY,eAAqB;IACjC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,gBAAgB,SAAI;IACpB,YAAY,UAAQ;IAEX,aAAa,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CACzC;IAEjB,IAAI,eAAe,YAElB;IAED,qBAAqB,UAAW,gBAAgB,YAG/C;IAED,aAAa,IAAI,MAAM;gBAeH,KAAK,EAAE,iBAAiB;IAC5C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAkBzC,QAAQ,IAAI,IAAI;IAwEhB,eAAe,IAAI,IAAI;IAUvB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAepB;IAED;;;;OAIG;IACH,qBAAqB;IAMrB,WAAW,IAAI,IAAI;IAQnB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB;IASxC,KAAK,IAAI,IAAI;IAWb,WAAW,CAAC,GAAG,EAAE,MAAM;IAQvB,iBAAiB;IAIjB;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,4BAA4B;IAenD,WAAW,CAAC,KAAK,EAAE,UAAU;yCAlQlB,qBAAqB;2CAArB,qBAAqB;CAuQjC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.5.0-dev.6e4d22b12",
3
+ "version": "2.5.0-dev.70f4ef380",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -291,7 +291,7 @@ export class Gn4FieldMapper {
291
291
  <SourceWithUnknownProps>selectField(source, 'related'),
292
292
  'fcats'
293
293
  )
294
- ),
294
+ ) ?? {},
295
295
  '_source'
296
296
  )
297
297
  const featureCatalogIdentifier = selectField(
@@ -352,21 +352,13 @@ export class Gn4Repository implements RecordsRepositoryInterface {
352
352
  exhaustMap(async (fetchedRecordAsXml: string) => {
353
353
  const converter = findConverterForDocument(fetchedRecordAsXml)
354
354
  const record = await converter.readRecord(fetchedRecordAsXml)
355
- const tempId = this.generateTemporaryId()
356
355
 
357
356
  record.title = `${record.title} (Copy)`
358
- record.uniqueIdentifier = tempId
357
+ await converter.writeRecord(record, fetchedRecordAsXml)
359
358
 
360
- const recordAsXml = await converter.writeRecord(
361
- record,
362
- fetchedRecordAsXml
363
- )
364
-
365
- this.saveRecordToLocalStorage(recordAsXml, record.uniqueIdentifier)
366
- this._draftsChanged.next()
367
-
368
- return tempId
359
+ return this.saveRecord(record, '', false)
369
360
  }),
361
+ exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
370
362
  catchError((error: HttpErrorResponse) => {
371
363
  return throwError(() => error)
372
364
  })
@@ -705,6 +705,96 @@ export const duplicateDatasetRecordAsXmlFixture =
705
705
  </mdb:resourceLineage>
706
706
  </mdb:MD_Metadata>`
707
707
 
708
+ export const importDatasetRecordAsXmlFixture = (): string => `
709
+ <gmd:MD_Metadata
710
+ xmlns:gmd="http://www.isotc211.org/2005/gmd"
711
+ xmlns:gco="http://www.isotc211.org/2005/gco"
712
+ xmlns:srv="http://www.isotc211.org/2005/srv"
713
+ xmlns:gmx="http://www.isotc211.org/2005/gmx"
714
+ xmlns:gts="http://www.isotc211.org/2005/gts"
715
+ xmlns:gsr="http://www.isotc211.org/2005/gsr"
716
+ xmlns:gmi="http://www.isotc211.org/2005/gmi"
717
+ xmlns:gml="http://www.opengis.net/gml/3.2"
718
+ xmlns:xlink="http://www.w3.org/1999/xlink"
719
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
720
+ <gmd:language>
721
+ <gmd:LanguageCode codeList="http://www.loc.gov/standards/iso639-2/" codeListValue="eng"/>
722
+ </gmd:language>
723
+ <gmd:characterSet>
724
+ <gmd:MD_CharacterSetCode codeListValue="utf8" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_CharacterSetCode"/>
725
+ </gmd:characterSet>
726
+ <gmd:contact>
727
+ <gmd:CI_ResponsibleParty>
728
+ <gmd:individualName gco:nilReason="missing">
729
+ <gco:CharacterString/>
730
+ </gmd:individualName>
731
+ <gmd:organisationName gco:nilReason="missing">
732
+ <gco:CharacterString/>
733
+ </gmd:organisationName>
734
+ <gmd:positionName gco:nilReason="missing">
735
+ <gco:CharacterString/>
736
+ </gmd:positionName>
737
+ <gmd:role>
738
+ <gmd:CI_RoleCode codeListValue="pointOfContact" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_RoleCode"/>
739
+ </gmd:role>
740
+ </gmd:CI_ResponsibleParty>
741
+ </gmd:contact>
742
+ <gmd:dateStamp>
743
+ <gco:DateTime>2024-05-31T10:18:45.429Z</gco:DateTime>
744
+ </gmd:dateStamp>
745
+ <gmd:metadataStandardName>
746
+ <gco:CharacterString>ISO 19115:2003/19139</gco:CharacterString>
747
+ </gmd:metadataStandardName>
748
+ <gmd:metadataStandardVersion>
749
+ <gco:CharacterString>1.0</gco:CharacterString>
750
+ </gmd:metadataStandardVersion>
751
+ <gmd:identificationInfo>
752
+ <gmd:MD_DataIdentification>
753
+ <gmd:citation>
754
+ <gmd:CI_Citation>
755
+ <gmd:title>
756
+ <gco:CharacterString>Record with no link</gco:CharacterString>
757
+ </gmd:title>
758
+ <gmd:date>
759
+ <gmd:CI_Date>
760
+ <gmd:date>
761
+ <gco:DateTime>2024-05-31T11:00:00+00:00</gco:DateTime>
762
+ </gmd:date>
763
+ <gmd:dateType>
764
+ <gmd:CI_DateTypeCode codeListValue="publication" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#CI_DateTypeCode"/>
765
+ </gmd:dateType>
766
+ </gmd:CI_Date>
767
+ </gmd:date>
768
+ <gmd:edition gco:nilReason="missing">
769
+ <gco:CharacterString/>
770
+ </gmd:edition>
771
+ </gmd:CI_Citation>
772
+ </gmd:citation>
773
+ <gmd:abstract>
774
+ <gco:CharacterString>Read the abstract and supplemental information provided in the Vector template for more details.</gco:CharacterString>
775
+ </gmd:abstract>
776
+ <gmd:purpose gco:nilReason="missing">
777
+ <gco:CharacterString/>
778
+ </gmd:purpose>
779
+ <gmd:status>
780
+ <gmd:MD_ProgressCode codeListValue="onGoing" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_ProgressCode"/>
781
+ </gmd:status>
782
+ <gmd:language>
783
+ <gco:CharacterString>eng</gco:CharacterString>
784
+ </gmd:language>
785
+ <gmd:characterSet>
786
+ <gmd:MD_CharacterSetCode codeListValue="utf8" codeList="http://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_CharacterSetCode"/>
787
+ </gmd:characterSet>
788
+ <gmd:topicCategory>
789
+ <gmd:MD_TopicCategoryCode>boundaries</gmd:MD_TopicCategoryCode>
790
+ </gmd:topicCategory>
791
+ <gmd:supplementalInformation gco:nilReason="missing">
792
+ <gco:CharacterString/>
793
+ </gmd:supplementalInformation>
794
+ </gmd:MD_DataIdentification>
795
+ </gmd:identificationInfo>
796
+ </gmd:MD_Metadata>`
797
+
708
798
  export const NATIONAL_KEYWORD = {
709
799
  key: 'http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/national',
710
800
  label: 'National',
@@ -106,8 +106,8 @@ export class ImportRecordComponent {
106
106
  this.isRecordImportInProgress = true
107
107
 
108
108
  this.recordsRepository.duplicateExternalRecord(url).subscribe({
109
- next: (recordTempId) => {
110
- if (recordTempId) {
109
+ next: (uuid) => {
110
+ if (uuid) {
111
111
  this.notificationsService.showNotification(
112
112
  {
113
113
  type: 'success',
@@ -122,7 +122,7 @@ export class ImportRecordComponent {
122
122
  )
123
123
 
124
124
  this.router
125
- .navigate(['/edit', recordTempId])
125
+ .navigate(['/edit', uuid])
126
126
  .catch((err) => console.error(err))
127
127
  }
128
128
  this.closeImportMenu.next()
@@ -31,6 +31,7 @@
31
31
  </div>
32
32
 
33
33
  <gn-ui-autocomplete
34
+ *ngIf="role !== 'unspecified' && role !== 'other'"
34
35
  [placeholder]="
35
36
  'editor.record.form.field.contactsForResource.placeholder' | translate
36
37
  "
@@ -40,6 +40,7 @@ import {
40
40
  provideNgIconsConfig,
41
41
  } from '@ng-icons/core'
42
42
  import { iconoirPlus } from '@ng-icons/iconoir'
43
+ import { RoleValues } from '../../../../../../../../../libs/common/domain/src/lib/model/record'
43
44
 
44
45
  @Component({
45
46
  selector: 'gn-ui-form-field-contacts-for-resource',
@@ -72,15 +73,11 @@ export class FormFieldContactsForResourceComponent
72
73
  @Output() valueChange: EventEmitter<Individual[]> = new EventEmitter()
73
74
 
74
75
  contactsForRessourceByRole: Map<Role, Individual[]> = new Map()
76
+ roleValues = RoleValues
75
77
 
76
- rolesToPick: Role[] = [
77
- 'resource_provider',
78
- 'custodian',
79
- 'owner',
80
- 'point_of_contact',
81
- 'author',
82
- 'publisher',
83
- ]
78
+ rolesToPick: Role[] = this.roleValues.filter(
79
+ (role) => role !== 'other' && role !== 'unspecified'
80
+ )
84
81
 
85
82
  roleSectionsToDisplay: Role[] = []
86
83
 
@@ -178,9 +175,11 @@ export class FormFieldContactsForResourceComponent
178
175
  * gn-ui-autocomplete
179
176
  */
180
177
  displayWithFn: (user: UserModel) => string = (user) =>
181
- `${user.name} ${user.surname} ${
182
- user.organisation ? `(${user.organisation})` : ''
183
- }`
178
+ user.name
179
+ ? `${user.name} ${user.surname} ${
180
+ user.organisation ? `(${user.organisation})` : ''
181
+ }`
182
+ : ``
184
183
 
185
184
  /**
186
185
  * gn-ui-autocomplete
@@ -5,9 +5,11 @@
5
5
  (itemSelected)="handleItemSelection($event)"
6
6
  (inputSubmitted)="handleInputSubmission($event)"
7
7
  (inputCleared)="handleInputCleared()"
8
+ (isSearchActive)="handleSearchActive($event)"
8
9
  [value]="searchInputValue$ | async"
9
10
  [preventCompleteOnSelection]="true"
10
11
  [autoFocus]="autoFocus"
11
12
  [allowSubmit]="true"
12
13
  [forceTrackPosition]="forceTrackPosition"
14
+ [enterButton]="enterButton"
13
15
  ></gn-ui-autocomplete>
@@ -29,8 +29,10 @@ export class FuzzySearchComponent implements OnInit {
29
29
  @ViewChild(AutocompleteComponent) autocomplete: AutocompleteComponent
30
30
  @Input() autoFocus = false
31
31
  @Input() forceTrackPosition = false
32
+ @Input() enterButton = false
32
33
  @Output() itemSelected = new EventEmitter<CatalogRecord>()
33
34
  @Output() inputSubmitted = new EventEmitter<string>()
35
+ @Output() isSearchActive = new EventEmitter<boolean>()
34
36
  searchInputValue$: Observable<{ title: string }>
35
37
 
36
38
  displayWithFn: (record: CatalogRecord) => string = (record) => record.title
@@ -85,4 +87,8 @@ export class FuzzySearchComponent implements OnInit {
85
87
  this.searchService.updateFilters({ any: '' })
86
88
  }
87
89
  }
90
+
91
+ handleSearchActive(event: boolean) {
92
+ this.isSearchActive.emit(event)
93
+ }
88
94
  }
@@ -14,7 +14,11 @@
14
14
  [disabled]="true"
15
15
  ></gn-ui-text-input>
16
16
  <div class="flex flex-row gap-2 mt-2">
17
- <gn-ui-button type="gray" (buttonClick)="handleDelete()">
17
+ <gn-ui-button
18
+ type="gray"
19
+ (buttonClick)="handleDelete()"
20
+ data-cy="delete-image"
21
+ >
18
22
  <ng-icon class="me-1 text-primary" name="iconoirBin"></ng-icon>
19
23
  {{ 'input.image.delete' | translate }}
20
24
  </gn-ui-button>
@@ -39,12 +43,10 @@
39
43
  'border-primary-lighter bg-primary-white': dragFilesOver,
40
44
  'border-gray-300': !dragFilesOver,
41
45
  'cursor-pointer hover:border-gray-500':
42
- !isUploadInProgress && !uploadError && !showUrlInput && !disabled,
46
+ !isUploadInProgress && !uploadError && !disabled,
43
47
  'cursor-not-allowed': disabled,
44
48
  }"
45
- [attr.tabindex]="
46
- isUploadInProgress || uploadError || showUrlInput || disabled ? null : 0
47
- "
49
+ [attr.tabindex]="isUploadInProgress || uploadError || disabled ? null : 0"
48
50
  (keydown.enter)="fileInput.click()"
49
51
  (dragFilesOver)="handleDragFilesOver($event)"
50
52
  (dropFiles)="handleDropFiles($event)"
@@ -114,9 +116,7 @@
114
116
  type="file"
115
117
  class="hidden"
116
118
  (change)="handleFileInput($event)"
117
- [disabled]="
118
- showUrlInput || isUploadInProgress || uploadError || disabled
119
- "
119
+ [disabled]="isUploadInProgress || uploadError || disabled"
120
120
  />
121
121
  </label>
122
122
 
@@ -123,11 +123,10 @@ export class ImageInputComponent {
123
123
  }
124
124
 
125
125
  handleDropFiles(files: File[]) {
126
- if (!this.showUrlInput) {
127
- const validFiles = this.filterTypeImage(files)
128
- if (validFiles.length > 0) {
129
- this.resizeAndEmit(validFiles[0])
130
- }
126
+ const validFiles = this.filterTypeImage(files)
127
+ if (validFiles.length > 0) {
128
+ this.showUrlInput = false
129
+ this.resizeAndEmit(validFiles[0])
131
130
  }
132
131
  }
133
132
 
@@ -147,7 +146,6 @@ export class ImageInputComponent {
147
146
  async downloadUrl(url: string) {
148
147
  this.downloadError = false
149
148
  const name = url.split('/').pop()
150
-
151
149
  try {
152
150
  const response = await firstValueFrom(
153
151
  this.http.head(url, { observe: 'response' })
@@ -5,31 +5,48 @@
5
5
  >
6
6
  <ng-icon name="iconoirSearch" class="text-primary search"></ng-icon>
7
7
  </div>
8
- <input
9
- #searchInput
10
- type="text"
11
- class="gn-ui-text-input"
12
- [ngClass]="{
13
- 'px-[--icon-width]': !allowSubmit,
14
- }"
15
- [placeholder]="placeholder"
16
- [formControl]="control"
17
- [matAutocomplete]="auto"
18
- (keyup.enter)="handleEnter(searchInput.value)"
19
- />
8
+ <div class="flex flex-row">
9
+ <input
10
+ #searchInput
11
+ type="text"
12
+ class="gn-ui-text-input"
13
+ (input)="handleInput($event)"
14
+ [placeholder]="placeholder"
15
+ [formControl]="control"
16
+ [matAutocomplete]="auto"
17
+ (keyup.enter)="handleEnter(searchInput.value)"
18
+ [ngClass]="{
19
+ 'text-primary': searchActive && enterButton,
20
+ 'text-gray-900': !searchActive,
21
+ 'px-[--icon-width]': !allowSubmit,
22
+ }"
23
+ />
24
+ <gn-ui-button
25
+ type="gray"
26
+ *ngIf="searchInput.value && displayEnterBtn"
27
+ extraClass="w-32 h-8 !opacity-100"
28
+ [ngStyle]="{ left: enterBtnPosition + 'px' }"
29
+ class="absolute"
30
+ disabled="true"
31
+ >
32
+ <ng-icon
33
+ name="iconoirLongArrowDownLeft"
34
+ class="!w-4 text-gray-900 font-bold"
35
+ ></ng-icon>
36
+ <span translate class="text-bold text-gray-900 font-bold">
37
+ Enter to search
38
+ </span>
39
+ </gn-ui-button>
40
+ </div>
20
41
  <gn-ui-button
21
- type="light"
22
- extraClass="border-0 text-primary-lightest hover:text-primary focus:text-primary absolute inset-y-[--icon-padding] {{
23
- allowSubmit
24
- ? 'right-[calc(var(--icon-width)+var(--icon-padding))]'
25
- : 'right-[--icon-padding]'
26
- }}"
42
+ type="primary"
43
+ [extraClass]="getExtraClass()"
27
44
  data-test="clear-btn"
28
45
  *ngIf="searchInput.value"
29
46
  aria-label="Clear"
30
47
  (buttonClick)="clear()"
31
48
  >
32
- <ng-icon name="matClose"></ng-icon>
49
+ <ng-icon class="text-white" name="matClose"></ng-icon>
33
50
  </gn-ui-button>
34
51
  <gn-ui-button
35
52
  type="light"
@@ -41,7 +41,7 @@ import {
41
41
  provideIcons,
42
42
  provideNgIconsConfig,
43
43
  } from '@ng-icons/core'
44
- import { iconoirSearch } from '@ng-icons/iconoir'
44
+ import { iconoirLongArrowDownLeft, iconoirSearch } from '@ng-icons/iconoir'
45
45
  import { matClose } from '@ng-icons/material-icons/baseline'
46
46
 
47
47
  export type AutocompleteItem = unknown
@@ -65,9 +65,10 @@ export type AutocompleteItem = unknown
65
65
  provideIcons({
66
66
  iconoirSearch,
67
67
  matClose,
68
+ iconoirLongArrowDownLeft,
68
69
  }),
69
70
  provideNgIconsConfig({
70
- size: '1.5rem',
71
+ size: '1.75rem',
71
72
  }),
72
73
  ],
73
74
  })
@@ -75,6 +76,7 @@ export class AutocompleteComponent
75
76
  implements OnInit, AfterViewInit, OnDestroy, OnChanges
76
77
  {
77
78
  @Input() placeholder: string
79
+ @Input() enterButton = false
78
80
  @Input() action: (value: string) => Observable<AutocompleteItem[]>
79
81
  @Input() value?: AutocompleteItem
80
82
  @Input() clearOnSelection = false
@@ -87,6 +89,7 @@ export class AutocompleteComponent
87
89
  @Output() itemSelected = new EventEmitter<AutocompleteItem>()
88
90
  @Output() inputSubmitted = new EventEmitter<string>()
89
91
  @Output() inputCleared = new EventEmitter<void>()
92
+ @Output() isSearchActive = new EventEmitter<boolean>()
90
93
  @ViewChild(MatAutocompleteTrigger) triggerRef: MatAutocompleteTrigger
91
94
  @ViewChild(MatAutocomplete) autocomplete: MatAutocomplete
92
95
  @ViewChild('searchInput') inputRef: ElementRef<HTMLInputElement>
@@ -101,15 +104,36 @@ export class AutocompleteComponent
101
104
  subscription = new Subscription()
102
105
  private lastPosition: DOMRect | null = null
103
106
  private intervalIdPosition: number | undefined
107
+ enterBtnPosition = 0
108
+ searchActive = false
104
109
 
105
110
  @Input() displayWithFn: (item: AutocompleteItem) => string = (item) =>
106
111
  item.toString()
107
112
 
113
+ get displayEnterBtn() {
114
+ return this.enterButton && this.allowSubmit && !this.searchActive
115
+ }
116
+
108
117
  displayWithFnInternal = (item?: AutocompleteItem) => {
109
118
  if (item === null || item === undefined) return null
110
119
  return this.displayWithFn(item)
111
120
  }
112
121
 
122
+ getExtraClass(): string {
123
+ if (this.allowSubmit) {
124
+ if (this.enterButton) {
125
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+var(--icon-padding))] inset-y-[--icon-padding]'
126
+ } else {
127
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+0.25*var(--icon-width))] inset-y-[calc(0.25*var(--icon-width))]'
128
+ }
129
+ } else {
130
+ if (!this.enterButton) {
131
+ return 'border rounded-lg absolute w-8 h-8 right-2 inset-y-2'
132
+ }
133
+ }
134
+ return 'border rounded-lg absolute w-8 h-8'
135
+ }
136
+
113
137
  constructor(private cdRef: ChangeDetectorRef) {}
114
138
  ngOnChanges(changes: SimpleChanges): void {
115
139
  const { value } = changes
@@ -117,6 +141,13 @@ export class AutocompleteComponent
117
141
  const previousTextValue = this.displayWithFnInternal(value.previousValue)
118
142
  const currentTextValue = this.displayWithFnInternal(value.currentValue)
119
143
  if (previousTextValue !== currentTextValue) {
144
+ if (currentTextValue) {
145
+ this.searchActive = true
146
+ this.isSearchActive.emit(true)
147
+ } else {
148
+ this.searchActive = false
149
+ this.isSearchActive.emit(false)
150
+ }
120
151
  this.updateInputValue(value.currentValue)
121
152
  }
122
153
  }
@@ -256,6 +287,8 @@ export class AutocompleteComponent
256
287
 
257
288
  clear(): void {
258
289
  this.inputRef.nativeElement.value = ''
290
+ this.searchActive = false
291
+ this.isSearchActive.emit(false)
259
292
  this.inputCleared.emit()
260
293
  this.selectionSubject
261
294
  .pipe(take(1))
@@ -265,6 +298,8 @@ export class AutocompleteComponent
265
298
 
266
299
  handleEnter(any: string) {
267
300
  if (!this.cancelEnter && this.allowSubmit) {
301
+ this.isSearchActive.emit(true)
302
+ this.searchActive = true
268
303
  this.inputSubmitted.emit(any)
269
304
  }
270
305
  }
@@ -294,4 +329,10 @@ export class AutocompleteComponent
294
329
  this.control.setValue('')
295
330
  }
296
331
  }
332
+
333
+ handleInput(event: InputEvent) {
334
+ this.searchActive = false
335
+ this.isSearchActive.emit(false)
336
+ this.enterBtnPosition = event.target['value'].length * 8 + 80
337
+ }
297
338
  }
@@ -472,7 +472,7 @@
472
472
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
473
473
  "search.error.recordHasnolink": "",
474
474
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
475
- "search.field.any.placeholder": "Suche Datensätze ...",
475
+ "search.field.any.placeholder": "Suche im katalog ...",
476
476
  "search.field.sortBy": "Sortieren nach:",
477
477
  "search.filters.availableServices.download": "",
478
478
  "search.filters.availableServices.view": "",