geonetwork-ui 2.4.1-dev.a28bdabc1 → 2.4.1-dev.b217f2e40

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/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +42 -19
  2. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +5 -3
  3. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +7 -2
  4. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +3 -3
  5. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +6 -3
  6. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -7
  7. package/esm2022/translations/de.json +1 -0
  8. package/esm2022/translations/en.json +1 -0
  9. package/esm2022/translations/es.json +1 -0
  10. package/esm2022/translations/fr.json +1 -0
  11. package/esm2022/translations/it.json +1 -0
  12. package/esm2022/translations/nl.json +1 -0
  13. package/esm2022/translations/pt.json +1 -0
  14. package/fesm2022/geonetwork-ui.mjs +65 -29
  15. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  16. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +31 -3
  17. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  18. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +2 -1
  19. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  20. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +3 -2
  21. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  22. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +2 -1
  23. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  24. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  25. package/package.json +1 -1
  26. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +12 -11
  27. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +56 -19
  28. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  29. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +1 -0
  30. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +9 -1
  31. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +5 -1
  32. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -1
  33. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +1 -0
  34. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -6
  35. package/translations/de.json +1 -0
  36. package/translations/en.json +1 -0
  37. package/translations/es.json +1 -0
  38. package/translations/fr.json +1 -0
  39. package/translations/it.json +1 -0
  40. package/translations/nl.json +1 -0
  41. package/translations/pt.json +1 -0
  42. package/translations/sk.json +1 -0
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectorRef, EventEmitter, OnChanges, OnInit } from '@angular/core';
2
2
  import { DatasetServiceDistribution, ServiceProtocol } from '../../../../../../../libs/common/domain/src/lib/model/record';
