geonetwork-ui 2.6.0-dev.9df114cd4 → 2.6.0-dev.c4b99cdef
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.
- package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
- package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +18 -0
- package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
- package/esm2022/libs/feature/record/src/index.mjs +1 -2
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
- package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
- package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -3
- package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
- package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
- package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
- package/esm2022/libs/feature/search/src/index.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
- package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
- package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +51 -0
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +16 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
- package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
- package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
- package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +56 -0
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
- package/esm2022/libs/ui/map/src/index.mjs +2 -1
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +11 -3
- package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
- package/esm2022/translations/de.json +32 -4
- package/esm2022/translations/en.json +36 -6
- package/esm2022/translations/es.json +32 -4
- package/esm2022/translations/fr.json +35 -5
- package/esm2022/translations/it.json +32 -4
- package/esm2022/translations/nl.json +32 -4
- package/esm2022/translations/pt.json +32 -4
- package/fesm2022/geonetwork-ui.mjs +1397 -584
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +1 -0
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +7 -0
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
- 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
- package/libs/feature/record/src/index.d.ts +0 -1
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
- package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
- package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
- package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +1 -1
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
- package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
- package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
- package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +11 -0
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
- package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/layout/src/index.d.ts +1 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +18 -0
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
- package/libs/ui/map/src/index.d.ts +1 -0
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
- package/libs/ui/search/src/index.d.ts +1 -0
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
- package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +21 -19
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
- package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/index.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
- package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
- package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -2
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
- package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +14 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +15 -0
- package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
- package/src/libs/feature/record/src/index.ts +0 -1
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +14 -10
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
- package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
- package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
- package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +21 -15
- package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
- package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
- package/src/libs/feature/search/src/index.ts +1 -1
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
- package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
- package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
- package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
- package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +9 -0
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +51 -0
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
- package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +9 -9
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +20 -7
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -0
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
- package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +0 -0
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +2 -2
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
- package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +46 -0
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +62 -0
- package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -5
- package/src/libs/ui/map/src/index.ts +1 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
- package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +8 -8
- package/src/libs/ui/search/src/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
- package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +24 -0
- package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +5 -0
- package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
- package/tailwind.base.config.js +3 -0
- package/tailwind.base.css +4 -16
- package/translations/de.json +32 -4
- package/translations/en.json +36 -6
- package/translations/es.json +32 -4
- package/translations/fr.json +35 -5
- package/translations/it.json +32 -4
- package/translations/nl.json +32 -4
- package/translations/pt.json +32 -4
- package/translations/sk.json +32 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
- package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
- package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
- package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
- package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
- package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
- package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
- package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
- package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
- /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-map-container/form-field-map-container.component.css → multilingual-panel/multilingual-panel.component.css} +0 -0
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, ContentChild, ContentChildren, TemplateRef, Host, ElementRef, ViewChildren, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, first as first$1, share, pairwise,
|
|
17
|
+
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault,
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, timer, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, startWith as startWith$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
@@ -26,8 +26,8 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirDatabase, iconoirMap, iconoirInternet, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
-
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight,
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirExpand, iconoirReduce, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirDatabase, iconoirMap, iconoirInternet, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
+
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowBackIos, matArrowForwardIos, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matCode, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
31
|
import * as i1$4 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
@@ -41,7 +41,7 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matLocationSearchingOutline, matEmailOutline, matPhoneOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -56,13 +56,20 @@ import { MatFormFieldModule } from '@angular/material/form-field';
|
|
|
56
56
|
import { MatInputModule } from '@angular/material/input';
|
|
57
57
|
import * as i1$b from '@angular/material/dialog';
|
|
58
58
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
59
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
59
60
|
import * as i2$3 from '@angular/material/tabs';
|
|
60
61
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
61
|
-
import * as i1$
|
|
62
|
+
import * as i1$d from '@angular/router';
|
|
62
63
|
import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
63
64
|
import { marked } from 'marked';
|
|
64
65
|
import Duration from 'duration-relativetimeformat';
|
|
65
66
|
import * as basicLightbox from 'basiclightbox';
|
|
67
|
+
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
68
|
+
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
69
|
+
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
70
|
+
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
71
|
+
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
72
|
+
import { Polygon } from 'ol/geom';
|
|
66
73
|
import { formatDistance } from 'date-fns/formatDistance';
|
|
67
74
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
68
75
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
@@ -72,11 +79,6 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
72
79
|
import { valid as valid$1 } from 'geojson-validation';
|
|
73
80
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
74
81
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
75
|
-
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
76
|
-
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
77
|
-
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
78
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
79
|
-
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
80
82
|
import { extend } from 'ol/extent';
|
|
81
83
|
import * as TOML from '@ltd/j-toml';
|
|
82
84
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
@@ -96,9 +98,8 @@ import * as i4 from '@angular/material/paginator';
|
|
|
96
98
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
97
99
|
import { LetDirective } from '@ngrx/component';
|
|
98
100
|
import axios from 'axios';
|
|
99
|
-
import * as i1$
|
|
101
|
+
import * as i1$e from '@angular/platform-browser';
|
|
100
102
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
101
|
-
import { Polygon } from 'ol/geom';
|
|
102
103
|
import * as i4$1 from '@angular/material/radio';
|
|
103
104
|
import { MatRadioModule } from '@angular/material/radio';
|
|
104
105
|
import { MatIconModule } from '@angular/material/icon';
|
|
@@ -929,21 +930,23 @@ const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObje
|
|
|
929
930
|
return { ...mapperObject, [langEntry[1]]: langEntry[0] };
|
|
930
931
|
}, {});
|
|
931
932
|
|
|
933
|
+
const PossibleResourceTypes = {
|
|
934
|
+
application: 'reuse',
|
|
935
|
+
dataset: 'dataset',
|
|
936
|
+
interactiveMap: 'reuse',
|
|
937
|
+
map: 'reuse',
|
|
938
|
+
'map/static': 'reuse', // old index field
|
|
939
|
+
'map/interactive': 'reuse', // old index field
|
|
940
|
+
'map-interactive': 'reuse', // new index field since Oct 10, 2024
|
|
941
|
+
'map-static': 'reuse', // new index field
|
|
942
|
+
mapDigital: 'reuse',
|
|
943
|
+
series: 'dataset',
|
|
944
|
+
service: 'service',
|
|
945
|
+
staticMap: 'reuse',
|
|
946
|
+
};
|
|
947
|
+
const PossibleResourceTypesDefinition = Object.entries(PossibleResourceTypes).reduce((acc, [key, val]) => ((acc[val] ??= []).push(key), acc), {});
|
|
932
948
|
function getResourceType(type) {
|
|
933
|
-
|
|
934
|
-
application: 'reuse',
|
|
935
|
-
dataset: 'dataset',
|
|
936
|
-
map: 'reuse',
|
|
937
|
-
'map/static': 'reuse', // old index field
|
|
938
|
-
'map/interactive': 'reuse', // old index field
|
|
939
|
-
'map-interactive': 'reuse', // new index field since Oct 10, 2024
|
|
940
|
-
'map-static': 'reuse', // new index field
|
|
941
|
-
mapDigital: 'reuse',
|
|
942
|
-
interactiveMap: 'reuse',
|
|
943
|
-
staticMap: 'reuse',
|
|
944
|
-
service: 'service',
|
|
945
|
-
};
|
|
946
|
-
return (possibleResourceTypes[type] ||
|
|
949
|
+
return (PossibleResourceTypes[type] ||
|
|
947
950
|
'dataset');
|
|
948
951
|
}
|
|
949
952
|
function getReuseType(type) {
|
|
@@ -1351,8 +1354,8 @@ function extractServiceOnlineResources() {
|
|
|
1351
1354
|
else {
|
|
1352
1355
|
return {
|
|
1353
1356
|
type: 'endpoint',
|
|
1354
|
-
|
|
1355
|
-
protocol,
|
|
1357
|
+
url: url,
|
|
1358
|
+
accessServiceProtocol: protocol,
|
|
1356
1359
|
...(description && { description }),
|
|
1357
1360
|
translations,
|
|
1358
1361
|
};
|
|
@@ -1851,7 +1854,7 @@ function writeLineage$1(record, rootEl) {
|
|
|
1851
1854
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
1852
1855
|
}
|
|
1853
1856
|
function getServiceEndpointProtocol(endpoint) {
|
|
1854
|
-
switch (endpoint.
|
|
1857
|
+
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
1855
1858
|
case 'wfs':
|
|
1856
1859
|
return 'OGC:WFS';
|
|
1857
1860
|
case 'wms':
|
|
@@ -1859,13 +1862,13 @@ function getServiceEndpointProtocol(endpoint) {
|
|
|
1859
1862
|
case 'wps':
|
|
1860
1863
|
return 'OGC:WPS';
|
|
1861
1864
|
default:
|
|
1862
|
-
return endpoint.
|
|
1865
|
+
return endpoint.accessServiceProtocol;
|
|
1863
1866
|
}
|
|
1864
1867
|
}
|
|
1865
1868
|
function createOnlineResource(onlineResource) {
|
|
1866
1869
|
let linkageUrl, functionCode, protocol;
|
|
1867
1870
|
if (onlineResource.type === 'endpoint') {
|
|
1868
|
-
linkageUrl = onlineResource.
|
|
1871
|
+
linkageUrl = onlineResource.url.toString();
|
|
1869
1872
|
protocol = getServiceEndpointProtocol(onlineResource);
|
|
1870
1873
|
functionCode = 'download';
|
|
1871
1874
|
}
|
|
@@ -18652,7 +18655,7 @@ var de = {
|
|
|
18652
18655
|
"datafeeder.month.september": "September",
|
|
18653
18656
|
"datafeeder.wizardSummarize.createdAt": "Erstellt am",
|
|
18654
18657
|
"datafeeder.wizardSummarize.scale": "Maßstab",
|
|
18655
|
-
"datahub.header.datasets": "
|
|
18658
|
+
"datahub.header.datasets": "Katalog",
|
|
18656
18659
|
"datahub.header.lastRecords": "Die neuesten",
|
|
18657
18660
|
"datahub.header.myfavorites": "Meine Favoriten",
|
|
18658
18661
|
"datahub.header.news": "Startseite",
|
|
@@ -18805,6 +18808,9 @@ var de = {
|
|
|
18805
18808
|
"editor.record.form.license.odc-by": "",
|
|
18806
18809
|
"editor.record.form.license.pddl": "",
|
|
18807
18810
|
"editor.record.form.license.unknown": "",
|
|
18811
|
+
"editor.record.form.multilingual.enable": "",
|
|
18812
|
+
"editor.record.form.multilingual.open": "",
|
|
18813
|
+
"editor.record.form.multilingual.title": "",
|
|
18808
18814
|
"editor.record.form.page.accessAndContact": "",
|
|
18809
18815
|
"editor.record.form.page.description": "",
|
|
18810
18816
|
"editor.record.form.page.resources": "",
|
|
@@ -18834,6 +18840,7 @@ var de = {
|
|
|
18834
18840
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18835
18841
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18836
18842
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18843
|
+
"editor.record.lock.format": "",
|
|
18837
18844
|
"editor.record.lock.reason": "",
|
|
18838
18845
|
"editor.record.onlineResource.protocol.other": "",
|
|
18839
18846
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -18893,7 +18900,6 @@ var de = {
|
|
|
18893
18900
|
"input.image.dropFileLabel": "",
|
|
18894
18901
|
"input.image.selectFileLabel": "",
|
|
18895
18902
|
"input.image.uploadErrorLabel": "",
|
|
18896
|
-
"input.image.uploadErrorRetry": "",
|
|
18897
18903
|
"input.image.uploadProgressCancel": "",
|
|
18898
18904
|
"input.image.uploadProgressLabel": "",
|
|
18899
18905
|
"language.ca": "Katalanisch",
|
|
@@ -18960,6 +18966,7 @@ var de = {
|
|
|
18960
18966
|
"record.card.metadata.contact": "",
|
|
18961
18967
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18962
18968
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18969
|
+
"record.kind.data": "",
|
|
18963
18970
|
"record.kind.dataset": "",
|
|
18964
18971
|
"record.kind.reuse": "",
|
|
18965
18972
|
"record.kind.service": "",
|
|
@@ -19033,13 +19040,12 @@ var de = {
|
|
|
19033
19040
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19034
19041
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19035
19042
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19036
|
-
"record.metadata.related.contents": "
|
|
19043
|
+
"record.metadata.related.contents": "",
|
|
19037
19044
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19038
19045
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19039
19046
|
"record.metadata.status": "Status",
|
|
19040
19047
|
"record.metadata.status.notPublished": "",
|
|
19041
19048
|
"record.metadata.status.published": "",
|
|
19042
|
-
"record.metadata.technical": "Technische Informationen",
|
|
19043
19049
|
"record.metadata.temporalExtent": "Zeitlicher Umfang",
|
|
19044
19050
|
"record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
|
|
19045
19051
|
"record.metadata.temporalExtent.sinceDate": "Seit {start}",
|
|
@@ -19076,6 +19082,7 @@ var de = {
|
|
|
19076
19082
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19077
19083
|
"results.sortBy.qualityScore": "Qualitätsbewertung",
|
|
19078
19084
|
"results.sortBy.relevancy": "Relevanz",
|
|
19085
|
+
"reuse.metadata.access": "",
|
|
19079
19086
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
19080
19087
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
19081
19088
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -19115,6 +19122,10 @@ var de = {
|
|
|
19115
19122
|
"search.filters.producerOrg": "",
|
|
19116
19123
|
"search.filters.publicationYear": "Veröffentlichungsjahr",
|
|
19117
19124
|
"search.filters.publisherOrg": "",
|
|
19125
|
+
"search.filters.recordKind.all": "Alle",
|
|
19126
|
+
"search.filters.recordKind.dataset": "Datensätze",
|
|
19127
|
+
"search.filters.recordKind.reuse": "Wiederverwendungen",
|
|
19128
|
+
"search.filters.recordKind.service": "Dienste",
|
|
19118
19129
|
"search.filters.representationType": "Repräsentationstyp",
|
|
19119
19130
|
"search.filters.resourceType": "Ressourcentyp",
|
|
19120
19131
|
"search.filters.standard": "Standard",
|
|
@@ -19125,6 +19136,26 @@ var de = {
|
|
|
19125
19136
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
19126
19137
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
19127
19138
|
"search.filters.user": "Editor",
|
|
19139
|
+
"service.metadata.capabilities": "",
|
|
19140
|
+
"service.metadata.capabilities.abstract": "",
|
|
19141
|
+
"service.metadata.capabilities.attribution": "",
|
|
19142
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
19143
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
19144
|
+
"service.metadata.capabilities.geometryName": "",
|
|
19145
|
+
"service.metadata.capabilities.geometryType": "",
|
|
19146
|
+
"service.metadata.capabilities.keywords": "",
|
|
19147
|
+
"service.metadata.capabilities.name": "",
|
|
19148
|
+
"service.metadata.capabilities.objectCount": "",
|
|
19149
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
19150
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
19151
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
19152
|
+
"service.metadata.capabilities.title": "",
|
|
19153
|
+
"service.metadata.filter": "",
|
|
19154
|
+
"service.metadata.filter.noLayers": "",
|
|
19155
|
+
"service.metadata.other": "",
|
|
19156
|
+
"service.metadata.question": "",
|
|
19157
|
+
"service.metadata.search": "",
|
|
19158
|
+
"service.metadata.spatialExtent": "",
|
|
19128
19159
|
"share.tab.permalink": "Teilen",
|
|
19129
19160
|
"share.tab.webComponent": "Integrieren",
|
|
19130
19161
|
"table.loading.data": "Daten werden geladen...",
|
|
@@ -19207,7 +19238,7 @@ var en = {
|
|
|
19207
19238
|
"datafeeder.month.september": "September",
|
|
19208
19239
|
"datafeeder.wizardSummarize.createdAt": "Created at",
|
|
19209
19240
|
"datafeeder.wizardSummarize.scale": "Scale",
|
|
19210
|
-
"datahub.header.datasets": "
|
|
19241
|
+
"datahub.header.datasets": "Catalog",
|
|
19211
19242
|
"datahub.header.lastRecords": "The latest",
|
|
19212
19243
|
"datahub.header.myfavorites": "My favorites",
|
|
19213
19244
|
"datahub.header.news": "Home",
|
|
@@ -19360,6 +19391,9 @@ var en = {
|
|
|
19360
19391
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
19361
19392
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
19362
19393
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
19394
|
+
"editor.record.form.multilingual.enable": "Multilingual Mode",
|
|
19395
|
+
"editor.record.form.multilingual.open": "Open the multilingual panel",
|
|
19396
|
+
"editor.record.form.multilingual.title": "Translations",
|
|
19363
19397
|
"editor.record.form.page.accessAndContact": "Information for use",
|
|
19364
19398
|
"editor.record.form.page.description": "Dataset description",
|
|
19365
19399
|
"editor.record.form.page.resources": "Resources",
|
|
@@ -19389,6 +19423,7 @@ var en = {
|
|
|
19389
19423
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19390
19424
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19391
19425
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19426
|
+
"editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
|
|
19392
19427
|
"editor.record.lock.reason": "You are not an editor of the allowed groups",
|
|
19393
19428
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19394
19429
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
@@ -19448,7 +19483,6 @@ var en = {
|
|
|
19448
19483
|
"input.image.dropFileLabel": "or drop it here",
|
|
19449
19484
|
"input.image.selectFileLabel": "Select an image",
|
|
19450
19485
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19451
|
-
"input.image.uploadErrorRetry": "Retry",
|
|
19452
19486
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19453
19487
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19454
19488
|
"language.ca": "Catalan",
|
|
@@ -19515,7 +19549,8 @@ var en = {
|
|
|
19515
19549
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19516
19550
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19517
19551
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19518
|
-
"record.kind.
|
|
19552
|
+
"record.kind.data": "Data",
|
|
19553
|
+
"record.kind.dataset": "Dataset",
|
|
19519
19554
|
"record.kind.reuse": "Reuse",
|
|
19520
19555
|
"record.kind.service": "Service",
|
|
19521
19556
|
"record.metadata.about": "Description",
|
|
@@ -19551,7 +19586,7 @@ var en = {
|
|
|
19551
19586
|
"record.metadata.api.form.zoneTitle": "Zone",
|
|
19552
19587
|
"record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
|
|
19553
19588
|
"record.metadata.api.gpfdl": "Data download",
|
|
19554
|
-
"record.metadata.capabilities": "",
|
|
19589
|
+
"record.metadata.capabilities": "Service capabilities",
|
|
19555
19590
|
"record.metadata.catalog": "Catalog",
|
|
19556
19591
|
"record.metadata.contact": "Contact",
|
|
19557
19592
|
"record.metadata.creation": "Date of creation",
|
|
@@ -19588,13 +19623,12 @@ var en = {
|
|
|
19588
19623
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19589
19624
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19590
19625
|
"record.metadata.related": "Related datasets",
|
|
19591
|
-
"record.metadata.related.contents": "Related
|
|
19626
|
+
"record.metadata.related.contents": "Related content",
|
|
19592
19627
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19593
19628
|
"record.metadata.sheet": "Original metadata",
|
|
19594
19629
|
"record.metadata.status": "Status",
|
|
19595
19630
|
"record.metadata.status.notPublished": "Not published",
|
|
19596
19631
|
"record.metadata.status.published": "Published",
|
|
19597
|
-
"record.metadata.technical": "Technical information",
|
|
19598
19632
|
"record.metadata.temporalExtent": "Temporal extent",
|
|
19599
19633
|
"record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
|
|
19600
19634
|
"record.metadata.temporalExtent.sinceDate": "Since { start }",
|
|
@@ -19631,6 +19665,7 @@ var en = {
|
|
|
19631
19665
|
"results.sortBy.popularity": "Popularity",
|
|
19632
19666
|
"results.sortBy.qualityScore": "Quality score",
|
|
19633
19667
|
"results.sortBy.relevancy": "Relevancy",
|
|
19668
|
+
"reuse.metadata.access": "Access the reuse",
|
|
19634
19669
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
19635
19670
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
19636
19671
|
"search.error.organizationHasNoDataset": "This organization has no dataset yet.",
|
|
@@ -19670,6 +19705,10 @@ var en = {
|
|
|
19670
19705
|
"search.filters.producerOrg": "Producer",
|
|
19671
19706
|
"search.filters.publicationYear": "Publication year",
|
|
19672
19707
|
"search.filters.publisherOrg": "Publisher",
|
|
19708
|
+
"search.filters.recordKind.all": "All",
|
|
19709
|
+
"search.filters.recordKind.dataset": "Datasets",
|
|
19710
|
+
"search.filters.recordKind.reuse": "Reuses",
|
|
19711
|
+
"search.filters.recordKind.service": "Services",
|
|
19673
19712
|
"search.filters.representationType": "Representation type",
|
|
19674
19713
|
"search.filters.resourceType": "Resource type",
|
|
19675
19714
|
"search.filters.standard": "Standard",
|
|
@@ -19680,6 +19719,26 @@ var en = {
|
|
|
19680
19719
|
"search.filters.useSpatialFilter": "Show datasets in the area of interest first",
|
|
19681
19720
|
"search.filters.useSpatialFilterHelp": "When this is enabled, datasets situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
19682
19721
|
"search.filters.user": "Editor",
|
|
19722
|
+
"service.metadata.capabilities": "Technical information",
|
|
19723
|
+
"service.metadata.capabilities.abstract": "Abstract",
|
|
19724
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
19725
|
+
"service.metadata.capabilities.availableCrs": "Available CRS",
|
|
19726
|
+
"service.metadata.capabilities.defaultCrs": "Default CRS",
|
|
19727
|
+
"service.metadata.capabilities.geometryName": "Geometry name",
|
|
19728
|
+
"service.metadata.capabilities.geometryType": "Geometry type",
|
|
19729
|
+
"service.metadata.capabilities.keywords": "Keywords",
|
|
19730
|
+
"service.metadata.capabilities.name": "Name",
|
|
19731
|
+
"service.metadata.capabilities.objectCount": "Object count",
|
|
19732
|
+
"service.metadata.capabilities.otherCrs": "Other CRS",
|
|
19733
|
+
"service.metadata.capabilities.outputFormats": "Output formats",
|
|
19734
|
+
"service.metadata.capabilities.resourceLinks": "Resource links",
|
|
19735
|
+
"service.metadata.capabilities.title": "Title",
|
|
19736
|
+
"service.metadata.filter": "Layers will be filtered by title and abstract",
|
|
19737
|
+
"service.metadata.filter.noLayers": "No layer matches your search",
|
|
19738
|
+
"service.metadata.other": "Other information",
|
|
19739
|
+
"service.metadata.question": "Ask a question",
|
|
19740
|
+
"service.metadata.search": "Search through the layer list",
|
|
19741
|
+
"service.metadata.spatialExtent": "Spatial extent",
|
|
19683
19742
|
"share.tab.permalink": "Share",
|
|
19684
19743
|
"share.tab.webComponent": "Integrate",
|
|
19685
19744
|
"table.loading.data": "Loading data...",
|
|
@@ -19697,6 +19756,8 @@ var en = {
|
|
|
19697
19756
|
"tooltip.url.open": "Open URL",
|
|
19698
19757
|
"ui.readLess": "Read less",
|
|
19699
19758
|
"ui.readMore": "Read more",
|
|
19759
|
+
"ui.hideFullText": "Hide complete text",
|
|
19760
|
+
"ui.showAllText": "Show all text",
|
|
19700
19761
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
19701
19762
|
"wfs.featuretype.notfound": "No matching feature type was found in the service",
|
|
19702
19763
|
"wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
|
|
@@ -19762,7 +19823,7 @@ var es = {
|
|
|
19762
19823
|
"datafeeder.month.september": "",
|
|
19763
19824
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
19764
19825
|
"datafeeder.wizardSummarize.scale": "",
|
|
19765
|
-
"datahub.header.datasets": "",
|
|
19826
|
+
"datahub.header.datasets": "Catálogo",
|
|
19766
19827
|
"datahub.header.lastRecords": "",
|
|
19767
19828
|
"datahub.header.myfavorites": "",
|
|
19768
19829
|
"datahub.header.news": "",
|
|
@@ -19915,6 +19976,9 @@ var es = {
|
|
|
19915
19976
|
"editor.record.form.license.odc-by": "",
|
|
19916
19977
|
"editor.record.form.license.pddl": "",
|
|
19917
19978
|
"editor.record.form.license.unknown": "",
|
|
19979
|
+
"editor.record.form.multilingual.enable": "",
|
|
19980
|
+
"editor.record.form.multilingual.open": "",
|
|
19981
|
+
"editor.record.form.multilingual.title": "",
|
|
19918
19982
|
"editor.record.form.page.accessAndContact": "",
|
|
19919
19983
|
"editor.record.form.page.description": "",
|
|
19920
19984
|
"editor.record.form.page.resources": "",
|
|
@@ -19944,6 +20008,7 @@ var es = {
|
|
|
19944
20008
|
"editor.record.loadError.body": "",
|
|
19945
20009
|
"editor.record.loadError.closeMessage": "",
|
|
19946
20010
|
"editor.record.loadError.title": "",
|
|
20011
|
+
"editor.record.lock.format": "",
|
|
19947
20012
|
"editor.record.lock.reason": "",
|
|
19948
20013
|
"editor.record.onlineResource.protocol.other": "",
|
|
19949
20014
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -20003,7 +20068,6 @@ var es = {
|
|
|
20003
20068
|
"input.image.dropFileLabel": "",
|
|
20004
20069
|
"input.image.selectFileLabel": "",
|
|
20005
20070
|
"input.image.uploadErrorLabel": "",
|
|
20006
|
-
"input.image.uploadErrorRetry": "",
|
|
20007
20071
|
"input.image.uploadProgressCancel": "",
|
|
20008
20072
|
"input.image.uploadProgressLabel": "",
|
|
20009
20073
|
"language.ca": "Catalán",
|
|
@@ -20070,6 +20134,7 @@ var es = {
|
|
|
20070
20134
|
"record.card.metadata.contact": "",
|
|
20071
20135
|
"record.externalViewer.open": "",
|
|
20072
20136
|
"record.feature.limit": "",
|
|
20137
|
+
"record.kind.data": "",
|
|
20073
20138
|
"record.kind.dataset": "",
|
|
20074
20139
|
"record.kind.reuse": "",
|
|
20075
20140
|
"record.kind.service": "",
|
|
@@ -20143,13 +20208,12 @@ var es = {
|
|
|
20143
20208
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20144
20209
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20145
20210
|
"record.metadata.related": "",
|
|
20146
|
-
"record.metadata.related.contents": "
|
|
20211
|
+
"record.metadata.related.contents": "",
|
|
20147
20212
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20148
20213
|
"record.metadata.sheet": "",
|
|
20149
20214
|
"record.metadata.status": "",
|
|
20150
20215
|
"record.metadata.status.notPublished": "",
|
|
20151
20216
|
"record.metadata.status.published": "",
|
|
20152
|
-
"record.metadata.technical": "",
|
|
20153
20217
|
"record.metadata.temporalExtent": "",
|
|
20154
20218
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
20155
20219
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -20186,6 +20250,7 @@ var es = {
|
|
|
20186
20250
|
"results.sortBy.popularity": "",
|
|
20187
20251
|
"results.sortBy.qualityScore": "",
|
|
20188
20252
|
"results.sortBy.relevancy": "",
|
|
20253
|
+
"reuse.metadata.access": "",
|
|
20189
20254
|
"search.autocomplete.error": "",
|
|
20190
20255
|
"search.error.couldNotReachApi": "",
|
|
20191
20256
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -20225,6 +20290,10 @@ var es = {
|
|
|
20225
20290
|
"search.filters.producerOrg": "",
|
|
20226
20291
|
"search.filters.publicationYear": "",
|
|
20227
20292
|
"search.filters.publisherOrg": "",
|
|
20293
|
+
"search.filters.recordKind.all": "Todos",
|
|
20294
|
+
"search.filters.recordKind.dataset": "",
|
|
20295
|
+
"search.filters.recordKind.reuse": "",
|
|
20296
|
+
"search.filters.recordKind.service": "",
|
|
20228
20297
|
"search.filters.representationType": "",
|
|
20229
20298
|
"search.filters.resourceType": "",
|
|
20230
20299
|
"search.filters.standard": "",
|
|
@@ -20235,6 +20304,26 @@ var es = {
|
|
|
20235
20304
|
"search.filters.useSpatialFilter": "",
|
|
20236
20305
|
"search.filters.useSpatialFilterHelp": "",
|
|
20237
20306
|
"search.filters.user": "",
|
|
20307
|
+
"service.metadata.capabilities": "",
|
|
20308
|
+
"service.metadata.capabilities.abstract": "",
|
|
20309
|
+
"service.metadata.capabilities.attribution": "",
|
|
20310
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
20311
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
20312
|
+
"service.metadata.capabilities.geometryName": "",
|
|
20313
|
+
"service.metadata.capabilities.geometryType": "",
|
|
20314
|
+
"service.metadata.capabilities.keywords": "",
|
|
20315
|
+
"service.metadata.capabilities.name": "",
|
|
20316
|
+
"service.metadata.capabilities.objectCount": "",
|
|
20317
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
20318
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
20319
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
20320
|
+
"service.metadata.capabilities.title": "",
|
|
20321
|
+
"service.metadata.filter": "",
|
|
20322
|
+
"service.metadata.filter.noLayers": "",
|
|
20323
|
+
"service.metadata.other": "",
|
|
20324
|
+
"service.metadata.question": "",
|
|
20325
|
+
"service.metadata.search": "",
|
|
20326
|
+
"service.metadata.spatialExtent": "",
|
|
20238
20327
|
"share.tab.permalink": "",
|
|
20239
20328
|
"share.tab.webComponent": "",
|
|
20240
20329
|
"table.loading.data": "",
|
|
@@ -20317,7 +20406,7 @@ var fr = {
|
|
|
20317
20406
|
"datafeeder.month.september": "Septembre",
|
|
20318
20407
|
"datafeeder.wizardSummarize.createdAt": "Créée le",
|
|
20319
20408
|
"datafeeder.wizardSummarize.scale": "Échelle",
|
|
20320
|
-
"datahub.header.datasets": "
|
|
20409
|
+
"datahub.header.datasets": "Catalogue",
|
|
20321
20410
|
"datahub.header.lastRecords": "Les plus récentes",
|
|
20322
20411
|
"datahub.header.myfavorites": "Mes favoris",
|
|
20323
20412
|
"datahub.header.news": "Accueil",
|
|
@@ -20470,6 +20559,9 @@ var fr = {
|
|
|
20470
20559
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20471
20560
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20472
20561
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20562
|
+
"editor.record.form.multilingual.enable": "Mode Multilingue",
|
|
20563
|
+
"editor.record.form.multilingual.open": "Ouvrir le menu multilingue",
|
|
20564
|
+
"editor.record.form.multilingual.title": "Traductions",
|
|
20473
20565
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
20474
20566
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
20475
20567
|
"editor.record.form.page.resources": "Ressources",
|
|
@@ -20499,6 +20591,7 @@ var fr = {
|
|
|
20499
20591
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20500
20592
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20501
20593
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20594
|
+
"editor.record.lock.format": "Les jeux de données de type 'service' et 'reuse' ne sont pas éditables",
|
|
20502
20595
|
"editor.record.lock.reason": "Vous n'êtes pas éditeur d'un des groupes autorisés.",
|
|
20503
20596
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20504
20597
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
@@ -20558,7 +20651,6 @@ var fr = {
|
|
|
20558
20651
|
"input.image.dropFileLabel": "ou glissez-la ici",
|
|
20559
20652
|
"input.image.selectFileLabel": "Sélectionnez une image",
|
|
20560
20653
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20561
|
-
"input.image.uploadErrorRetry": "Réessayer",
|
|
20562
20654
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20563
20655
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20564
20656
|
"language.ca": "Catalan",
|
|
@@ -20625,6 +20717,7 @@ var fr = {
|
|
|
20625
20717
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20626
20718
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20627
20719
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20720
|
+
"record.kind.data": "Donnée",
|
|
20628
20721
|
"record.kind.dataset": "Donnée",
|
|
20629
20722
|
"record.kind.reuse": "Réutilisation",
|
|
20630
20723
|
"record.kind.service": "Service",
|
|
@@ -20671,7 +20764,7 @@ var fr = {
|
|
|
20671
20764
|
"record.metadata.keywords": "Mots-clés",
|
|
20672
20765
|
"record.metadata.languages": "Langues",
|
|
20673
20766
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20674
|
-
"record.metadata.links": "
|
|
20767
|
+
"record.metadata.links": "Liens",
|
|
20675
20768
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20676
20769
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
20677
20770
|
"record.metadata.owner": "Catalogue d'origine",
|
|
@@ -20698,13 +20791,12 @@ var fr = {
|
|
|
20698
20791
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20699
20792
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20700
20793
|
"record.metadata.related": "Voir aussi",
|
|
20701
|
-
"record.metadata.related.contents": "
|
|
20794
|
+
"record.metadata.related.contents": "Contenu associé",
|
|
20702
20795
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20703
20796
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20704
20797
|
"record.metadata.status": "Statut",
|
|
20705
20798
|
"record.metadata.status.notPublished": "Non publié",
|
|
20706
20799
|
"record.metadata.status.published": "Publié",
|
|
20707
|
-
"record.metadata.technical": "Informations techniques",
|
|
20708
20800
|
"record.metadata.temporalExtent": "Étendue temporelle",
|
|
20709
20801
|
"record.metadata.temporalExtent.fromDateToDate": "Du { start } au { end }",
|
|
20710
20802
|
"record.metadata.temporalExtent.sinceDate": "Depuis le { start }",
|
|
@@ -20741,6 +20833,7 @@ var fr = {
|
|
|
20741
20833
|
"results.sortBy.popularity": "Popularité",
|
|
20742
20834
|
"results.sortBy.qualityScore": "Indicateur de qualité",
|
|
20743
20835
|
"results.sortBy.relevancy": "Pertinence",
|
|
20836
|
+
"reuse.metadata.access": "Accéder à la réutilisation",
|
|
20744
20837
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
20745
20838
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
20746
20839
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
|
|
@@ -20780,6 +20873,10 @@ var fr = {
|
|
|
20780
20873
|
"search.filters.producerOrg": "Producteur",
|
|
20781
20874
|
"search.filters.publicationYear": "Année de publication",
|
|
20782
20875
|
"search.filters.publisherOrg": "Distributeur",
|
|
20876
|
+
"search.filters.recordKind.all": "Tous",
|
|
20877
|
+
"search.filters.recordKind.dataset": "Jeux de données",
|
|
20878
|
+
"search.filters.recordKind.reuse": "Réutilisations",
|
|
20879
|
+
"search.filters.recordKind.service": "Services",
|
|
20783
20880
|
"search.filters.representationType": "Type de représentation",
|
|
20784
20881
|
"search.filters.resourceType": "Type de ressource",
|
|
20785
20882
|
"search.filters.standard": "Standard",
|
|
@@ -20790,6 +20887,26 @@ var fr = {
|
|
|
20790
20887
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
20791
20888
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les jeux de données portant sur la zone d'intérêt du catalogue seront montrés en premier; les jeux de données situés en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
20792
20889
|
"search.filters.user": "Éditeur",
|
|
20890
|
+
"service.metadata.capabilities": "Informations techniques",
|
|
20891
|
+
"service.metadata.capabilities.abstract": "Description",
|
|
20892
|
+
"service.metadata.capabilities.attribution": "Attribution",
|
|
20893
|
+
"service.metadata.capabilities.availableCrs": "CRS disponibles",
|
|
20894
|
+
"service.metadata.capabilities.defaultCrs": "CRS par défaut",
|
|
20895
|
+
"service.metadata.capabilities.geometryName": "Nom de la géométrie",
|
|
20896
|
+
"service.metadata.capabilities.geometryType": "Type de géométrie",
|
|
20897
|
+
"service.metadata.capabilities.keywords": "Mots-clés",
|
|
20898
|
+
"service.metadata.capabilities.name": "Nom",
|
|
20899
|
+
"service.metadata.capabilities.objectCount": "Nombre d'objets",
|
|
20900
|
+
"service.metadata.capabilities.otherCrs": "Autres CRS",
|
|
20901
|
+
"service.metadata.capabilities.outputFormats": "Formats de sortie",
|
|
20902
|
+
"service.metadata.capabilities.resourceLinks": "Liens vers les ressources",
|
|
20903
|
+
"service.metadata.capabilities.title": "Titre",
|
|
20904
|
+
"service.metadata.filter": "Les couches seront filtrées par titre et description",
|
|
20905
|
+
"service.metadata.filter.noLayers": "Aucune couche ne correspond à votre recherche",
|
|
20906
|
+
"service.metadata.other": "Autres informations",
|
|
20907
|
+
"service.metadata.question": "Poser une question",
|
|
20908
|
+
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
20909
|
+
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
20793
20910
|
"share.tab.permalink": "Partager",
|
|
20794
20911
|
"share.tab.webComponent": "Intégrer",
|
|
20795
20912
|
"table.loading.data": "Chargement des données...",
|
|
@@ -20807,6 +20924,8 @@ var fr = {
|
|
|
20807
20924
|
"tooltip.url.open": "Ouvrir l'URL",
|
|
20808
20925
|
"ui.readLess": "Réduire",
|
|
20809
20926
|
"ui.readMore": "Lire la suite",
|
|
20927
|
+
"ui.hideFullText": "Masquer le texte complet",
|
|
20928
|
+
"ui.showAllText": "Tout afficher",
|
|
20810
20929
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
20811
20930
|
"wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
|
|
20812
20931
|
"wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
|
|
@@ -20872,7 +20991,7 @@ var it = {
|
|
|
20872
20991
|
"datafeeder.month.september": "Settembre",
|
|
20873
20992
|
"datafeeder.wizardSummarize.createdAt": "Creato il",
|
|
20874
20993
|
"datafeeder.wizardSummarize.scale": "Scala",
|
|
20875
|
-
"datahub.header.datasets": "
|
|
20994
|
+
"datahub.header.datasets": "Catalogo",
|
|
20876
20995
|
"datahub.header.lastRecords": "Ultimi",
|
|
20877
20996
|
"datahub.header.myfavorites": "Miei preferiti",
|
|
20878
20997
|
"datahub.header.news": "Home",
|
|
@@ -21025,6 +21144,9 @@ var it = {
|
|
|
21025
21144
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21026
21145
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21027
21146
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21147
|
+
"editor.record.form.multilingual.enable": "",
|
|
21148
|
+
"editor.record.form.multilingual.open": "",
|
|
21149
|
+
"editor.record.form.multilingual.title": "",
|
|
21028
21150
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21029
21151
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21030
21152
|
"editor.record.form.page.resources": "Risorse",
|
|
@@ -21054,6 +21176,7 @@ var it = {
|
|
|
21054
21176
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21055
21177
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21056
21178
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21179
|
+
"editor.record.lock.format": "",
|
|
21057
21180
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21058
21181
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21059
21182
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21113,7 +21236,6 @@ var it = {
|
|
|
21113
21236
|
"input.image.dropFileLabel": "oppure trascinalo qui",
|
|
21114
21237
|
"input.image.selectFileLabel": "Seleziona un'immagine",
|
|
21115
21238
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21116
|
-
"input.image.uploadErrorRetry": "Riprova",
|
|
21117
21239
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21118
21240
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21119
21241
|
"language.ca": "Catalano",
|
|
@@ -21180,6 +21302,7 @@ var it = {
|
|
|
21180
21302
|
"record.card.metadata.contact": "",
|
|
21181
21303
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21182
21304
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21305
|
+
"record.kind.data": "",
|
|
21183
21306
|
"record.kind.dataset": "",
|
|
21184
21307
|
"record.kind.reuse": "",
|
|
21185
21308
|
"record.kind.service": "",
|
|
@@ -21253,13 +21376,12 @@ var it = {
|
|
|
21253
21376
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21254
21377
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21255
21378
|
"record.metadata.related": "Vedi anche",
|
|
21256
|
-
"record.metadata.related.contents": "
|
|
21379
|
+
"record.metadata.related.contents": "",
|
|
21257
21380
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21258
21381
|
"record.metadata.sheet": "Origine del metadata",
|
|
21259
21382
|
"record.metadata.status": "Stato",
|
|
21260
21383
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21261
21384
|
"record.metadata.status.published": "Pubblicato",
|
|
21262
|
-
"record.metadata.technical": "Informazioni tecniche",
|
|
21263
21385
|
"record.metadata.temporalExtent": "Periodo di tempo",
|
|
21264
21386
|
"record.metadata.temporalExtent.fromDateToDate": "Da {start} a {end}",
|
|
21265
21387
|
"record.metadata.temporalExtent.sinceDate": "Dal {start}",
|
|
@@ -21296,6 +21418,7 @@ var it = {
|
|
|
21296
21418
|
"results.sortBy.popularity": "Popolarità",
|
|
21297
21419
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21298
21420
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21421
|
+
"reuse.metadata.access": "",
|
|
21299
21422
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21300
21423
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21301
21424
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21335,6 +21458,10 @@ var it = {
|
|
|
21335
21458
|
"search.filters.producerOrg": "Produttore",
|
|
21336
21459
|
"search.filters.publicationYear": "Anno di pubblicazione",
|
|
21337
21460
|
"search.filters.publisherOrg": "Distributore",
|
|
21461
|
+
"search.filters.recordKind.all": "Tutti",
|
|
21462
|
+
"search.filters.recordKind.dataset": "Dataset",
|
|
21463
|
+
"search.filters.recordKind.reuse": "Riutilizzi",
|
|
21464
|
+
"search.filters.recordKind.service": "Servizi",
|
|
21338
21465
|
"search.filters.representationType": "Tipo di rappresentazione",
|
|
21339
21466
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
21340
21467
|
"search.filters.standard": "Standard",
|
|
@@ -21345,6 +21472,26 @@ var it = {
|
|
|
21345
21472
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
21346
21473
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
21347
21474
|
"search.filters.user": "Editore",
|
|
21475
|
+
"service.metadata.capabilities": "Informazioni tecniche",
|
|
21476
|
+
"service.metadata.capabilities.abstract": "",
|
|
21477
|
+
"service.metadata.capabilities.attribution": "",
|
|
21478
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
21479
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
21480
|
+
"service.metadata.capabilities.geometryName": "",
|
|
21481
|
+
"service.metadata.capabilities.geometryType": "",
|
|
21482
|
+
"service.metadata.capabilities.keywords": "",
|
|
21483
|
+
"service.metadata.capabilities.name": "",
|
|
21484
|
+
"service.metadata.capabilities.objectCount": "",
|
|
21485
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
21486
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
21487
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
21488
|
+
"service.metadata.capabilities.title": "",
|
|
21489
|
+
"service.metadata.filter": "",
|
|
21490
|
+
"service.metadata.filter.noLayers": "",
|
|
21491
|
+
"service.metadata.other": "",
|
|
21492
|
+
"service.metadata.question": "",
|
|
21493
|
+
"service.metadata.search": "",
|
|
21494
|
+
"service.metadata.spatialExtent": "",
|
|
21348
21495
|
"share.tab.permalink": "Condividere",
|
|
21349
21496
|
"share.tab.webComponent": "Incorporare",
|
|
21350
21497
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21427,7 +21574,7 @@ var nl = {
|
|
|
21427
21574
|
"datafeeder.month.september": "",
|
|
21428
21575
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
21429
21576
|
"datafeeder.wizardSummarize.scale": "",
|
|
21430
|
-
"datahub.header.datasets": "",
|
|
21577
|
+
"datahub.header.datasets": "Catalog",
|
|
21431
21578
|
"datahub.header.lastRecords": "",
|
|
21432
21579
|
"datahub.header.myfavorites": "",
|
|
21433
21580
|
"datahub.header.news": "",
|
|
@@ -21580,6 +21727,9 @@ var nl = {
|
|
|
21580
21727
|
"editor.record.form.license.odc-by": "",
|
|
21581
21728
|
"editor.record.form.license.pddl": "",
|
|
21582
21729
|
"editor.record.form.license.unknown": "",
|
|
21730
|
+
"editor.record.form.multilingual.enable": "",
|
|
21731
|
+
"editor.record.form.multilingual.open": "",
|
|
21732
|
+
"editor.record.form.multilingual.title": "",
|
|
21583
21733
|
"editor.record.form.page.accessAndContact": "",
|
|
21584
21734
|
"editor.record.form.page.description": "",
|
|
21585
21735
|
"editor.record.form.page.resources": "",
|
|
@@ -21609,6 +21759,7 @@ var nl = {
|
|
|
21609
21759
|
"editor.record.loadError.body": "",
|
|
21610
21760
|
"editor.record.loadError.closeMessage": "",
|
|
21611
21761
|
"editor.record.loadError.title": "",
|
|
21762
|
+
"editor.record.lock.format": "",
|
|
21612
21763
|
"editor.record.lock.reason": "",
|
|
21613
21764
|
"editor.record.onlineResource.protocol.other": "",
|
|
21614
21765
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -21668,7 +21819,6 @@ var nl = {
|
|
|
21668
21819
|
"input.image.dropFileLabel": "",
|
|
21669
21820
|
"input.image.selectFileLabel": "",
|
|
21670
21821
|
"input.image.uploadErrorLabel": "",
|
|
21671
|
-
"input.image.uploadErrorRetry": "",
|
|
21672
21822
|
"input.image.uploadProgressCancel": "",
|
|
21673
21823
|
"input.image.uploadProgressLabel": "",
|
|
21674
21824
|
"language.ca": "Catalaans",
|
|
@@ -21735,6 +21885,7 @@ var nl = {
|
|
|
21735
21885
|
"record.card.metadata.contact": "",
|
|
21736
21886
|
"record.externalViewer.open": "",
|
|
21737
21887
|
"record.feature.limit": "",
|
|
21888
|
+
"record.kind.data": "",
|
|
21738
21889
|
"record.kind.dataset": "",
|
|
21739
21890
|
"record.kind.reuse": "",
|
|
21740
21891
|
"record.kind.service": "",
|
|
@@ -21808,13 +21959,12 @@ var nl = {
|
|
|
21808
21959
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21809
21960
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21810
21961
|
"record.metadata.related": "",
|
|
21811
|
-
"record.metadata.related.contents": "
|
|
21962
|
+
"record.metadata.related.contents": "",
|
|
21812
21963
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21813
21964
|
"record.metadata.sheet": "",
|
|
21814
21965
|
"record.metadata.status": "",
|
|
21815
21966
|
"record.metadata.status.notPublished": "",
|
|
21816
21967
|
"record.metadata.status.published": "",
|
|
21817
|
-
"record.metadata.technical": "",
|
|
21818
21968
|
"record.metadata.temporalExtent": "",
|
|
21819
21969
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
21820
21970
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -21851,6 +22001,7 @@ var nl = {
|
|
|
21851
22001
|
"results.sortBy.popularity": "",
|
|
21852
22002
|
"results.sortBy.qualityScore": "",
|
|
21853
22003
|
"results.sortBy.relevancy": "",
|
|
22004
|
+
"reuse.metadata.access": "",
|
|
21854
22005
|
"search.autocomplete.error": "",
|
|
21855
22006
|
"search.error.couldNotReachApi": "",
|
|
21856
22007
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -21890,6 +22041,10 @@ var nl = {
|
|
|
21890
22041
|
"search.filters.producerOrg": "",
|
|
21891
22042
|
"search.filters.publicationYear": "",
|
|
21892
22043
|
"search.filters.publisherOrg": "",
|
|
22044
|
+
"search.filters.recordKind.all": "Alles",
|
|
22045
|
+
"search.filters.recordKind.dataset": "",
|
|
22046
|
+
"search.filters.recordKind.reuse": "",
|
|
22047
|
+
"search.filters.recordKind.service": "",
|
|
21893
22048
|
"search.filters.representationType": "",
|
|
21894
22049
|
"search.filters.resourceType": "",
|
|
21895
22050
|
"search.filters.standard": "",
|
|
@@ -21900,6 +22055,26 @@ var nl = {
|
|
|
21900
22055
|
"search.filters.useSpatialFilter": "",
|
|
21901
22056
|
"search.filters.useSpatialFilterHelp": "",
|
|
21902
22057
|
"search.filters.user": "",
|
|
22058
|
+
"service.metadata.capabilities": "",
|
|
22059
|
+
"service.metadata.capabilities.abstract": "",
|
|
22060
|
+
"service.metadata.capabilities.attribution": "",
|
|
22061
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22062
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22063
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22064
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22065
|
+
"service.metadata.capabilities.keywords": "",
|
|
22066
|
+
"service.metadata.capabilities.name": "",
|
|
22067
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22068
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22069
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22070
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22071
|
+
"service.metadata.capabilities.title": "",
|
|
22072
|
+
"service.metadata.filter": "",
|
|
22073
|
+
"service.metadata.filter.noLayers": "",
|
|
22074
|
+
"service.metadata.other": "",
|
|
22075
|
+
"service.metadata.question": "",
|
|
22076
|
+
"service.metadata.search": "",
|
|
22077
|
+
"service.metadata.spatialExtent": "",
|
|
21903
22078
|
"share.tab.permalink": "",
|
|
21904
22079
|
"share.tab.webComponent": "",
|
|
21905
22080
|
"table.loading.data": "",
|
|
@@ -21982,7 +22157,7 @@ var pt = {
|
|
|
21982
22157
|
"datafeeder.month.september": "",
|
|
21983
22158
|
"datafeeder.wizardSummarize.createdAt": "",
|
|
21984
22159
|
"datafeeder.wizardSummarize.scale": "",
|
|
21985
|
-
"datahub.header.datasets": "",
|
|
22160
|
+
"datahub.header.datasets": "Catálogo",
|
|
21986
22161
|
"datahub.header.lastRecords": "",
|
|
21987
22162
|
"datahub.header.myfavorites": "",
|
|
21988
22163
|
"datahub.header.news": "",
|
|
@@ -22135,6 +22310,9 @@ var pt = {
|
|
|
22135
22310
|
"editor.record.form.license.odc-by": "",
|
|
22136
22311
|
"editor.record.form.license.pddl": "",
|
|
22137
22312
|
"editor.record.form.license.unknown": "",
|
|
22313
|
+
"editor.record.form.multilingual.enable": "",
|
|
22314
|
+
"editor.record.form.multilingual.open": "",
|
|
22315
|
+
"editor.record.form.multilingual.title": "",
|
|
22138
22316
|
"editor.record.form.page.accessAndContact": "",
|
|
22139
22317
|
"editor.record.form.page.description": "",
|
|
22140
22318
|
"editor.record.form.page.resources": "",
|
|
@@ -22164,6 +22342,7 @@ var pt = {
|
|
|
22164
22342
|
"editor.record.loadError.body": "",
|
|
22165
22343
|
"editor.record.loadError.closeMessage": "",
|
|
22166
22344
|
"editor.record.loadError.title": "",
|
|
22345
|
+
"editor.record.lock.format": "",
|
|
22167
22346
|
"editor.record.lock.reason": "",
|
|
22168
22347
|
"editor.record.onlineResource.protocol.other": "",
|
|
22169
22348
|
"editor.record.onlineResourceError.body": "",
|
|
@@ -22223,7 +22402,6 @@ var pt = {
|
|
|
22223
22402
|
"input.image.dropFileLabel": "",
|
|
22224
22403
|
"input.image.selectFileLabel": "",
|
|
22225
22404
|
"input.image.uploadErrorLabel": "",
|
|
22226
|
-
"input.image.uploadErrorRetry": "",
|
|
22227
22405
|
"input.image.uploadProgressCancel": "",
|
|
22228
22406
|
"input.image.uploadProgressLabel": "",
|
|
22229
22407
|
"language.ca": "Catalão",
|
|
@@ -22290,6 +22468,7 @@ var pt = {
|
|
|
22290
22468
|
"record.card.metadata.contact": "",
|
|
22291
22469
|
"record.externalViewer.open": "",
|
|
22292
22470
|
"record.feature.limit": "",
|
|
22471
|
+
"record.kind.data": "",
|
|
22293
22472
|
"record.kind.dataset": "",
|
|
22294
22473
|
"record.kind.reuse": "",
|
|
22295
22474
|
"record.kind.service": "",
|
|
@@ -22363,13 +22542,12 @@ var pt = {
|
|
|
22363
22542
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22364
22543
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22365
22544
|
"record.metadata.related": "",
|
|
22366
|
-
"record.metadata.related.contents": "
|
|
22545
|
+
"record.metadata.related.contents": "",
|
|
22367
22546
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22368
22547
|
"record.metadata.sheet": "",
|
|
22369
22548
|
"record.metadata.status": "",
|
|
22370
22549
|
"record.metadata.status.notPublished": "",
|
|
22371
22550
|
"record.metadata.status.published": "",
|
|
22372
|
-
"record.metadata.technical": "",
|
|
22373
22551
|
"record.metadata.temporalExtent": "",
|
|
22374
22552
|
"record.metadata.temporalExtent.fromDateToDate": "",
|
|
22375
22553
|
"record.metadata.temporalExtent.sinceDate": "",
|
|
@@ -22406,6 +22584,7 @@ var pt = {
|
|
|
22406
22584
|
"results.sortBy.popularity": "",
|
|
22407
22585
|
"results.sortBy.qualityScore": "",
|
|
22408
22586
|
"results.sortBy.relevancy": "",
|
|
22587
|
+
"reuse.metadata.access": "",
|
|
22409
22588
|
"search.autocomplete.error": "",
|
|
22410
22589
|
"search.error.couldNotReachApi": "",
|
|
22411
22590
|
"search.error.organizationHasNoDataset": "",
|
|
@@ -22445,6 +22624,10 @@ var pt = {
|
|
|
22445
22624
|
"search.filters.producerOrg": "",
|
|
22446
22625
|
"search.filters.publicationYear": "",
|
|
22447
22626
|
"search.filters.publisherOrg": "",
|
|
22627
|
+
"search.filters.recordKind.all": "Todos",
|
|
22628
|
+
"search.filters.recordKind.dataset": "",
|
|
22629
|
+
"search.filters.recordKind.reuse": "",
|
|
22630
|
+
"search.filters.recordKind.service": "",
|
|
22448
22631
|
"search.filters.representationType": "",
|
|
22449
22632
|
"search.filters.resourceType": "",
|
|
22450
22633
|
"search.filters.standard": "",
|
|
@@ -22455,6 +22638,26 @@ var pt = {
|
|
|
22455
22638
|
"search.filters.useSpatialFilter": "",
|
|
22456
22639
|
"search.filters.useSpatialFilterHelp": "",
|
|
22457
22640
|
"search.filters.user": "",
|
|
22641
|
+
"service.metadata.capabilities": "",
|
|
22642
|
+
"service.metadata.capabilities.abstract": "",
|
|
22643
|
+
"service.metadata.capabilities.attribution": "",
|
|
22644
|
+
"service.metadata.capabilities.availableCrs": "",
|
|
22645
|
+
"service.metadata.capabilities.defaultCrs": "",
|
|
22646
|
+
"service.metadata.capabilities.geometryName": "",
|
|
22647
|
+
"service.metadata.capabilities.geometryType": "",
|
|
22648
|
+
"service.metadata.capabilities.keywords": "",
|
|
22649
|
+
"service.metadata.capabilities.name": "",
|
|
22650
|
+
"service.metadata.capabilities.objectCount": "",
|
|
22651
|
+
"service.metadata.capabilities.otherCrs": "",
|
|
22652
|
+
"service.metadata.capabilities.outputFormats": "",
|
|
22653
|
+
"service.metadata.capabilities.resourceLinks": "",
|
|
22654
|
+
"service.metadata.capabilities.title": "",
|
|
22655
|
+
"service.metadata.filter": "",
|
|
22656
|
+
"service.metadata.filter.noLayers": "",
|
|
22657
|
+
"service.metadata.other": "",
|
|
22658
|
+
"service.metadata.question": "",
|
|
22659
|
+
"service.metadata.search": "",
|
|
22660
|
+
"service.metadata.spatialExtent": "",
|
|
22458
22661
|
"share.tab.permalink": "",
|
|
22459
22662
|
"share.tab.webComponent": "",
|
|
22460
22663
|
"table.loading.data": "",
|
|
@@ -22803,8 +23006,8 @@ class Gn4FieldMapper {
|
|
|
22803
23006
|
return {
|
|
22804
23007
|
...distribution,
|
|
22805
23008
|
type,
|
|
22806
|
-
|
|
22807
|
-
|
|
23009
|
+
url: url,
|
|
23010
|
+
accessServiceProtocol: accessServiceProtocol,
|
|
22808
23011
|
};
|
|
22809
23012
|
}
|
|
22810
23013
|
};
|
|
@@ -23200,14 +23403,6 @@ class ElasticsearchService {
|
|
|
23200
23403
|
}
|
|
23201
23404
|
mustNotFilters() {
|
|
23202
23405
|
return [
|
|
23203
|
-
{
|
|
23204
|
-
...this.queryFilterOnValues('resourceType', [
|
|
23205
|
-
'service',
|
|
23206
|
-
'map',
|
|
23207
|
-
'map/static',
|
|
23208
|
-
'mapDigital',
|
|
23209
|
-
]),
|
|
23210
|
-
},
|
|
23211
23406
|
{
|
|
23212
23407
|
query_string: {
|
|
23213
23408
|
query: 'resourceType:featureCatalog AND !resourceType:dataset AND !cl_level.key:dataset',
|
|
@@ -23306,7 +23501,7 @@ class ElasticsearchService {
|
|
|
23306
23501
|
must_not: this.mustNotFilters(),
|
|
23307
23502
|
},
|
|
23308
23503
|
},
|
|
23309
|
-
_source: ['resourceTitleObject', 'uuid'],
|
|
23504
|
+
_source: ['resourceTitleObject', 'uuid', 'resourceType'],
|
|
23310
23505
|
from: 0,
|
|
23311
23506
|
size: 20,
|
|
23312
23507
|
};
|
|
@@ -25044,7 +25239,7 @@ function getLinkLabel(link) {
|
|
|
25044
25239
|
default:
|
|
25045
25240
|
format = getFileFormat(link);
|
|
25046
25241
|
}
|
|
25047
|
-
const label = link.description || link.name;
|
|
25242
|
+
const label = link.description || ('name' in link ? link.name : '');
|
|
25048
25243
|
return format ? `${label} (${format})` : label;
|
|
25049
25244
|
}
|
|
25050
25245
|
async function getLayers(url, serviceProtocol) {
|
|
@@ -25055,14 +25250,21 @@ async function getLayers(url, serviceProtocol) {
|
|
|
25055
25250
|
}
|
|
25056
25251
|
case 'wfs': {
|
|
25057
25252
|
const endpointWfs = await new WfsEndpoint(url).isReady();
|
|
25058
|
-
|
|
25253
|
+
const featureTypes = await endpointWfs.getFeatureTypes();
|
|
25254
|
+
const layers = await Promise.all(featureTypes.map(async (collection) => {
|
|
25255
|
+
return await endpointWfs.getFeatureTypeFull(collection.name);
|
|
25256
|
+
}));
|
|
25257
|
+
return layers;
|
|
25059
25258
|
}
|
|
25060
25259
|
case 'wms': {
|
|
25061
25260
|
const endpointWms = await new WmsEndpoint(url).isReady();
|
|
25062
|
-
|
|
25261
|
+
const layers = (await endpointWms
|
|
25063
25262
|
.getLayers()
|
|
25064
25263
|
.flatMap(wmsLayerFlatten)
|
|
25065
|
-
.filter((l) => l.name)
|
|
25264
|
+
.filter((l) => l.name)).map((collection) => {
|
|
25265
|
+
return endpointWms.getLayerByName(collection.name);
|
|
25266
|
+
});
|
|
25267
|
+
return layers;
|
|
25066
25268
|
}
|
|
25067
25269
|
case 'wmts': {
|
|
25068
25270
|
const endpointWmts = await new WmtsEndpoint(url).isReady();
|
|
@@ -25099,6 +25301,7 @@ var LinkUsage;
|
|
|
25099
25301
|
class LinkClassifierService {
|
|
25100
25302
|
getUsagesForLink(link) {
|
|
25101
25303
|
switch (link.type) {
|
|
25304
|
+
case 'endpoint':
|
|
25102
25305
|
case 'service': {
|
|
25103
25306
|
switch (link.accessServiceProtocol) {
|
|
25104
25307
|
case 'esriRest':
|
|
@@ -25147,6 +25350,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25147
25350
|
}]
|
|
25148
25351
|
}] });
|
|
25149
25352
|
|
|
25353
|
+
var name = "geonetwork-ui";
|
|
25354
|
+
var version = "2.6.0-dev.c4b99cdef";
|
|
25355
|
+
var engines = {
|
|
25356
|
+
node: ">=20"
|
|
25357
|
+
};
|
|
25358
|
+
var main = "./index.ts";
|
|
25359
|
+
var type = "module";
|
|
25360
|
+
var exports = {
|
|
25361
|
+
"./tailwind.base.config.js": "./tailwind.base.config.js",
|
|
25362
|
+
"./style.css": "./style.css"
|
|
25363
|
+
};
|
|
25364
|
+
var repository = {
|
|
25365
|
+
url: "https://github.com/geonetwork/geonetwork-ui"
|
|
25366
|
+
};
|
|
25367
|
+
var peerDependencies = {
|
|
25368
|
+
"@angular/animations": "17.x || 18.x || 19.x",
|
|
25369
|
+
"@angular/cdk": "17.x || 18.x || 19.x",
|
|
25370
|
+
"@angular/common": "17.x || 18.x || 19.x",
|
|
25371
|
+
"@angular/compiler": "17.x || 18.x || 19.x",
|
|
25372
|
+
"@angular/core": "17.x || 18.x || 19.x",
|
|
25373
|
+
"@angular/forms": "17.x || 18.x || 19.x",
|
|
25374
|
+
"@angular/material": "17.x || 18.x || 19.x",
|
|
25375
|
+
"@angular/material-moment-adapter": "17.x || 18.x || 19.x",
|
|
25376
|
+
"@angular/platform-browser": "17.x || 18.x || 19.x",
|
|
25377
|
+
"@angular/platform-browser-dynamic": "17.x || 18.x || 19.x",
|
|
25378
|
+
"@angular/router": "17.x || 18.x || 19.x",
|
|
25379
|
+
"@ngrx/component": "17.x || 18.x || 19.x",
|
|
25380
|
+
"@ngrx/effects": "17.x || 18.x || 19.x",
|
|
25381
|
+
"@ngrx/router-store": "17.x || 18.x || 19.x",
|
|
25382
|
+
"@ngrx/store": "17.x || 18.x || 19.x",
|
|
25383
|
+
"@ngrx/store-devtools": "17.x || 18.x || 19.x",
|
|
25384
|
+
"@ngrx/operators": "18.x",
|
|
25385
|
+
"@ngx-translate/core": "15.x",
|
|
25386
|
+
"@ngx-translate/http-loader": "16.x",
|
|
25387
|
+
rxjs: "7.x",
|
|
25388
|
+
"zone.js": "*",
|
|
25389
|
+
tailwindcss: "3.x"
|
|
25390
|
+
};
|
|
25391
|
+
var dependencies = {
|
|
25392
|
+
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
|
|
25393
|
+
"@camptocamp/ogc-client": "1.1.1-dev.3e2d3cc",
|
|
25394
|
+
"@geospatial-sdk/core": "0.0.5-dev.31",
|
|
25395
|
+
"@geospatial-sdk/geocoding": "0.0.5-dev.31",
|
|
25396
|
+
"@geospatial-sdk/legend": "0.0.5-dev.31",
|
|
25397
|
+
"@geospatial-sdk/openlayers": "0.0.5-dev.31",
|
|
25398
|
+
"@ltd/j-toml": "~1.35.2",
|
|
25399
|
+
"@messageformat/core": "^3.0.1",
|
|
25400
|
+
"@ng-icons/core": "29.10.0",
|
|
25401
|
+
"@ng-icons/iconoir": "29.10.0",
|
|
25402
|
+
"@ng-icons/material-icons": "29.10.0",
|
|
25403
|
+
"@ng-icons/tabler-icons": "29.10.0",
|
|
25404
|
+
"@nx/angular": "20.2.2",
|
|
25405
|
+
"@rgrove/parse-xml": "4.2.0",
|
|
25406
|
+
alasql: "4.6.0",
|
|
25407
|
+
axios: "1.7.9",
|
|
25408
|
+
basiclightbox: "^5.0.4",
|
|
25409
|
+
"chart.js": "4.4.7",
|
|
25410
|
+
"chroma-js": "3.1.2",
|
|
25411
|
+
"date-fns": "4.1.0",
|
|
25412
|
+
"document-register-element": "^1.14.10",
|
|
25413
|
+
"duration-relativetimeformat": "^2.0.4",
|
|
25414
|
+
"embla-carousel": "8.5.1",
|
|
25415
|
+
express: "^4.21.1",
|
|
25416
|
+
"geojson-validation": "^1.0.2",
|
|
25417
|
+
marked: "15.0.4",
|
|
25418
|
+
moment: "2.30.1",
|
|
25419
|
+
"ng-table-virtual-scroll": "1.6.1",
|
|
25420
|
+
"ngx-chips": "3.0.0",
|
|
25421
|
+
"ngx-dropzone": "3.1.0",
|
|
25422
|
+
"ngx-translate-messageformat-compiler": "7.0.0",
|
|
25423
|
+
ol: "^8.2.0",
|
|
25424
|
+
papaparse: "5.4.1",
|
|
25425
|
+
pg: "^8.9.0",
|
|
25426
|
+
proj4: "^2.9.2",
|
|
25427
|
+
rdflib: "^2.2.35",
|
|
25428
|
+
"reflect-metadata": "^0.1.13",
|
|
25429
|
+
semver: "7.6.3",
|
|
25430
|
+
"tippy.js": "6.3.7",
|
|
25431
|
+
tslib: "^2.3.0",
|
|
25432
|
+
typeorm: "^0.3.14",
|
|
25433
|
+
"whatwg-fetch": "^3.6.2",
|
|
25434
|
+
xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
|
|
25435
|
+
};
|
|
25436
|
+
var packageJson = {
|
|
25437
|
+
name: name,
|
|
25438
|
+
version: version,
|
|
25439
|
+
engines: engines,
|
|
25440
|
+
main: main,
|
|
25441
|
+
type: type,
|
|
25442
|
+
exports: exports,
|
|
25443
|
+
repository: repository,
|
|
25444
|
+
peerDependencies: peerDependencies,
|
|
25445
|
+
dependencies: dependencies
|
|
25446
|
+
};
|
|
25447
|
+
|
|
25448
|
+
const GEONETWORK_UI_VERSION = packageJson.version;
|
|
25449
|
+
const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
|
|
25450
|
+
? 'main'
|
|
25451
|
+
: `v${packageJson.version}`;
|
|
25452
|
+
|
|
25150
25453
|
const minApiVersion = '4.2.2';
|
|
25151
25454
|
class Gn4PlatformService {
|
|
25152
25455
|
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService, httpClient, recordsApiService) {
|
|
@@ -25340,12 +25643,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25340
25643
|
type: Injectable
|
|
25341
25644
|
}], ctorParameters: () => [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }, { type: i1.HttpClient }, { type: RecordsApiService }] });
|
|
25342
25645
|
|
|
25646
|
+
class RecordsRepositoryInterface {
|
|
25647
|
+
}
|
|
25648
|
+
|
|
25343
25649
|
function provideGn4() {
|
|
25344
25650
|
return [
|
|
25345
25651
|
{
|
|
25346
25652
|
provide: PlatformServiceInterface,
|
|
25347
25653
|
useClass: Gn4PlatformService,
|
|
25348
25654
|
},
|
|
25655
|
+
{
|
|
25656
|
+
provide: RecordsRepositoryInterface,
|
|
25657
|
+
useClass: Gn4Repository,
|
|
25658
|
+
},
|
|
25349
25659
|
Gn4PlatformMapper,
|
|
25350
25660
|
];
|
|
25351
25661
|
}
|
|
@@ -25602,11 +25912,11 @@ class CarouselComponent {
|
|
|
25602
25912
|
.on('select', this.refreshSteps);
|
|
25603
25913
|
}
|
|
25604
25914
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25605
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative
|
|
25915
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full block\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25606
25916
|
}
|
|
25607
25917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
25608
25918
|
type: Component,
|
|
25609
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative
|
|
25919
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full block\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative}\n"] }]
|
|
25610
25920
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselOverflowContainer: [{
|
|
25611
25921
|
type: ViewChild,
|
|
25612
25922
|
args: ['carouselOverflowContainer']
|
|
@@ -25730,11 +26040,11 @@ class MaxLinesComponent {
|
|
|
25730
26040
|
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
25731
26041
|
}
|
|
25732
26042
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25733
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-
|
|
26043
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25734
26044
|
}
|
|
25735
26045
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
25736
26046
|
type: Component,
|
|
25737
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-
|
|
26047
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
25738
26048
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
25739
26049
|
type: Input
|
|
25740
26050
|
}], container: [{
|
|
@@ -25777,6 +26087,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25777
26087
|
type: Output
|
|
25778
26088
|
}] } });
|
|
25779
26089
|
|
|
26090
|
+
marker('editor.record.lock.reason');
|
|
26091
|
+
marker('editor.record.lock.format');
|
|
25780
26092
|
class InteractiveTableComponent {
|
|
25781
26093
|
constructor() {
|
|
25782
26094
|
this.items = [];
|
|
@@ -25794,15 +26106,24 @@ class InteractiveTableComponent {
|
|
|
25794
26106
|
.join(' '),
|
|
25795
26107
|
};
|
|
25796
26108
|
}
|
|
26109
|
+
getItemTitle(item) {
|
|
26110
|
+
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26111
|
+
return 'editor.record.lock.reason';
|
|
26112
|
+
}
|
|
26113
|
+
else if (item.kind !== 'dataset') {
|
|
26114
|
+
return 'editor.record.lock.format';
|
|
26115
|
+
}
|
|
26116
|
+
return '';
|
|
26117
|
+
}
|
|
25797
26118
|
handleRowClick(item) {
|
|
25798
26119
|
this.itemClick.emit(item);
|
|
25799
26120
|
}
|
|
25800
26121
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25801
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25802
26123
|
}
|
|
25803
26124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
25804
26125
|
type: Component,
|
|
25805
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"
|
|
26126
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
25806
26127
|
}], propDecorators: { columns: [{
|
|
25807
26128
|
type: ContentChildren,
|
|
25808
26129
|
args: [InteractiveTableColumnComponent]
|
|
@@ -25903,14 +26224,16 @@ class BlockListComponent {
|
|
|
25903
26224
|
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
25904
26225
|
}
|
|
25905
26226
|
get currentPage() {
|
|
25906
|
-
return this.currentPage_ + 1;
|
|
26227
|
+
return this.currentPage_ + 1;
|
|
25907
26228
|
}
|
|
25908
26229
|
constructor(changeDetector) {
|
|
25909
26230
|
this.changeDetector = changeDetector;
|
|
25910
|
-
this.pageSize =
|
|
26231
|
+
this.pageSize = 4;
|
|
25911
26232
|
this.containerClass = '';
|
|
25912
26233
|
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
25913
26234
|
this.minHeight = 0;
|
|
26235
|
+
this.listChanges = new EventEmitter();
|
|
26236
|
+
this.subComponentSize = 'M';
|
|
25914
26237
|
this.currentPage_ = 0;
|
|
25915
26238
|
this.refreshBlocksVisibility = () => {
|
|
25916
26239
|
this.blocks.forEach((block, index) => {
|
|
@@ -25923,13 +26246,48 @@ class BlockListComponent {
|
|
|
25923
26246
|
};
|
|
25924
26247
|
}
|
|
25925
26248
|
ngAfterViewInit() {
|
|
25926
|
-
this.blocks.changes.subscribe(
|
|
26249
|
+
this.blocks.changes.subscribe(() => {
|
|
26250
|
+
this.updateSizes();
|
|
26251
|
+
this.refreshBlocksVisibility();
|
|
26252
|
+
this.goToPage(1);
|
|
26253
|
+
this.changeDetector.detectChanges();
|
|
26254
|
+
this.listChanges.emit(this);
|
|
26255
|
+
});
|
|
26256
|
+
this.updateSizes();
|
|
25927
26257
|
this.refreshBlocksVisibility();
|
|
25928
26258
|
// we store the first height as the min-height of the list container
|
|
25929
26259
|
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
25930
26260
|
this.changeDetector.detectChanges();
|
|
26261
|
+
this.listChanges.emit(this);
|
|
26262
|
+
}
|
|
26263
|
+
updateSizes() {
|
|
26264
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
26265
|
+
this.pageSize = this.computePageSize();
|
|
26266
|
+
}
|
|
26267
|
+
computeSubComponentSize() {
|
|
26268
|
+
if (!this.blocks)
|
|
26269
|
+
return 'M';
|
|
26270
|
+
const subComponentsCount = this.blocks.length;
|
|
26271
|
+
if (subComponentsCount <= 3)
|
|
26272
|
+
return 'L';
|
|
26273
|
+
if (subComponentsCount <= 12)
|
|
26274
|
+
return 'M';
|
|
26275
|
+
if (subComponentsCount <= 18)
|
|
26276
|
+
return 'S';
|
|
26277
|
+
return 'XS';
|
|
26278
|
+
}
|
|
26279
|
+
computePageSize() {
|
|
26280
|
+
switch (this.subComponentSize) {
|
|
26281
|
+
case 'L':
|
|
26282
|
+
return 3;
|
|
26283
|
+
case 'S':
|
|
26284
|
+
return 6;
|
|
26285
|
+
case 'XS':
|
|
26286
|
+
return 8;
|
|
26287
|
+
default:
|
|
26288
|
+
return 4;
|
|
26289
|
+
}
|
|
25931
26290
|
}
|
|
25932
|
-
// pageIndex is 1-based
|
|
25933
26291
|
goToPage(pageIndex) {
|
|
25934
26292
|
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
25935
26293
|
this.changeDetector.detectChanges();
|
|
@@ -25946,14 +26304,12 @@ class BlockListComponent {
|
|
|
25946
26304
|
this.goToPage(this.currentPage + 1);
|
|
25947
26305
|
}
|
|
25948
26306
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25949
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: {
|
|
26307
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, outputs: { listChanges: "listChanges" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25950
26308
|
}
|
|
25951
26309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
25952
26310
|
type: Component,
|
|
25953
|
-
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"
|
|
25954
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: {
|
|
25955
|
-
type: Input
|
|
25956
|
-
}], containerClass: [{
|
|
26311
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"] }]
|
|
26312
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
25957
26313
|
type: Input
|
|
25958
26314
|
}], paginationContainerClass: [{
|
|
25959
26315
|
type: Input
|
|
@@ -25963,6 +26319,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25963
26319
|
}], blockContainer: [{
|
|
25964
26320
|
type: ViewChild,
|
|
25965
26321
|
args: ['blockContainer']
|
|
26322
|
+
}], listChanges: [{
|
|
26323
|
+
type: Output
|
|
25966
26324
|
}] } });
|
|
25967
26325
|
|
|
25968
26326
|
class ColorScaleComponent {
|
|
@@ -26046,11 +26404,11 @@ class ProgressBarComponent {
|
|
|
26046
26404
|
}
|
|
26047
26405
|
}
|
|
26048
26406
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26049
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }}
|
|
26407
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, isStandalone: true, selector: "gn-ui-progress-bar", inputs: { value: "value", type: "type" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} font-medium mr-2\n text-opacity-100 !text-slate-800\"\n data-cy=\"progressPercentage\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"], dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] }); }
|
|
26050
26408
|
}
|
|
26051
26409
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
26052
26410
|
type: Component,
|
|
26053
|
-
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }}
|
|
26411
|
+
args: [{ selector: 'gn-ui-progress-bar', standalone: true, imports: [NgSwitch, NgSwitchCase, NgSwitchDefault], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Light Theme -->\n <ng-container *ngSwitchCase=\"'light'\">\n <div class=\"flex items-center relative\">\n <div\n class=\"flex-shrink-0 {{ color.text }} font-medium mr-2\n text-opacity-100 !text-slate-800\"\n data-cy=\"progressPercentage\"\n >\n {{ progress }}%\n </div>\n <div class=\"flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full\">\n <div\n [style.width.%]=\"progress\"\n class=\"{{ color.innerBar }} transition-width duration-500\n ease-in-out rounded-full shadow-sm w-[52px] h-[4px]\"\n ></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Default / Primary / Secondary Themes -->\n <ng-container *ngSwitchDefault>\n <div class=\"flex h-full {{ color.outerBar }} rounded-t-lg rounded-b-lg\">\n <div\n [style.width.%]=\"progress\"\n class=\"flex {{ color.innerBar }} my-1 mx-1 transition-width\n duration-500 ease-in-out rounded-t-md rounded-b-md shadow-xl\"\n >\n <div\n class=\"flex items-center pl-2 py-1 {{ color.text }} font-bold text-4\"\n >\n {{ progress }}%\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".font-bold{font-weight:var(--progress-bar-font-weight, \"bold\")}\n"] }]
|
|
26054
26412
|
}], propDecorators: { value: [{
|
|
26055
26413
|
type: Input
|
|
26056
26414
|
}], type: [{
|
|
@@ -26225,7 +26583,7 @@ class ButtonComponent {
|
|
|
26225
26583
|
return `${this.btnClass} ${this.extraClass}`;
|
|
26226
26584
|
}
|
|
26227
26585
|
handleClick(event) {
|
|
26228
|
-
this.buttonClick.emit();
|
|
26586
|
+
this.buttonClick.emit(event);
|
|
26229
26587
|
event.preventDefault();
|
|
26230
26588
|
event.currentTarget.blur();
|
|
26231
26589
|
propagateToDocumentOnly(event);
|
|
@@ -26932,11 +27290,11 @@ class DropdownMultiselectComponent {
|
|
|
26932
27290
|
this.setFocus();
|
|
26933
27291
|
}
|
|
26934
27292
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$9.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26935
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27293
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26936
27294
|
}
|
|
26937
27295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
26938
27296
|
type: Component,
|
|
26939
|
-
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
27297
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
26940
27298
|
}], ctorParameters: () => [{ type: i1$9.ScrollStrategyOptions }], propDecorators: { title: [{
|
|
26941
27299
|
type: Input
|
|
26942
27300
|
}], choices: [{
|
|
@@ -27109,7 +27467,7 @@ class DropdownSelectorComponent {
|
|
|
27109
27467
|
provideNgIconsConfig({
|
|
27110
27468
|
size: '1.5em',
|
|
27111
27469
|
}),
|
|
27112
|
-
], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow
|
|
27470
|
+
], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27113
27471
|
}
|
|
27114
27472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
27115
27473
|
type: Component,
|
|
@@ -27127,7 +27485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27127
27485
|
provideNgIconsConfig({
|
|
27128
27486
|
size: '1.5em',
|
|
27129
27487
|
}),
|
|
27130
|
-
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow
|
|
27488
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
27131
27489
|
}], propDecorators: { title: [{
|
|
27132
27490
|
type: Input
|
|
27133
27491
|
}], showTitle: [{
|
|
@@ -27444,6 +27802,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27444
27802
|
type: Input
|
|
27445
27803
|
}] } });
|
|
27446
27804
|
|
|
27805
|
+
class InlineFilterComponent {
|
|
27806
|
+
constructor() {
|
|
27807
|
+
this.selected = [];
|
|
27808
|
+
this.selectValues = new EventEmitter();
|
|
27809
|
+
}
|
|
27810
|
+
isSelected(choice) {
|
|
27811
|
+
return (this.selected.indexOf(choice.value) > -1 ||
|
|
27812
|
+
(this.selected.length === 0 && choice.value === 'all'));
|
|
27813
|
+
}
|
|
27814
|
+
select(choice, selected) {
|
|
27815
|
+
if (choice.value === 'all' && selected) {
|
|
27816
|
+
this.selected = [choice.value];
|
|
27817
|
+
}
|
|
27818
|
+
else {
|
|
27819
|
+
this.selected = selected
|
|
27820
|
+
? [...this.selected.filter((v) => v !== choice.value), choice.value]
|
|
27821
|
+
: this.selected.filter((v) => v !== choice.value);
|
|
27822
|
+
// If any value selected, unselect all
|
|
27823
|
+
this.selected = this.selected.filter((v) => v !== 'all');
|
|
27824
|
+
}
|
|
27825
|
+
this.selectValues.emit(this.selected);
|
|
27826
|
+
}
|
|
27827
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InlineFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: { choices: "choices", selected: "selected" }, outputs: { selectValues: "selectValues" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ul class=\"flex flex-wrap list-none gap-2\">\n <li *ngFor=\"let choice of choices\">\n <label\n class=\"\"\n [ngClass]=\"{\n selected: isSelected(choice),\n }\"\n >\n <input\n class=\"hidden\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n [attr.data-cy]=\"'inlineFilter-' + choice.value\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: choice }\"\n >\n </ng-container>\n </label>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
27829
|
+
}
|
|
27830
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InlineFilterComponent, decorators: [{
|
|
27831
|
+
type: Component,
|
|
27832
|
+
args: [{ selector: 'gn-ui-inline-filter', template: "<ul class=\"flex flex-wrap list-none gap-2\">\n <li *ngFor=\"let choice of choices\">\n <label\n class=\"\"\n [ngClass]=\"{\n selected: isSelected(choice),\n }\"\n >\n <input\n class=\"hidden\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n [attr.data-cy]=\"'inlineFilter-' + choice.value\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: choice }\"\n >\n </ng-container>\n </label>\n </li>\n</ul>\n" }]
|
|
27833
|
+
}], propDecorators: { choices: [{
|
|
27834
|
+
type: Input
|
|
27835
|
+
}], selected: [{
|
|
27836
|
+
type: Input
|
|
27837
|
+
}], selectValues: [{
|
|
27838
|
+
type: Output
|
|
27839
|
+
}], itemTemplate: [{
|
|
27840
|
+
type: ContentChild,
|
|
27841
|
+
args: [TemplateRef]
|
|
27842
|
+
}] } });
|
|
27843
|
+
|
|
27447
27844
|
class SearchInputComponent {
|
|
27448
27845
|
constructor() {
|
|
27449
27846
|
this.value = '';
|
|
@@ -27502,11 +27899,11 @@ class StarToggleComponent {
|
|
|
27502
27899
|
event.preventDefault();
|
|
27503
27900
|
}
|
|
27504
27901
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27505
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n
|
|
27902
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27506
27903
|
}
|
|
27507
27904
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27508
27905
|
type: Component,
|
|
27509
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n
|
|
27906
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
27510
27907
|
}], propDecorators: { toggled: [{
|
|
27511
27908
|
type: Input
|
|
27512
27909
|
}], disabled: [{
|
|
@@ -27680,7 +28077,8 @@ class UiInputsModule {
|
|
|
27680
28077
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, declarations: [DragAndDropFileInputComponent,
|
|
27681
28078
|
DropdownMultiselectComponent,
|
|
27682
28079
|
ViewportIntersectorComponent,
|
|
27683
|
-
CheckboxComponent
|
|
28080
|
+
CheckboxComponent,
|
|
28081
|
+
InlineFilterComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
27684
28082
|
FormsModule,
|
|
27685
28083
|
ReactiveFormsModule,
|
|
27686
28084
|
TagInputModule,
|
|
@@ -27711,6 +28109,7 @@ class UiInputsModule {
|
|
|
27711
28109
|
CheckboxComponent,
|
|
27712
28110
|
DateRangePickerComponent,
|
|
27713
28111
|
EditableLabelDirective,
|
|
28112
|
+
InlineFilterComponent,
|
|
27714
28113
|
BadgeComponent] }); }
|
|
27715
28114
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiInputsModule, providers: [
|
|
27716
28115
|
provideIcons({
|
|
@@ -27718,9 +28117,6 @@ class UiInputsModule {
|
|
|
27718
28117
|
matExpandMore,
|
|
27719
28118
|
matExpandLess,
|
|
27720
28119
|
}),
|
|
27721
|
-
provideNgIconsConfig({
|
|
27722
|
-
size: '0.9em',
|
|
27723
|
-
}),
|
|
27724
28120
|
], imports: [CommonModule,
|
|
27725
28121
|
TranslateModule.forChild(),
|
|
27726
28122
|
NgxDropzoneModule,
|
|
@@ -27752,6 +28148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27752
28148
|
DropdownMultiselectComponent,
|
|
27753
28149
|
ViewportIntersectorComponent,
|
|
27754
28150
|
CheckboxComponent,
|
|
28151
|
+
InlineFilterComponent,
|
|
27755
28152
|
],
|
|
27756
28153
|
imports: [
|
|
27757
28154
|
CommonModule,
|
|
@@ -27785,9 +28182,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27785
28182
|
matExpandMore,
|
|
27786
28183
|
matExpandLess,
|
|
27787
28184
|
}),
|
|
27788
|
-
provideNgIconsConfig({
|
|
27789
|
-
size: '0.9em',
|
|
27790
|
-
}),
|
|
27791
28185
|
],
|
|
27792
28186
|
exports: [
|
|
27793
28187
|
DropdownSelectorComponent,
|
|
@@ -27800,6 +28194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27800
28194
|
CheckboxComponent,
|
|
27801
28195
|
DateRangePickerComponent,
|
|
27802
28196
|
EditableLabelDirective,
|
|
28197
|
+
InlineFilterComponent,
|
|
27803
28198
|
BadgeComponent,
|
|
27804
28199
|
],
|
|
27805
28200
|
}]
|
|
@@ -27945,20 +28340,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27945
28340
|
class PreviousNextButtonsComponent {
|
|
27946
28341
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27947
28342
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent" }, providers: [
|
|
27948
|
-
provideIcons({
|
|
28343
|
+
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
27949
28344
|
provideNgIconsConfig({
|
|
27950
28345
|
size: '0.875em',
|
|
27951
28346
|
}),
|
|
27952
|
-
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-
|
|
28347
|
+
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
27953
28348
|
}
|
|
27954
28349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
27955
28350
|
type: Component,
|
|
27956
28351
|
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [ButtonComponent, NgIconComponent], providers: [
|
|
27957
|
-
provideIcons({
|
|
28352
|
+
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
27958
28353
|
provideNgIconsConfig({
|
|
27959
28354
|
size: '0.875em',
|
|
27960
28355
|
}),
|
|
27961
|
-
], template: "<div class=\"flex flex-row gap-x-
|
|
28356
|
+
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
27962
28357
|
}], propDecorators: { listComponent: [{
|
|
27963
28358
|
type: Input
|
|
27964
28359
|
}] } });
|
|
@@ -27966,26 +28361,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27966
28361
|
class UiLayoutModule {
|
|
27967
28362
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27968
28363
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiLayoutModule, declarations: [StickyHeaderComponent, AnchorLinkDirective], imports: [CommonModule, i1$1.TranslateModule, NgIconComponent], exports: [StickyHeaderComponent, AnchorLinkDirective] }); }
|
|
27969
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiLayoutModule,
|
|
27970
|
-
provideNgIconsConfig({
|
|
27971
|
-
size: '0.9em',
|
|
27972
|
-
}),
|
|
27973
|
-
], imports: [CommonModule, TranslateModule.forChild(), NgIconComponent] }); }
|
|
28364
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, TranslateModule.forChild(), NgIconComponent] }); }
|
|
27974
28365
|
}
|
|
27975
28366
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
27976
28367
|
type: NgModule,
|
|
27977
28368
|
args: [{
|
|
27978
28369
|
imports: [CommonModule, TranslateModule.forChild(), NgIconComponent],
|
|
27979
|
-
providers: [
|
|
27980
|
-
provideNgIconsConfig({
|
|
27981
|
-
size: '0.9em',
|
|
27982
|
-
}),
|
|
27983
|
-
],
|
|
28370
|
+
providers: [],
|
|
27984
28371
|
declarations: [StickyHeaderComponent, AnchorLinkDirective],
|
|
27985
28372
|
exports: [StickyHeaderComponent, AnchorLinkDirective],
|
|
27986
28373
|
}]
|
|
27987
28374
|
}] });
|
|
27988
28375
|
|
|
28376
|
+
class TruncatedTextComponent {
|
|
28377
|
+
constructor(cd) {
|
|
28378
|
+
this.cd = cd;
|
|
28379
|
+
this.text = '';
|
|
28380
|
+
this.isTextTruncated = false;
|
|
28381
|
+
this.isOpen = false;
|
|
28382
|
+
}
|
|
28383
|
+
ngAfterViewInit() {
|
|
28384
|
+
this.checkTextTruncation();
|
|
28385
|
+
}
|
|
28386
|
+
ngOnChange() {
|
|
28387
|
+
this.checkTextTruncation();
|
|
28388
|
+
}
|
|
28389
|
+
toggleOverlay() {
|
|
28390
|
+
this.isOpen = !this.isOpen;
|
|
28391
|
+
}
|
|
28392
|
+
close() {
|
|
28393
|
+
this.isOpen = false;
|
|
28394
|
+
}
|
|
28395
|
+
checkTextTruncation() {
|
|
28396
|
+
const element = this.textElement.nativeElement;
|
|
28397
|
+
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28398
|
+
this.cd.detectChanges();
|
|
28399
|
+
}
|
|
28400
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28401
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TruncatedTextComponent, isStandalone: true, selector: "gn-ui-truncated-text", inputs: { text: "text" }, providers: [provideIcons({ iconoirExpand, iconoirReduce })], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["textElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]\"\n (detach)=\"isOpen = false\"\n >\n <div class=\"bg-white shadow-lg border border-gray-300 flex\">\n <div class=\"w-64\">\n <p class=\"m-2\">{{ text }}</p>\n </div>\n <gn-ui-button\n class=\"m-2 flex-shrink-0\"\n type=\"light\"\n (buttonClick)=\"close()\"\n extraClass=\"w-10 h-8 px-1 bg-white\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$9.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$9.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
28402
|
+
}
|
|
28403
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28404
|
+
type: Component,
|
|
28405
|
+
args: [{ selector: 'gn-ui-truncated-text', standalone: true, imports: [
|
|
28406
|
+
CommonModule,
|
|
28407
|
+
TranslateModule,
|
|
28408
|
+
MatButtonModule,
|
|
28409
|
+
OverlayModule,
|
|
28410
|
+
ButtonComponent,
|
|
28411
|
+
NgIconComponent,
|
|
28412
|
+
], providers: [provideIcons({ iconoirExpand, iconoirReduce })], template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]\"\n (detach)=\"isOpen = false\"\n >\n <div class=\"bg-white shadow-lg border border-gray-300 flex\">\n <div class=\"w-64\">\n <p class=\"m-2\">{{ text }}</p>\n </div>\n <gn-ui-button\n class=\"m-2 flex-shrink-0\"\n type=\"light\"\n (buttonClick)=\"close()\"\n extraClass=\"w-10 h-8 px-1 bg-white\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n" }]
|
|
28413
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { text: [{
|
|
28414
|
+
type: Input
|
|
28415
|
+
}], textElement: [{
|
|
28416
|
+
type: ViewChild,
|
|
28417
|
+
args: ['textElement']
|
|
28418
|
+
}] } });
|
|
28419
|
+
|
|
27989
28420
|
class FacetItemComponent {
|
|
27990
28421
|
constructor() {
|
|
27991
28422
|
this.selectedChange = new EventEmitter();
|
|
@@ -28553,7 +28984,7 @@ class MetadataQualityComponent {
|
|
|
28553
28984
|
size: '1.2em',
|
|
28554
28985
|
strokeWidth: '1.5px',
|
|
28555
28986
|
}),
|
|
28556
|
-
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n
|
|
28987
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28557
28988
|
}
|
|
28558
28989
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
28559
28990
|
type: Component,
|
|
@@ -28572,7 +29003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28572
29003
|
size: '1.2em',
|
|
28573
29004
|
strokeWidth: '1.5px',
|
|
28574
29005
|
}),
|
|
28575
|
-
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"\n
|
|
29006
|
+
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
28576
29007
|
}], propDecorators: { metadata: [{
|
|
28577
29008
|
type: Input
|
|
28578
29009
|
}], smaller: [{
|
|
@@ -28614,17 +29045,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28614
29045
|
|
|
28615
29046
|
class ResultsHitsNumberComponent {
|
|
28616
29047
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28617
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: { hits: "hits", loading: "loading" }, ngImport: i0, template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n", dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29048
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: { hits: "hits", loading: "loading" }, ngImport: i0, template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span data-cy=\"resultsHitsFound\" translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n", dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28618
29049
|
}
|
|
28619
29050
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsNumberComponent, decorators: [{
|
|
28620
29051
|
type: Component,
|
|
28621
|
-
args: [{ selector: 'gn-ui-results-hits-number', template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n" }]
|
|
29052
|
+
args: [{ selector: 'gn-ui-results-hits-number', template: "<div *ngIf=\"!loading\" class=\"w-full\">\n <span data-cy=\"resultsHitsFound\" translate [translateParams]=\"{ hits: hits }\"\n >results.records.hits.found</span\n >\n <p\n *ngIf=\"hits === 0\"\n class=\"mt-4\"\n [innerHtml]=\"'results.records.hits.empty.help.html' | translate\"\n ></p>\n</div>\n" }]
|
|
28622
29053
|
}], propDecorators: { hits: [{
|
|
28623
29054
|
type: Input
|
|
28624
29055
|
}], loading: [{
|
|
28625
29056
|
type: Input
|
|
28626
29057
|
}] } });
|
|
28627
29058
|
|
|
29059
|
+
var KindConfig;
|
|
29060
|
+
(function (KindConfig) {
|
|
29061
|
+
KindConfig["all"] = "iconoirAppleWallet";
|
|
29062
|
+
KindConfig["dataset"] = "iconoirAppleShortcuts";
|
|
29063
|
+
KindConfig["service"] = "iconoirCode";
|
|
29064
|
+
KindConfig["reuse"] = "iconoirCreditCard";
|
|
29065
|
+
})(KindConfig || (KindConfig = {}));
|
|
29066
|
+
class KindBadgeComponent {
|
|
29067
|
+
constructor() {
|
|
29068
|
+
this.hasProjectedContent = false;
|
|
29069
|
+
}
|
|
29070
|
+
get iconKind() {
|
|
29071
|
+
return KindConfig[this.kind] || KindConfig.dataset;
|
|
29072
|
+
}
|
|
29073
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29074
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KindBadgeComponent, isStandalone: true, selector: "gn-ui-kind-badge", inputs: { contentTemplate: "contentTemplate", kind: "kind" }, ngImport: i0, template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"], dependencies: [{ kind: "ngmodule", type: NgIconsModule }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], viewProviders: [
|
|
29075
|
+
provideIcons({
|
|
29076
|
+
iconoirAppleWallet,
|
|
29077
|
+
iconoirAppleShortcuts,
|
|
29078
|
+
iconoirCode,
|
|
29079
|
+
iconoirCreditCard,
|
|
29080
|
+
}),
|
|
29081
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29082
|
+
}
|
|
29083
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, decorators: [{
|
|
29084
|
+
type: Component,
|
|
29085
|
+
args: [{ selector: 'gn-ui-kind-badge', viewProviders: [
|
|
29086
|
+
provideIcons({
|
|
29087
|
+
iconoirAppleWallet,
|
|
29088
|
+
iconoirAppleShortcuts,
|
|
29089
|
+
iconoirCode,
|
|
29090
|
+
iconoirCreditCard,
|
|
29091
|
+
}),
|
|
29092
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIconsModule, CommonModule, BadgeComponent, TranslateModule], template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"] }]
|
|
29093
|
+
}], propDecorators: { contentTemplate: [{
|
|
29094
|
+
type: Input
|
|
29095
|
+
}], kind: [{
|
|
29096
|
+
type: Input
|
|
29097
|
+
}] } });
|
|
29098
|
+
|
|
29099
|
+
class ResultsHitsSearchKindComponent {
|
|
29100
|
+
constructor() {
|
|
29101
|
+
this.selected = [];
|
|
29102
|
+
this.choices = [];
|
|
29103
|
+
this.selectionChanged = new EventEmitter();
|
|
29104
|
+
this.availableChoices = [];
|
|
29105
|
+
}
|
|
29106
|
+
ngOnChanges(changes) {
|
|
29107
|
+
if (changes.choices && changes.choices.currentValue) {
|
|
29108
|
+
this.availableChoices = this.buildFilterChoices(this.choices);
|
|
29109
|
+
}
|
|
29110
|
+
}
|
|
29111
|
+
buildFilterChoices(availableValues) {
|
|
29112
|
+
return [
|
|
29113
|
+
...[
|
|
29114
|
+
{
|
|
29115
|
+
label: 'all',
|
|
29116
|
+
value: 'all',
|
|
29117
|
+
},
|
|
29118
|
+
],
|
|
29119
|
+
...availableValues,
|
|
29120
|
+
];
|
|
29121
|
+
}
|
|
29122
|
+
onSelectedValues(values) {
|
|
29123
|
+
const selectedValues = values.includes('all') ? [] : values;
|
|
29124
|
+
this.selectionChanged.emit(selectedValues);
|
|
29125
|
+
}
|
|
29126
|
+
isSelectedChoice(choiceValue) {
|
|
29127
|
+
return this.selected.includes(choiceValue);
|
|
29128
|
+
}
|
|
29129
|
+
isAllChoice(choiceValue) {
|
|
29130
|
+
return this.selected.length === 0 && choiceValue === 'all';
|
|
29131
|
+
}
|
|
29132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["contentTemplate", "kind"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29134
|
+
}
|
|
29135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, decorators: [{
|
|
29136
|
+
type: Component,
|
|
29137
|
+
args: [{ selector: 'gn-ui-results-hits-search-kind', template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
|
|
29138
|
+
}], propDecorators: { selected: [{
|
|
29139
|
+
type: Input
|
|
29140
|
+
}], choices: [{
|
|
29141
|
+
type: Input
|
|
29142
|
+
}], selectionChanged: [{
|
|
29143
|
+
type: Output
|
|
29144
|
+
}] } });
|
|
29145
|
+
|
|
28628
29146
|
marker('record.was.created.time');
|
|
28629
29147
|
class RecordPreviewFeedComponent extends RecordPreviewComponent {
|
|
28630
29148
|
constructor(elementRef, translate) {
|
|
@@ -28788,7 +29306,7 @@ class ApiCardComponent {
|
|
|
28788
29306
|
}
|
|
28789
29307
|
}
|
|
28790
29308
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28791
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
29309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28792
29310
|
provideIcons({
|
|
28793
29311
|
iconoirSettings,
|
|
28794
29312
|
}),
|
|
@@ -28806,7 +29324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28806
29324
|
provideIcons({
|
|
28807
29325
|
iconoirSettings,
|
|
28808
29326
|
}),
|
|
28809
|
-
], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
|
|
29327
|
+
], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
|
|
28810
29328
|
}], propDecorators: { link: [{
|
|
28811
29329
|
type: Input
|
|
28812
29330
|
}], currentLink: [{
|
|
@@ -28893,7 +29411,7 @@ class DownloadItemComponent {
|
|
|
28893
29411
|
this.exportUrl.emit(this.link.url.toString());
|
|
28894
29412
|
}
|
|
28895
29413
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28896
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi", size: "size" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div
|
|
29414
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi", size: "size" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden w-full\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col flex-1 justify-between min-w-0\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1 min-w-0\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100 whitespace-nowrap\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px] flex-shrink-0\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28897
29415
|
provideIcons({
|
|
28898
29416
|
iconoirDownload,
|
|
28899
29417
|
}),
|
|
@@ -28905,7 +29423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28905
29423
|
provideIcons({
|
|
28906
29424
|
iconoirDownload,
|
|
28907
29425
|
}),
|
|
28908
|
-
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div
|
|
29426
|
+
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden w-full\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col flex-1 justify-between min-w-0\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1 min-w-0\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100 whitespace-nowrap\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px] flex-shrink-0\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
28909
29427
|
}], propDecorators: { link: [{
|
|
28910
29428
|
type: Input
|
|
28911
29429
|
}], color: [{
|
|
@@ -28924,10 +29442,18 @@ marker('datahub.search.filter.all');
|
|
|
28924
29442
|
marker('datahub.search.filter.others');
|
|
28925
29443
|
const FILTER_FORMATS = ['all', 'csv', 'excel', 'json', 'shp', 'others'];
|
|
28926
29444
|
class DownloadsListComponent {
|
|
28927
|
-
constructor(translateService) {
|
|
29445
|
+
constructor(translateService, changeDetector) {
|
|
28928
29446
|
this.translateService = translateService;
|
|
29447
|
+
this.changeDetector = changeDetector;
|
|
28929
29448
|
this.activeFilterFormats = ['all'];
|
|
28930
29449
|
}
|
|
29450
|
+
get linksCount() {
|
|
29451
|
+
return this.filteredLinks?.length || 0;
|
|
29452
|
+
}
|
|
29453
|
+
updateList($event) {
|
|
29454
|
+
this._list = $event;
|
|
29455
|
+
this.changeDetector.detectChanges();
|
|
29456
|
+
}
|
|
28931
29457
|
removeDuplicateFormats(links) {
|
|
28932
29458
|
const preferredLinks = new Map();
|
|
28933
29459
|
links.forEach((link) => {
|
|
@@ -29005,18 +29531,20 @@ class DownloadsListComponent {
|
|
|
29005
29531
|
(link.accessServiceProtocol === 'wfs' ||
|
|
29006
29532
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
29007
29533
|
}
|
|
29008
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29009
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div\n class=\"font-title text-xl text-title font-medium mr-4
|
|
29534
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29535
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n class=\"md:block hidden\"\n *ngIf=\"_list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n class=\"md:block hidden\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5 md:hidden block\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BlockListComponent, selector: "gn-ui-block-list", inputs: ["containerClass", "paginationContainerClass"], outputs: ["listChanges"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29010
29536
|
}
|
|
29011
29537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
29012
29538
|
type: Component,
|
|
29013
29539
|
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
29014
29540
|
CommonModule,
|
|
29015
29541
|
ButtonComponent,
|
|
29542
|
+
BlockListComponent,
|
|
29016
29543
|
DownloadItemComponent,
|
|
29017
29544
|
TranslateModule,
|
|
29018
|
-
|
|
29019
|
-
}]
|
|
29545
|
+
PreviousNextButtonsComponent,
|
|
29546
|
+
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n class=\"md:block hidden\"\n *ngIf=\"_list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n class=\"md:block hidden\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5 md:hidden block\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
29547
|
+
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { links: [{
|
|
29020
29548
|
type: Input
|
|
29021
29549
|
}] } });
|
|
29022
29550
|
|
|
@@ -29069,7 +29597,7 @@ class ImageOverlayPreviewComponent {
|
|
|
29069
29597
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
29070
29598
|
}
|
|
29071
29599
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29072
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageOverlayPreviewComponent, isStandalone: true, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-full w-full\"\n>\n <div\n *ngIf=\"imageUrl\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0
|
|
29600
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageOverlayPreviewComponent, isStandalone: true, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-full w-full\"\n>\n <div\n *ngIf=\"imageUrl\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 rounded-lg overflow-hidden group-hover:shadow-xl group-hover:border-0 h-full w-full\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <ng-icon name=\"matZoomOutMap\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matZoomOutMap })] }); }
|
|
29073
29601
|
}
|
|
29074
29602
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
29075
29603
|
type: Component,
|
|
@@ -29079,7 +29607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29079
29607
|
ThumbnailComponent,
|
|
29080
29608
|
ButtonComponent,
|
|
29081
29609
|
NgIcon,
|
|
29082
|
-
], viewProviders: [provideIcons({ matZoomOutMap })], template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-full w-full\"\n>\n <div\n *ngIf=\"imageUrl\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0
|
|
29610
|
+
], viewProviders: [provideIcons({ matZoomOutMap })], template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-full w-full\"\n>\n <div\n *ngIf=\"imageUrl\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 rounded-lg overflow-hidden group-hover:shadow-xl group-hover:border-0 h-full w-full\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <ng-icon name=\"matZoomOutMap\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
29083
29611
|
}], propDecorators: { imageUrl: [{
|
|
29084
29612
|
type: Input
|
|
29085
29613
|
}], isPlaceholderShown: [{
|
|
@@ -29332,7 +29860,7 @@ class LinkCardComponent {
|
|
|
29332
29860
|
matOpenInNew,
|
|
29333
29861
|
}),
|
|
29334
29862
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29335
|
-
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div
|
|
29863
|
+
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29336
29864
|
}
|
|
29337
29865
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
29338
29866
|
type: Component,
|
|
@@ -29341,7 +29869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29341
29869
|
matOpenInNew,
|
|
29342
29870
|
}),
|
|
29343
29871
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29344
|
-
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div
|
|
29872
|
+
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
29345
29873
|
}], propDecorators: { link: [{
|
|
29346
29874
|
type: Input
|
|
29347
29875
|
}], size: [{
|
|
@@ -29386,11 +29914,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29386
29914
|
|
|
29387
29915
|
class MetadataCatalogComponent {
|
|
29388
29916
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29389
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-
|
|
29917
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div class=\"text-black\">\n <p class=\"text-base mb-3\" translate>record.metadata.catalog</p>\n <p class=\"font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29390
29918
|
}
|
|
29391
29919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, decorators: [{
|
|
29392
29920
|
type: Component,
|
|
29393
|
-
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div>\n <p class=\"text-
|
|
29921
|
+
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div class=\"text-black\">\n <p class=\"text-base mb-3\" translate>record.metadata.catalog</p>\n <p class=\"font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n" }]
|
|
29394
29922
|
}], propDecorators: { sourceLabel: [{
|
|
29395
29923
|
type: Input
|
|
29396
29924
|
}] } });
|
|
@@ -29418,7 +29946,7 @@ class MetadataContactComponent {
|
|
|
29418
29946
|
this.organizationClick.emit(this.shownOrganization);
|
|
29419
29947
|
}
|
|
29420
29948
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29421
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29949
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded-lg bg-gray-100 text-black\">\n <div class=\"grid grid-cols-1 gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
29422
29950
|
provideIcons({
|
|
29423
29951
|
matOpenInNew,
|
|
29424
29952
|
matCallOutline,
|
|
@@ -29438,7 +29966,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29438
29966
|
matPersonOutline,
|
|
29439
29967
|
matLocationOnOutline,
|
|
29440
29968
|
}),
|
|
29441
|
-
], template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black
|
|
29969
|
+
], template: "<div class=\"py-5 px-5 rounded-lg bg-gray-100 text-black\">\n <div class=\"grid grid-cols-1 gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
29442
29970
|
}], propDecorators: { metadata: [{
|
|
29443
29971
|
type: Input
|
|
29444
29972
|
}], organizationClick: [{
|
|
@@ -29523,6 +30051,317 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29523
30051
|
}]
|
|
29524
30052
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
29525
30053
|
|
|
30054
|
+
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
30055
|
+
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
30056
|
+
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
30057
|
+
factory: () => ({}),
|
|
30058
|
+
});
|
|
30059
|
+
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
30060
|
+
factory: () => ({
|
|
30061
|
+
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
30062
|
+
stroke: { color: '#ffcc33', width: 2 },
|
|
30063
|
+
}),
|
|
30064
|
+
});
|
|
30065
|
+
|
|
30066
|
+
const DEFAULT_BASEMAP_LAYER = {
|
|
30067
|
+
type: 'xyz',
|
|
30068
|
+
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
30069
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
30070
|
+
};
|
|
30071
|
+
const DEFAULT_VIEW = {
|
|
30072
|
+
center: [0, 15],
|
|
30073
|
+
zoom: 2,
|
|
30074
|
+
};
|
|
30075
|
+
class MapContainerComponent {
|
|
30076
|
+
get featuresClick() {
|
|
30077
|
+
if (!this._featuresClick) {
|
|
30078
|
+
this.openlayersMap.then((olMap) => {
|
|
30079
|
+
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
30080
|
+
});
|
|
30081
|
+
this._featuresClick = new EventEmitter();
|
|
30082
|
+
}
|
|
30083
|
+
return this._featuresClick;
|
|
30084
|
+
}
|
|
30085
|
+
get featuresHover() {
|
|
30086
|
+
if (!this._featuresHover) {
|
|
30087
|
+
this.openlayersMap.then((olMap) => {
|
|
30088
|
+
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
30089
|
+
});
|
|
30090
|
+
this._featuresHover = new EventEmitter();
|
|
30091
|
+
}
|
|
30092
|
+
return this._featuresHover;
|
|
30093
|
+
}
|
|
30094
|
+
get mapClick() {
|
|
30095
|
+
if (!this._mapClick) {
|
|
30096
|
+
this.openlayersMap.then((olMap) => {
|
|
30097
|
+
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
30098
|
+
});
|
|
30099
|
+
this._mapClick = new EventEmitter();
|
|
30100
|
+
}
|
|
30101
|
+
return this._mapClick;
|
|
30102
|
+
}
|
|
30103
|
+
get sourceLoadError() {
|
|
30104
|
+
if (!this._sourceLoadError) {
|
|
30105
|
+
this.openlayersMap.then((olMap) => {
|
|
30106
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
30107
|
+
});
|
|
30108
|
+
this._sourceLoadError = new EventEmitter();
|
|
30109
|
+
}
|
|
30110
|
+
return this._sourceLoadError;
|
|
30111
|
+
}
|
|
30112
|
+
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
30113
|
+
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
30114
|
+
this.basemapLayers = basemapLayers;
|
|
30115
|
+
this.mapViewConstraints = mapViewConstraints;
|
|
30116
|
+
this.openlayersMap = new Promise((resolve) => {
|
|
30117
|
+
this.olMapResolver = resolve;
|
|
30118
|
+
});
|
|
30119
|
+
}
|
|
30120
|
+
async ngAfterViewInit() {
|
|
30121
|
+
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
30122
|
+
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
30123
|
+
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
30124
|
+
: of(false)));
|
|
30125
|
+
this.olMapResolver(this.olMap);
|
|
30126
|
+
}
|
|
30127
|
+
async ngOnChanges(changes) {
|
|
30128
|
+
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
30129
|
+
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
30130
|
+
await applyContextDiffToMap(this.olMap, diff);
|
|
30131
|
+
}
|
|
30132
|
+
}
|
|
30133
|
+
// This will apply basemap layers & view constraints
|
|
30134
|
+
processContext(context) {
|
|
30135
|
+
const processed = context
|
|
30136
|
+
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
30137
|
+
: { layers: [], view: DEFAULT_VIEW };
|
|
30138
|
+
if (this.basemapLayers.length) {
|
|
30139
|
+
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
30140
|
+
}
|
|
30141
|
+
if (!this.doNotUseDefaultBasemap) {
|
|
30142
|
+
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
30143
|
+
}
|
|
30144
|
+
if (this.mapViewConstraints.maxZoom) {
|
|
30145
|
+
processed.view = {
|
|
30146
|
+
maxZoom: this.mapViewConstraints.maxZoom,
|
|
30147
|
+
...processed.view,
|
|
30148
|
+
};
|
|
30149
|
+
}
|
|
30150
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
30151
|
+
processed.view = {
|
|
30152
|
+
maxExtent: this.mapViewConstraints.maxExtent,
|
|
30153
|
+
...processed.view,
|
|
30154
|
+
};
|
|
30155
|
+
}
|
|
30156
|
+
if (processed.view &&
|
|
30157
|
+
!('zoom' in processed.view) &&
|
|
30158
|
+
!('center' in processed.view)) {
|
|
30159
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
30160
|
+
processed.view = {
|
|
30161
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
30162
|
+
...processed.view,
|
|
30163
|
+
};
|
|
30164
|
+
}
|
|
30165
|
+
else {
|
|
30166
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
30167
|
+
}
|
|
30168
|
+
}
|
|
30169
|
+
return processed;
|
|
30170
|
+
}
|
|
30171
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30172
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
30173
|
+
provideIcons({ matSwipeOutline }),
|
|
30174
|
+
provideNgIconsConfig({
|
|
30175
|
+
size: '1.5em',
|
|
30176
|
+
}),
|
|
30177
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.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 }); }
|
|
30178
|
+
}
|
|
30179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
30180
|
+
type: Component,
|
|
30181
|
+
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
30182
|
+
provideIcons({ matSwipeOutline }),
|
|
30183
|
+
provideNgIconsConfig({
|
|
30184
|
+
size: '1.5em',
|
|
30185
|
+
}),
|
|
30186
|
+
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
30187
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
30188
|
+
type: Inject,
|
|
30189
|
+
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
30190
|
+
}] }, { type: undefined, decorators: [{
|
|
30191
|
+
type: Inject,
|
|
30192
|
+
args: [BASEMAP_LAYERS]
|
|
30193
|
+
}] }, { type: undefined, decorators: [{
|
|
30194
|
+
type: Inject,
|
|
30195
|
+
args: [MAP_VIEW_CONSTRAINTS]
|
|
30196
|
+
}] }], propDecorators: { context: [{
|
|
30197
|
+
type: Input
|
|
30198
|
+
}], featuresClick: [{
|
|
30199
|
+
type: Output
|
|
30200
|
+
}], featuresHover: [{
|
|
30201
|
+
type: Output
|
|
30202
|
+
}], mapClick: [{
|
|
30203
|
+
type: Output
|
|
30204
|
+
}], sourceLoadError: [{
|
|
30205
|
+
type: Output
|
|
30206
|
+
}], container: [{
|
|
30207
|
+
type: ViewChild,
|
|
30208
|
+
args: ['map']
|
|
30209
|
+
}] } });
|
|
30210
|
+
|
|
30211
|
+
const geometryKeys = ['geometry', 'the_geom'];
|
|
30212
|
+
class FeatureDetailComponent {
|
|
30213
|
+
get properties() {
|
|
30214
|
+
if (!this.feature)
|
|
30215
|
+
return [];
|
|
30216
|
+
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
30217
|
+
}
|
|
30218
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30219
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30220
|
+
}
|
|
30221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
30222
|
+
type: Component,
|
|
30223
|
+
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
30224
|
+
}], propDecorators: { feature: [{
|
|
30225
|
+
type: Input
|
|
30226
|
+
}] } });
|
|
30227
|
+
|
|
30228
|
+
class MapLegendComponent {
|
|
30229
|
+
constructor() {
|
|
30230
|
+
this.legendStatusChange = new EventEmitter();
|
|
30231
|
+
}
|
|
30232
|
+
async ngOnChanges(changes) {
|
|
30233
|
+
if ('context' in changes) {
|
|
30234
|
+
const mapContext = changes['context'].currentValue;
|
|
30235
|
+
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
30236
|
+
const mapContextLayer = mapContext.layers[0];
|
|
30237
|
+
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
30238
|
+
if (this.legendHTML) {
|
|
30239
|
+
this.legendStatusChange.emit(true);
|
|
30240
|
+
}
|
|
30241
|
+
}
|
|
30242
|
+
else {
|
|
30243
|
+
this.legendHTML = false;
|
|
30244
|
+
this.legendStatusChange.emit(false);
|
|
30245
|
+
}
|
|
30246
|
+
}
|
|
30247
|
+
}
|
|
30248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
30250
|
+
}
|
|
30251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
30252
|
+
type: Component,
|
|
30253
|
+
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
30254
|
+
}], propDecorators: { context: [{
|
|
30255
|
+
type: Input
|
|
30256
|
+
}], legendStatusChange: [{
|
|
30257
|
+
type: Output
|
|
30258
|
+
}] } });
|
|
30259
|
+
|
|
30260
|
+
function prioritizePageScroll(interactions) {
|
|
30261
|
+
interactions.clear();
|
|
30262
|
+
interactions.extend(defaults({
|
|
30263
|
+
// remove rotate interactions
|
|
30264
|
+
altShiftDragRotate: false,
|
|
30265
|
+
pinchRotate: false,
|
|
30266
|
+
// replace drag and zoom interactions
|
|
30267
|
+
dragPan: false,
|
|
30268
|
+
mouseWheelZoom: false,
|
|
30269
|
+
})
|
|
30270
|
+
.extend([
|
|
30271
|
+
new DragPan({
|
|
30272
|
+
condition: dragPanCondition,
|
|
30273
|
+
}),
|
|
30274
|
+
new MouseWheelZoom({
|
|
30275
|
+
condition: mouseWheelZoomCondition,
|
|
30276
|
+
}),
|
|
30277
|
+
])
|
|
30278
|
+
.getArray());
|
|
30279
|
+
}
|
|
30280
|
+
function dragPanCondition(event) {
|
|
30281
|
+
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
30282
|
+
if (!dragPanCondition) {
|
|
30283
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30284
|
+
}
|
|
30285
|
+
// combine the condition with the default DragPan conditions
|
|
30286
|
+
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
30287
|
+
}
|
|
30288
|
+
function mouseWheelZoomCondition(event) {
|
|
30289
|
+
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
30290
|
+
this.getMap().dispatchEvent('mapmuted');
|
|
30291
|
+
}
|
|
30292
|
+
return platformModifierKeyOnly(event);
|
|
30293
|
+
}
|
|
30294
|
+
|
|
30295
|
+
class SpatialExtentComponent {
|
|
30296
|
+
constructor() {
|
|
30297
|
+
this.spatialExtents$ = new BehaviorSubject([]);
|
|
30298
|
+
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
30299
|
+
if (extents.length === 0) {
|
|
30300
|
+
return null; // null extent means default view
|
|
30301
|
+
}
|
|
30302
|
+
const featureCollection = {
|
|
30303
|
+
type: 'FeatureCollection',
|
|
30304
|
+
features: [],
|
|
30305
|
+
};
|
|
30306
|
+
extents.forEach((extent) => {
|
|
30307
|
+
if (extent.geometry) {
|
|
30308
|
+
featureCollection.features.push({
|
|
30309
|
+
type: 'Feature',
|
|
30310
|
+
properties: {},
|
|
30311
|
+
geometry: extent.geometry,
|
|
30312
|
+
});
|
|
30313
|
+
}
|
|
30314
|
+
else if (extent.bbox?.length >= 0) {
|
|
30315
|
+
featureCollection.features.push({
|
|
30316
|
+
type: 'Feature',
|
|
30317
|
+
properties: {},
|
|
30318
|
+
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
30319
|
+
});
|
|
30320
|
+
}
|
|
30321
|
+
});
|
|
30322
|
+
const layer = {
|
|
30323
|
+
type: 'geojson',
|
|
30324
|
+
data: featureCollection,
|
|
30325
|
+
label: 'Spatial extents',
|
|
30326
|
+
style: {
|
|
30327
|
+
'stroke-color': 'black',
|
|
30328
|
+
'stroke-width': 2,
|
|
30329
|
+
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
30330
|
+
},
|
|
30331
|
+
};
|
|
30332
|
+
const view = await createViewFromLayer(layer);
|
|
30333
|
+
return {
|
|
30334
|
+
view,
|
|
30335
|
+
layers: [layer],
|
|
30336
|
+
};
|
|
30337
|
+
}));
|
|
30338
|
+
this.error = '';
|
|
30339
|
+
}
|
|
30340
|
+
set spatialExtents(value) {
|
|
30341
|
+
this.spatialExtents$.next(value);
|
|
30342
|
+
}
|
|
30343
|
+
bboxCoordsToGeometry(bbox) {
|
|
30344
|
+
const geometry = new Polygon([
|
|
30345
|
+
[
|
|
30346
|
+
[bbox[0], bbox[1]],
|
|
30347
|
+
[bbox[0], bbox[3]],
|
|
30348
|
+
[bbox[2], bbox[3]],
|
|
30349
|
+
[bbox[2], bbox[1]],
|
|
30350
|
+
[bbox[0], bbox[1]],
|
|
30351
|
+
],
|
|
30352
|
+
]);
|
|
30353
|
+
return new GeoJSON().writeGeometryObject(geometry);
|
|
30354
|
+
}
|
|
30355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }] }); }
|
|
30357
|
+
}
|
|
30358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialExtentComponent, decorators: [{
|
|
30359
|
+
type: Component,
|
|
30360
|
+
args: [{ selector: 'gn-ui-spatial-extent', standalone: true, imports: [CommonModule, MapContainerComponent], template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n" }]
|
|
30361
|
+
}], propDecorators: { spatialExtents: [{
|
|
30362
|
+
type: Input
|
|
30363
|
+
}] } });
|
|
30364
|
+
|
|
29526
30365
|
class MetadataInfoComponent {
|
|
29527
30366
|
constructor(dateService) {
|
|
29528
30367
|
this.dateService = dateService;
|
|
@@ -29575,7 +30414,7 @@ class MetadataInfoComponent {
|
|
|
29575
30414
|
}
|
|
29576
30415
|
}
|
|
29577
30416
|
get temporalExtent() {
|
|
29578
|
-
const temporalExtents = this.metadata.temporalExtents;
|
|
30417
|
+
const temporalExtents = this.metadata.kind === 'dataset' ? this.metadata.temporalExtents : [];
|
|
29579
30418
|
return getTemporalRangeUnion(temporalExtents, this.dateService);
|
|
29580
30419
|
}
|
|
29581
30420
|
get shownOrganization() {
|
|
@@ -29597,7 +30436,7 @@ class MetadataInfoComponent {
|
|
|
29597
30436
|
return this.dateService.formatDateTime(date);
|
|
29598
30437
|
}
|
|
29599
30438
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29600
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }], viewProviders: [
|
|
30439
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
29601
30440
|
provideIcons({
|
|
29602
30441
|
matOpenInNew,
|
|
29603
30442
|
matMailOutline: matMailOutline$1,
|
|
@@ -29618,12 +30457,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29618
30457
|
CopyTextButtonComponent,
|
|
29619
30458
|
NgIcon,
|
|
29620
30459
|
GnUiLinkifyDirective,
|
|
30460
|
+
MapContainerComponent,
|
|
30461
|
+
SpatialExtentComponent,
|
|
29621
30462
|
], viewProviders: [
|
|
29622
30463
|
provideIcons({
|
|
29623
30464
|
matOpenInNew,
|
|
29624
30465
|
matMailOutline: matMailOutline$1,
|
|
29625
30466
|
}),
|
|
29626
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-primary text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}\n"] }]
|
|
30467
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
29627
30468
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
29628
30469
|
type: Input
|
|
29629
30470
|
}], incomplete: [{
|
|
@@ -29995,7 +30836,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29995
30836
|
type: Input
|
|
29996
30837
|
}] } });
|
|
29997
30838
|
|
|
29998
|
-
marker('record.kind.
|
|
30839
|
+
marker('record.kind.data');
|
|
29999
30840
|
marker('record.kind.reuse');
|
|
30000
30841
|
marker('record.kind.service');
|
|
30001
30842
|
class InternalLinkCardComponent {
|
|
@@ -30075,7 +30916,7 @@ class InternalLinkCardComponent {
|
|
|
30075
30916
|
return { text: '', icon: '' };
|
|
30076
30917
|
switch (this.record.kind.toLowerCase()) {
|
|
30077
30918
|
case 'dataset':
|
|
30078
|
-
return { text: 'record.kind.
|
|
30919
|
+
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30079
30920
|
case 'reuse':
|
|
30080
30921
|
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30081
30922
|
case 'service':
|
|
@@ -30143,6 +30984,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30143
30984
|
type: Output
|
|
30144
30985
|
}] } });
|
|
30145
30986
|
|
|
30987
|
+
marker(`service.metadata.search`);
|
|
30988
|
+
marker(`service.metadata.capabilities.title`);
|
|
30989
|
+
marker(`service.metadata.capabilities.abstract`);
|
|
30990
|
+
marker(`service.metadata.capabilities.name`);
|
|
30991
|
+
marker(`service.metadata.capabilities.defaultCrs`);
|
|
30992
|
+
marker(`service.metadata.capabilities.availableCrs`);
|
|
30993
|
+
marker(`service.metadata.capabilities.otherCrs`);
|
|
30994
|
+
marker(`service.metadata.capabilities.objectCount`);
|
|
30995
|
+
marker(`service.metadata.capabilities.geometryName`);
|
|
30996
|
+
marker(`service.metadata.capabilities.geometryType`);
|
|
30997
|
+
marker(`service.metadata.capabilities.keywords`);
|
|
30998
|
+
marker(`service.metadata.capabilities.outputFormats`);
|
|
30999
|
+
marker(`service.metadata.capabilities.resourceLinks`);
|
|
31000
|
+
marker(`service.metadata.capabilities.attribution`);
|
|
31001
|
+
class ServiceCapabilitiesComponent {
|
|
31002
|
+
constructor(cdr, translateService) {
|
|
31003
|
+
this.cdr = cdr;
|
|
31004
|
+
this.translateService = translateService;
|
|
31005
|
+
this.apiLinks = [];
|
|
31006
|
+
this.availableLayers = [];
|
|
31007
|
+
this.filteredLayers = [];
|
|
31008
|
+
this.selectedLayer = null;
|
|
31009
|
+
this.layerInformation = [];
|
|
31010
|
+
this.searchQuery = '';
|
|
31011
|
+
this.loading = false;
|
|
31012
|
+
this.capabilitiesKeys = [
|
|
31013
|
+
'title',
|
|
31014
|
+
'abstract',
|
|
31015
|
+
'name',
|
|
31016
|
+
'defaultCrs',
|
|
31017
|
+
'availableCrs',
|
|
31018
|
+
'otherCrs',
|
|
31019
|
+
'objectCount',
|
|
31020
|
+
'geometryName',
|
|
31021
|
+
'geometryType',
|
|
31022
|
+
'keywords',
|
|
31023
|
+
'outputFormats',
|
|
31024
|
+
'resourceLinks',
|
|
31025
|
+
'attribution',
|
|
31026
|
+
];
|
|
31027
|
+
}
|
|
31028
|
+
ngOnInit() {
|
|
31029
|
+
this.loadLayers();
|
|
31030
|
+
}
|
|
31031
|
+
onSearchChange(event) {
|
|
31032
|
+
const input = event.target;
|
|
31033
|
+
this.searchQuery = input.value;
|
|
31034
|
+
if (!input.value) {
|
|
31035
|
+
this.searchActive = false;
|
|
31036
|
+
this.filteredLayers = this.availableLayers;
|
|
31037
|
+
}
|
|
31038
|
+
}
|
|
31039
|
+
onSearchEnter(event) {
|
|
31040
|
+
if (event.key === 'Enter') {
|
|
31041
|
+
this.searchActive = true;
|
|
31042
|
+
this.searchLayers();
|
|
31043
|
+
}
|
|
31044
|
+
}
|
|
31045
|
+
async loadLayers() {
|
|
31046
|
+
if (this.apiLinks.length > 0 &&
|
|
31047
|
+
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
31048
|
+
this.loading = true;
|
|
31049
|
+
this.availableLayers = await getLayers(this.apiLinks[0].url.href, this.apiLinks[0].accessServiceProtocol);
|
|
31050
|
+
this.loading = false;
|
|
31051
|
+
this.cdr.detectChanges();
|
|
31052
|
+
this.filteredLayers = this.availableLayers;
|
|
31053
|
+
}
|
|
31054
|
+
else {
|
|
31055
|
+
this.availableLayers = [];
|
|
31056
|
+
}
|
|
31057
|
+
}
|
|
31058
|
+
selectLayer(layer) {
|
|
31059
|
+
if (layer === this.selectedLayer) {
|
|
31060
|
+
this.selectedLayer = null;
|
|
31061
|
+
this.layerInformation = [];
|
|
31062
|
+
return;
|
|
31063
|
+
}
|
|
31064
|
+
this.selectedLayer = layer;
|
|
31065
|
+
const filteredInfo = [];
|
|
31066
|
+
Object.keys(layer).map((key) => {
|
|
31067
|
+
if (this.capabilitiesKeys.includes(key)) {
|
|
31068
|
+
const displayName = this.translateService.instant(`service.metadata.capabilities.${key}`);
|
|
31069
|
+
if (key in layer && layer[key]?.length) {
|
|
31070
|
+
filteredInfo.push({ displayName, value: layer[key] });
|
|
31071
|
+
}
|
|
31072
|
+
}
|
|
31073
|
+
});
|
|
31074
|
+
this.layerInformation = filteredInfo;
|
|
31075
|
+
}
|
|
31076
|
+
isList(value) {
|
|
31077
|
+
return Array.isArray(value);
|
|
31078
|
+
}
|
|
31079
|
+
getExtraInputClass() {
|
|
31080
|
+
if (this.searchActive) {
|
|
31081
|
+
return 'h-14 border rounded-lg border-primary text-primary focus:border-primary hover:border-primary';
|
|
31082
|
+
}
|
|
31083
|
+
return 'h-14 border rounded-lg';
|
|
31084
|
+
}
|
|
31085
|
+
searchLayers() {
|
|
31086
|
+
this.searchActive = true;
|
|
31087
|
+
this.filteredLayers = this.availableLayers.filter((layer) => {
|
|
31088
|
+
const query = this.searchQuery.toLowerCase();
|
|
31089
|
+
if (layer.title) {
|
|
31090
|
+
return (layer.title.toLowerCase().includes(query) ||
|
|
31091
|
+
layer.abstract?.toLowerCase().includes(query));
|
|
31092
|
+
}
|
|
31093
|
+
else {
|
|
31094
|
+
return layer.name.toLowerCase().includes(query);
|
|
31095
|
+
}
|
|
31096
|
+
});
|
|
31097
|
+
if (!this.filteredLayers.includes(this.selectedLayer)) {
|
|
31098
|
+
this.selectedLayer = null;
|
|
31099
|
+
this.layerInformation = [];
|
|
31100
|
+
}
|
|
31101
|
+
}
|
|
31102
|
+
getExtraClass(layerItem) {
|
|
31103
|
+
return layerItem.title === this.selectedLayer?.title
|
|
31104
|
+
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
31105
|
+
: `h-8 rounded-lg`;
|
|
31106
|
+
}
|
|
31107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
31109
|
+
provideIcons({
|
|
31110
|
+
iconoirSearch,
|
|
31111
|
+
matInfoOutline,
|
|
31112
|
+
}),
|
|
31113
|
+
] }); }
|
|
31114
|
+
}
|
|
31115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, decorators: [{
|
|
31116
|
+
type: Component,
|
|
31117
|
+
args: [{ selector: 'gn-ui-service-capabilities', standalone: true, imports: [
|
|
31118
|
+
CommonModule,
|
|
31119
|
+
TranslateModule,
|
|
31120
|
+
ButtonComponent,
|
|
31121
|
+
TextInputComponent,
|
|
31122
|
+
NgIcon,
|
|
31123
|
+
PopoverComponent,
|
|
31124
|
+
SpinningLoaderComponent,
|
|
31125
|
+
], viewProviders: [
|
|
31126
|
+
provideIcons({
|
|
31127
|
+
iconoirSearch,
|
|
31128
|
+
matInfoOutline,
|
|
31129
|
+
}),
|
|
31130
|
+
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
31131
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { apiLinks: [{
|
|
31132
|
+
type: Input
|
|
31133
|
+
}] } });
|
|
31134
|
+
|
|
30146
31135
|
class UiElementsModule {
|
|
30147
31136
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30148
31137
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, declarations: [AvatarComponent, UserPreviewComponent], imports: [CommonModule,
|
|
@@ -30162,13 +31151,17 @@ class UiElementsModule {
|
|
|
30162
31151
|
TextInputComponent,
|
|
30163
31152
|
ImageInputComponent,
|
|
30164
31153
|
ApplicationBannerComponent,
|
|
30165
|
-
InternalLinkCardComponent
|
|
31154
|
+
InternalLinkCardComponent,
|
|
31155
|
+
ServiceCapabilitiesComponent,
|
|
31156
|
+
KindBadgeComponent], exports: [ThumbnailComponent,
|
|
30166
31157
|
AvatarComponent,
|
|
30167
31158
|
UserPreviewComponent,
|
|
30168
31159
|
MarkdownParserComponent,
|
|
30169
31160
|
ImageInputComponent,
|
|
30170
31161
|
ApplicationBannerComponent,
|
|
30171
|
-
InternalLinkCardComponent
|
|
31162
|
+
InternalLinkCardComponent,
|
|
31163
|
+
ServiceCapabilitiesComponent,
|
|
31164
|
+
KindBadgeComponent] }); }
|
|
30172
31165
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
30173
31166
|
provideNgIconsConfig({
|
|
30174
31167
|
size: '1.5em',
|
|
@@ -30189,7 +31182,9 @@ class UiElementsModule {
|
|
|
30189
31182
|
TextInputComponent,
|
|
30190
31183
|
ImageInputComponent,
|
|
30191
31184
|
ApplicationBannerComponent,
|
|
30192
|
-
InternalLinkCardComponent
|
|
31185
|
+
InternalLinkCardComponent,
|
|
31186
|
+
ServiceCapabilitiesComponent,
|
|
31187
|
+
KindBadgeComponent] }); }
|
|
30193
31188
|
}
|
|
30194
31189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
30195
31190
|
type: NgModule,
|
|
@@ -30215,6 +31210,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30215
31210
|
ImageInputComponent,
|
|
30216
31211
|
ApplicationBannerComponent,
|
|
30217
31212
|
InternalLinkCardComponent,
|
|
31213
|
+
ServiceCapabilitiesComponent,
|
|
31214
|
+
KindBadgeComponent,
|
|
30218
31215
|
],
|
|
30219
31216
|
providers: [
|
|
30220
31217
|
provideNgIconsConfig({
|
|
@@ -30230,6 +31227,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30230
31227
|
ImageInputComponent,
|
|
30231
31228
|
ApplicationBannerComponent,
|
|
30232
31229
|
InternalLinkCardComponent,
|
|
31230
|
+
ServiceCapabilitiesComponent,
|
|
31231
|
+
KindBadgeComponent,
|
|
30233
31232
|
],
|
|
30234
31233
|
}]
|
|
30235
31234
|
}] });
|
|
@@ -30311,6 +31310,7 @@ class UiSearchModule {
|
|
|
30311
31310
|
RecordMetricComponent,
|
|
30312
31311
|
ResultsListComponent,
|
|
30313
31312
|
ResultsHitsNumberComponent,
|
|
31313
|
+
ResultsHitsSearchKindComponent,
|
|
30314
31314
|
ResultsListItemComponent,
|
|
30315
31315
|
RecordPreviewFeedComponent,
|
|
30316
31316
|
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
@@ -30324,7 +31324,8 @@ class UiSearchModule {
|
|
|
30324
31324
|
UiElementsModule,
|
|
30325
31325
|
MatCheckboxModule,
|
|
30326
31326
|
RouterLink,
|
|
30327
|
-
InteractiveTableComponent, i2$2.NgIconsModule,
|
|
31327
|
+
InteractiveTableComponent, i2$2.NgIconsModule, KindBadgeComponent,
|
|
31328
|
+
MetadataQualityComponent], exports: [RecordPreviewListComponent,
|
|
30328
31329
|
RecordPreviewCardComponent,
|
|
30329
31330
|
RecordPreviewTextComponent,
|
|
30330
31331
|
RecordPreviewTitleComponent,
|
|
@@ -30333,6 +31334,7 @@ class UiSearchModule {
|
|
|
30333
31334
|
FacetsModule$1,
|
|
30334
31335
|
RecordPreviewComponent,
|
|
30335
31336
|
ResultsHitsNumberComponent,
|
|
31337
|
+
ResultsHitsSearchKindComponent,
|
|
30336
31338
|
RecordPreviewFeedComponent,
|
|
30337
31339
|
RecordPreviewRowComponent] }); }
|
|
30338
31340
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, providers: [
|
|
@@ -30360,6 +31362,7 @@ class UiSearchModule {
|
|
|
30360
31362
|
matFace,
|
|
30361
31363
|
matHomeWorkOutline,
|
|
30362
31364
|
}),
|
|
31365
|
+
KindBadgeComponent,
|
|
30363
31366
|
MetadataQualityComponent, FacetsModule$1] }); }
|
|
30364
31367
|
}
|
|
30365
31368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
@@ -30374,6 +31377,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30374
31377
|
RecordMetricComponent,
|
|
30375
31378
|
ResultsListComponent,
|
|
30376
31379
|
ResultsHitsNumberComponent,
|
|
31380
|
+
ResultsHitsSearchKindComponent,
|
|
30377
31381
|
ResultsListItemComponent,
|
|
30378
31382
|
RecordPreviewFeedComponent,
|
|
30379
31383
|
RecordPreviewRowComponent,
|
|
@@ -30400,6 +31404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30400
31404
|
matFace,
|
|
30401
31405
|
matHomeWorkOutline,
|
|
30402
31406
|
}),
|
|
31407
|
+
KindBadgeComponent,
|
|
30403
31408
|
MetadataQualityComponent,
|
|
30404
31409
|
],
|
|
30405
31410
|
exports: [
|
|
@@ -30412,6 +31417,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30412
31417
|
FacetsModule$1,
|
|
30413
31418
|
RecordPreviewComponent,
|
|
30414
31419
|
ResultsHitsNumberComponent,
|
|
31420
|
+
ResultsHitsSearchKindComponent,
|
|
30415
31421
|
RecordPreviewFeedComponent,
|
|
30416
31422
|
RecordPreviewRowComponent,
|
|
30417
31423
|
],
|
|
@@ -30570,8 +31576,9 @@ class ResultsTableComponent {
|
|
|
30570
31576
|
return getBadgeColor(format);
|
|
30571
31577
|
}
|
|
30572
31578
|
handleRecordClick(item) {
|
|
30573
|
-
if (item?.extras?.edit || this.isDraftPage)
|
|
31579
|
+
if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
|
|
30574
31580
|
this.recordClick.emit(item);
|
|
31581
|
+
}
|
|
30575
31582
|
}
|
|
30576
31583
|
handleDuplicate(item) {
|
|
30577
31584
|
this.duplicateRecord.emit(item);
|
|
@@ -30608,7 +31615,7 @@ class ResultsTableComponent {
|
|
|
30608
31615
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
30609
31616
|
}
|
|
30610
31617
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$9.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30611
|
-
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", rollbackDraft: "rollbackDraft", 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'
|
|
31618
|
+
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", rollbackDraft: "rollbackDraft", 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) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\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]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\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 [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\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$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.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: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "isDraftPage"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback"] }, { 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"] }] }); }
|
|
30612
31619
|
}
|
|
30613
31620
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30614
31621
|
type: Component,
|
|
@@ -30622,7 +31629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30622
31629
|
ActionMenuComponent,
|
|
30623
31630
|
NgIconComponent,
|
|
30624
31631
|
CdkOverlayOrigin,
|
|
30625
|
-
], 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'
|
|
31632
|
+
], 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) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\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]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\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 [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30626
31633
|
}], ctorParameters: () => [{ type: i1$9.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
30627
31634
|
type: Input
|
|
30628
31635
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -31653,9 +32660,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31653
32660
|
type: Injectable
|
|
31654
32661
|
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
31655
32662
|
|
|
31656
|
-
class RecordsRepositoryInterface {
|
|
31657
|
-
}
|
|
31658
|
-
|
|
31659
32663
|
class FuzzySearchComponent {
|
|
31660
32664
|
constructor(searchFacade, searchService, recordsRepository) {
|
|
31661
32665
|
this.searchFacade = searchFacade;
|
|
@@ -31794,7 +32798,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31794
32798
|
}] }] });
|
|
31795
32799
|
|
|
31796
32800
|
// expects the replacement key ${uuid}
|
|
31797
|
-
const
|
|
32801
|
+
const RECORD_DATASET_URL_TOKEN = new InjectionToken('record-dataset-url-token');
|
|
32802
|
+
const RECORD_SERVICE_URL_TOKEN = new InjectionToken('record-service-url-token');
|
|
32803
|
+
const RECORD_REUSE_URL_TOKEN = new InjectionToken('record-reuse-url-token');
|
|
31798
32804
|
|
|
31799
32805
|
class FavoriteStarComponent {
|
|
31800
32806
|
set record(value) {
|
|
@@ -31880,11 +32886,11 @@ class FavoriteStarComponent {
|
|
|
31880
32886
|
});
|
|
31881
32887
|
}
|
|
31882
32888
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, deps: [{ token: FavoritesService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: AuthService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32889
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FavoriteStarComponent, isStandalone: true, selector: "gn-ui-favorite-star", inputs: { displayCount: "displayCount", record: "record" }, viewQueries: [{ propertyName: "starToggleRef", first: true, predicate: StarToggleComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: ["toggled", "disabled"], outputs: ["newValue"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31884
32890
|
}
|
|
31885
32891
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FavoriteStarComponent, decorators: [{
|
|
31886
32892
|
type: Component,
|
|
31887
|
-
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n" }]
|
|
32893
|
+
args: [{ selector: 'gn-ui-favorite-star', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, StarToggleComponent, TranslateModule], template: "<div class=\"flex flex-row items-center\">\n <span\n class=\"align-text-top mr-1.5 mt-0.5\"\n data-test=\"favorite-count\"\n *ngIf=\"hasFavoriteCount && displayCount\"\n >{{ favoriteCount }}</span\n >\n <gn-ui-star-toggle\n [toggled]=\"isFavorite$ | async\"\n (newValue)=\"toggleFavorite($event)\"\n [disabled]=\"loading || (isAnonymous$ | async)\"\n ></gn-ui-star-toggle>\n</div>\n" }]
|
|
31888
32894
|
}], ctorParameters: () => [{ type: FavoritesService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: AuthService }, { type: i1$1.TranslateService }], propDecorators: { displayCount: [{
|
|
31889
32895
|
type: Input
|
|
31890
32896
|
}], record: [{
|
|
@@ -31895,10 +32901,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31895
32901
|
}] } });
|
|
31896
32902
|
|
|
31897
32903
|
class ResultsListContainerComponent {
|
|
31898
|
-
constructor(facade, resultsLayoutConfig,
|
|
32904
|
+
constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
|
|
31899
32905
|
this.facade = facade;
|
|
31900
32906
|
this.resultsLayoutConfig = resultsLayoutConfig;
|
|
31901
|
-
this.
|
|
32907
|
+
this.recordDatasetUrlTemplate = recordDatasetUrlTemplate;
|
|
32908
|
+
this.recordServiceUrlTemplate = recordServiceUrlTemplate;
|
|
32909
|
+
this.recordReuseUrlTemplate = recordReuseUrlTemplate;
|
|
31902
32910
|
this.showMore = 'auto';
|
|
31903
32911
|
this.mdSelect = new EventEmitter();
|
|
31904
32912
|
this.errorTypes = ErrorType;
|
|
@@ -31930,16 +32938,24 @@ class ResultsListContainerComponent {
|
|
|
31930
32938
|
this.facade.scroll();
|
|
31931
32939
|
}
|
|
31932
32940
|
getRecordUrl(metadata) {
|
|
31933
|
-
|
|
32941
|
+
const tokenMap = {
|
|
32942
|
+
dataset: this.recordDatasetUrlTemplate,
|
|
32943
|
+
service: this.recordServiceUrlTemplate,
|
|
32944
|
+
reuse: this.recordReuseUrlTemplate,
|
|
32945
|
+
};
|
|
32946
|
+
if (!this.recordDatasetUrlTemplate &&
|
|
32947
|
+
!this.recordServiceUrlTemplate &&
|
|
32948
|
+
!this.recordReuseUrlTemplate)
|
|
31934
32949
|
return null;
|
|
31935
|
-
|
|
32950
|
+
const urlKind = tokenMap[metadata.kind];
|
|
32951
|
+
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
31936
32952
|
}
|
|
31937
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token:
|
|
31938
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32953
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN }, { token: RECORD_REUSE_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32954
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
31939
32955
|
}
|
|
31940
32956
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
31941
32957
|
type: Component,
|
|
31942
|
-
args: [{ selector: 'gn-ui-results-list-container', template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"] }]
|
|
32958
|
+
args: [{ selector: 'gn-ui-results-list-container', template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"] }]
|
|
31943
32959
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: undefined, decorators: [{
|
|
31944
32960
|
type: Inject,
|
|
31945
32961
|
args: [RESULTS_LAYOUT_CONFIG]
|
|
@@ -31947,7 +32963,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31947
32963
|
type: Optional
|
|
31948
32964
|
}, {
|
|
31949
32965
|
type: Inject,
|
|
31950
|
-
args: [
|
|
32966
|
+
args: [RECORD_DATASET_URL_TOKEN]
|
|
32967
|
+
}] }, { type: undefined, decorators: [{
|
|
32968
|
+
type: Inject,
|
|
32969
|
+
args: [RECORD_SERVICE_URL_TOKEN]
|
|
32970
|
+
}] }, { type: undefined, decorators: [{
|
|
32971
|
+
type: Inject,
|
|
32972
|
+
args: [RECORD_REUSE_URL_TOKEN]
|
|
31951
32973
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
31952
32974
|
type: Input
|
|
31953
32975
|
}], layout: [{
|
|
@@ -32145,41 +33167,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32145
33167
|
args: [FILTER_GEOMETRY]
|
|
32146
33168
|
}] }] });
|
|
32147
33169
|
|
|
32148
|
-
class ResultsHitsContainerComponent {
|
|
32149
|
-
constructor(facade) {
|
|
32150
|
-
this.facade = facade;
|
|
32151
|
-
}
|
|
32152
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, deps: [{ token: SearchFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsContainerComponent, selector: "gn-ui-results-hits", ngImport: i0, template: "<gn-ui-results-hits-number\n [loading]=\"facade.isLoading$ | async\"\n [hits]=\"facade.resultsHits$ | async\"\n></gn-ui-results-hits-number>\n", dependencies: [{ kind: "component", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: ["hits", "loading"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32154
|
-
}
|
|
32155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, decorators: [{
|
|
32156
|
-
type: Component,
|
|
32157
|
-
args: [{ selector: 'gn-ui-results-hits', template: "<gn-ui-results-hits-number\n [loading]=\"facade.isLoading$ | async\"\n [hits]=\"facade.resultsHits$ | async\"\n></gn-ui-results-hits-number>\n" }]
|
|
32158
|
-
}], ctorParameters: () => [{ type: SearchFacade }] });
|
|
32159
|
-
|
|
32160
|
-
class SearchStateContainerDirective {
|
|
32161
|
-
constructor(facade) {
|
|
32162
|
-
this.facade = facade;
|
|
32163
|
-
}
|
|
32164
|
-
ngOnInit() {
|
|
32165
|
-
this.facade.init(this.searchId);
|
|
32166
|
-
}
|
|
32167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, deps: [{ token: SearchFacade, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
32168
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SearchStateContainerDirective, selector: "[gnUiSearchStateContainer]", inputs: { searchId: ["gnUiSearchStateContainer", "searchId"] }, providers: [SearchFacade, SearchService], ngImport: i0 }); }
|
|
32169
|
-
}
|
|
32170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, decorators: [{
|
|
32171
|
-
type: Directive,
|
|
32172
|
-
args: [{
|
|
32173
|
-
selector: '[gnUiSearchStateContainer]',
|
|
32174
|
-
providers: [SearchFacade, SearchService],
|
|
32175
|
-
}]
|
|
32176
|
-
}], ctorParameters: () => [{ type: SearchFacade, decorators: [{
|
|
32177
|
-
type: Host
|
|
32178
|
-
}] }], propDecorators: { searchId: [{
|
|
32179
|
-
type: Input,
|
|
32180
|
-
args: ['gnUiSearchStateContainer']
|
|
32181
|
-
}] } });
|
|
32182
|
-
|
|
32183
33170
|
class AbstractSearchField {
|
|
32184
33171
|
}
|
|
32185
33172
|
class SimpleSearchField {
|
|
@@ -32210,6 +33197,7 @@ class SimpleSearchField {
|
|
|
32210
33197
|
const bucketPromises = buckets.map(async (bucket) => ({
|
|
32211
33198
|
label: `${await this.getBucketLabel(bucket)} (${bucket.count})`,
|
|
32212
33199
|
value: bucket.term.toString(),
|
|
33200
|
+
count: bucket.count,
|
|
32213
33201
|
}));
|
|
32214
33202
|
return Promise.all(bucketPromises);
|
|
32215
33203
|
}));
|
|
@@ -32535,6 +33523,73 @@ class AvailableServicesField extends SimpleSearchField {
|
|
|
32535
33523
|
return of(values);
|
|
32536
33524
|
}
|
|
32537
33525
|
}
|
|
33526
|
+
/**
|
|
33527
|
+
* This class is meant to be used with the legacy filter on `resourceType` (now deprecated, the use of `recordKind` field is recommended).
|
|
33528
|
+
* Since creating filters on the same ES field is not possible, in order to make the resource type filter still working,
|
|
33529
|
+
* we create an ES on the fly: `resourceTypeLegacy` that references the `resourceType` under the hood.
|
|
33530
|
+
* @deprecated Use `recordKind` field instead.
|
|
33531
|
+
*/
|
|
33532
|
+
class ResourceTypeLegacyField extends TranslatedSearchField {
|
|
33533
|
+
constructor(injector) {
|
|
33534
|
+
super('resourceTypeLegacy', injector, 'asc');
|
|
33535
|
+
// Ask ES to create a field on the fly: 'resourceTypeLegacy' that is in fact, 'resourceType'
|
|
33536
|
+
this.esService.registerRuntimeField('resourceTypeLegacy', `for (resourceType in doc.resourceType) { emit(resourceType) }`);
|
|
33537
|
+
}
|
|
33538
|
+
}
|
|
33539
|
+
class RecordKindField extends SimpleSearchField {
|
|
33540
|
+
constructor(injector) {
|
|
33541
|
+
super('resourceType', injector, 'asc');
|
|
33542
|
+
this.TYPE_MAPPING = {
|
|
33543
|
+
dataset: ['dataset', 'series', 'featureCatalog'],
|
|
33544
|
+
service: ['service'],
|
|
33545
|
+
reuse: Object.entries(PossibleResourceTypes)
|
|
33546
|
+
.filter(([_, v]) => v === 'reuse')
|
|
33547
|
+
.map(([k]) => k), // = ['application', 'map', 'staticMap', 'interactiveMap', ...]
|
|
33548
|
+
};
|
|
33549
|
+
}
|
|
33550
|
+
getAvailableValues() {
|
|
33551
|
+
return this.repository.aggregate(this.getAggregations()).pipe(map$1((response) => response[this.esFieldName].buckets || []), map$1((buckets) => {
|
|
33552
|
+
const counts = buckets.reduce((acc, { term, count }) => {
|
|
33553
|
+
const value = term.toString();
|
|
33554
|
+
const key = this.TYPE_MAPPING.reuse.includes(value)
|
|
33555
|
+
? 'reuse'
|
|
33556
|
+
: this.TYPE_MAPPING.dataset.includes(value)
|
|
33557
|
+
? 'dataset'
|
|
33558
|
+
: value;
|
|
33559
|
+
acc[key] = (acc[key] || 0) + count;
|
|
33560
|
+
return acc;
|
|
33561
|
+
}, {});
|
|
33562
|
+
return Object.keys(this.TYPE_MAPPING).map((type) => ({
|
|
33563
|
+
label: type,
|
|
33564
|
+
value: type,
|
|
33565
|
+
count: counts[type] ?? 0,
|
|
33566
|
+
}));
|
|
33567
|
+
}));
|
|
33568
|
+
}
|
|
33569
|
+
getFiltersForValues(values) {
|
|
33570
|
+
const filters = {
|
|
33571
|
+
[this.esFieldName]: values.reduce((acc, value) => {
|
|
33572
|
+
if (value === '')
|
|
33573
|
+
return { ...acc, [value]: true };
|
|
33574
|
+
const keysToAdd = this.TYPE_MAPPING[value] || [value];
|
|
33575
|
+
keysToAdd.forEach((key) => (acc[key] = true));
|
|
33576
|
+
return acc;
|
|
33577
|
+
}, {}),
|
|
33578
|
+
};
|
|
33579
|
+
return of(filters);
|
|
33580
|
+
}
|
|
33581
|
+
getValuesForFilter(filters) {
|
|
33582
|
+
const filter = filters[this.esFieldName];
|
|
33583
|
+
if (!filter)
|
|
33584
|
+
return of([]);
|
|
33585
|
+
const activeValues = Object.keys(filter).filter((v) => filter[v]);
|
|
33586
|
+
const activeTypes = Object.keys(this.TYPE_MAPPING).filter((type) => this.TYPE_MAPPING[type].every((t) => activeValues.includes(t)));
|
|
33587
|
+
// Allow unknown values eg. 'type=somethingnotexist' (for UI to select none)
|
|
33588
|
+
const allTypes = [].concat(...Object.values(this.TYPE_MAPPING));
|
|
33589
|
+
const unknownValues = activeValues.filter((value) => !allTypes.includes(value));
|
|
33590
|
+
return of([...activeTypes, ...unknownValues]);
|
|
33591
|
+
}
|
|
33592
|
+
}
|
|
32538
33593
|
|
|
32539
33594
|
marker('search.filters.format');
|
|
32540
33595
|
marker('search.filters.inspireKeyword');
|
|
@@ -32561,7 +33616,8 @@ class FieldsService {
|
|
|
32561
33616
|
this.fields = {
|
|
32562
33617
|
organization: new OrganizationSearchField(this.injector),
|
|
32563
33618
|
format: new SimpleSearchField('format', this.injector, 'asc'),
|
|
32564
|
-
resourceType: new
|
|
33619
|
+
resourceType: new ResourceTypeLegacyField(this.injector), // Deprecated, use `recordKind` instead
|
|
33620
|
+
recordKind: new RecordKindField(this.injector),
|
|
32565
33621
|
representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
|
|
32566
33622
|
publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
|
|
32567
33623
|
topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
|
|
@@ -32619,6 +33675,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32619
33675
|
}]
|
|
32620
33676
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
32621
33677
|
|
|
33678
|
+
marker('search.filters.recordKind.all');
|
|
33679
|
+
marker('search.filters.recordKind.dataset');
|
|
33680
|
+
marker('search.filters.recordKind.service');
|
|
33681
|
+
marker('search.filters.recordKind.reuse');
|
|
33682
|
+
class ResultsHitsContainerComponent {
|
|
33683
|
+
constructor(searchFacade, searchService, fieldsService) {
|
|
33684
|
+
this.searchFacade = searchFacade;
|
|
33685
|
+
this.searchService = searchService;
|
|
33686
|
+
this.fieldsService = fieldsService;
|
|
33687
|
+
this.fieldName = 'recordKind';
|
|
33688
|
+
}
|
|
33689
|
+
ngOnInit() {
|
|
33690
|
+
this.selected$ = this.searchFacade.searchFilters$.pipe(switchMap((filters) => this.fieldsService.readFieldValuesFromFilters(filters)), map$2((fieldValues) => fieldValues[this.fieldName]), filter$1((selected) => !!selected), startWith$1([]), catchError$1(() => of([])));
|
|
33691
|
+
this.filterChoices$ = (this.fieldsService.getAvailableValues(this.fieldName));
|
|
33692
|
+
}
|
|
33693
|
+
onSelectionChanged(values) {
|
|
33694
|
+
this.fieldsService
|
|
33695
|
+
.buildFiltersFromFieldValues({ [this.fieldName]: values })
|
|
33696
|
+
.subscribe((filters) => this.searchService.updateFilters(filters));
|
|
33697
|
+
}
|
|
33698
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33699
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsContainerComponent, selector: "gn-ui-results-hits", ngImport: i0, template: "<div\n class=\"flex flex-col gap-3 sm:flex-row justify-between\"\n [ngClass]=\"{\n 'sm:items-center': (searchFacade.resultsHits$ | async) !== 0,\n }\"\n>\n <gn-ui-results-hits-number\n [loading]=\"searchFacade.isLoading$ | async\"\n [hits]=\"searchFacade.resultsHits$ | async\"\n ></gn-ui-results-hits-number>\n <gn-ui-results-hits-search-kind\n (selectionChanged)=\"onSelectionChanged($event)\"\n [choices]=\"filterChoices$ | async\"\n [selected]=\"selected$ | async\"\n ></gn-ui-results-hits-search-kind>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResultsHitsNumberComponent, selector: "gn-ui-results-hits-number", inputs: ["hits", "loading"] }, { kind: "component", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: ["selected", "choices"], outputs: ["selectionChanged"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
33700
|
+
}
|
|
33701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsContainerComponent, decorators: [{
|
|
33702
|
+
type: Component,
|
|
33703
|
+
args: [{ selector: 'gn-ui-results-hits', template: "<div\n class=\"flex flex-col gap-3 sm:flex-row justify-between\"\n [ngClass]=\"{\n 'sm:items-center': (searchFacade.resultsHits$ | async) !== 0,\n }\"\n>\n <gn-ui-results-hits-number\n [loading]=\"searchFacade.isLoading$ | async\"\n [hits]=\"searchFacade.resultsHits$ | async\"\n ></gn-ui-results-hits-number>\n <gn-ui-results-hits-search-kind\n (selectionChanged)=\"onSelectionChanged($event)\"\n [choices]=\"filterChoices$ | async\"\n [selected]=\"selected$ | async\"\n ></gn-ui-results-hits-search-kind>\n</div>\n" }]
|
|
33704
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: FieldsService }] });
|
|
33705
|
+
|
|
33706
|
+
class SearchStateContainerDirective {
|
|
33707
|
+
constructor(facade) {
|
|
33708
|
+
this.facade = facade;
|
|
33709
|
+
}
|
|
33710
|
+
ngOnInit() {
|
|
33711
|
+
this.facade.init(this.searchId);
|
|
33712
|
+
}
|
|
33713
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, deps: [{ token: SearchFacade, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
33714
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SearchStateContainerDirective, selector: "[gnUiSearchStateContainer]", inputs: { searchId: ["gnUiSearchStateContainer", "searchId"] }, providers: [SearchFacade, SearchService], ngImport: i0 }); }
|
|
33715
|
+
}
|
|
33716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchStateContainerDirective, decorators: [{
|
|
33717
|
+
type: Directive,
|
|
33718
|
+
args: [{
|
|
33719
|
+
selector: '[gnUiSearchStateContainer]',
|
|
33720
|
+
providers: [SearchFacade, SearchService],
|
|
33721
|
+
}]
|
|
33722
|
+
}], ctorParameters: () => [{ type: SearchFacade, decorators: [{
|
|
33723
|
+
type: Host
|
|
33724
|
+
}] }], propDecorators: { searchId: [{
|
|
33725
|
+
type: Input,
|
|
33726
|
+
args: ['gnUiSearchStateContainer']
|
|
33727
|
+
}] } });
|
|
33728
|
+
|
|
32622
33729
|
class FilterDropdownComponent {
|
|
32623
33730
|
onSelectedValues(values) {
|
|
32624
33731
|
this.fieldsService
|
|
@@ -32690,7 +33797,9 @@ class FeatureSearchModule {
|
|
|
32690
33797
|
SpinningLoaderComponent,
|
|
32691
33798
|
ErrorComponent,
|
|
32692
33799
|
FavoriteStarComponent,
|
|
32693
|
-
DateRangeDropdownComponent
|
|
33800
|
+
DateRangeDropdownComponent,
|
|
33801
|
+
NgIconsModule,
|
|
33802
|
+
KindBadgeComponent], exports: [SortByComponent,
|
|
32694
33803
|
ResultsLayoutComponent,
|
|
32695
33804
|
FuzzySearchComponent,
|
|
32696
33805
|
RecordsMetricsComponent,
|
|
@@ -32699,12 +33808,7 @@ class FeatureSearchModule {
|
|
|
32699
33808
|
FacetsModule,
|
|
32700
33809
|
SearchStateContainerDirective,
|
|
32701
33810
|
FilterDropdownComponent] }); }
|
|
32702
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule,
|
|
32703
|
-
{
|
|
32704
|
-
provide: RecordsRepositoryInterface,
|
|
32705
|
-
useClass: Gn4Repository,
|
|
32706
|
-
},
|
|
32707
|
-
], imports: [CommonModule,
|
|
33811
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, imports: [CommonModule,
|
|
32708
33812
|
TranslateModule.forChild(),
|
|
32709
33813
|
StoreModule.forFeature(SEARCH_FEATURE_KEY, reducer$2, {
|
|
32710
33814
|
initialState,
|
|
@@ -32720,7 +33824,9 @@ class FeatureSearchModule {
|
|
|
32720
33824
|
AutocompleteComponent,
|
|
32721
33825
|
ErrorComponent,
|
|
32722
33826
|
FavoriteStarComponent,
|
|
32723
|
-
DateRangeDropdownComponent,
|
|
33827
|
+
DateRangeDropdownComponent,
|
|
33828
|
+
NgIconsModule,
|
|
33829
|
+
KindBadgeComponent, FacetsModule] }); }
|
|
32724
33830
|
}
|
|
32725
33831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureSearchModule, decorators: [{
|
|
32726
33832
|
type: NgModule,
|
|
@@ -32754,6 +33860,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32754
33860
|
ErrorComponent,
|
|
32755
33861
|
FavoriteStarComponent,
|
|
32756
33862
|
DateRangeDropdownComponent,
|
|
33863
|
+
NgIconsModule,
|
|
33864
|
+
KindBadgeComponent,
|
|
32757
33865
|
],
|
|
32758
33866
|
exports: [
|
|
32759
33867
|
SortByComponent,
|
|
@@ -32766,12 +33874,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32766
33874
|
SearchStateContainerDirective,
|
|
32767
33875
|
FilterDropdownComponent,
|
|
32768
33876
|
],
|
|
32769
|
-
providers: [
|
|
32770
|
-
{
|
|
32771
|
-
provide: RecordsRepositoryInterface,
|
|
32772
|
-
useClass: Gn4Repository,
|
|
32773
|
-
},
|
|
32774
|
-
],
|
|
32775
33877
|
}]
|
|
32776
33878
|
}] });
|
|
32777
33879
|
|
|
@@ -33259,247 +34361,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33259
34361
|
}]
|
|
33260
34362
|
}] });
|
|
33261
34363
|
|
|
33262
|
-
const DO_NOT_USE_DEFAULT_BASEMAP = new InjectionToken('doNotUseDefaultBasemap', { factory: () => false });
|
|
33263
|
-
const BASEMAP_LAYERS = new InjectionToken('basemapLayers', { factory: () => [] });
|
|
33264
|
-
const MAP_VIEW_CONSTRAINTS = new InjectionToken('mapViewConstraints', {
|
|
33265
|
-
factory: () => ({}),
|
|
33266
|
-
});
|
|
33267
|
-
const VECTOR_STYLE_DEFAULT = new InjectionToken('vectorStyleDefault', {
|
|
33268
|
-
factory: () => ({
|
|
33269
|
-
fill: { color: 'rgba(255, 255, 255, 0.2)' },
|
|
33270
|
-
stroke: { color: '#ffcc33', width: 2 },
|
|
33271
|
-
}),
|
|
33272
|
-
});
|
|
33273
|
-
|
|
33274
|
-
const DEFAULT_BASEMAP_LAYER = {
|
|
33275
|
-
type: 'xyz',
|
|
33276
|
-
url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
33277
|
-
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
33278
|
-
};
|
|
33279
|
-
const DEFAULT_VIEW = {
|
|
33280
|
-
center: [0, 15],
|
|
33281
|
-
zoom: 2,
|
|
33282
|
-
};
|
|
33283
|
-
class MapContainerComponent {
|
|
33284
|
-
get featuresClick() {
|
|
33285
|
-
if (!this._featuresClick) {
|
|
33286
|
-
this.openlayersMap.then((olMap) => {
|
|
33287
|
-
listen(olMap, FeaturesClickEventType, ({ features }) => this._featuresClick.emit(features));
|
|
33288
|
-
});
|
|
33289
|
-
this._featuresClick = new EventEmitter();
|
|
33290
|
-
}
|
|
33291
|
-
return this._featuresClick;
|
|
33292
|
-
}
|
|
33293
|
-
get featuresHover() {
|
|
33294
|
-
if (!this._featuresHover) {
|
|
33295
|
-
this.openlayersMap.then((olMap) => {
|
|
33296
|
-
listen(olMap, FeaturesHoverEventType, ({ features }) => this._featuresHover.emit(features));
|
|
33297
|
-
});
|
|
33298
|
-
this._featuresHover = new EventEmitter();
|
|
33299
|
-
}
|
|
33300
|
-
return this._featuresHover;
|
|
33301
|
-
}
|
|
33302
|
-
get mapClick() {
|
|
33303
|
-
if (!this._mapClick) {
|
|
33304
|
-
this.openlayersMap.then((olMap) => {
|
|
33305
|
-
listen(olMap, MapClickEventType, ({ coordinate }) => this._mapClick.emit(coordinate));
|
|
33306
|
-
});
|
|
33307
|
-
this._mapClick = new EventEmitter();
|
|
33308
|
-
}
|
|
33309
|
-
return this._mapClick;
|
|
33310
|
-
}
|
|
33311
|
-
get sourceLoadError() {
|
|
33312
|
-
if (!this._sourceLoadError) {
|
|
33313
|
-
this.openlayersMap.then((olMap) => {
|
|
33314
|
-
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33315
|
-
});
|
|
33316
|
-
this._sourceLoadError = new EventEmitter();
|
|
33317
|
-
}
|
|
33318
|
-
return this._sourceLoadError;
|
|
33319
|
-
}
|
|
33320
|
-
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
33321
|
-
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
33322
|
-
this.basemapLayers = basemapLayers;
|
|
33323
|
-
this.mapViewConstraints = mapViewConstraints;
|
|
33324
|
-
this.openlayersMap = new Promise((resolve) => {
|
|
33325
|
-
this.olMapResolver = resolve;
|
|
33326
|
-
});
|
|
33327
|
-
}
|
|
33328
|
-
async ngAfterViewInit() {
|
|
33329
|
-
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
33330
|
-
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map$1(() => true)), fromEvent(this.olMap, 'movestart').pipe(map$1(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map$1(() => false))).pipe(switchMap$1((muted) => muted
|
|
33331
|
-
? timer(2000).pipe(map$1(() => false), startWith(true), delay(400))
|
|
33332
|
-
: of(false)));
|
|
33333
|
-
this.olMapResolver(this.olMap);
|
|
33334
|
-
}
|
|
33335
|
-
async ngOnChanges(changes) {
|
|
33336
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
33337
|
-
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
33338
|
-
await applyContextDiffToMap(this.olMap, diff);
|
|
33339
|
-
}
|
|
33340
|
-
}
|
|
33341
|
-
// This will apply basemap layers & view constraints
|
|
33342
|
-
processContext(context) {
|
|
33343
|
-
const processed = context
|
|
33344
|
-
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
33345
|
-
: { layers: [], view: DEFAULT_VIEW };
|
|
33346
|
-
if (this.basemapLayers.length) {
|
|
33347
|
-
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
33348
|
-
}
|
|
33349
|
-
if (!this.doNotUseDefaultBasemap) {
|
|
33350
|
-
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
33351
|
-
}
|
|
33352
|
-
if (this.mapViewConstraints.maxZoom) {
|
|
33353
|
-
processed.view = {
|
|
33354
|
-
maxZoom: this.mapViewConstraints.maxZoom,
|
|
33355
|
-
...processed.view,
|
|
33356
|
-
};
|
|
33357
|
-
}
|
|
33358
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33359
|
-
processed.view = {
|
|
33360
|
-
maxExtent: this.mapViewConstraints.maxExtent,
|
|
33361
|
-
...processed.view,
|
|
33362
|
-
};
|
|
33363
|
-
}
|
|
33364
|
-
if (processed.view &&
|
|
33365
|
-
!('zoom' in processed.view) &&
|
|
33366
|
-
!('center' in processed.view)) {
|
|
33367
|
-
if (this.mapViewConstraints.maxExtent) {
|
|
33368
|
-
processed.view = {
|
|
33369
|
-
extent: this.mapViewConstraints.maxExtent,
|
|
33370
|
-
...processed.view,
|
|
33371
|
-
};
|
|
33372
|
-
}
|
|
33373
|
-
else {
|
|
33374
|
-
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
33375
|
-
}
|
|
33376
|
-
}
|
|
33377
|
-
return processed;
|
|
33378
|
-
}
|
|
33379
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33380
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
33381
|
-
provideIcons({ matSwipeOutline }),
|
|
33382
|
-
provideNgIconsConfig({
|
|
33383
|
-
size: '1.5em',
|
|
33384
|
-
}),
|
|
33385
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.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 }); }
|
|
33386
|
-
}
|
|
33387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
33388
|
-
type: Component,
|
|
33389
|
-
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
|
|
33390
|
-
provideIcons({ matSwipeOutline }),
|
|
33391
|
-
provideNgIconsConfig({
|
|
33392
|
-
size: '1.5em',
|
|
33393
|
-
}),
|
|
33394
|
-
], template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n" }]
|
|
33395
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
33396
|
-
type: Inject,
|
|
33397
|
-
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
33398
|
-
}] }, { type: undefined, decorators: [{
|
|
33399
|
-
type: Inject,
|
|
33400
|
-
args: [BASEMAP_LAYERS]
|
|
33401
|
-
}] }, { type: undefined, decorators: [{
|
|
33402
|
-
type: Inject,
|
|
33403
|
-
args: [MAP_VIEW_CONSTRAINTS]
|
|
33404
|
-
}] }], propDecorators: { context: [{
|
|
33405
|
-
type: Input
|
|
33406
|
-
}], featuresClick: [{
|
|
33407
|
-
type: Output
|
|
33408
|
-
}], featuresHover: [{
|
|
33409
|
-
type: Output
|
|
33410
|
-
}], mapClick: [{
|
|
33411
|
-
type: Output
|
|
33412
|
-
}], sourceLoadError: [{
|
|
33413
|
-
type: Output
|
|
33414
|
-
}], container: [{
|
|
33415
|
-
type: ViewChild,
|
|
33416
|
-
args: ['map']
|
|
33417
|
-
}] } });
|
|
33418
|
-
|
|
33419
|
-
const geometryKeys = ['geometry', 'the_geom'];
|
|
33420
|
-
class FeatureDetailComponent {
|
|
33421
|
-
get properties() {
|
|
33422
|
-
if (!this.feature)
|
|
33423
|
-
return [];
|
|
33424
|
-
return Object.keys(this.feature.properties).filter((prop) => !geometryKeys.includes(prop));
|
|
33425
|
-
}
|
|
33426
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33427
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33428
|
-
}
|
|
33429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
33430
|
-
type: Component,
|
|
33431
|
-
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let propName of properties\">\n <div>{{ propName }}</div>\n <div class=\"font-bold\">{{ feature.properties[propName] }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
33432
|
-
}], propDecorators: { feature: [{
|
|
33433
|
-
type: Input
|
|
33434
|
-
}] } });
|
|
33435
|
-
|
|
33436
|
-
class MapLegendComponent {
|
|
33437
|
-
constructor() {
|
|
33438
|
-
this.legendStatusChange = new EventEmitter();
|
|
33439
|
-
}
|
|
33440
|
-
async ngOnChanges(changes) {
|
|
33441
|
-
if ('context' in changes) {
|
|
33442
|
-
const mapContext = changes['context'].currentValue;
|
|
33443
|
-
if (mapContext.layers && mapContext.layers.length > 0) {
|
|
33444
|
-
const mapContextLayer = mapContext.layers[0];
|
|
33445
|
-
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
33446
|
-
if (this.legendHTML) {
|
|
33447
|
-
this.legendStatusChange.emit(true);
|
|
33448
|
-
}
|
|
33449
|
-
}
|
|
33450
|
-
else {
|
|
33451
|
-
this.legendHTML = false;
|
|
33452
|
-
this.legendStatusChange.emit(false);
|
|
33453
|
-
}
|
|
33454
|
-
}
|
|
33455
|
-
}
|
|
33456
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33457
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapLegendComponent, isStandalone: true, selector: "gn-ui-map-legend", inputs: { context: "context" }, outputs: { legendStatusChange: "legendStatusChange" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
33458
|
-
}
|
|
33459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, decorators: [{
|
|
33460
|
-
type: Component,
|
|
33461
|
-
args: [{ selector: 'gn-ui-map-legend', standalone: true, encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"legendHTML\" [innerHTML]=\"legendHTML.outerHTML\"></div>\n", styles: [".geosdk--legend-container{overflow:auto;white-space:normal;word-wrap:break-word}\n"] }]
|
|
33462
|
-
}], propDecorators: { context: [{
|
|
33463
|
-
type: Input
|
|
33464
|
-
}], legendStatusChange: [{
|
|
33465
|
-
type: Output
|
|
33466
|
-
}] } });
|
|
33467
|
-
|
|
33468
|
-
function prioritizePageScroll(interactions) {
|
|
33469
|
-
interactions.clear();
|
|
33470
|
-
interactions.extend(defaults({
|
|
33471
|
-
// remove rotate interactions
|
|
33472
|
-
altShiftDragRotate: false,
|
|
33473
|
-
pinchRotate: false,
|
|
33474
|
-
// replace drag and zoom interactions
|
|
33475
|
-
dragPan: false,
|
|
33476
|
-
mouseWheelZoom: false,
|
|
33477
|
-
})
|
|
33478
|
-
.extend([
|
|
33479
|
-
new DragPan({
|
|
33480
|
-
condition: dragPanCondition,
|
|
33481
|
-
}),
|
|
33482
|
-
new MouseWheelZoom({
|
|
33483
|
-
condition: mouseWheelZoomCondition,
|
|
33484
|
-
}),
|
|
33485
|
-
])
|
|
33486
|
-
.getArray());
|
|
33487
|
-
}
|
|
33488
|
-
function dragPanCondition(event) {
|
|
33489
|
-
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
33490
|
-
if (!dragPanCondition) {
|
|
33491
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33492
|
-
}
|
|
33493
|
-
// combine the condition with the default DragPan conditions
|
|
33494
|
-
return dragPanCondition && noModifierKeys(event) && primaryAction(event);
|
|
33495
|
-
}
|
|
33496
|
-
function mouseWheelZoomCondition(event) {
|
|
33497
|
-
if (!platformModifierKeyOnly(event) && event.type === 'wheel') {
|
|
33498
|
-
this.getMap().dispatchEvent('mapmuted');
|
|
33499
|
-
}
|
|
33500
|
-
return platformModifierKeyOnly(event);
|
|
33501
|
-
}
|
|
33502
|
-
|
|
33503
34364
|
class MapStateContainerComponent {
|
|
33504
34365
|
constructor(mapFacade) {
|
|
33505
34366
|
this.mapFacade = mapFacade;
|
|
@@ -34151,6 +35012,7 @@ function loadAppConfig() {
|
|
|
34151
35012
|
'metadata_language',
|
|
34152
35013
|
'login_url',
|
|
34153
35014
|
'logout_url',
|
|
35015
|
+
'settings_url',
|
|
34154
35016
|
'web_component_embedder_url',
|
|
34155
35017
|
'languages',
|
|
34156
35018
|
'contact_email',
|
|
@@ -34301,6 +35163,7 @@ proxy_path = "/proxy/?url="
|
|
|
34301
35163
|
metadata_language = "fre"
|
|
34302
35164
|
login_url = "/cas/login?service="
|
|
34303
35165
|
logout_url = "/geonetwork/signout"
|
|
35166
|
+
settings_url = "/geonetwork/settings"
|
|
34304
35167
|
web_component_embedder_url = "/datahub/wc-embedder.html"
|
|
34305
35168
|
|
|
34306
35169
|
[map]
|
|
@@ -37164,15 +38027,13 @@ class MdViewFacade {
|
|
|
37164
38027
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
37165
38028
|
this.related$ = this.store.pipe(select(getRelated));
|
|
37166
38029
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
37167
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
37168
|
-
? record.onlineResources
|
|
37169
|
-
: []));
|
|
38030
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => ('onlineResources' in record ? record.onlineResources : [])));
|
|
37170
38031
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
37171
38032
|
.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))
|
|
37172
38033
|
// Put links to IGN Géoplateforme first
|
|
37173
38034
|
.sort((dd1, dd2) => {
|
|
37174
|
-
return dd2
|
|
37175
|
-
'GPFDL'
|
|
38035
|
+
return dd2
|
|
38036
|
+
.accessServiceProtocol === 'GPFDL'
|
|
37176
38037
|
? 1
|
|
37177
38038
|
: undefined; // do not change the sorting otherwise
|
|
37178
38039
|
})));
|
|
@@ -37243,15 +38104,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37243
38104
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }, { type: DataService }] });
|
|
37244
38105
|
|
|
37245
38106
|
class MdViewEffects {
|
|
37246
|
-
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
38107
|
+
constructor(actions$, recordsRepository, platformServiceInterface, router) {
|
|
37247
38108
|
this.actions$ = actions$;
|
|
37248
38109
|
this.recordsRepository = recordsRepository;
|
|
37249
38110
|
this.platformServiceInterface = platformServiceInterface;
|
|
38111
|
+
this.router = router;
|
|
37250
38112
|
/*
|
|
37251
38113
|
Metadata effects
|
|
37252
38114
|
*/
|
|
37253
38115
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
37254
|
-
if (record === null) {
|
|
38116
|
+
if (record === null || !this.router.url.includes(record.kind)) {
|
|
37255
38117
|
return loadFullMetadataFailure({ notFound: true });
|
|
37256
38118
|
}
|
|
37257
38119
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -37286,12 +38148,12 @@ class MdViewEffects {
|
|
|
37286
38148
|
}));
|
|
37287
38149
|
})))));
|
|
37288
38150
|
}
|
|
37289
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38151
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$c.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37290
38152
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
37291
38153
|
}
|
|
37292
38154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
37293
38155
|
type: Injectable
|
|
37294
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }] });
|
|
38156
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$d.Router }] });
|
|
37295
38157
|
|
|
37296
38158
|
class CatalogTitleComponent {
|
|
37297
38159
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37348,11 +38210,11 @@ class LanguageSwitcherComponent {
|
|
|
37348
38210
|
this.translate.use(value);
|
|
37349
38211
|
}
|
|
37350
38212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }] }); }
|
|
38213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LanguageSwitcherComponent, isStandalone: true, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }] }); }
|
|
37352
38214
|
}
|
|
37353
38215
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
37354
38216
|
type: Component,
|
|
37355
|
-
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
38217
|
+
args: [{ selector: 'gn-ui-language-switcher', imports: [DropdownSelectorComponent], standalone: true, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageChoices\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1 rounded-lg\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
37356
38218
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
37357
38219
|
type: Optional
|
|
37358
38220
|
}, {
|
|
@@ -37774,17 +38636,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37774
38636
|
}]
|
|
37775
38637
|
}] });
|
|
37776
38638
|
|
|
37777
|
-
const GN_UI_VERSION = new InjectionToken('gnUiVersion');
|
|
37778
|
-
|
|
37779
38639
|
const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
|
|
37780
38640
|
class DataViewPermalinkComponent {
|
|
37781
38641
|
set viewType(value) {
|
|
37782
38642
|
this.viewType$.next(value);
|
|
37783
38643
|
}
|
|
37784
|
-
constructor(config, wcEmbedderBaseUrl,
|
|
38644
|
+
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
37785
38645
|
this.config = config;
|
|
37786
38646
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
37787
|
-
this.version = version;
|
|
37788
38647
|
this.facade = facade;
|
|
37789
38648
|
this.viewType$ = new BehaviorSubject('map');
|
|
37790
38649
|
this.permalinkUrl$ = combineLatest([
|
|
@@ -37793,7 +38652,7 @@ class DataViewPermalinkComponent {
|
|
|
37793
38652
|
this.facade.metadata$,
|
|
37794
38653
|
]).pipe(map$2(([viewType, config, metadata]) => {
|
|
37795
38654
|
const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
|
|
37796
|
-
url.searchParams.set('v', `${
|
|
38655
|
+
url.searchParams.set('v', `${GEONETWORK_UI_TAG_NAME}`);
|
|
37797
38656
|
if (viewType === 'chart') {
|
|
37798
38657
|
if (config) {
|
|
37799
38658
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
@@ -37824,7 +38683,7 @@ class DataViewPermalinkComponent {
|
|
|
37824
38683
|
return url.toString();
|
|
37825
38684
|
}));
|
|
37826
38685
|
}
|
|
37827
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token:
|
|
38686
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37828
38687
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37829
38688
|
}
|
|
37830
38689
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -37838,9 +38697,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37838
38697
|
}, {
|
|
37839
38698
|
type: Inject,
|
|
37840
38699
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
37841
|
-
}] }, { type: undefined, decorators: [{
|
|
37842
|
-
type: Inject,
|
|
37843
|
-
args: [GN_UI_VERSION]
|
|
37844
38700
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37845
38701
|
type: Input
|
|
37846
38702
|
}] } });
|
|
@@ -37893,7 +38749,7 @@ class DataViewComponent {
|
|
|
37893
38749
|
.subscribe();
|
|
37894
38750
|
}
|
|
37895
38751
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37896
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col
|
|
38752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["cacheActive", "link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37897
38753
|
}
|
|
37898
38754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
37899
38755
|
type: Component,
|
|
@@ -37904,7 +38760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37904
38760
|
TranslateModule,
|
|
37905
38761
|
ChartViewComponent,
|
|
37906
38762
|
PopupAlertComponent,
|
|
37907
|
-
], template: "<div class=\"w-full h-full flex flex-col
|
|
38763
|
+
], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
37908
38764
|
}], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
|
|
37909
38765
|
type: Input
|
|
37910
38766
|
}], displaySource: [{
|
|
@@ -37919,16 +38775,15 @@ class DataViewWebComponentComponent {
|
|
|
37919
38775
|
set viewType(value) {
|
|
37920
38776
|
this.viewType$.next(value);
|
|
37921
38777
|
}
|
|
37922
|
-
constructor(config,
|
|
38778
|
+
constructor(config, facade) {
|
|
37923
38779
|
this.config = config;
|
|
37924
|
-
this.version = version;
|
|
37925
38780
|
this.facade = facade;
|
|
37926
38781
|
this.viewType$ = new BehaviorSubject('map');
|
|
37927
38782
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
37928
38783
|
if (viewType === 'chart') {
|
|
37929
38784
|
if (config) {
|
|
37930
38785
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
37931
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38786
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37932
38787
|
<gn-dataset-view-chart
|
|
37933
38788
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37934
38789
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37947,7 +38802,7 @@ class DataViewWebComponentComponent {
|
|
|
37947
38802
|
return '';
|
|
37948
38803
|
}
|
|
37949
38804
|
else if (viewType === 'table') {
|
|
37950
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38805
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37951
38806
|
<gn-dataset-view-table
|
|
37952
38807
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37953
38808
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37960,7 +38815,7 @@ class DataViewWebComponentComponent {
|
|
|
37960
38815
|
></gn-dataset-view-table>`;
|
|
37961
38816
|
}
|
|
37962
38817
|
else {
|
|
37963
|
-
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${
|
|
38818
|
+
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
37964
38819
|
<gn-dataset-view-map
|
|
37965
38820
|
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
37966
38821
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
@@ -37974,7 +38829,7 @@ class DataViewWebComponentComponent {
|
|
|
37974
38829
|
}
|
|
37975
38830
|
}));
|
|
37976
38831
|
}
|
|
37977
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token:
|
|
38832
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37978
38833
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37979
38834
|
}
|
|
37980
38835
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -37983,9 +38838,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37983
38838
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
37984
38839
|
type: Inject,
|
|
37985
38840
|
args: [Configuration]
|
|
37986
|
-
}] }, { type: undefined, decorators: [{
|
|
37987
|
-
type: Inject,
|
|
37988
|
-
args: [GN_UI_VERSION]
|
|
37989
38841
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
37990
38842
|
type: Input
|
|
37991
38843
|
}] } });
|
|
@@ -38001,7 +38853,7 @@ class DataViewShareComponent {
|
|
|
38001
38853
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
38002
38854
|
}
|
|
38003
38855
|
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 }); }
|
|
38004
|
-
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
|
|
38856
|
+
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>\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$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i2$3.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2$3.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: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38005
38857
|
}
|
|
38006
38858
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
38007
38859
|
type: Component,
|
|
@@ -38011,7 +38863,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38011
38863
|
DataViewPermalinkComponent,
|
|
38012
38864
|
DataViewWebComponentComponent,
|
|
38013
38865
|
TranslateModule,
|
|
38014
|
-
], standalone: true, template: "<div
|
|
38866
|
+
], standalone: true, template: "<div>\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"] }]
|
|
38015
38867
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
38016
38868
|
type: Optional
|
|
38017
38869
|
}, {
|
|
@@ -38049,6 +38901,7 @@ class ExternalViewerButtonComponent {
|
|
|
38049
38901
|
this.translateService = translateService;
|
|
38050
38902
|
this.urlTemplate = urlTemplate;
|
|
38051
38903
|
this.openinNewTab = openinNewTab;
|
|
38904
|
+
this.extraClass = '';
|
|
38052
38905
|
}
|
|
38053
38906
|
openInExternalViewer() {
|
|
38054
38907
|
const templateUrl = this.urlTemplate;
|
|
@@ -38062,11 +38915,11 @@ class ExternalViewerButtonComponent {
|
|
|
38062
38915
|
window.open(url, this.openinNewTab ? '_blank' : '_self').focus();
|
|
38063
38916
|
}
|
|
38064
38917
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExternalViewerButtonComponent, deps: [{ token: i1$1.TranslateService }, { token: EXTERNAL_VIEWER_URL_TEMPLATE, optional: true }, { token: EXTERNAL_VIEWER_OPEN_NEW_TAB }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38065
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExternalViewerButtonComponent, isStandalone: true, selector: "gn-ui-external-viewer-button", inputs: { link: "link" }, ngImport: i0, template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"
|
|
38918
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExternalViewerButtonComponent, isStandalone: true, selector: "gn-ui-external-viewer-button", inputs: { link: "link", extraClass: "extraClass" }, ngImport: i0, template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"primary\"\n [title]=\"'record.externalViewer.open' | translate\"\n [extraClass]=\"extraClass + 'bg-primary ms-2 !rounded-lg'\"\n>\n <ng-icon name=\"matOpenInNew\"></ng-icon>\n</gn-ui-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], viewProviders: [provideIcons({ matOpenInNew })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38066
38919
|
}
|
|
38067
38920
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExternalViewerButtonComponent, decorators: [{
|
|
38068
38921
|
type: Component,
|
|
38069
|
-
args: [{ selector: 'gn-ui-external-viewer-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ButtonComponent, NgIcon, TranslateModule], viewProviders: [provideIcons({ matOpenInNew })], template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"
|
|
38922
|
+
args: [{ selector: 'gn-ui-external-viewer-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ButtonComponent, NgIcon, TranslateModule], viewProviders: [provideIcons({ matOpenInNew })], template: "<gn-ui-button\n *ngIf=\"externalViewer\"\n (buttonClick)=\"openInExternalViewer()\"\n type=\"primary\"\n [title]=\"'record.externalViewer.open' | translate\"\n [extraClass]=\"extraClass + 'bg-primary ms-2 !rounded-lg'\"\n>\n <ng-icon name=\"matOpenInNew\"></ng-icon>\n</gn-ui-button>\n" }]
|
|
38070
38923
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: undefined, decorators: [{
|
|
38071
38924
|
type: Inject,
|
|
38072
38925
|
args: [EXTERNAL_VIEWER_URL_TEMPLATE]
|
|
@@ -38077,6 +38930,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38077
38930
|
args: [EXTERNAL_VIEWER_OPEN_NEW_TAB]
|
|
38078
38931
|
}] }], propDecorators: { link: [{
|
|
38079
38932
|
type: Input
|
|
38933
|
+
}], extraClass: [{
|
|
38934
|
+
type: Input
|
|
38080
38935
|
}] } });
|
|
38081
38936
|
|
|
38082
38937
|
marker('map.dropdown.placeholder');
|
|
@@ -38243,7 +39098,7 @@ class MapViewComponent {
|
|
|
38243
39098
|
this.changeRef.detectChanges();
|
|
38244
39099
|
}
|
|
38245
39100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38246
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col
|
|
39101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38247
39102
|
}
|
|
38248
39103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
38249
39104
|
type: Component,
|
|
@@ -38259,7 +39114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38259
39114
|
ExternalViewerButtonComponent,
|
|
38260
39115
|
ButtonComponent,
|
|
38261
39116
|
MapLegendComponent,
|
|
38262
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col
|
|
39117
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
38263
39118
|
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
38264
39119
|
type: Input
|
|
38265
39120
|
}], displaySource: [{
|
|
@@ -38486,7 +39341,7 @@ class RecordMetaComponent {
|
|
|
38486
39341
|
this.meta.removeTag('property="og:url"');
|
|
38487
39342
|
this.meta.removeTag('property="og:title"');
|
|
38488
39343
|
}
|
|
38489
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$
|
|
39344
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$e.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38490
39345
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38491
39346
|
}
|
|
38492
39347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -38497,7 +39352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38497
39352
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38498
39353
|
standalone: true,
|
|
38499
39354
|
}]
|
|
38500
|
-
}], ctorParameters: () => [{ type: i1$
|
|
39355
|
+
}], ctorParameters: () => [{ type: i1$e.Meta }], propDecorators: { metadata: [{
|
|
38501
39356
|
type: Input
|
|
38502
39357
|
}] } });
|
|
38503
39358
|
|
|
@@ -39545,7 +40400,7 @@ class ImportRecordComponent {
|
|
|
39545
40400
|
},
|
|
39546
40401
|
});
|
|
39547
40402
|
}
|
|
39548
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$
|
|
40403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$d.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39549
40404
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
|
|
39550
40405
|
provideIcons({
|
|
39551
40406
|
iconoirImport,
|
|
@@ -39576,7 +40431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39576
40431
|
size: '1.5em',
|
|
39577
40432
|
}),
|
|
39578
40433
|
], 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" }]
|
|
39579
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40434
|
+
}], ctorParameters: () => [{ type: i1$d.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
39580
40435
|
type: Output
|
|
39581
40436
|
}] } });
|
|
39582
40437
|
|
|
@@ -39940,75 +40795,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39940
40795
|
args: [{ selector: 'gn-ui-form-field-array', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-array works!</p>\n" }]
|
|
39941
40796
|
}] });
|
|
39942
40797
|
|
|
39943
|
-
class FormFieldMapContainerComponent {
|
|
39944
|
-
constructor() {
|
|
39945
|
-
this.spatialExtents$ = new BehaviorSubject([]);
|
|
39946
|
-
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1(async (extents) => {
|
|
39947
|
-
if (extents.length === 0) {
|
|
39948
|
-
return null; // null extent means default view
|
|
39949
|
-
}
|
|
39950
|
-
const featureCollection = {
|
|
39951
|
-
type: 'FeatureCollection',
|
|
39952
|
-
features: [],
|
|
39953
|
-
};
|
|
39954
|
-
extents.forEach((extent) => {
|
|
39955
|
-
if (extent.geometry) {
|
|
39956
|
-
featureCollection.features.push({
|
|
39957
|
-
type: 'Feature',
|
|
39958
|
-
properties: {},
|
|
39959
|
-
geometry: extent.geometry,
|
|
39960
|
-
});
|
|
39961
|
-
}
|
|
39962
|
-
else if (extent.bbox?.length >= 0) {
|
|
39963
|
-
featureCollection.features.push({
|
|
39964
|
-
type: 'Feature',
|
|
39965
|
-
properties: {},
|
|
39966
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
39967
|
-
});
|
|
39968
|
-
}
|
|
39969
|
-
});
|
|
39970
|
-
const layer = {
|
|
39971
|
-
type: 'geojson',
|
|
39972
|
-
data: featureCollection,
|
|
39973
|
-
label: 'Spatial extents',
|
|
39974
|
-
style: {
|
|
39975
|
-
'stroke-color': 'black',
|
|
39976
|
-
'stroke-width': 2,
|
|
39977
|
-
},
|
|
39978
|
-
};
|
|
39979
|
-
const view = await createViewFromLayer(layer);
|
|
39980
|
-
return {
|
|
39981
|
-
view,
|
|
39982
|
-
layers: [layer],
|
|
39983
|
-
};
|
|
39984
|
-
}));
|
|
39985
|
-
this.error = '';
|
|
39986
|
-
}
|
|
39987
|
-
set spatialExtents(value) {
|
|
39988
|
-
this.spatialExtents$.next(value);
|
|
39989
|
-
}
|
|
39990
|
-
bboxCoordsToGeometry(bbox) {
|
|
39991
|
-
const geometry = new Polygon([
|
|
39992
|
-
[
|
|
39993
|
-
[bbox[0], bbox[1]],
|
|
39994
|
-
[bbox[0], bbox[3]],
|
|
39995
|
-
[bbox[2], bbox[3]],
|
|
39996
|
-
[bbox[2], bbox[1]],
|
|
39997
|
-
[bbox[0], bbox[1]],
|
|
39998
|
-
],
|
|
39999
|
-
]);
|
|
40000
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
40001
|
-
}
|
|
40002
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40003
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldMapContainerComponent, isStandalone: true, selector: "gn-ui-form-field-map-container", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40004
|
-
}
|
|
40005
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
40006
|
-
type: Component,
|
|
40007
|
-
args: [{ selector: 'gn-ui-form-field-map-container', standalone: true, imports: [CommonModule, MapContainerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n" }]
|
|
40008
|
-
}], propDecorators: { spatialExtents: [{
|
|
40009
|
-
type: Input
|
|
40010
|
-
}] } });
|
|
40011
|
-
|
|
40012
40798
|
/**
|
|
40013
40799
|
* This form field is not like the others, as it will read directly from the state to handle both spatial extents
|
|
40014
40800
|
* and place keywords.
|
|
@@ -40105,16 +40891,16 @@ class FormFieldSpatialExtentComponent {
|
|
|
40105
40891
|
this.editorFacade.updateRecordField('spatialExtents', spatialExtents);
|
|
40106
40892
|
}
|
|
40107
40893
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, deps: [{ token: PlatformServiceInterface }, { token: EditorFacade }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40108
|
-
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-
|
|
40894
|
+
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-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { 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: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40109
40895
|
}
|
|
40110
40896
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSpatialExtentComponent, decorators: [{
|
|
40111
40897
|
type: Component,
|
|
40112
40898
|
args: [{ selector: 'gn-ui-form-field-spatial-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40113
40899
|
CommonModule,
|
|
40114
40900
|
GenericKeywordsComponent,
|
|
40115
|
-
FormFieldMapContainerComponent,
|
|
40116
40901
|
TranslateModule,
|
|
40117
|
-
|
|
40902
|
+
SpatialExtentComponent,
|
|
40903
|
+
], 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-spatial-extent\n [spatialExtents]=\"spatialExtents$ | async\"\n ></gn-ui-spatial-extent>\n </div>\n</div>\n" }]
|
|
40118
40904
|
}], ctorParameters: () => [{ type: PlatformServiceInterface }, { type: EditorFacade }, { type: i1$1.TranslateService }] });
|
|
40119
40905
|
|
|
40120
40906
|
class ContactCardComponent {
|
|
@@ -40372,9 +41158,8 @@ class OnlineResourceCardComponent {
|
|
|
40372
41158
|
get subtitle() {
|
|
40373
41159
|
switch (this.onlineResource.type) {
|
|
40374
41160
|
case 'service':
|
|
40375
|
-
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40376
41161
|
case 'endpoint':
|
|
40377
|
-
return `${this.onlineResource.
|
|
41162
|
+
return `${this.onlineResource.accessServiceProtocol}`;
|
|
40378
41163
|
case 'link':
|
|
40379
41164
|
case 'download':
|
|
40380
41165
|
return this.getFormat(this.onlineResource);
|
|
@@ -41528,9 +42313,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41528
42313
|
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<div class=\"flex flex-col gap-6\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\n <div class=\"flex flex-col gap-2\">\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-black\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-gray-800 text-sm\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <div class=\"grid auto-rows-auto grid-cols-2 gap-[32px]\">\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n" }]
|
|
41529
42314
|
}], ctorParameters: () => [{ type: EditorFacade }] });
|
|
41530
42315
|
|
|
42316
|
+
class MultilingualPanelComponent {
|
|
42317
|
+
constructor() {
|
|
42318
|
+
this.translationsEnabled = false;
|
|
42319
|
+
}
|
|
42320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42321
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultilingualPanelComponent, isStandalone: true, selector: "gn-ui-multilingual-panel", ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-9 px-3 gap-8\"\n>\n <span class=\"text-3xl font-title text-black/80 px-2\" translate\n >editor.record.form.multilingual.title</span\n >\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [value]=\"translationsEnabled\"\n (toggled)=\"translationsEnabled = $event\"\n ></gn-ui-check-toggle>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
42322
|
+
}
|
|
42323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
42324
|
+
type: Component,
|
|
42325
|
+
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [CommonModule, CheckToggleComponent, TranslateModule], template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-9 px-3 gap-8\"\n>\n <span class=\"text-3xl font-title text-black/80 px-2\" translate\n >editor.record.form.multilingual.title</span\n >\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [value]=\"translationsEnabled\"\n (toggled)=\"translationsEnabled = $event\"\n ></gn-ui-check-toggle>\n</div>\n" }]
|
|
42326
|
+
}] });
|
|
42327
|
+
|
|
41531
42328
|
const ROUTER_STATE_KEY = 'router';
|
|
41532
42329
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
41533
42330
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
42331
|
+
const ROUTER_ROUTE_SERVICE = 'service';
|
|
42332
|
+
const ROUTER_ROUTE_REUSE = 'reuse';
|
|
41534
42333
|
const ROUTER_ROUTE_ORGANIZATION = 'organization';
|
|
41535
42334
|
var ROUTE_PARAMS;
|
|
41536
42335
|
(function (ROUTE_PARAMS) {
|
|
@@ -41563,6 +42362,14 @@ class RouterService {
|
|
|
41563
42362
|
path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
|
|
41564
42363
|
component: this.routerConfig.recordRouteComponent,
|
|
41565
42364
|
},
|
|
42365
|
+
{
|
|
42366
|
+
path: `${ROUTER_ROUTE_SERVICE}/:metadataUuid`,
|
|
42367
|
+
component: this.routerConfig.recordRouteComponent,
|
|
42368
|
+
},
|
|
42369
|
+
{
|
|
42370
|
+
path: `${ROUTER_ROUTE_REUSE}/:metadataUuid`,
|
|
42371
|
+
component: this.routerConfig.recordRouteComponent,
|
|
42372
|
+
},
|
|
41566
42373
|
{
|
|
41567
42374
|
path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
|
|
41568
42375
|
component: this.routerConfig.organizationRouteComponent,
|
|
@@ -41575,7 +42382,7 @@ class RouterService {
|
|
|
41575
42382
|
getOrganizationPageRoute() {
|
|
41576
42383
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
41577
42384
|
}
|
|
41578
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
42385
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41579
42386
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
41580
42387
|
}
|
|
41581
42388
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -41586,7 +42393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41586
42393
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
41587
42394
|
type: Inject,
|
|
41588
42395
|
args: [ROUTER_CONFIG]
|
|
41589
|
-
}] }, { type: i1$
|
|
42396
|
+
}] }, { type: i1$d.Router }] });
|
|
41590
42397
|
|
|
41591
42398
|
const goAction = createAction('[Router] Go', props());
|
|
41592
42399
|
const backAction = createAction('[Router] Back');
|
|
@@ -41658,13 +42465,19 @@ class RouterFacade {
|
|
|
41658
42465
|
this.currentRoute$ = this.store.pipe(select(selectCurrentRoute));
|
|
41659
42466
|
this.pathParams$ = this.store.pipe(select(selectRouteParams));
|
|
41660
42467
|
this.searchParams$ = this.currentRoute$.pipe(filter((route) => !!route), filter((route) => route.url[0]?.path.startsWith(ROUTER_ROUTE_SEARCH)), map$1((route) => route.queryParams), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), map$1(expandQueryParams));
|
|
42468
|
+
this.routeMap = {
|
|
42469
|
+
dataset: ROUTER_ROUTE_DATASET,
|
|
42470
|
+
service: ROUTER_ROUTE_SERVICE,
|
|
42471
|
+
reuse: ROUTER_ROUTE_REUSE,
|
|
42472
|
+
};
|
|
41661
42473
|
}
|
|
41662
42474
|
goToMetadata(metadata) {
|
|
42475
|
+
const selectedRoute = this.routeMap[metadata.kind] || ROUTER_ROUTE_DATASET;
|
|
41663
42476
|
this.pathParams$
|
|
41664
42477
|
.pipe(take(1), filter((params) => params.metadataUuid !== metadata.uniqueIdentifier))
|
|
41665
42478
|
.subscribe(() => {
|
|
41666
42479
|
this.go({
|
|
41667
|
-
path: `${
|
|
42480
|
+
path: `${selectedRoute}/${metadata.uniqueIdentifier}`,
|
|
41668
42481
|
});
|
|
41669
42482
|
this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
|
|
41670
42483
|
});
|
|
@@ -41891,12 +42704,12 @@ class RouterEffects {
|
|
|
41891
42704
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
41892
42705
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
41893
42706
|
}
|
|
41894
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$
|
|
42707
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41895
42708
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
41896
42709
|
}
|
|
41897
42710
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
41898
42711
|
type: Injectable
|
|
41899
|
-
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$
|
|
42712
|
+
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
41900
42713
|
type: Inject,
|
|
41901
42714
|
args: [ROUTER_CONFIG]
|
|
41902
42715
|
}] }, { type: FieldsService }] });
|
|
@@ -41956,5 +42769,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41956
42769
|
* Generated bundle index. Do not edit.
|
|
41957
42770
|
*/
|
|
41958
42771
|
|
|
41959
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
42772
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
41960
42773
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|