3
- import { DropdownChoice } from '../../../../../../../libs/ui/inputs/src';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class OnlineServiceResourceInputComponent implements OnChanges, OnInit {
6
6
  private cdr;
@@ -16,7 +16,14 @@ export declare class OnlineServiceResourceInputComponent implements OnChanges, O
16
16
  errorMessage: boolean;
17
17
  selectedProtocol: ServiceProtocol;
18
18
  url: string;
19
- layers: DropdownChoice[] | undefined;
19
+ layersSubject: BehaviorSubject<{
20
+ name: string;
21
+ title: string;
22
+ }[]>;
23
+ layers$: Observable<{
24
+ name: string;
25
+ title: string;
26
+ }[]>;
20
27
  protocolOptions: {
21
28
  label: string;
22
29
  value: ServiceProtocol;
@@ -27,10 +34,31 @@ export declare class OnlineServiceResourceInputComponent implements OnChanges, O
27
34
  ngOnInit(): void;
28
35
  handleUrlValueChange(url: string): void;
29
36
  handleUploadClick(url: string): Promise<void>;
30
- handleSelectValue(val: string): void;
37
+ resetAllFormFields(): void;
31
38
  resetLayersSuggestion(): void;
32
39
  submitIdentifier(identifier: string): void;
33
40
  getIdentifierPlaceholder(): string;
41
+ /**
42
+ * gn-ui-autocomplete
43
+ */
44
+ displayWithFn(item: {
45
+ name: string;
46
+ title: string;
47
+ }): string;
48
+ /**
49
+ * gn-ui-autocomplete
50
+ */
51
+ autoCompleteAction: (query: string) => Observable<{
52
+ name: string;
53
+ title: string;
54
+ }[]>;
55
+ /**
56
+ * gn-ui-autocomplete
57
+ */
58
+ handleSelectValue(val: {
59
+ name: string;
60
+ title: string;
61
+ }): void;
34
62
  static ɵfac: i0.ɵɵFactoryDeclaration<OnlineServiceResourceInputComponent, never>;
35
63
  static ɵcmp: i0.ɵɵComponentDeclaration<OnlineServiceResourceInputComponent, "gn-ui-online-service-resource-input", never, { "service": { "alias": "service"; "required": false; }; "protocolHint": { "alias": "protocolHint"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "modifyMode": { "alias": "modifyMode"; "required": false; }; }, { "urlChange": "urlChange"; "identifierSubmit": "identifierSubmit"; }, never, ["*"], true, never>;
36
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"online-service-resource-input.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAEZ,SAAS,EACT,MAAM,EAEP,MAAM,eAAe,CAAA;AAKtB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EAChB,MAAM,8DAA8D,CAAA;AACrE,OAAO,EAEL,cAAc,EAIf,MAAM,yCAAyC,CAAA;;AAUhD,qBAyBa,mCAAoC,YAAW,SAAS,EAAE,MAAM;IAkD/D,OAAO,CAAC,GAAG;IAjDd,OAAO,EAAE,0BAA0B,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAQ;IACjB,UAAU,CAAC,UAAQ;IAClB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,gBAAgB,EAAE,YAAY,CAAC;QACvC,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC,CAAqB;IAEvB,YAAY,UAAQ;IACpB,gBAAgB,EAAE,eAAe,CAAA;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAY;IAEhD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,eAAe,CAAA;KACvB,EAAE,CA6BF;gBAEmB,GAAG,EAAE,iBAAiB;IAE1C,IAAI,qBAAqB,YAIxB;IAED,WAAW;IAOX,QAAQ;IAMR,oBAAoB,CAAC,GAAG,EAAE,MAAM;IAO1B,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAuBnC,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAI7B,qBAAqB;IAMrB,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAMnC,wBAAwB,IAAI,MAAM;yCArHvB,mCAAmC;2CAAnC,mCAAmC;CA4H/C"}
1
+ {"version":3,"file":"online-service-resource-input.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAEZ,SAAS,EACT,MAAM,EAEP,MAAM,eAAe,CAAA;AAKtB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EAChB,MAAM,8DAA8D,CAAA;AAerE,OAAO,EACL,eAAe,EAIf,UAAU,EAEX,MAAM,MAAM,CAAA;;AAEb,qBAyBa,mCAAoC,YAAW,SAAS,EAAE,MAAM;IAoD/D,OAAO,CAAC,GAAG;IAnDd,OAAO,EAAE,0BAA0B,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAQ;IACjB,UAAU,CAAC,UAAQ;IAClB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,gBAAgB,EAAE,YAAY,CAAC;QACvC,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC,CAAqB;IAEvB,YAAY,UAAQ;IACpB,gBAAgB,EAAE,eAAe,CAAA;IACjC,GAAG,SAAK;IACR,aAAa;cAA+B,MAAM;eAAS,MAAM;SAAS;IAC1E,OAAO,EAAE,UAAU,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CACnB;IAEnC,eAAe,EAAE;QACf,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,eAAe,CAAA;KACvB,EAAE,CA6BF;gBAEmB,GAAG,EAAE,iBAAiB;IAE1C,IAAI,qBAAqB,YAIxB;IAED,WAAW;IAOX,QAAQ;IAMR,oBAAoB,CAAC,GAAG,EAAE,MAAM;IAO1B,iBAAiB,CAAC,GAAG,EAAE,MAAM;IAmBnC,kBAAkB;IAMlB,qBAAqB;IAMrB,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAMnC,wBAAwB,IAAI,MAAM;IAQlC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAMnD;;OAEG;IACH,kBAAkB,UAAW,MAAM;cA1HP,MAAM;eAAS,MAAM;SAmIhD;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;yCAvJ3C,mCAAmC;2CAAnC,mCAAmC;CA0J/C"}
@@ -17,6 +17,7 @@ export declare class ResultsTableContainerComponent implements OnDestroy {
17
17
  private translateService;
18
18
  canDuplicate: (record: CatalogRecord) => boolean;
19
19
  canDelete: (record: CatalogRecord) => boolean;
20
+ isDuplicating: false;
20
21
  recordClick: EventEmitter<CatalogRecord>;
21
22
  duplicateRecord: EventEmitter<CatalogRecord>;
22
23
  subscription: Subscription;
@@ -31,6 +32,6 @@ export declare class ResultsTableContainerComponent implements OnDestroy {
31
32
  handleRecordsSelectedChange(records: CatalogRecord[], selected: boolean): void;
32
33
  ngOnDestroy(): void;
33
34
  static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableContainerComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableContainerComponent, "gn-ui-results-table-container", never, { "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; }, { "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; }, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableContainerComponent, "gn-ui-results-table-container", never, { "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "isDuplicating": { "alias": "isDuplicating"; "required": false; }; }, { "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; }, never, never, true, never>;
35
36
  }
36
37
  //# sourceMappingURL=results-table-container.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"results-table-container.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/results-table/results-table-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,SAAS,EAEV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;AAGjI,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;;AAEtD,qBAOa,8BAA+B,YAAW,SAAS;IAgB5D,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,gBAAgB;IApBjB,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAEzD,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IAE7D,YAAY,eAAqB;IAEjC,gBAAgB,2CAAoD;IACpE,OAAO,qGAA4B;IAEnC,QAAQ,WAAY,aAAa,KAAG,OAAO,CACqB;gBAGpD,YAAY,EAAE,YAAY,EAC5B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,0BAA0B,EAC7C,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,gBAAgB;IAG5C,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,qBAAqB,CAAC,IAAI,EAAE,OAAO;IAI7B,kBAAkB,CAAC,IAAI,EAAE,OAAO;IA0CtC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIrD,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO;IAQvE,WAAW;yCAtFA,8BAA8B;2CAA9B,8BAA8B;CAyF1C"}
1
+ {"version":3,"file":"results-table-container.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/results-table/results-table-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,SAAS,EAEV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;AAGjI,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;;AAEtD,qBAOa,8BAA+B,YAAW,SAAS;IAiB5D,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,gBAAgB;IArBjB,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC1D,aAAa,EAAE,KAAK,CAAA;IAEnB,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IAE7D,YAAY,eAAqB;IAEjC,gBAAgB,2CAAoD;IACpE,OAAO,qGAA4B;IAEnC,QAAQ,WAAY,aAAa,KAAG,OAAO,CACqB;gBAGpD,YAAY,EAAE,YAAY,EAC5B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,0BAA0B,EAC7C,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,gBAAgB;IAG5C,iBAAiB,CAAC,IAAI,EAAE,OAAO;IAI/B,qBAAqB,CAAC,IAAI,EAAE,OAAO;IAI7B,kBAAkB,CAAC,IAAI,EAAE,OAAO;IA0CtC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIrD,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO;IAQvE,WAAW;yCAvFA,8BAA8B;2CAA9B,8BAA8B;CA0F1C"}
@@ -1,6 +1,6 @@
1
- import { ChangeDetectorRef, EventEmitter } from '@angular/core';
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class UrlInputComponent {
3
+ export declare class UrlInputComponent implements OnChanges {
4
4
  private cd;
5
5
  set value(v: string);
6
6
  extraClass: string;
@@ -14,6 +14,7 @@ export declare class UrlInputComponent {
14
14
  uploadClick: EventEmitter<string>;
15
15
  inputValue: string;
16
16
  constructor(cd: ChangeDetectorRef);
17
+ ngOnChanges(changes: SimpleChanges): void;
17
18
  handleInput(event: Event): void;
18
19
  handleUpload(element: HTMLInputElement): void;
19
20
  isValidUrl(url: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"url-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/url-input/url-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;;AAUtB,qBAca,iBAAiB;IA0BhB,OAAO,CAAC,EAAE;IAzBtB,IAAa,KAAK,CAAC,CAAC,EAAE,MAAM,EAW3B;IACQ,UAAU,SAAK;IACf,WAAW,SAAa;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,UAAO;IAElC;;OAEG;IACO,WAAW,uBAAoC;IAC/C,WAAW,uBAA6B;IAElD,UAAU,SAAK;gBAEK,EAAE,EAAE,iBAAiB;IAEzC,WAAW,CAAC,KAAK,EAAE,KAAK;IAWxB,YAAY,CAAC,OAAO,EAAE,gBAAgB;IAMtC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;yCA7CrB,iBAAiB;2CAAjB,iBAAiB;CAqD7B"}
1
+ {"version":3,"file":"url-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/url-input/url-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAEZ,SAAS,EAET,aAAa,EACd,MAAM,eAAe,CAAA;;AAUtB,qBAca,iBAAkB,YAAW,SAAS;IA0BrC,OAAO,CAAC,EAAE;IAzBtB,IAAa,KAAK,CAAC,CAAC,EAAE,MAAM,EAW3B;IACQ,UAAU,SAAK;IACf,WAAW,SAAa;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,UAAO;IAElC;;OAEG;IACO,WAAW,uBAAoC;IAC/C,WAAW,uBAA6B;IAElD,UAAU,SAAK;gBAEK,EAAE,EAAE,iBAAiB;IAEzC,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,WAAW,CAAC,KAAK,EAAE,KAAK;IAWxB,YAAY,CAAC,OAAO,EAAE,gBAAgB;IAMtC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;yCAnDrB,iBAAiB;2CAAjB,iBAAiB;CA2D7B"}
@@ -15,6 +15,7 @@ export declare class ResultsTableComponent {
15
15
  canDuplicate: (record: CatalogRecord) => boolean;
16
16
  canDelete: (record: CatalogRecord) => boolean;
17
17
  isDraftPage: boolean;
18
+ isDuplicating: boolean;
18
19
  sortByChange: EventEmitter<[string, "desc" | "asc"]>;
19
20
  recordClick: EventEmitter<CatalogRecord>;
20
21
  duplicateRecord: EventEmitter<CatalogRecord>;
@@ -38,6 +39,6 @@ export declare class ResultsTableComponent {
38
39
  isChecked(record: CatalogRecord): boolean;
39
40
  handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
40
41
  static ɵfac: i0.ɵɵFactoryDeclaration<ResultsTableComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResultsTableComponent, "gn-ui-results-table", never, { "records": { "alias": "records"; "required": false; }; "selectedRecordsIdentifiers": { "alias": "selectedRecordsIdentifiers"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "hasDraft": { "alias": "hasDraft"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "canDelete": { "alias": "canDelete"; "required": false; }; "isDraftPage": { "alias": "isDraftPage"; "required": false; }; "isDuplicating": { "alias": "isDuplicating"; "required": false; }; }, { "sortByChange": "sortByChange"; "recordClick": "recordClick"; "duplicateRecord": "duplicateRecord"; "deleteRecord": "deleteRecord"; "recordsSelectedChange": "recordsSelectedChange"; }, never, never, true, never>;
42
43
  }
43
44
  //# sourceMappingURL=results-table.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,UAAU,EAKX,MAAM,wCAAwC,CAAA;AAK/C,OAAO,EAGL,OAAO,EAER,MAAM,sBAAsB,CAAA;;AAI7B,qBAkBa,qBAAqB;IAyB9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IA1BJ,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC1D,WAAW,UAAQ;IAGlB,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,YAAY,8BAAoC;IAChD,qBAAqB,2CAE5B;IAGH,iBAAiB,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB,UAAQ;gBAGd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB;IAGhC,cAAc,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAyC7B,eAAe;IAQf,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAerD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,aAAa;IAKrC,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIzC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;yCApJxD,qBAAqB;2CAArB,qBAAqB;CAuJjC"}
1
+ {"version":3,"file":"results-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-table/results-table.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAGZ,SAAS,EAET,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAEL,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAMlE,OAAO,EACL,UAAU,EAKX,MAAM,wCAAwC,CAAA;AAK/C,OAAO,EAGL,OAAO,EAER,MAAM,sBAAsB,CAAA;;AAI7B,qBAkBa,qBAAqB;IA0B9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IA3BJ,OAAO,EAAE,aAAa,EAAE,CAAK;IAC7B,0BAA0B,EAAE,MAAM,EAAE,CAAK;IACzC,SAAS,EAAE,WAAW,CAAO;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAc;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAa;IAC1D,WAAW,UAAQ;IACnB,aAAa,UAAQ;IAGpB,YAAY,yCAA+C;IAC3D,WAAW,8BAAoC;IAC/C,eAAe,8BAAoC;IACnD,YAAY,8BAAoC;IAChD,qBAAqB,2CAE5B;IAGH,iBAAiB,EAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,CAAC,UAAU,CAAa;IAE/B,gBAAgB,UAAQ;gBAGd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB;IAGhC,cAAc,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAyC7B,eAAe;IAQf,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAerD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAIlD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,iBAAiB,CAAC,IAAI,EAAE,aAAa;IAKrC,eAAe,CAAC,IAAI,EAAE,OAAO;IAI7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAe9C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIzC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;yCArJxD,qBAAqB;2CAArB,qBAAqB;CAwJjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAcrE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA0BhE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,kBA2B5E;AAcD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAcrE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CA0BhE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,kBAwB5E;AAcD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.4.1-dev.a28bdabc1",
3
+ "version": "2.4.1-dev.b217f2e40",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -17,7 +17,7 @@
17
17
  class="flex flex-row gap-[8px]"
18
18
  [(ngModel)]="service.accessServiceProtocol"
19
19
  [disabled]="disabled"
20
- (change)="resetLayersSuggestion()"
20
+ (change)="resetAllFormFields()"
21
21
  >
22
22
  <mat-radio-button
23
23
  *ngFor="let protocolOption of protocolOptions"
@@ -55,29 +55,30 @@
55
55
  *ngIf="
56
56
  !activeLayerSuggestion ||
57
57
  (url && errorMessage) ||
58
- (modifyMode && layers === undefined)
58
+ (modifyMode && (layers$ | async).length === 0)
59
59
  "
60
60
  ></gn-ui-text-input>
61
- <gn-ui-dropdown-selector
61
+ <gn-ui-autocomplete
62
62
  class="border-b border-gray-300 pb-4"
63
- [showTitle]="false"
64
- [title]="
63
+ [placeholder]="
65
64
  'editor.record.form.field.onlineResource.edit.identifier.select.label'
66
65
  | translate
67
66
  "
68
- [choices]="layers || []"
69
- *ngIf="activeLayerSuggestion && layers !== undefined"
70
- [selected]="service.identifierInService"
71
- (selectValue)="handleSelectValue($event)"
67
+ [action]="autoCompleteAction"
68
+ (itemSelected)="handleSelectValue($event)"
69
+ [displayWithFn]="displayWithFn"
70
+ [minCharacterCount]="0"
71
+ [clearOnSelection]="false"
72
+ *ngIf="activeLayerSuggestion && (layers$ | async)?.length > 0"
72
73
  >
73
- </gn-ui-dropdown-selector>
74
+ </gn-ui-autocomplete>
74
75
  <gn-ui-button
75
76
  (buttonClick)="submitIdentifier(service.identifierInService)"
76
77
  [disabled]="disabled || !service.identifierInService"
77
78
  type="primary"
78
79
  *ngIf="
79
80
  !modifyMode &&
80
- ((activeLayerSuggestion && layers) ||
81
+ ((activeLayerSuggestion && (layers$ | async)) ||
81
82
  !activeLayerSuggestion ||
82
83
  (url && errorMessage))
83
84
  "
@@ -18,9 +18,8 @@ import {
18
18
  ServiceProtocol,
19
19
  } from '../../../../../../../libs/common/domain/src/lib/model/record'
20
20
  import {
21
+ AutocompleteComponent,
21
22
  ButtonComponent,
22
- DropdownChoice,
23
- DropdownSelectorComponent,
24
23
  TextInputComponent,
25
24
  UrlInputComponent,
26
25
  } from '../../../../../../../libs/ui/inputs/src'
@@ -31,7 +30,15 @@ import {
31
30
  provideNgIconsConfig,
32
31
  } from '@ng-icons/core'
33
32
  import { iconoirCloudUpload } from '@ng-icons/iconoir'
34
- import { getLayers } from '../../../../../../../libs/util/shared/src'
33
+ import { createFuzzyFilter, getLayers } from '../../../../../../../libs/util/shared/src'
34
+ import {
35
+ BehaviorSubject,
36
+ debounceTime,
37
+ distinctUntilChanged,
38
+ map,
39
+ Observable,
40
+ switchMap,
41
+ } from 'rxjs'
35
42
 
36
43
  @Component({
37
44
  selector: 'gn-ui-online-service-resource-input',
@@ -40,7 +47,7 @@ import { getLayers } from '../../../../../../../libs/util/shared/src'
40
47
  changeDetection: ChangeDetectionStrategy.OnPush,
41
48
  standalone: true,
42
49
  imports: [
43
- DropdownSelectorComponent,
50
+ AutocompleteComponent,
44
51
  ButtonComponent,
45
52
  CommonModule,
46
53
  FormsModule,
@@ -71,8 +78,10 @@ export class OnlineServiceResourceInputComponent implements OnChanges, OnInit {
71
78
 
72
79
  errorMessage = false
73
80
  selectedProtocol: ServiceProtocol
74
- url: string
75
- layers: DropdownChoice[] | undefined = undefined
81
+ url = ''
82
+ layersSubject = new BehaviorSubject<{ name: string; title: string }[]>([])
83
+ layers$: Observable<{ name: string; title: string }[]> =
84
+ this.layersSubject.asObservable()
76
85
 
77
86
  protocolOptions: {
78
87
  label: string
@@ -131,7 +140,7 @@ export class OnlineServiceResourceInputComponent implements OnChanges, OnInit {
131
140
 
132
141
  handleUrlValueChange(url: string) {
133
142
  this.url = url
134
- this.service.url = new URL(url)
143
+ this.service.url = url ? new URL(url) : undefined
135
144
  this.resetLayersSuggestion()
136
145
  this.urlChange.emit(this.url)
137
146
  }
@@ -141,31 +150,29 @@ export class OnlineServiceResourceInputComponent implements OnChanges, OnInit {
141
150
 
142
151
  try {
143
152
  const layers = await getLayers(url, this.service.accessServiceProtocol)
144
- this.layers = layers.map((l) => {
145
- return {
146
- label: l.title ? `${l.title} ${l.name ? `(${l.name})` : ''}` : l.name,
147
- value: l.name || l.title,
148
- }
149
- })
150
-
151
- if (this.layers.length === 0) {
153
+
154
+ if (layers.length === 0) {
152
155
  throw new Error('No layers found')
153
156
  }
157
+
158
+ this.layersSubject.next([...layers])
154
159
  } catch (e) {
155
160
  this.errorMessage = true
156
- this.layers = undefined
161
+ this.layersSubject.next([])
157
162
  }
158
163
 
159
164
  this.cdr.detectChanges()
160
165
  }
161
166
 
162
- handleSelectValue(val: string) {
163
- this.service.identifierInService = val
167
+ resetAllFormFields() {
168
+ this.url = ''
169
+ this.service.url = null
170
+ this.resetLayersSuggestion()
164
171
  }
165
172
 
166
173
  resetLayersSuggestion() {
167
174
  this.errorMessage = false
168
- this.layers = undefined
175
+ this.layersSubject.next([])
169
176
  this.service.identifierInService = null
170
177
  }
171
178
 
@@ -182,4 +189,34 @@ export class OnlineServiceResourceInputComponent implements OnChanges, OnInit {
182
189
  ? `${baseKey}.wps`
183
190
  : baseKey
184
191
  }
192
+
193
+ /**
194
+ * gn-ui-autocomplete
195
+ */
196
+ displayWithFn(item: { name: string; title: string }) {
197
+ return item.title
198
+ ? `${item.title} ${item.name ? `(${item.name})` : ''}`
199
+ : item.name
200
+ }
201
+
202
+ /**
203
+ * gn-ui-autocomplete
204
+ */
205
+ autoCompleteAction = (query: string) => {
206
+ const fuzzyFilter = createFuzzyFilter(query)
207
+ return this.layers$.pipe(
208
+ switchMap((layers) => [
209
+ layers.filter((layer) => fuzzyFilter(layer.name)),
210
+ ]),
211
+ debounceTime(100),
212
+ distinctUntilChanged()
213
+ )
214
+ }
215
+
216
+ /**
217
+ * gn-ui-autocomplete
218
+ */
219
+ handleSelectValue(val: { name: string; title: string }) {
220
+ this.service.identifierInService = val.name
221
+ }
185
222
  }
@@ -6,6 +6,7 @@
6
6
  [sortOrder]="sortBy$ | async"
7
7
  [canDelete]="canDelete"
8
8
  [canDuplicate]="canDuplicate"
9
+ [isDuplicating]="isDuplicating"
9
10
  (recordClick)="handleRecordClick($event)"
10
11
  (duplicateRecord)="handleDuplicateRecord($event)"
11
12
  (deleteRecord)="handleDeleteRecord($event)"
@@ -26,6 +26,7 @@ import { TranslateService } from '@ngx-translate/core'
26
26
  export class ResultsTableContainerComponent implements OnDestroy {
27
27
  @Input() canDuplicate: (record: CatalogRecord) => boolean = () => true
28
28
  @Input() canDelete: (record: CatalogRecord) => boolean = () => true
29
+ @Input() isDuplicating: false
29
30
 
30
31
  @Output() recordClick = new EventEmitter<CatalogRecord>()
31
32
  @Output() duplicateRecord = new EventEmitter<CatalogRecord>()
@@ -4,7 +4,9 @@ import {
4
4
  Component,
5
5
  EventEmitter,
6
6
  Input,
7
+ OnChanges,
7
8
  Output,
9
+ SimpleChanges,
8
10
  } from '@angular/core'
9
11
  import { CommonModule } from '@angular/common'
10
12
  import { ButtonComponent } from '../button/button.component'
@@ -29,7 +31,7 @@ import { iconoirArrowUp, iconoirLink } from '@ng-icons/iconoir'
29
31
  ],
30
32
  changeDetection: ChangeDetectionStrategy.OnPush,
31
33
  })
32
- export class UrlInputComponent {
34
+ export class UrlInputComponent implements OnChanges {
33
35
  @Input() set value(v: string) {
34
36
  // we're making sure to only update the input if the URL representation of it has changed; otherwise we keep it identical
35
37
  // to avoid glitches when starting to write a URL and having some characters added/replaced automatically
@@ -57,6 +59,12 @@ export class UrlInputComponent {
57
59
 
58
60
  constructor(private cd: ChangeDetectorRef) {}
59
61
 
62
+ ngOnChanges(changes: SimpleChanges) {
63
+ if (changes['value']) {
64
+ this.inputValue = changes['value'].currentValue
65
+ }
66
+ }
67
+
60
68
  handleInput(event: Event) {
61
69
  const value = (event.target as HTMLInputElement).value
62
70
  this.inputValue = value
@@ -11,7 +11,11 @@
11
11
  (buttonClick)="duplicate.emit()"
12
12
  [disabled]="!canDuplicate"
13
13
  data-test="record-menu-duplicate-button"
14
- ><span translate>record.action.duplicate</span></gn-ui-button
14
+ >
15
+ <span *ngIf="canDuplicate" translate>record.action.duplicate</span>
16
+ <span *ngIf="!canDuplicate" translate
17
+ >record.action.duplicating</span
18
+ ></gn-ui-button
15
19
  >
16
20
  <gn-ui-button
17
21
  type="light"
@@ -160,7 +160,7 @@
160
160
  </gn-ui-button>
161
161
  <ng-template #template>
162
162
  <gn-ui-action-menu
163
- [canDuplicate]="canDuplicate(item)"
163
+ [canDuplicate]="canDuplicate(item) && !isDuplicating"
164
164
  [canDelete]="canDelete(item)"
165
165
  (duplicate)="handleDuplicate(item)"
166
166
  (delete)="handleDelete(item)"
@@ -66,6 +66,7 @@ export class ResultsTableComponent {
66
66
  @Input() canDuplicate: (record: CatalogRecord) => boolean = () => true
67
67
  @Input() canDelete: (record: CatalogRecord) => boolean = () => true
68
68
  @Input() isDraftPage = false
69
+ @Input() isDuplicating = false
69
70
 
70
71
  // emits the column (field) as well as the order
71
72
  @Output() sortByChange = new EventEmitter<[string, 'asc' | 'desc']>()
@@ -258,21 +258,18 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
258
258
  return layers
259
259
  }
260
260
  case 'wfs': {
261
- const endpointWfs = new WfsEndpoint(url)
262
- await endpointWfs.isReady()
261
+ const endpointWfs = await new WfsEndpoint(url).isReady()
263
262
  return endpointWfs.getFeatureTypes()
264
263
  }
265
264
  case 'wms': {
266
- const endpointWms = new WmsEndpoint(url)
267
- await endpointWms.isReady()
265
+ const endpointWms = await new WmsEndpoint(url).isReady()
268
266
  return endpointWms
269
267
  .getLayers()
270
268
  .flatMap(wmsLayerFlatten)
271
269
  .filter((l) => l.name)
272
270
  }
273
271
  case 'wmts': {
274
- const endpointWmts = new WmtsEndpoint(url)
275
- await endpointWmts.isReady()
272
+ const endpointWmts = await new WmtsEndpoint(url).isReady()
276
273
  return endpointWmts.getLayers()
277
274
  }
278
275
  default:
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "Löschen",
420
420
  "record.action.download": "Herunterladen",
421
421
  "record.action.duplicate": "",
422
+ "record.action.duplicating": "",
422
423
  "record.action.view": "Anzeigen",
423
424
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
424
425
  "record.feature.limit": "Die Ressource enthält mehr als {count} Features und kann hier nicht angezeigt werden.",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "Delete",
420
420
  "record.action.download": "Download",
421
421
  "record.action.duplicate": "Duplicate",
422
+ "record.action.duplicating": "Duplicating...",
422
423
  "record.action.view": "View",
423
424
  "record.externalViewer.open": "Open in the external map viewer",
424
425
  "record.feature.limit": "The resource contains more than {count} features and cannot be displayed here.",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "",
420
420
  "record.action.download": "",
421
421
  "record.action.duplicate": "",
422
+ "record.action.duplicating": "",
422
423
  "record.action.view": "",
423
424
  "record.externalViewer.open": "",
424
425
  "record.feature.limit": "",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "Supprimer",
420
420
  "record.action.download": "Télécharger",
421
421
  "record.action.duplicate": "Dupliquer",
422
+ "record.action.duplicating": "Duplication...",
422
423
  "record.action.view": "Voir",
423
424
  "record.externalViewer.open": "Ouvrir dans le visualiseur externe",
424
425
  "record.feature.limit": "La ressource contient plus de {count} entités et ne peut pas être affichée ici.",
@@ -421,6 +421,7 @@
421
421
  "record.action.delete": "Elimina",
422
422
  "record.action.download": "Scarica",
423
423
  "record.action.duplicate": "Duplicato",
424
+ "record.action.duplicating": "",
424
425
  "record.action.view": "Visualizza",
425
426
  "record.externalViewer.open": "Aprire nel visualizzatore esterno",
426
427
  "record.feature.limit": "La risorsa contiene più di {count} funzionalità e non può essere visualizzata qui.",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "",
420
420
  "record.action.download": "",
421
421
  "record.action.duplicate": "",
422
+ "record.action.duplicating": "",
422
423
  "record.action.view": "",
423
424
  "record.externalViewer.open": "",
424
425
  "record.feature.limit": "",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "",
420
420
  "record.action.download": "",
421
421
  "record.action.duplicate": "",
422
+ "record.action.duplicating": "",
422
423
  "record.action.view": "",
423
424
  "record.externalViewer.open": "",
424
425
  "record.feature.limit": "",
@@ -419,6 +419,7 @@
419
419
  "record.action.delete": "",
420
420
  "record.action.download": "Stiahnuť",
421
421
  "record.action.duplicate": "",
422
+ "record.action.duplicating": "",
422
423
  "record.action.view": "Zobraziť",
423
424
  "record.externalViewer.open": "Otvoriť v externom mapovom prehliadači",
424
425
  "record.feature.limit": "",