@deenruv/admin-ui 1.0.0
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/LICENSE +23 -0
- package/catalog/catalog.module.d.ts +43 -0
- package/catalog/catalog.routes.d.ts +4 -0
- package/catalog/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +16 -0
- package/catalog/components/asset-detail/asset-detail.component.d.ts +28 -0
- package/catalog/components/asset-list/asset-list.component.d.ts +23 -0
- package/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +35 -0
- package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +40 -0
- package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
- package/catalog/components/collection-contents/collection-contents.component.d.ts +39 -0
- package/catalog/components/collection-data-table/collection-data-table.component.d.ts +80 -0
- package/catalog/components/collection-detail/collection-detail.component.d.ts +71 -0
- package/catalog/components/collection-list/collection-breadcrumb.pipe.d.ts +11 -0
- package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +8 -0
- package/catalog/components/collection-list/collection-list.component.d.ts +25 -0
- package/catalog/components/collection-tree/array-to-tree.d.ts +19 -0
- package/catalog/components/collection-tree/collection-tree-node.component.d.ts +44 -0
- package/catalog/components/collection-tree/collection-tree.component.d.ts +22 -0
- package/catalog/components/collection-tree/collection-tree.service.d.ts +33 -0
- package/catalog/components/collection-tree/collection-tree.types.d.ts +7 -0
- package/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +10 -0
- package/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.d.ts +19 -0
- package/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.d.ts +18 -0
- package/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.d.ts +27 -0
- package/catalog/components/facet-detail/facet-detail.component.d.ts +76 -0
- package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +7 -0
- package/catalog/components/facet-list/facet-list.component.d.ts +19 -0
- package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +65 -0
- package/catalog/components/move-collections-dialog/move-collections-dialog.component.d.ts +23 -0
- package/catalog/components/option-value-input/option-value-input.component.d.ts +48 -0
- package/catalog/components/product-detail/product-detail.component.d.ts +75 -0
- package/catalog/components/product-list/product-list-bulk-actions.d.ts +7 -0
- package/catalog/components/product-list/product-list.component.d.ts +18 -0
- package/catalog/components/product-list/product-list.graphql.d.ts +1 -0
- package/catalog/components/product-options-editor/product-options-editor.component.d.ts +47 -0
- package/catalog/components/product-variant-detail/product-variant-detail.component.d.ts +79 -0
- package/catalog/components/product-variant-detail/product-variant-detail.graphql.d.ts +3 -0
- package/catalog/components/product-variant-list/product-variant-list-bulk-actions.d.ts +6 -0
- package/catalog/components/product-variant-list/product-variant-list.component.d.ts +14 -0
- package/catalog/components/product-variant-list/product-variant-list.graphql.d.ts +1 -0
- package/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.d.ts +18 -0
- package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +88 -0
- package/catalog/components/product-variants-table/product-variants-table.component.d.ts +55 -0
- package/catalog/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +25 -0
- package/catalog/components/variant-price-detail/variant-price-detail.component.d.ts +20 -0
- package/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.d.ts +10 -0
- package/catalog/index.d.ts +5 -0
- package/catalog/providers/product-detail/product-detail.service.d.ts +286 -0
- package/catalog/providers/product-detail/replace-last.d.ts +6 -0
- package/catalog/providers/routing/product-variants-resolver.d.ts +8 -0
- package/catalog/public_api.d.ts +48 -0
- package/core/app.component.d.ts +19 -0
- package/core/app.component.module.d.ts +9 -0
- package/core/app.config.d.ts +3 -0
- package/core/common/base-detail.component.d.ts +146 -0
- package/core/common/base-entity-resolver.d.ts +45 -0
- package/core/common/base-list.component.d.ts +138 -0
- package/core/common/component-registry-types.d.ts +65 -0
- package/core/common/deactivate-aware.d.ts +8 -0
- package/core/common/detail-breadcrumb.d.ts +12 -0
- package/core/common/generated-types.d.ts +20279 -0
- package/core/common/introspection-result-wrapper.d.ts +1 -0
- package/core/common/introspection-result.d.ts +7 -0
- package/core/common/single-search-selection-model.d.ts +16 -0
- package/core/common/title-setter.d.ts +4 -0
- package/core/common/utilities/bulk-action-utils.d.ts +49 -0
- package/core/common/utilities/configurable-operation-utils.d.ts +48 -0
- package/core/common/utilities/create-updated-translatable.d.ts +25 -0
- package/core/common/utilities/custom-field-default-value.d.ts +6 -0
- package/core/common/utilities/find-translation.d.ts +14 -0
- package/core/common/utilities/get-default-ui-language.d.ts +3 -0
- package/core/common/utilities/interpolate-description.d.ts +7 -0
- package/core/common/utilities/selection-manager.d.ts +30 -0
- package/core/common/utilities/string-to-color.d.ts +4 -0
- package/core/common/version.d.ts +1 -0
- package/core/components/alerts/alerts.component.d.ts +11 -0
- package/core/components/app-shell/app-shell.component.d.ts +41 -0
- package/core/components/base-nav/base-nav.component.d.ts +30 -0
- package/core/components/breadcrumb/breadcrumb.component.d.ts +27 -0
- package/core/components/channel-switcher/channel-switcher.component.d.ts +21 -0
- package/core/components/main-nav/main-nav.component.d.ts +22 -0
- package/core/components/notification/notification.component.d.ts +37 -0
- package/core/components/overlay-host/overlay-host.component.d.ts +12 -0
- package/core/components/settings-nav/settings-nav.component.d.ts +11 -0
- package/core/components/theme-switcher/theme-switcher.component.d.ts +16 -0
- package/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +30 -0
- package/core/components/user-menu/user-menu.component.d.ts +12 -0
- package/core/core.module.d.ts +39 -0
- package/core/data/check-jobs-link.d.ts +19 -0
- package/core/data/client-state/client-defaults.d.ts +32 -0
- package/core/data/client-state/client-resolvers.d.ts +12 -0
- package/core/data/data.module.d.ts +17 -0
- package/core/data/definitions/administrator-definitions.d.ts +14 -0
- package/core/data/definitions/auth-definitions.d.ts +4 -0
- package/core/data/definitions/client-definitions.d.ts +17 -0
- package/core/data/definitions/collection-definitions.d.ts +13 -0
- package/core/data/definitions/customer-definitions.d.ts +23 -0
- package/core/data/definitions/facet-definitions.d.ts +13 -0
- package/core/data/definitions/order-definitions.d.ts +39 -0
- package/core/data/definitions/product-definitions.d.ts +49 -0
- package/core/data/definitions/promotion-definitions.d.ts +6 -0
- package/core/data/definitions/settings-definitions.d.ts +69 -0
- package/core/data/definitions/shared-definitions.d.ts +3 -0
- package/core/data/definitions/shipping-definitions.d.ts +8 -0
- package/core/data/omit-typename-link.d.ts +11 -0
- package/core/data/providers/administrator-data.service.d.ts +19 -0
- package/core/data/providers/auth-data.service.d.ts +9 -0
- package/core/data/providers/base-data.service.d.ts +26 -0
- package/core/data/providers/client-data.service.d.ts +26 -0
- package/core/data/providers/collection-data.service.d.ts +25 -0
- package/core/data/providers/customer-data.service.d.ts +36 -0
- package/core/data/providers/data.service.d.ts +86 -0
- package/core/data/providers/facet-data.service.d.ts +19 -0
- package/core/data/providers/fetch-adapter.d.ts +14 -0
- package/core/data/providers/interceptor.d.ts +49 -0
- package/core/data/providers/order-data.service.d.ts +48 -0
- package/core/data/providers/product-data.service.d.ts +86 -0
- package/core/data/providers/promotion-data.service.d.ts +11 -0
- package/core/data/providers/settings-data.service.d.ts +74 -0
- package/core/data/providers/shipping-method-data.service.d.ts +17 -0
- package/core/data/query-result.d.ts +43 -0
- package/core/data/server-config.d.ts +39 -0
- package/core/data/utils/add-custom-fields.d.ts +7 -0
- package/core/data/utils/get-server-location.d.ts +4 -0
- package/core/data/utils/is-entity-create-or-update-mutation.d.ts +6 -0
- package/core/data/utils/remove-readonly-custom-fields.d.ts +17 -0
- package/core/data/utils/transform-relation-custom-field-inputs.d.ts +8 -0
- package/core/extension/add-action-bar-dropdown-menu-item.d.ts +25 -0
- package/core/extension/add-action-bar-item.d.ts +21 -0
- package/core/extension/add-nav-menu-item.d.ts +56 -0
- package/core/extension/components/angular-route.component.d.ts +26 -0
- package/core/extension/components/route.component.d.ts +20 -0
- package/core/extension/providers/page-metadata.service.d.ts +9 -0
- package/core/extension/register-alert.d.ts +11 -0
- package/core/extension/register-bulk-action.d.ts +49 -0
- package/core/extension/register-custom-detail-component.d.ts +55 -0
- package/core/extension/register-dashboard-widget.d.ts +17 -0
- package/core/extension/register-data-table-component.d.ts +45 -0
- package/core/extension/register-form-input-component.d.ts +51 -0
- package/core/extension/register-history-entry-component.d.ts +66 -0
- package/core/extension/register-page-tab.d.ts +23 -0
- package/core/extension/register-route-component.d.ts +109 -0
- package/core/extension/types.d.ts +11 -0
- package/core/index.d.ts +5 -0
- package/core/providers/alerts/alerts.service.d.ts +150 -0
- package/core/providers/auth/auth.service.d.ts +40 -0
- package/core/providers/breadcrumb/breadcrumb.service.d.ts +39 -0
- package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +9 -0
- package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
- package/core/providers/channel/channel.service.d.ts +16 -0
- package/core/providers/component-registry/component-registry.service.d.ts +13 -0
- package/core/providers/currency/currency.service.d.ts +10 -0
- package/core/providers/custom-detail-component/custom-detail-component-types.d.ts +26 -0
- package/core/providers/custom-detail-component/custom-detail-component.service.d.ts +9 -0
- package/core/providers/custom-field-component/custom-field-component.service.d.ts +25 -0
- package/core/providers/custom-history-entry-component/history-entry-component-types.d.ts +81 -0
- package/core/providers/custom-history-entry-component/history-entry-component.service.d.ts +10 -0
- package/core/providers/dashboard-widget/dashboard-widget-types.d.ts +56 -0
- package/core/providers/dashboard-widget/dashboard-widget.service.d.ts +24 -0
- package/core/providers/data-table/data-table-filter-collection.d.ts +48 -0
- package/core/providers/data-table/data-table-filter.d.ts +108 -0
- package/core/providers/data-table/data-table-sort-collection.d.ts +24 -0
- package/core/providers/data-table/data-table-sort.d.ts +14 -0
- package/core/providers/guard/auth.guard.d.ts +17 -0
- package/core/providers/health-check/health-check.service.d.ts +40 -0
- package/core/providers/i18n/custom-http-loader.d.ts +21 -0
- package/core/providers/i18n/custom-message-format-compiler.d.ts +15 -0
- package/core/providers/i18n/i18n.service.d.ts +39 -0
- package/core/providers/job-queue/job-queue.service.d.ts +22 -0
- package/core/providers/local-storage/local-storage.service.d.ts +66 -0
- package/core/providers/localization/localization.service.d.ts +21 -0
- package/core/providers/modal/modal.service.d.ts +67 -0
- package/core/providers/modal/modal.types.d.ts +69 -0
- package/core/providers/nav-builder/nav-builder-types.d.ts +279 -0
- package/core/providers/nav-builder/nav-builder.service.d.ts +64 -0
- package/core/providers/notification/notification.service.d.ts +105 -0
- package/core/providers/overlay-host/overlay-host.service.d.ts +25 -0
- package/core/providers/page/page.service.d.ts +61 -0
- package/core/providers/permissions/permissions.service.d.ts +26 -0
- package/core/public_api.d.ts +313 -0
- package/core/shared/components/action-bar/action-bar.component.d.ts +17 -0
- package/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.d.ts +15 -0
- package/core/shared/components/action-bar-items/action-bar-base.component.d.ts +29 -0
- package/core/shared/components/action-bar-items/action-bar-items.component.d.ts +11 -0
- package/core/shared/components/address-form/address-form.component.d.ts +10 -0
- package/core/shared/components/affixed-input/affixed-input.component.d.ts +10 -0
- package/core/shared/components/affixed-input/percentage-suffix-input.component.d.ts +22 -0
- package/core/shared/components/asset-file-input/asset-file-input.component.d.ts +39 -0
- package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +97 -0
- package/core/shared/components/asset-gallery/asset-gallery.types.d.ts +3 -0
- package/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +60 -0
- package/core/shared/components/asset-preview/asset-preview.component.d.ts +61 -0
- package/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +22 -0
- package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +8 -0
- package/core/shared/components/asset-search-input/asset-search-input.component.d.ts +26 -0
- package/core/shared/components/assets/assets.component.d.ts +36 -0
- package/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +28 -0
- package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +34 -0
- package/core/shared/components/card/card.component.d.ts +13 -0
- package/core/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +32 -0
- package/core/shared/components/channel-badge/channel-badge.component.d.ts +7 -0
- package/core/shared/components/chart/chart.component.d.ts +28 -0
- package/core/shared/components/chart/tooltip-plugin.d.ts +21 -0
- package/core/shared/components/chip/chip.component.d.ts +38 -0
- package/core/shared/components/configurable-input/configurable-input.component.d.ts +43 -0
- package/core/shared/components/currency-code-selector/currency-code-selector.component.d.ts +21 -0
- package/core/shared/components/currency-input/currency-input.component.d.ts +53 -0
- package/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +20 -0
- package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +31 -0
- package/core/shared/components/customer-label/customer-label.component.d.ts +7 -0
- package/core/shared/components/data-table/data-table-column.component.d.ts +11 -0
- package/core/shared/components/data-table/data-table.component.d.ts +107 -0
- package/core/shared/components/data-table-2/data-table-column.component.d.ts +25 -0
- package/core/shared/components/data-table-2/data-table-custom-component.service.d.ts +52 -0
- package/core/shared/components/data-table-2/data-table-custom-field-column.component.d.ts +18 -0
- package/core/shared/components/data-table-2/data-table-search.component.d.ts +10 -0
- package/core/shared/components/data-table-2/data-table2.component.d.ts +134 -0
- package/core/shared/components/data-table-column-picker/data-table-column-picker.component.d.ts +19 -0
- package/core/shared/components/data-table-filter-label/data-table-filter-label.component.d.ts +11 -0
- package/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.d.ts +25 -0
- package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +30 -0
- package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +34 -0
- package/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.d.ts +9 -0
- package/core/shared/components/data-table-filters/custom-filter-component.directive.d.ts +8 -0
- package/core/shared/components/data-table-filters/data-table-filters.component.d.ts +30 -0
- package/core/shared/components/datetime-picker/constants.d.ts +5 -0
- package/core/shared/components/datetime-picker/datetime-picker.component.d.ts +100 -0
- package/core/shared/components/datetime-picker/datetime-picker.service.d.ts +37 -0
- package/core/shared/components/datetime-picker/types.d.ts +11 -0
- package/core/shared/components/dropdown/dropdown-item.directive.d.ts +9 -0
- package/core/shared/components/dropdown/dropdown-menu.component.d.ts +42 -0
- package/core/shared/components/dropdown/dropdown-trigger.directive.d.ts +11 -0
- package/core/shared/components/dropdown/dropdown.component.d.ts +39 -0
- package/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.d.ts +33 -0
- package/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.d.ts +2 -0
- package/core/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +18 -0
- package/core/shared/components/empty-placeholder/empty-placeholder.component.d.ts +6 -0
- package/core/shared/components/entity-info/entity-info.component.d.ts +11 -0
- package/core/shared/components/extension-host/extension-host-config.d.ts +9 -0
- package/core/shared/components/extension-host/extension-host.component.d.ts +28 -0
- package/core/shared/components/extension-host/extension-host.service.d.ts +23 -0
- package/core/shared/components/extension-host/host-external-frame.d.ts +28 -0
- package/core/shared/components/facet-value-chip/facet-value-chip.component.d.ts +11 -0
- package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +49 -0
- package/core/shared/components/focal-point-control/focal-point-control.component.d.ts +24 -0
- package/core/shared/components/form-field/form-field-control.directive.d.ts +15 -0
- package/core/shared/components/form-field/form-field.component.d.ts +32 -0
- package/core/shared/components/form-item/form-item.component.d.ts +11 -0
- package/core/shared/components/formatted-address/formatted-address.component.d.ts +13 -0
- package/core/shared/components/help-tooltip/help-tooltip.component.d.ts +7 -0
- package/core/shared/components/history-entry-detail/history-entry-detail.component.d.ts +5 -0
- package/core/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +11 -0
- package/core/shared/components/labeled-data/labeled-data.component.d.ts +6 -0
- package/core/shared/components/language-code-selector/language-code-selector.component.d.ts +20 -0
- package/core/shared/components/language-selector/language-selector.component.d.ts +11 -0
- package/core/shared/components/localized-text/localized-text.component.d.ts +13 -0
- package/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +24 -0
- package/core/shared/components/modal-dialog/dialog-buttons.directive.d.ts +14 -0
- package/core/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +14 -0
- package/core/shared/components/modal-dialog/dialog-title.directive.d.ts +14 -0
- package/core/shared/components/modal-dialog/modal-dialog.component.d.ts +44 -0
- package/core/shared/components/object-tree/object-tree.component.d.ts +32 -0
- package/core/shared/components/order-state-label/order-state-label.component.d.ts +17 -0
- package/core/shared/components/page/page.component.d.ts +21 -0
- package/core/shared/components/page-block/page-block.component.d.ts +5 -0
- package/core/shared/components/page-body/page-body.component.d.ts +5 -0
- package/core/shared/components/page-detail-layout/page-detail-layout.component.d.ts +5 -0
- package/core/shared/components/page-detail-layout/page-detail-sidebar.component.d.ts +5 -0
- package/core/shared/components/page-entity-info/page-entity-info.component.d.ts +10 -0
- package/core/shared/components/page-header/page-header.component.d.ts +5 -0
- package/core/shared/components/page-header-description/page-header-description.component.d.ts +5 -0
- package/core/shared/components/page-header-tabs/page-header-tabs.component.d.ts +14 -0
- package/core/shared/components/page-title/page-title.component.d.ts +16 -0
- package/core/shared/components/pagination-controls/pagination-controls.component.d.ts +11 -0
- package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +38 -0
- package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.d.ts +1 -0
- package/core/shared/components/product-search-input/product-search-input.component.d.ts +28 -0
- package/core/shared/components/product-variant-selector/product-variant-selector.component.d.ts +58 -0
- package/core/shared/components/radio-card/radio-card-fieldset.component.d.ts +24 -0
- package/core/shared/components/radio-card/radio-card.component.d.ts +22 -0
- package/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +21 -0
- package/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +19 -0
- package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +31 -0
- package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +34 -0
- package/core/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +5 -0
- package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +8 -0
- package/core/shared/components/rich-text-editor/prosemirror/keymap.d.ts +3 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +4 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +16 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +9 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu.d.ts +3 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +14 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +7 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +5 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +7 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +13 -0
- package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +34 -0
- package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +9 -0
- package/core/shared/components/rich-text-editor/prosemirror/utils.d.ts +9 -0
- package/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +21 -0
- package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +42 -0
- package/core/shared/components/select-toggle/select-toggle.component.d.ts +15 -0
- package/core/shared/components/simple-dialog/simple-dialog.component.d.ts +14 -0
- package/core/shared/components/split-view/split-view.component.d.ts +23 -0
- package/core/shared/components/split-view/split-view.directive.d.ts +13 -0
- package/core/shared/components/status-badge/status-badge.component.d.ts +6 -0
- package/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +25 -0
- package/core/shared/components/table-row-action/table-row-action.component.d.ts +12 -0
- package/core/shared/components/tag-selector/tag-selector.component.d.ts +24 -0
- package/core/shared/components/timeline-entry/timeline-entry.component.d.ts +19 -0
- package/core/shared/components/title-input/title-input.component.d.ts +6 -0
- package/core/shared/components/ui-extension-point/ui-extension-point.component.d.ts +27 -0
- package/core/shared/components/zone-selector/zone-selector.component.d.ts +51 -0
- package/core/shared/directives/disabled.directive.d.ts +14 -0
- package/core/shared/directives/if-default-channel-active.directive.d.ts +16 -0
- package/core/shared/directives/if-directive-base.d.ts +27 -0
- package/core/shared/directives/if-multichannel.directive.d.ts +28 -0
- package/core/shared/directives/if-permissions.directive.d.ts +37 -0
- package/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +19 -0
- package/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +30 -0
- package/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +22 -0
- package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +23 -0
- package/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +28 -0
- package/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +25 -0
- package/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +33 -0
- package/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +22 -0
- package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +19 -0
- package/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +58 -0
- package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +23 -0
- package/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +24 -0
- package/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +19 -0
- package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +25 -0
- package/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +34 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +23 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +25 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +18 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +26 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +26 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +23 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +22 -0
- package/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +10 -0
- package/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +19 -0
- package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +30 -0
- package/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +21 -0
- package/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +20 -0
- package/core/shared/pipes/asset-preview.pipe.d.ts +22 -0
- package/core/shared/pipes/channel-label.pipe.d.ts +7 -0
- package/core/shared/pipes/custom-field-description.pipe.d.ts +11 -0
- package/core/shared/pipes/custom-field-label.pipe.d.ts +13 -0
- package/core/shared/pipes/duration.pipe.d.ts +22 -0
- package/core/shared/pipes/file-size.pipe.d.ts +18 -0
- package/core/shared/pipes/has-permission.pipe.d.ts +27 -0
- package/core/shared/pipes/locale-base.pipe.d.ts +21 -0
- package/core/shared/pipes/locale-currency-name.pipe.d.ts +21 -0
- package/core/shared/pipes/locale-currency.pipe.d.ts +25 -0
- package/core/shared/pipes/locale-date.pipe.d.ts +23 -0
- package/core/shared/pipes/locale-language-name.pipe.d.ts +21 -0
- package/core/shared/pipes/locale-region-name.pipe.d.ts +21 -0
- package/core/shared/pipes/sentence-case.pipe.d.ts +10 -0
- package/core/shared/pipes/sort.pipe.d.ts +12 -0
- package/core/shared/pipes/state-i18n-token.pipe.d.ts +9 -0
- package/core/shared/pipes/string-to-color.pipe.d.ts +7 -0
- package/core/shared/pipes/time-ago.pipe.d.ts +21 -0
- package/core/shared/providers/routing/can-deactivate-detail-guard.d.ts +11 -0
- package/core/shared/shared.module.d.ts +168 -0
- package/core/validators/unicode-pattern.validator.d.ts +2 -0
- package/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +22 -0
- package/customer/components/address-card/address-card.component.d.ts +28 -0
- package/customer/components/address-detail-dialog/address-detail-dialog.component.d.ts +17 -0
- package/customer/components/customer-detail/customer-detail.component.d.ts +70 -0
- package/customer/components/customer-group-detail/customer-group-detail.component.d.ts +26 -0
- package/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +24 -0
- package/customer/components/customer-group-list/customer-group-list-bulk-actions.d.ts +1 -0
- package/customer/components/customer-group-list/customer-group-list.component.d.ts +29 -0
- package/customer/components/customer-group-member-list/customer-group-member-list-bulk-actions.d.ts +3 -0
- package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +39 -0
- package/customer/components/customer-history/customer-history-entry-host.component.d.ts +18 -0
- package/customer/components/customer-history/customer-history.component.d.ts +51 -0
- package/customer/components/customer-list/customer-list-bulk-actions.d.ts +1 -0
- package/customer/components/customer-list/customer-list.component.d.ts +12 -0
- package/customer/components/customer-status-label/customer-status-label.component.d.ts +7 -0
- package/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +16 -0
- package/customer/customer.module.d.ts +24 -0
- package/customer/customer.routes.d.ts +4 -0
- package/customer/index.d.ts +5 -0
- package/customer/public_api.d.ts +18 -0
- package/dashboard/components/dashboard/dashboard.component.d.ts +34 -0
- package/dashboard/components/dashboard-widget/dashboard-widget.component.d.ts +13 -0
- package/dashboard/dashboard.module.d.ts +13 -0
- package/dashboard/dashboard.routes.d.ts +2 -0
- package/dashboard/default-widgets.d.ts +5 -0
- package/dashboard/index.d.ts +5 -0
- package/dashboard/public_api.d.ts +10 -0
- package/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +18 -0
- package/dashboard/widgets/order-chart-widget/order-chart-widget.component.d.ts +17 -0
- package/dashboard/widgets/order-summary-widget/order-summary-widget.component.d.ts +32 -0
- package/dashboard/widgets/test-widget/test-widget.component.d.ts +10 -0
- package/dashboard/widgets/welcome-widget/welcome-widget.component.d.ts +22 -0
- package/esm2022/catalog/catalog.module.mjs +331 -0
- package/esm2022/catalog/catalog.routes.mjs +144 -0
- package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +30 -0
- package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +77 -0
- package/esm2022/catalog/components/asset-list/asset-list.component.mjs +120 -0
- package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +102 -0
- package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +83 -0
- package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.mjs +69 -0
- package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +124 -0
- package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +95 -0
- package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +263 -0
- package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +19 -0
- package/esm2022/catalog/components/collection-list/collection-list-bulk-actions.mjs +97 -0
- package/esm2022/catalog/components/collection-list/collection-list.component.mjs +157 -0
- package/esm2022/catalog/components/collection-tree/array-to-tree.mjs +56 -0
- package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +125 -0
- package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +49 -0
- package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +68 -0
- package/esm2022/catalog/components/collection-tree/collection-tree.types.mjs +2 -0
- package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +23 -0
- package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +44 -0
- package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +44 -0
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +80 -0
- package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +338 -0
- package/esm2022/catalog/components/facet-list/facet-list-bulk-actions.mjs +148 -0
- package/esm2022/catalog/components/facet-list/facet-list.component.mjs +91 -0
- package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +133 -0
- package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +100 -0
- package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +156 -0
- package/esm2022/catalog/components/product-detail/product-detail.component.mjs +321 -0
- package/esm2022/catalog/components/product-list/product-list-bulk-actions.mjs +144 -0
- package/esm2022/catalog/components/product-list/product-list.component.mjs +159 -0
- package/esm2022/catalog/components/product-list/product-list.graphql.mjs +37 -0
- package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +207 -0
- package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +266 -0
- package/esm2022/catalog/components/product-variant-detail/product-variant-detail.graphql.mjs +129 -0
- package/esm2022/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +123 -0
- package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +118 -0
- package/esm2022/catalog/components/product-variant-list/product-variant-list.graphql.mjs +51 -0
- package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +53 -0
- package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +292 -0
- package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +72 -0
- package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +64 -0
- package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +59 -0
- package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +33 -0
- package/esm2022/catalog/deenruv-admin-ui-catalog.mjs +5 -0
- package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +236 -0
- package/esm2022/catalog/providers/product-detail/replace-last.mjs +18 -0
- package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +28 -0
- package/esm2022/catalog/public_api.mjs +50 -0
- package/esm2022/core/app.component.mjs +94 -0
- package/esm2022/core/app.component.module.mjs +19 -0
- package/esm2022/core/app.config.mjs +11 -0
- package/esm2022/core/common/base-detail.component.mjs +208 -0
- package/esm2022/core/common/base-entity-resolver.mjs +60 -0
- package/esm2022/core/common/base-list.component.mjs +186 -0
- package/esm2022/core/common/component-registry-types.mjs +2 -0
- package/esm2022/core/common/deactivate-aware.mjs +2 -0
- package/esm2022/core/common/detail-breadcrumb.mjs +26 -0
- package/esm2022/core/common/generated-types.mjs +1371 -0
- package/esm2022/core/common/introspection-result-wrapper.mjs +3 -0
- package/esm2022/core/common/introspection-result.mjs +329 -0
- package/esm2022/core/common/single-search-selection-model.mjs +51 -0
- package/esm2022/core/common/title-setter.mjs +14 -0
- package/esm2022/core/common/utilities/bulk-action-utils.mjs +271 -0
- package/esm2022/core/common/utilities/configurable-operation-utils.mjs +116 -0
- package/esm2022/core/common/utilities/create-updated-translatable.mjs +58 -0
- package/esm2022/core/common/utilities/custom-field-default-value.mjs +28 -0
- package/esm2022/core/common/utilities/find-translation.mjs +9 -0
- package/esm2022/core/common/utilities/get-default-ui-language.mjs +12 -0
- package/esm2022/core/common/utilities/interpolate-description.mjs +27 -0
- package/esm2022/core/common/utilities/selection-manager.mjs +96 -0
- package/esm2022/core/common/utilities/string-to-color.mjs +36 -0
- package/esm2022/core/common/version.mjs +3 -0
- package/esm2022/core/components/alerts/alerts.component.mjs +26 -0
- package/esm2022/core/components/app-shell/app-shell.component.mjs +104 -0
- package/esm2022/core/components/base-nav/base-nav.component.mjs +298 -0
- package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +33 -0
- package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +50 -0
- package/esm2022/core/components/main-nav/main-nav.component.mjs +62 -0
- package/esm2022/core/components/notification/notification.component.mjs +85 -0
- package/esm2022/core/components/overlay-host/overlay-host.component.mjs +22 -0
- package/esm2022/core/components/settings-nav/settings-nav.component.mjs +27 -0
- package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +39 -0
- package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +75 -0
- package/esm2022/core/components/user-menu/user-menu.component.mjs +37 -0
- package/esm2022/core/core.module.mjs +165 -0
- package/esm2022/core/data/check-jobs-link.mjs +32 -0
- package/esm2022/core/data/client-state/client-defaults.mjs +33 -0
- package/esm2022/core/data/client-state/client-resolvers.mjs +136 -0
- package/esm2022/core/data/data.module.mjs +135 -0
- package/esm2022/core/data/definitions/administrator-definitions.mjs +135 -0
- package/esm2022/core/data/definitions/auth-definitions.mjs +40 -0
- package/esm2022/core/data/definitions/client-definitions.mjs +137 -0
- package/esm2022/core/data/definitions/collection-definitions.mjs +184 -0
- package/esm2022/core/data/definitions/customer-definitions.mjs +261 -0
- package/esm2022/core/data/definitions/facet-definitions.mjs +155 -0
- package/esm2022/core/data/definitions/order-definitions.mjs +594 -0
- package/esm2022/core/data/definitions/product-definitions.mjs +828 -0
- package/esm2022/core/data/definitions/promotion-definitions.mjs +76 -0
- package/esm2022/core/data/definitions/settings-definitions.mjs +735 -0
- package/esm2022/core/data/definitions/shared-definitions.mjs +33 -0
- package/esm2022/core/data/definitions/shipping-definitions.mjs +98 -0
- package/esm2022/core/data/omit-typename-link.mjs +20 -0
- package/esm2022/core/data/providers/administrator-data.service.mjs +53 -0
- package/esm2022/core/data/providers/auth-data.service.mjs +20 -0
- package/esm2022/core/data/providers/base-data.service.mjs +66 -0
- package/esm2022/core/data/providers/client-data.service.mjs +82 -0
- package/esm2022/core/data/providers/collection-data.service.mjs +84 -0
- package/esm2022/core/data/providers/customer-data.service.mjs +125 -0
- package/esm2022/core/data/providers/data.service.mjs +90 -0
- package/esm2022/core/data/providers/facet-data.service.mjs +63 -0
- package/esm2022/core/data/providers/fetch-adapter.mjs +34 -0
- package/esm2022/core/data/providers/interceptor.mjs +162 -0
- package/esm2022/core/data/providers/order-data.service.mjs +135 -0
- package/esm2022/core/data/providers/product-data.service.mjs +257 -0
- package/esm2022/core/data/providers/promotion-data.service.mjs +50 -0
- package/esm2022/core/data/providers/settings-data.service.mjs +246 -0
- package/esm2022/core/data/providers/shipping-method-data.service.mjs +58 -0
- package/esm2022/core/data/query-result.mjs +77 -0
- package/esm2022/core/data/server-config.mjs +78 -0
- package/esm2022/core/data/utils/add-custom-fields.mjs +84 -0
- package/esm2022/core/data/utils/get-server-location.mjs +17 -0
- package/esm2022/core/data/utils/is-entity-create-or-update-mutation.mjs +45 -0
- package/esm2022/core/data/utils/remove-readonly-custom-fields.mjs +30 -0
- package/esm2022/core/data/utils/transform-relation-custom-field-inputs.mjs +46 -0
- package/esm2022/core/deenruv-admin-ui-core.mjs +5 -0
- package/esm2022/core/extension/add-action-bar-dropdown-menu-item.mjs +35 -0
- package/esm2022/core/extension/add-action-bar-item.mjs +31 -0
- package/esm2022/core/extension/add-nav-menu-item.mjs +75 -0
- package/esm2022/core/extension/components/angular-route.component.mjs +67 -0
- package/esm2022/core/extension/components/route.component.mjs +80 -0
- package/esm2022/core/extension/providers/page-metadata.service.mjs +20 -0
- package/esm2022/core/extension/register-alert.mjs +22 -0
- package/esm2022/core/extension/register-bulk-action.mjs +59 -0
- package/esm2022/core/extension/register-custom-detail-component.mjs +65 -0
- package/esm2022/core/extension/register-dashboard-widget.mjs +36 -0
- package/esm2022/core/extension/register-data-table-component.mjs +51 -0
- package/esm2022/core/extension/register-form-input-component.mjs +61 -0
- package/esm2022/core/extension/register-history-entry-component.mjs +76 -0
- package/esm2022/core/extension/register-page-tab.mjs +36 -0
- package/esm2022/core/extension/register-route-component.mjs +95 -0
- package/esm2022/core/extension/types.mjs +2 -0
- package/esm2022/core/providers/alerts/alerts.service.mjs +114 -0
- package/esm2022/core/providers/auth/auth.service.mjs +124 -0
- package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +109 -0
- package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +28 -0
- package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +2 -0
- package/esm2022/core/providers/channel/channel.service.mjs +39 -0
- package/esm2022/core/providers/component-registry/component-registry.service.mjs +25 -0
- package/esm2022/core/providers/currency/currency.service.mjs +21 -0
- package/esm2022/core/providers/custom-detail-component/custom-detail-component-types.mjs +2 -0
- package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +27 -0
- package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +38 -0
- package/esm2022/core/providers/custom-history-entry-component/history-entry-component-types.mjs +2 -0
- package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +22 -0
- package/esm2022/core/providers/dashboard-widget/dashboard-widget-types.mjs +2 -0
- package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +91 -0
- package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +295 -0
- package/esm2022/core/providers/data-table/data-table-filter.mjs +114 -0
- package/esm2022/core/providers/data-table/data-table-sort-collection.mjs +115 -0
- package/esm2022/core/providers/data-table/data-table-sort.mjs +34 -0
- package/esm2022/core/providers/guard/auth.guard.mjs +38 -0
- package/esm2022/core/providers/health-check/health-check.service.mjs +34 -0
- package/esm2022/core/providers/i18n/custom-http-loader.mjs +39 -0
- package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +31 -0
- package/esm2022/core/providers/i18n/i18n.service.mjs +78 -0
- package/esm2022/core/providers/job-queue/job-queue.service.mjs +91 -0
- package/esm2022/core/providers/local-storage/local-storage.service.mjs +97 -0
- package/esm2022/core/providers/localization/localization.service.mjs +31 -0
- package/esm2022/core/providers/modal/modal.service.mjs +96 -0
- package/esm2022/core/providers/modal/modal.types.mjs +2 -0
- package/esm2022/core/providers/nav-builder/nav-builder-types.mjs +2 -0
- package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +174 -0
- package/esm2022/core/providers/notification/notification.service.mjs +157 -0
- package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +48 -0
- package/esm2022/core/providers/page/page.service.mjs +63 -0
- package/esm2022/core/providers/permissions/permissions.service.mjs +46 -0
- package/esm2022/core/public_api.mjs +315 -0
- package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +54 -0
- package/esm2022/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +69 -0
- package/esm2022/core/shared/components/action-bar-items/action-bar-base.component.mjs +72 -0
- package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +50 -0
- package/esm2022/core/shared/components/address-form/address-form.component.mjs +24 -0
- package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +19 -0
- package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +86 -0
- package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +97 -0
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +96 -0
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.types.mjs +2 -0
- package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +144 -0
- package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +229 -0
- package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +49 -0
- package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +25 -0
- package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +102 -0
- package/esm2022/core/shared/components/assets/assets.component.mjs +109 -0
- package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +56 -0
- package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +100 -0
- package/esm2022/core/shared/components/card/card.component.mjs +32 -0
- package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +116 -0
- package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +19 -0
- package/esm2022/core/shared/components/chart/chart.component.mjs +100 -0
- package/esm2022/core/shared/components/chart/tooltip-plugin.mjs +143 -0
- package/esm2022/core/shared/components/chip/chip.component.mjs +47 -0
- package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +161 -0
- package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +64 -0
- package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +155 -0
- package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +44 -0
- package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +88 -0
- package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +17 -0
- package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +29 -0
- package/esm2022/core/shared/components/data-table/data-table.component.mjs +177 -0
- package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +64 -0
- package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +26 -0
- package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +52 -0
- package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +21 -0
- package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +308 -0
- package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +44 -0
- package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +32 -0
- package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +69 -0
- package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +80 -0
- package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +79 -0
- package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +20 -0
- package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +16 -0
- package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +220 -0
- package/esm2022/core/shared/components/datetime-picker/constants.mjs +20 -0
- package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +226 -0
- package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +201 -0
- package/esm2022/core/shared/components/datetime-picker/types.mjs +2 -0
- package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +28 -0
- package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +202 -0
- package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +25 -0
- package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +58 -0
- package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +111 -0
- package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.mjs +38 -0
- package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +32 -0
- package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +16 -0
- package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +26 -0
- package/esm2022/core/shared/components/extension-host/extension-host-config.mjs +7 -0
- package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +81 -0
- package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +99 -0
- package/esm2022/core/shared/components/extension-host/host-external-frame.mjs +41 -0
- package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +26 -0
- package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +150 -0
- package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +71 -0
- package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +37 -0
- package/esm2022/core/shared/components/form-field/form-field.component.mjs +73 -0
- package/esm2022/core/shared/components/form-item/form-item.component.mjs +21 -0
- package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +38 -0
- package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +16 -0
- package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +16 -0
- package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +28 -0
- package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +13 -0
- package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +72 -0
- package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +30 -0
- package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +24 -0
- package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +61 -0
- package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +23 -0
- package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +29 -0
- package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +23 -0
- package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +69 -0
- package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +56 -0
- package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +47 -0
- package/esm2022/core/shared/components/page/page.component.mjs +38 -0
- package/esm2022/core/shared/components/page-block/page-block.component.mjs +11 -0
- package/esm2022/core/shared/components/page-body/page-body.component.mjs +11 -0
- package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +11 -0
- package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +15 -0
- package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +16 -0
- package/esm2022/core/shared/components/page-header/page-header.component.mjs +11 -0
- package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +11 -0
- package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +26 -0
- package/esm2022/core/shared/components/page-title/page-title.component.mjs +40 -0
- package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +26 -0
- package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +138 -0
- package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.mjs +44 -0
- package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +104 -0
- package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +62 -0
- package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +54 -0
- package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +53 -0
- package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +37 -0
- package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +35 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +136 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +44 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +97 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/inputrules.mjs +61 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/keymap.mjs +118 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs +69 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs +41 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.mjs +12 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs +247 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.mjs +16 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.mjs +98 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.mjs +22 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.mjs +96 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.mjs +164 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +155 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/types.mjs +2 -0
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/utils.mjs +26 -0
- package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +59 -0
- package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +106 -0
- package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +35 -0
- package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +24 -0
- package/esm2022/core/shared/components/split-view/split-view.component.mjs +62 -0
- package/esm2022/core/shared/components/split-view/split-view.directive.mjs +28 -0
- package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +16 -0
- package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +70 -0
- package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +28 -0
- package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +60 -0
- package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +54 -0
- package/esm2022/core/shared/components/title-input/title-input.component.mjs +21 -0
- package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +142 -0
- package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +99 -0
- package/esm2022/core/shared/directives/disabled.directive.mjs +41 -0
- package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +37 -0
- package/esm2022/core/shared/directives/if-directive-base.mjs +73 -0
- package/esm2022/core/shared/directives/if-multichannel.directive.mjs +43 -0
- package/esm2022/core/shared/directives/if-permissions.directive.mjs +66 -0
- package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +23 -0
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +62 -0
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +59 -0
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +85 -0
- package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +45 -0
- package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +32 -0
- package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +47 -0
- package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +32 -0
- package/esm2022/core/shared/dynamic-form-inputs/default-form-inputs.mjs +44 -0
- package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +271 -0
- package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +34 -0
- package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +39 -0
- package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +21 -0
- package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +49 -0
- package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +66 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +84 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +66 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +54 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +87 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +87 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +60 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +29 -0
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +14 -0
- package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +21 -0
- package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +40 -0
- package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +28 -0
- package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +24 -0
- package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +42 -0
- package/esm2022/core/shared/pipes/channel-label.pipe.mjs +23 -0
- package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +30 -0
- package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +39 -0
- package/esm2022/core/shared/pipes/duration.pipe.mjs +49 -0
- package/esm2022/core/shared/pipes/file-size.pipe.mjs +47 -0
- package/esm2022/core/shared/pipes/has-permission.pipe.mjs +54 -0
- package/esm2022/core/shared/pipes/locale-base.pipe.mjs +55 -0
- package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +60 -0
- package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +56 -0
- package/esm2022/core/shared/pipes/locale-date.pipe.mjs +90 -0
- package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +51 -0
- package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +51 -0
- package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +30 -0
- package/esm2022/core/shared/pipes/sort.pipe.mjs +34 -0
- package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +54 -0
- package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +18 -0
- package/esm2022/core/shared/pipes/time-ago.pipe.mjs +52 -0
- package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +33 -0
- package/esm2022/core/shared/shared.module.mjs +707 -0
- package/esm2022/core/validators/unicode-pattern.validator.mjs +8 -0
- package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +39 -0
- package/esm2022/customer/components/address-card/address-card.component.mjs +97 -0
- package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +28 -0
- package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +441 -0
- package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +90 -0
- package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +46 -0
- package/esm2022/customer/components/customer-group-list/customer-group-list-bulk-actions.mjs +9 -0
- package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +148 -0
- package/esm2022/customer/components/customer-group-member-list/customer-group-member-list-bulk-actions.mjs +27 -0
- package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +91 -0
- package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +62 -0
- package/esm2022/customer/components/customer-history/customer-history.component.mjs +89 -0
- package/esm2022/customer/components/customer-list/customer-list-bulk-actions.mjs +9 -0
- package/esm2022/customer/components/customer-list/customer-list.component.mjs +108 -0
- package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +17 -0
- package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +31 -0
- package/esm2022/customer/customer.module.mjs +146 -0
- package/esm2022/customer/customer.routes.mjs +50 -0
- package/esm2022/customer/deenruv-admin-ui-customer.mjs +5 -0
- package/esm2022/customer/public_api.mjs +20 -0
- package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +124 -0
- package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +32 -0
- package/esm2022/dashboard/dashboard.module.mjs +34 -0
- package/esm2022/dashboard/dashboard.routes.mjs +9 -0
- package/esm2022/dashboard/deenruv-admin-ui-dashboard.mjs +5 -0
- package/esm2022/dashboard/default-widgets.mjs +31 -0
- package/esm2022/dashboard/public_api.mjs +12 -0
- package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +73 -0
- package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +66 -0
- package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +68 -0
- package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +22 -0
- package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +39 -0
- package/esm2022/deenruv-admin-ui.mjs +5 -0
- package/esm2022/login/components/login/login.component.mjs +97 -0
- package/esm2022/login/deenruv-admin-ui-login.mjs +5 -0
- package/esm2022/login/login.module.mjs +21 -0
- package/esm2022/login/login.routes.mjs +11 -0
- package/esm2022/login/providers/login.guard.mjs +31 -0
- package/esm2022/login/public_api.mjs +6 -0
- package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +269 -0
- package/esm2022/marketing/components/promotion-list/promotion-list-bulk-actions.mjs +78 -0
- package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +128 -0
- package/esm2022/marketing/deenruv-admin-ui-marketing.mjs +5 -0
- package/esm2022/marketing/marketing.module.mjs +75 -0
- package/esm2022/marketing/marketing.routes.mjs +32 -0
- package/esm2022/marketing/public_api.mjs +7 -0
- package/esm2022/order/common/get-refundable-payments.mjs +19 -0
- package/esm2022/order/common/modify-order-types.mjs +2 -0
- package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +61 -0
- package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +80 -0
- package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +62 -0
- package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +183 -0
- package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +59 -0
- package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +79 -0
- package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +48 -0
- package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +50 -0
- package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +28 -0
- package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +62 -0
- package/esm2022/order/components/line-refunds/line-refunds.component.mjs +28 -0
- package/esm2022/order/components/modification-detail/modification-detail.component.mjs +71 -0
- package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +64 -0
- package/esm2022/order/components/order-data-table/order-data-table.component.mjs +59 -0
- package/esm2022/order/components/order-data-table/order-total-column.component.mjs +20 -0
- package/esm2022/order/components/order-detail/order-detail.component.mjs +602 -0
- package/esm2022/order/components/order-editor/order-editor.component.mjs +485 -0
- package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +93 -0
- package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +62 -0
- package/esm2022/order/components/order-history/order-history.component.mjs +184 -0
- package/esm2022/order/components/order-list/order-list.component.mjs +154 -0
- package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +76 -0
- package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +43 -0
- package/esm2022/order/components/order-process-graph/constants.mjs +2 -0
- package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +45 -0
- package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +96 -0
- package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +53 -0
- package/esm2022/order/components/order-process-graph/types.mjs +2 -0
- package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +21 -0
- package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +28 -0
- package/esm2022/order/components/order-table/order-table.component.mjs +96 -0
- package/esm2022/order/components/payment-detail/payment-detail.component.mjs +18 -0
- package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +24 -0
- package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +28 -0
- package/esm2022/order/components/refund-detail/refund-detail.component.mjs +18 -0
- package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +173 -0
- package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +27 -0
- package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +89 -0
- package/esm2022/order/components/select-address-dialog/select-address-dialog.graphql.mjs +14 -0
- package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +65 -0
- package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +30 -0
- package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +39 -0
- package/esm2022/order/components/seller-orders-card/seller-orders-card.graphql.mjs +25 -0
- package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +24 -0
- package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +15 -0
- package/esm2022/order/deenruv-admin-ui-order.mjs +5 -0
- package/esm2022/order/order.module.mjs +244 -0
- package/esm2022/order/order.routes.mjs +56 -0
- package/esm2022/order/providers/order-transition.service.mjs +112 -0
- package/esm2022/order/providers/routing/order.guard.mjs +57 -0
- package/esm2022/order/public_api.mjs +53 -0
- package/esm2022/public_api.mjs +5 -0
- package/esm2022/react/components/react-custom-column.component.mjs +25 -0
- package/esm2022/react/components/react-custom-detail.component.mjs +23 -0
- package/esm2022/react/components/react-form-input.component.mjs +24 -0
- package/esm2022/react/components/react-route.component.mjs +26 -0
- package/esm2022/react/deenruv-admin-ui-react.mjs +5 -0
- package/esm2022/react/directives/react-component-host.directive.mjs +54 -0
- package/esm2022/react/public_api.mjs +27 -0
- package/esm2022/react/react-components/ActionBar.mjs +26 -0
- package/esm2022/react/react-components/Card.mjs +28 -0
- package/esm2022/react/react-components/CdsIcon.mjs +30 -0
- package/esm2022/react/react-components/FormField.mjs +28 -0
- package/esm2022/react/react-components/Link.mjs +30 -0
- package/esm2022/react/react-components/PageBlock.mjs +24 -0
- package/esm2022/react/react-components/PageDetailLayout.mjs +26 -0
- package/esm2022/react/react-components/RichTextEditor.mjs +73 -0
- package/esm2022/react/react-hooks/use-detail-component-data.mjs +48 -0
- package/esm2022/react/react-hooks/use-form-control.mjs +66 -0
- package/esm2022/react/react-hooks/use-injector.mjs +33 -0
- package/esm2022/react/react-hooks/use-page-metadata.mjs +41 -0
- package/esm2022/react/react-hooks/use-query.mjs +198 -0
- package/esm2022/react/react-hooks/use-rich-text-editor.mjs +50 -0
- package/esm2022/react/react-hooks/use-route-params.mjs +39 -0
- package/esm2022/react/register-react-custom-detail-component.mjs +33 -0
- package/esm2022/react/register-react-data-table-component.mjs +64 -0
- package/esm2022/react/register-react-form-input-component.mjs +27 -0
- package/esm2022/react/register-react-route-component.mjs +25 -0
- package/esm2022/react/types.mjs +2 -0
- package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +57 -0
- package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +205 -0
- package/esm2022/settings/components/administrator-list/administrator-list-bulk-actions.mjs +9 -0
- package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +120 -0
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +202 -0
- package/esm2022/settings/components/channel-list/channel-list-bulk-actions.mjs +16 -0
- package/esm2022/settings/components/channel-list/channel-list.component.mjs +81 -0
- package/esm2022/settings/components/country-detail/country-detail.component.mjs +126 -0
- package/esm2022/settings/components/country-list/country-list-bulk-actions.mjs +10 -0
- package/esm2022/settings/components/country-list/country-list.component.mjs +91 -0
- package/esm2022/settings/components/global-settings/global-settings.component.mjs +102 -0
- package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +206 -0
- package/esm2022/settings/components/payment-method-list/payment-method-list-bulk-actions.mjs +56 -0
- package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +99 -0
- package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +81 -0
- package/esm2022/settings/components/profile/profile.component.mjs +96 -0
- package/esm2022/settings/components/role-detail/role-detail.component.mjs +119 -0
- package/esm2022/settings/components/role-list/role-list-bulk-actions.mjs +9 -0
- package/esm2022/settings/components/role-list/role-list.component.mjs +82 -0
- package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +119 -0
- package/esm2022/settings/components/seller-list/seller-list-bulk-actions.mjs +9 -0
- package/esm2022/settings/components/seller-list/seller-list.component.mjs +75 -0
- package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +30 -0
- package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +256 -0
- package/esm2022/settings/components/shipping-method-list/shipping-method-list-bulk-actions.mjs +54 -0
- package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +99 -0
- package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +30 -0
- package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +137 -0
- package/esm2022/settings/components/stock-location-list/stock-location-list-bulk-actions.mjs +68 -0
- package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +87 -0
- package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +114 -0
- package/esm2022/settings/components/tax-category-list/tax-category-list-bulk-actions.mjs +10 -0
- package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +69 -0
- package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +137 -0
- package/esm2022/settings/components/tax-rate-list/tax-rate-list-bulk-actions.mjs +10 -0
- package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +83 -0
- package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +48 -0
- package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +71 -0
- package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +52 -0
- package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +117 -0
- package/esm2022/settings/components/zone-list/zone-list-bulk-actions.mjs +10 -0
- package/esm2022/settings/components/zone-list/zone-list.component.mjs +143 -0
- package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +16 -0
- package/esm2022/settings/components/zone-member-list/zone-member-list-bulk-actions.mjs +26 -0
- package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +16 -0
- package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +95 -0
- package/esm2022/settings/deenruv-admin-ui-settings.mjs +5 -0
- package/esm2022/settings/providers/routing/profile-resolver.mjs +30 -0
- package/esm2022/settings/public_api.mjs +51 -0
- package/esm2022/settings/settings.module.mjs +467 -0
- package/esm2022/settings/settings.routes.mjs +232 -0
- package/esm2022/system/components/health-check/health-check.component.mjs +18 -0
- package/esm2022/system/components/job-list/job-list.component.mjs +72 -0
- package/esm2022/system/components/job-state-label/job-state-label.component.mjs +46 -0
- package/esm2022/system/deenruv-admin-ui-system.mjs +5 -0
- package/esm2022/system/public_api.mjs +7 -0
- package/esm2022/system/system.module.mjs +22 -0
- package/esm2022/system/system.routes.mjs +20 -0
- package/fesm2022/deenruv-admin-ui-catalog.mjs +5171 -0
- package/fesm2022/deenruv-admin-ui-catalog.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-core.mjs +22758 -0
- package/fesm2022/deenruv-admin-ui-core.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-customer.mjs +1400 -0
- package/fesm2022/deenruv-admin-ui-customer.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-dashboard.mjs +454 -0
- package/fesm2022/deenruv-admin-ui-dashboard.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-login.mjs +157 -0
- package/fesm2022/deenruv-admin-ui-login.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-marketing.mjs +566 -0
- package/fesm2022/deenruv-admin-ui-marketing.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-order.mjs +3664 -0
- package/fesm2022/deenruv-admin-ui-order.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-react.mjs +999 -0
- package/fesm2022/deenruv-admin-ui-react.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-settings.mjs +4067 -0
- package/fesm2022/deenruv-admin-ui-settings.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui-system.mjs +164 -0
- package/fesm2022/deenruv-admin-ui-system.mjs.map +1 -0
- package/fesm2022/deenruv-admin-ui.mjs +11 -0
- package/fesm2022/deenruv-admin-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/login/components/login/login.component.d.ts +37 -0
- package/login/index.d.ts +5 -0
- package/login/login.module.d.ts +9 -0
- package/login/login.routes.d.ts +2 -0
- package/login/providers/login.guard.d.ts +15 -0
- package/login/public_api.d.ts +4 -0
- package/marketing/components/promotion-detail/promotion-detail.component.d.ts +70 -0
- package/marketing/components/promotion-list/promotion-list-bulk-actions.d.ts +6 -0
- package/marketing/components/promotion-list/promotion-list.component.d.ts +13 -0
- package/marketing/index.d.ts +5 -0
- package/marketing/marketing.module.d.ts +14 -0
- package/marketing/marketing.routes.d.ts +4 -0
- package/marketing/public_api.d.ts +5 -0
- package/order/common/get-refundable-payments.d.ts +9 -0
- package/order/common/modify-order-types.d.ts +29 -0
- package/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +19 -0
- package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +24 -0
- package/order/components/coupon-code-selector/coupon-code-selector.component.d.ts +22 -0
- package/order/components/draft-order-detail/draft-order-detail.component.d.ts +51 -0
- package/order/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +24 -0
- package/order/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +28 -0
- package/order/components/fulfillment-card/fulfillment-card.component.d.ts +12 -0
- package/order/components/fulfillment-detail/fulfillment-detail.component.d.ts +23 -0
- package/order/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +7 -0
- package/order/components/line-fulfillment/line-fulfillment.component.d.ts +26 -0
- package/order/components/line-refunds/line-refunds.component.d.ts +9 -0
- package/order/components/modification-detail/modification-detail.component.d.ts +34 -0
- package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +21 -0
- package/order/components/order-data-table/order-data-table.component.d.ts +15 -0
- package/order/components/order-data-table/order-total-column.component.d.ts +7 -0
- package/order/components/order-detail/order-detail.component.d.ts +68 -0
- package/order/components/order-editor/order-editor.component.d.ts +99 -0
- package/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +51 -0
- package/order/components/order-history/order-history-entry-host.component.d.ts +18 -0
- package/order/components/order-history/order-history.component.d.ts +92 -0
- package/order/components/order-list/order-list.component.d.ts +21 -0
- package/order/components/order-modification-summary/order-modification-summary.component.d.ts +19 -0
- package/order/components/order-payment-card/order-payment-card.component.d.ts +67 -0
- package/order/components/order-process-graph/constants.d.ts +1 -0
- package/order/components/order-process-graph/order-process-edge.component.d.ts +21 -0
- package/order/components/order-process-graph/order-process-graph.component.d.ts +32 -0
- package/order/components/order-process-graph/order-process-node.component.d.ts +26 -0
- package/order/components/order-process-graph/types.d.ts +4 -0
- package/order/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +13 -0
- package/order/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +13 -0
- package/order/components/order-table/order-table.component.d.ts +43 -0
- package/order/components/payment-detail/payment-detail.component.d.ts +8 -0
- package/order/components/payment-for-refund-selector/payment-for-refund-selector.component.d.ts +14 -0
- package/order/components/payment-state-label/payment-state-label.component.d.ts +7 -0
- package/order/components/refund-detail/refund-detail.component.d.ts +8 -0
- package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +46 -0
- package/order/components/refund-state-label/refund-state-label.component.d.ts +7 -0
- package/order/components/select-address-dialog/select-address-dialog.component.d.ts +27 -0
- package/order/components/select-address-dialog/select-address-dialog.graphql.d.ts +1 -0
- package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +32 -0
- package/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +18 -0
- package/order/components/seller-orders-card/seller-orders-card.component.d.ts +24 -0
- package/order/components/seller-orders-card/seller-orders-card.graphql.d.ts +1 -0
- package/order/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +11 -0
- package/order/components/simple-item-list/simple-item-list.component.d.ts +9 -0
- package/order/index.d.ts +5 -0
- package/order/order.module.d.ts +52 -0
- package/order/order.routes.d.ts +3 -0
- package/order/providers/order-transition.service.d.ts +32 -0
- package/order/providers/routing/order.guard.d.ts +13 -0
- package/order/public_api.d.ts +51 -0
- package/package.json +133 -0
- package/public_api.d.ts +4 -0
- package/react/components/react-custom-column.component.d.ts +17 -0
- package/react/components/react-custom-detail.component.d.ts +24 -0
- package/react/components/react-form-input.component.d.ts +20 -0
- package/react/components/react-route.component.d.ts +10 -0
- package/react/directives/react-component-host.directive.d.ts +23 -0
- package/react/index.d.ts +5 -0
- package/react/public_api.d.ts +25 -0
- package/react/react-components/ActionBar.d.ts +23 -0
- package/react/react-components/Card.d.ts +24 -0
- package/react/react-components/CdsIcon.d.ts +45 -0
- package/react/react-components/FormField.d.ts +27 -0
- package/react/react-components/Link.d.ts +22 -0
- package/react/react-components/PageBlock.d.ts +21 -0
- package/react/react-components/PageDetailLayout.d.ts +23 -0
- package/react/react-components/RichTextEditor.d.ts +62 -0
- package/react/react-hooks/use-detail-component-data.d.ts +32 -0
- package/react/react-hooks/use-form-control.d.ts +29 -0
- package/react/react-hooks/use-injector.d.ts +24 -0
- package/react/react-hooks/use-page-metadata.d.ts +30 -0
- package/react/react-hooks/use-query.d.ts +163 -0
- package/react/react-hooks/use-rich-text-editor.d.ts +37 -0
- package/react/react-hooks/use-route-params.d.ts +22 -0
- package/react/register-react-custom-detail-component.d.ts +38 -0
- package/react/register-react-data-table-component.d.ts +83 -0
- package/react/register-react-form-input-component.d.ts +9 -0
- package/react/register-react-route-component.d.ts +32 -0
- package/react/types.d.ts +17 -0
- package/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +20 -0
- package/settings/components/admin-detail/admin-detail.component.d.ts +64 -0
- package/settings/components/administrator-list/administrator-list-bulk-actions.d.ts +1 -0
- package/settings/components/administrator-list/administrator-list.component.d.ts +29 -0
- package/settings/components/channel-detail/channel-detail.component.d.ts +46 -0
- package/settings/components/channel-list/channel-list-bulk-actions.d.ts +1 -0
- package/settings/components/channel-list/channel-list.component.d.ts +13 -0
- package/settings/components/country-detail/country-detail.component.d.ts +29 -0
- package/settings/components/country-list/country-list-bulk-actions.d.ts +1 -0
- package/settings/components/country-list/country-list.component.d.ts +11 -0
- package/settings/components/global-settings/global-settings.component.d.ts +29 -0
- package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +64 -0
- package/settings/components/payment-method-list/payment-method-list-bulk-actions.d.ts +3 -0
- package/settings/components/payment-method-list/payment-method-list.component.d.ts +11 -0
- package/settings/components/permission-grid/permission-grid.component.d.ts +28 -0
- package/settings/components/profile/profile.component.d.ts +28 -0
- package/settings/components/role-detail/role-detail.component.d.ts +31 -0
- package/settings/components/role-list/role-list-bulk-actions.d.ts +1 -0
- package/settings/components/role-list/role-list.component.d.ts +17 -0
- package/settings/components/seller-detail/seller-detail.component.d.ts +31 -0
- package/settings/components/seller-list/seller-list-bulk-actions.d.ts +1 -0
- package/settings/components/seller-list/seller-list.component.d.ts +11 -0
- package/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +12 -0
- package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +76 -0
- package/settings/components/shipping-method-list/shipping-method-list-bulk-actions.d.ts +3 -0
- package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +12 -0
- package/settings/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +12 -0
- package/settings/components/stock-location-detail/stock-location-detail.component.d.ts +32 -0
- package/settings/components/stock-location-list/stock-location-list-bulk-actions.d.ts +3 -0
- package/settings/components/stock-location-list/stock-location-list.component.d.ts +12 -0
- package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +32 -0
- package/settings/components/tax-category-list/tax-category-list-bulk-actions.d.ts +1 -0
- package/settings/components/tax-category-list/tax-category-list.component.d.ts +11 -0
- package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +39 -0
- package/settings/components/tax-rate-list/tax-rate-list-bulk-actions.d.ts +1 -0
- package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +11 -0
- package/settings/components/test-address-form/test-address-form.component.d.ts +25 -0
- package/settings/components/test-order-builder/test-order-builder.component.d.ts +31 -0
- package/settings/components/test-shipping-methods/test-shipping-methods.component.d.ts +23 -0
- package/settings/components/zone-detail/zone-detail.component.d.ts +31 -0
- package/settings/components/zone-list/zone-list-bulk-actions.d.ts +1 -0
- package/settings/components/zone-list/zone-list.component.d.ts +26 -0
- package/settings/components/zone-member-list/zone-member-controls.directive.d.ts +8 -0
- package/settings/components/zone-member-list/zone-member-list-bulk-actions.d.ts +3 -0
- package/settings/components/zone-member-list/zone-member-list-header.directive.d.ts +8 -0
- package/settings/components/zone-member-list/zone-member-list.component.d.ts +40 -0
- package/settings/index.d.ts +5 -0
- package/settings/providers/routing/profile-resolver.d.ts +8 -0
- package/settings/public_api.d.ts +49 -0
- package/settings/settings.module.d.ts +45 -0
- package/settings/settings.routes.d.ts +3 -0
- package/static/assets/.gitkeep +0 -0
- package/static/assets/logo-login.webp +0 -0
- package/static/assets/logo-top.webp +0 -0
- package/static/deenruv-ui-config.json +290 -0
- package/static/favicon.ico +0 -0
- package/static/fonts/fonts.scss +253 -0
- package/static/fonts/inter-cyrillic-ext.woff2 +0 -0
- package/static/fonts/inter-cyrillic.woff2 +0 -0
- package/static/fonts/inter-greek-ext.woff2 +0 -0
- package/static/fonts/inter-greek.woff2 +0 -0
- package/static/fonts/inter-latin-ext.woff2 +0 -0
- package/static/fonts/inter-latin.woff2 +0 -0
- package/static/fonts/inter-vietnamese.woff2 +0 -0
- package/static/i18n-messages/ar.json +814 -0
- package/static/i18n-messages/cs.json +814 -0
- package/static/i18n-messages/de.json +814 -0
- package/static/i18n-messages/en.json +814 -0
- package/static/i18n-messages/es.json +814 -0
- package/static/i18n-messages/fa.json +814 -0
- package/static/i18n-messages/fr.json +814 -0
- package/static/i18n-messages/he.json +814 -0
- package/static/i18n-messages/hr.json +814 -0
- package/static/i18n-messages/it.json +814 -0
- package/static/i18n-messages/nb.json +812 -0
- package/static/i18n-messages/ne.json +814 -0
- package/static/i18n-messages/pl.json +814 -0
- package/static/i18n-messages/pt_BR.json +814 -0
- package/static/i18n-messages/pt_PT.json +814 -0
- package/static/i18n-messages/ru.json +814 -0
- package/static/i18n-messages/sv.json +807 -0
- package/static/i18n-messages/uk.json +814 -0
- package/static/i18n-messages/zh_Hans.json +814 -0
- package/static/i18n-messages/zh_Hant.json +814 -0
- package/static/index.html +14 -0
- package/static/polyfills.ts +66 -0
- package/static/styles/_mixins.scss +60 -0
- package/static/styles/_variables.scss +11 -0
- package/static/styles/component/prosemirror.scss +511 -0
- package/static/styles/global/_buttons.scss +147 -0
- package/static/styles/global/_clarity.scss +140 -0
- package/static/styles/global/_forms.scss +187 -0
- package/static/styles/global/_global.scss +41 -0
- package/static/styles/global/_overrides.scss +165 -0
- package/static/styles/global/_sass-overrides.scss +8 -0
- package/static/styles/global/_utilities.scss +155 -0
- package/static/styles/rtl.scss +143 -0
- package/static/styles/styles.scss +19 -0
- package/static/styles/theme/dark.scss +591 -0
- package/static/styles/theme/default.scss +254 -0
- package/static/styles/ui-extension-theme.scss +13 -0
- package/static/theme.min.css +1 -0
- package/system/components/health-check/health-check.component.d.ts +8 -0
- package/system/components/job-list/job-list.component.d.ts +19 -0
- package/system/components/job-state-label/job-state-label.component.d.ts +9 -0
- package/system/index.d.ts +5 -0
- package/system/public_api.d.ts +5 -0
- package/system/system.module.d.ts +11 -0
- package/system/system.routes.d.ts +2 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
2
|
+
import { createBulkAssignToChannelAction, createBulkDeleteAction, createBulkRemoveFromChannelAction, currentChannelIsNotDefault, DataService, DuplicateEntityDialogComponent, getChannelCodeFromUserStatus, ModalService, NotificationService, Permission, } from '@deenruv/admin-ui/core';
|
|
3
|
+
import { unique } from '@deenruv/common/lib/unique';
|
|
4
|
+
import { EMPTY, of } from 'rxjs';
|
|
5
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
6
|
+
export const deleteFacetsBulkAction = createBulkDeleteAction({
|
|
7
|
+
location: 'facet-list',
|
|
8
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteFacet) ||
|
|
9
|
+
userPermissions.includes(Permission.DeleteCatalog),
|
|
10
|
+
getItemName: item => item.name,
|
|
11
|
+
shouldRetryItem: (response, item) => !!response.message,
|
|
12
|
+
bulkDelete: (dataService, ids, retrying) => dataService.facet.deleteFacets(ids, retrying).pipe(map(res => res.deleteFacets)),
|
|
13
|
+
});
|
|
14
|
+
export const assignFacetsToChannelBulkAction = createBulkAssignToChannelAction({
|
|
15
|
+
location: 'facet-list',
|
|
16
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.UpdateCatalog) ||
|
|
17
|
+
userPermissions.includes(Permission.UpdateFacet),
|
|
18
|
+
getItemName: item => item.name,
|
|
19
|
+
bulkAssignToChannel: (dataService, facetIds, channelIds) => channelIds.map(channelId => dataService.facet
|
|
20
|
+
.assignFacetsToChannel({
|
|
21
|
+
facetIds,
|
|
22
|
+
channelId,
|
|
23
|
+
})
|
|
24
|
+
.pipe(map(res => res.assignFacetsToChannel))),
|
|
25
|
+
});
|
|
26
|
+
export const removeFacetsFromChannelBulkAction = createBulkRemoveFromChannelAction({
|
|
27
|
+
location: 'facet-list',
|
|
28
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCatalog) ||
|
|
29
|
+
userPermissions.includes(Permission.DeleteFacet),
|
|
30
|
+
getItemName: item => item.name,
|
|
31
|
+
bulkRemoveFromChannel: (dataService, facetIds, channelId, retrying) => dataService.facet
|
|
32
|
+
.removeFacetsFromChannel({
|
|
33
|
+
channelId: channelId,
|
|
34
|
+
facetIds,
|
|
35
|
+
force: retrying,
|
|
36
|
+
})
|
|
37
|
+
.pipe(map(res => res.removeFacetsFromChannel)),
|
|
38
|
+
isErrorResult: result => (result.__typename === 'FacetInUseError' ? result.message : undefined),
|
|
39
|
+
});
|
|
40
|
+
export const removeFacetsFromChannelBulkAction2 = {
|
|
41
|
+
location: 'facet-list',
|
|
42
|
+
label: _('catalog.remove-from-channel'),
|
|
43
|
+
getTranslationVars: ({ injector }) => getChannelCodeFromUserStatus(injector.get(DataService)),
|
|
44
|
+
icon: 'layers',
|
|
45
|
+
iconClass: 'is-warning',
|
|
46
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.UpdateFacet) ||
|
|
47
|
+
userPermissions.includes(Permission.UpdateCatalog),
|
|
48
|
+
isVisible: ({ injector }) => currentChannelIsNotDefault(injector.get(DataService)),
|
|
49
|
+
onClick: ({ injector, selection, hostComponent, clearSelection }) => {
|
|
50
|
+
const modalService = injector.get(ModalService);
|
|
51
|
+
const dataService = injector.get(DataService);
|
|
52
|
+
const notificationService = injector.get(NotificationService);
|
|
53
|
+
const activeChannelId$ = dataService.client
|
|
54
|
+
.userStatus()
|
|
55
|
+
.mapSingle(({ userStatus }) => userStatus.activeChannelId);
|
|
56
|
+
function showModalAndDelete(facetIds, message) {
|
|
57
|
+
return modalService
|
|
58
|
+
.dialog({
|
|
59
|
+
title: _('catalog.remove-from-channel'),
|
|
60
|
+
translationVars: {
|
|
61
|
+
count: selection.length,
|
|
62
|
+
},
|
|
63
|
+
size: message ? 'lg' : 'md',
|
|
64
|
+
body: message,
|
|
65
|
+
buttons: [
|
|
66
|
+
{ type: 'secondary', label: _('common.cancel') },
|
|
67
|
+
{
|
|
68
|
+
type: 'danger',
|
|
69
|
+
label: message ? _('common.force-remove') : _('common.remove'),
|
|
70
|
+
returnValue: true,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
})
|
|
74
|
+
.pipe(switchMap(res => res
|
|
75
|
+
? activeChannelId$.pipe(switchMap(activeChannelId => activeChannelId
|
|
76
|
+
? dataService.facet.removeFacetsFromChannel({
|
|
77
|
+
channelId: activeChannelId,
|
|
78
|
+
facetIds,
|
|
79
|
+
force: !!message,
|
|
80
|
+
})
|
|
81
|
+
: EMPTY), map(res2 => res2.removeFacetsFromChannel))
|
|
82
|
+
: EMPTY));
|
|
83
|
+
}
|
|
84
|
+
showModalAndDelete(unique(selection.map(f => f.id)))
|
|
85
|
+
.pipe(switchMap(result => {
|
|
86
|
+
let removedCount = selection.length;
|
|
87
|
+
const errors = [];
|
|
88
|
+
const errorIds = [];
|
|
89
|
+
let i = 0;
|
|
90
|
+
for (const item of result) {
|
|
91
|
+
if (item.__typename === 'FacetInUseError') {
|
|
92
|
+
errors.push(item.message);
|
|
93
|
+
errorIds.push(selection[i]?.id);
|
|
94
|
+
removedCount--;
|
|
95
|
+
}
|
|
96
|
+
i++;
|
|
97
|
+
}
|
|
98
|
+
if (0 < errorIds.length) {
|
|
99
|
+
return showModalAndDelete(errorIds, errors.join('\n')).pipe(map(result2 => {
|
|
100
|
+
const notRemovedCount = result2.filter(r => r.__typename === 'FacetInUseError').length;
|
|
101
|
+
return selection.length - notRemovedCount;
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return of(removedCount);
|
|
106
|
+
}
|
|
107
|
+
}), switchMap(removedCount => removedCount
|
|
108
|
+
? getChannelCodeFromUserStatus(dataService).then(({ channelCode }) => ({
|
|
109
|
+
channelCode,
|
|
110
|
+
removedCount,
|
|
111
|
+
}))
|
|
112
|
+
: EMPTY))
|
|
113
|
+
.subscribe(({ removedCount, channelCode }) => {
|
|
114
|
+
if (removedCount) {
|
|
115
|
+
hostComponent.refresh();
|
|
116
|
+
clearSelection();
|
|
117
|
+
notificationService.success(_('catalog.notify-remove-facets-from-channel-success'), {
|
|
118
|
+
count: removedCount,
|
|
119
|
+
channelCode,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
export const duplicateFacetsBulkAction = {
|
|
126
|
+
location: 'facet-list',
|
|
127
|
+
label: _('common.duplicate'),
|
|
128
|
+
icon: 'copy',
|
|
129
|
+
onClick: ({ injector, selection, hostComponent, clearSelection }) => {
|
|
130
|
+
const modalService = injector.get(ModalService);
|
|
131
|
+
modalService
|
|
132
|
+
.fromComponent((DuplicateEntityDialogComponent), {
|
|
133
|
+
locals: {
|
|
134
|
+
entities: selection,
|
|
135
|
+
entityName: 'Facet',
|
|
136
|
+
title: _('catalog.duplicate-facets'),
|
|
137
|
+
getEntityName: entity => entity.name,
|
|
138
|
+
},
|
|
139
|
+
})
|
|
140
|
+
.subscribe(result => {
|
|
141
|
+
if (result) {
|
|
142
|
+
clearSelection();
|
|
143
|
+
hostComponent.refresh();
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbGlzdC1idWxrLWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvZmFjZXQtbGlzdC9mYWNldC1saXN0LWJ1bGstYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGlDQUFpQyxFQUNqQywwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLDhCQUE4QixFQUM5Qiw0QkFBNEIsRUFHNUIsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixVQUFVLEdBRWIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBc0M7SUFDOUYsUUFBUSxFQUFFLFlBQVk7SUFDdEIsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FDbEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ2hELGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN0RCxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSTtJQUM5QixlQUFlLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDdkQsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxR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dEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRTtRQUNoRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELFlBQVk7YUFDUCxhQUFhLENBQUMsQ0FBQSw4QkFBbUUsQ0FBQSxFQUFFO1lBQ2hGLE1BQU0sRUFBRTtnQkFDSixRQUFRLEVBQUUsU0FBUztnQkFDbkIsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLEtBQUssRUFBRSxDQUFDLENBQUMsMEJBQTBCLENBQUM7Z0JBQ3BDLGFBQWEsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2FBQ3ZDO1NBQ0osQ0FBQzthQUNELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULGNBQWMsRUFBRSxDQUFDO2dCQUNqQixhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XG5pbXBvcnQge1xuICAgIEJ1bGtBY3Rpb24sXG4gICAgY3JlYXRlQnVsa0Fzc2lnblRvQ2hhbm5lbEFjdGlvbixcbiAgICBjcmVhdGVCdWxrRGVsZXRlQWN0aW9uLFxuICAgIGNyZWF0ZUJ1bGtSZW1vdmVGcm9tQ2hhbm5lbEFjdGlvbixcbiAgICBjdXJyZW50Q2hhbm5lbElzTm90RGVmYXVsdCxcbiAgICBEYXRhU2VydmljZSxcbiAgICBEdXBsaWNhdGVFbnRpdHlEaWFsb2dDb21wb25lbnQsXG4gICAgZ2V0Q2hhbm5lbENvZGVGcm9tVXNlclN0YXR1cyxcbiAgICBHZXRGYWNldExpc3RRdWVyeSxcbiAgICBJdGVtT2YsXG4gICAgTW9kYWxTZXJ2aWNlLFxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgUGVybWlzc2lvbixcbiAgICBSZW1vdmVGYWNldHNGcm9tQ2hhbm5lbE11dGF0aW9uLFxufSBmcm9tICdAZGVlbnJ1di9hZG1pbi11aS9jb3JlJztcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BkZWVucnV2L2NvbW1vbi9saWIvdW5pcXVlJztcbmltcG9ydCB7IEVNUFRZLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZhY2V0TGlzdENvbXBvbmVudCB9IGZyb20gJy4vZmFjZXQtbGlzdC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlRmFjZXRzQnVsa0FjdGlvbiA9IGNyZWF0ZUJ1bGtEZWxldGVBY3Rpb248SXRlbU9mPEdldEZhY2V0TGlzdFF1ZXJ5LCAnZmFjZXRzJz4+KHtcbiAgICBsb2NhdGlvbjogJ2ZhY2V0LWxpc3QnLFxuICAgIHJlcXVpcmVzUGVybWlzc2lvbjogdXNlclBlcm1pc3Npb25zID0+XG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucy5pbmNsdWRlcyhQZXJtaXNzaW9uLkRlbGV0ZUZhY2V0KSB8fFxuICAgICAgICB1c2VyUGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5EZWxldGVDYXRhbG9nKSxcbiAgICBnZXRJdGVtTmFtZTogaXRlbSA9PiBpdGVtLm5hbWUsXG4gICAgc2hvdWxkUmV0cnlJdGVtOiAocmVzcG9uc2UsIGl0ZW0pID0+ICEhcmVzcG9uc2UubWVzc2FnZSxcbiAgICBidWxrRGVsZXRlOiAoZGF0YVNlcnZpY2UsIGlkcywgcmV0cnlpbmcpID0+XG4gICAgICAgIGRhdGFTZXJ2aWNlLmZhY2V0LmRlbGV0ZUZhY2V0cyhpZHMsIHJldHJ5aW5nKS5waXBlKG1hcChyZXMgPT4gcmVzLmRlbGV0ZUZhY2V0cykpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25GYWNldHNUb0NoYW5uZWxCdWxrQWN0aW9uID0gY3JlYXRlQnVsa0Fzc2lnblRvQ2hhbm5lbEFjdGlvbjxcbiAgICBJdGVtT2Y8R2V0RmFjZXRMaXN0UXVlcnksICdmYWNldHMnPlxuPih7XG4gICAgbG9jYXRpb246ICdmYWNldC1saXN0JyxcbiAgICByZXF1aXJlc1Blcm1pc3Npb246IHVzZXJQZXJtaXNzaW9ucyA9PlxuICAgICAgICB1c2VyUGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5VcGRhdGVDYXRhbG9nKSB8fFxuICAgICAgICB1c2VyUGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5VcGRhdGVGYWNldCksXG4gICAgZ2V0SXRlbU5hbWU6IGl0ZW0gPT4gaXRlbS5uYW1lLFxuICAgIGJ1bGtBc3NpZ25Ub0NoYW5uZWw6IChkYXRhU2VydmljZSwgZmFjZXRJZHMsIGNoYW5uZWxJZHMpID0+XG4gICAgICAgIGNoYW5uZWxJZHMubWFwKGNoYW5uZWxJZCA9PlxuICAgICAgICAgICAgZGF0YVNlcnZpY2UuZmFjZXRcbiAgICAgICAgICAgICAgICAuYXNzaWduRmFjZXRzVG9DaGFubmVsKHtcbiAgICAgICAgICAgICAgICAgICAgZmFjZXRJZHMsXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxJZCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmFzc2lnbkZhY2V0c1RvQ2hhbm5lbCkpLFxuICAgICAgICApLFxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVGYWNldHNGcm9tQ2hhbm5lbEJ1bGtBY3Rpb24gPSBjcmVhdGVCdWxrUmVtb3ZlRnJvbUNoYW5uZWxBY3Rpb248XG4gICAgSXRlbU9mPEdldEZhY2V0TGlzdFF1ZXJ5LCAnZmFjZXRzJz4sXG4gICAgUmVtb3ZlRmFjZXRzRnJvbUNoYW5uZWxNdXRhdGlvblsncmVtb3ZlRmFjZXRzRnJvbUNoYW5uZWwnXVtudW1iZXJdXG4+KHtcbiAgICBsb2NhdGlvbjogJ2ZhY2V0LWxpc3QnLFxuICAgIHJlcXVpcmVzUGVybWlzc2lvbjogdXNlclBlcm1pc3Npb25zID0+XG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucy5pbmNsdWRlcyhQZXJtaXNzaW9uLkRlbGV0ZUNhdGFsb2cpIHx8XG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucy5pbmNsdWRlcyhQZXJtaXNzaW9uLkRlbGV0ZUZhY2V0KSxcbiAgICBnZXRJdGVtTmFtZTogaXRlbSA9PiBpdGVtLm5hbWUsXG4gICAgYnVsa1JlbW92ZUZyb21DaGFubmVsOiAoZGF0YVNlcnZpY2UsIGZhY2V0SWRzLCBjaGFubmVsSWQsIHJldHJ5aW5nKSA9PlxuICAgICAgICBkYXRhU2VydmljZS5mYWNldFxuICAgICAgICAgICAgLnJlbW92ZUZhY2V0c0Zyb21DaGFubmVsKHtcbiAgICAgICAgICAgICAgICBjaGFubmVsSWQ6IGNoYW5uZWxJZCxcbiAgICAgICAgICAgICAgICBmYWNldElkcyxcbiAgICAgICAgICAgICAgICBmb3JjZTogcmV0cnlpbmcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMucmVtb3ZlRmFjZXRzRnJvbUNoYW5uZWwpKSxcbiAgICBpc0Vycm9yUmVzdWx0OiByZXN1bHQgPT4gKHJlc3VsdC5fX3R5cGVuYW1lID09PSAnRmFjZXRJblVzZUVycm9yJyA/IHJlc3VsdC5tZXNzYWdlIDogdW5kZWZpbmVkKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRmFjZXRzRnJvbUNoYW5uZWxCdWxrQWN0aW9uMjogQnVsa0FjdGlvbjxcbiAgICBJdGVtT2Y8R2V0RmFjZXRMaXN0UXVlcnksICdmYWNldHMnPixcbiAgICBGYWNldExpc3RDb21wb25lbnRcbj4gPSB7XG4gICAgbG9jYXRpb246ICdmYWNldC1saXN0JyxcbiAgICBsYWJlbDogXygnY2F0YWxvZy5yZW1vdmUtZnJvbS1jaGFubmVsJyksXG4gICAgZ2V0VHJhbnNsYXRpb25WYXJzOiAoeyBpbmplY3RvciB9KSA9PiBnZXRDaGFubmVsQ29kZUZyb21Vc2VyU3RhdHVzKGluamVjdG9yLmdldChEYXRhU2VydmljZSkpLFxuICAgIGljb246ICdsYXllcnMnLFxuICAgIGljb25DbGFzczogJ2lzLXdhcm5pbmcnLFxuICAgIHJlcXVpcmVzUGVybWlzc2lvbjogdXNlclBlcm1pc3Npb25zID0+XG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucy5pbmNsdWRlcyhQZXJtaXNzaW9uLlVwZGF0ZUZhY2V0KSB8fFxuICAgICAgICB1c2VyUGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5VcGRhdGVDYXRhbG9nKSxcbiAgICBpc1Zpc2libGU6ICh7IGluamVjdG9yIH0pID0+IGN1cnJlbnRDaGFubmVsSXNOb3REZWZhdWx0KGluamVjdG9yLmdldChEYXRhU2VydmljZSkpLFxuICAgIG9uQ2xpY2s6ICh7IGluamVjdG9yLCBzZWxlY3Rpb24sIGhvc3RDb21wb25lbnQsIGNsZWFyU2VsZWN0aW9uIH0pID0+IHtcbiAgICAgICAgY29uc3QgbW9kYWxTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE1vZGFsU2VydmljZSk7XG4gICAgICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERhdGFTZXJ2aWNlKTtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChOb3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICAgICAgICBjb25zdCBhY3RpdmVDaGFubmVsSWQkID0gZGF0YVNlcnZpY2UuY2xpZW50XG4gICAgICAgICAgICAudXNlclN0YXR1cygpXG4gICAgICAgICAgICAubWFwU2luZ2xlKCh7IHVzZXJTdGF0dXMgfSkgPT4gdXNlclN0YXR1cy5hY3RpdmVDaGFubmVsSWQpO1xuXG4gICAgICAgIGZ1bmN0aW9uIHNob3dNb2RhbEFuZERlbGV0ZShmYWNldElkczogc3RyaW5nW10sIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RhbFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZGlhbG9nKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8oJ2NhdGFsb2cucmVtb3ZlLWZyb20tY2hhbm5lbCcpLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiBzZWxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaXplOiBtZXNzYWdlID8gJ2xnJyA6ICdtZCcsXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbWVzc2FnZSA/IF8oJ2NvbW1vbi5mb3JjZS1yZW1vdmUnKSA6IF8oJ2NvbW1vbi5yZW1vdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVDaGFubmVsSWQkLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKGFjdGl2ZUNoYW5uZWxJZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVDaGFubmVsSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YVNlcnZpY2UuZmFjZXQucmVtb3ZlRmFjZXRzRnJvbUNoYW5uZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbElkOiBhY3RpdmVDaGFubmVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNldElkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlOiAhIW1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEVNUFRZLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHJlczIgPT4gcmVzMi5yZW1vdmVGYWNldHNGcm9tQ2hhbm5lbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFTVBUWSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd01vZGFsQW5kRGVsZXRlKHVuaXF1ZShzZWxlY3Rpb24ubWFwKGYgPT4gZi5pZCkpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkQ291bnQgPSBzZWxlY3Rpb24ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ySWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLl9fdHlwZW5hbWUgPT09ICdGYWNldEluVXNlRXJyb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goaXRlbS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcklkcy5wdXNoKHNlbGVjdGlvbltpXT8uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRDb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgwIDwgZXJyb3JJZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvd01vZGFsQW5kRGVsZXRlKGVycm9ySWRzLCBlcnJvcnMuam9pbignXFxuJykpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHJlc3VsdDIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3RSZW1vdmVkQ291bnQgPSByZXN1bHQyLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT4gci5fX3R5cGVuYW1lID09PSAnRmFjZXRJblVzZUVycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24ubGVuZ3RoIC0gbm90UmVtb3ZlZENvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihyZW1vdmVkQ291bnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlbW92ZWRDb3VudCA9PlxuICAgICAgICAgICAgICAgICAgICByZW1vdmVkQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0Q2hhbm5lbENvZGVGcm9tVXNlclN0YXR1cyhkYXRhU2VydmljZSkudGhlbigoeyBjaGFubmVsQ29kZSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbENvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBFTVBUWSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyByZW1vdmVkQ291bnQsIGNoYW5uZWxDb2RlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlZENvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGhvc3RDb21wb25lbnQucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY2F0YWxvZy5ub3RpZnktcmVtb3ZlLWZhY2V0cy1mcm9tLWNoYW5uZWwtc3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogcmVtb3ZlZENvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbENvZGUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZHVwbGljYXRlRmFjZXRzQnVsa0FjdGlvbjogQnVsa0FjdGlvbjxcbiAgICBJdGVtT2Y8R2V0RmFjZXRMaXN0UXVlcnksICdmYWNldHMnPixcbiAgICBGYWNldExpc3RDb21wb25lbnRcbj4gPSB7XG4gICAgbG9jYXRpb246ICdmYWNldC1saXN0JyxcbiAgICBsYWJlbDogXygnY29tbW9uLmR1cGxpY2F0ZScpLFxuICAgIGljb246ICdjb3B5JyxcbiAgICBvbkNsaWNrOiAoeyBpbmplY3Rvciwgc2VsZWN0aW9uLCBob3N0Q29tcG9uZW50LCBjbGVhclNlbGVjdGlvbiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGFsU2VydmljZSA9IGluamVjdG9yLmdldChNb2RhbFNlcnZpY2UpO1xuICAgICAgICBtb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KER1cGxpY2F0ZUVudGl0eURpYWxvZ0NvbXBvbmVudDxJdGVtT2Y8R2V0RmFjZXRMaXN0UXVlcnksICdmYWNldHMnPj4sIHtcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXRpZXM6IHNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZTogJ0ZhY2V0JyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8oJ2NhdGFsb2cuZHVwbGljYXRlLWZhY2V0cycpLFxuICAgICAgICAgICAgICAgICAgICBnZXRFbnRpdHlOYW1lOiBlbnRpdHkgPT4gZW50aXR5Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBob3N0Q29tcG9uZW50LnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
3
|
+
import { FACET_WITH_VALUE_LIST_FRAGMENT, GetFacetListDocument, TypedBaseListComponent, } from '@deenruv/admin-ui/core';
|
|
4
|
+
import { gql } from 'apollo-angular';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@deenruv/admin-ui/core";
|
|
7
|
+
import * as i2 from "@clr/angular";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@angular/router";
|
|
10
|
+
import * as i5 from "@ngx-translate/core";
|
|
11
|
+
export const FACET_LIST_QUERY = gql `
|
|
12
|
+
query GetFacetList($options: FacetListOptions, $facetValueListOptions: FacetValueListOptions) {
|
|
13
|
+
facets(options: $options) {
|
|
14
|
+
items {
|
|
15
|
+
...FacetWithValueList
|
|
16
|
+
}
|
|
17
|
+
totalItems
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
${FACET_WITH_VALUE_LIST_FRAGMENT}
|
|
21
|
+
`;
|
|
22
|
+
export class FacetListComponent extends TypedBaseListComponent {
|
|
23
|
+
constructor(dataService) {
|
|
24
|
+
super();
|
|
25
|
+
this.dataService = dataService;
|
|
26
|
+
this.initialLimit = 3;
|
|
27
|
+
this.displayLimit = {};
|
|
28
|
+
this.customFields = this.getCustomFieldConfig('Facet');
|
|
29
|
+
this.filters = this.createFilterCollection()
|
|
30
|
+
.addIdFilter()
|
|
31
|
+
.addDateFilters()
|
|
32
|
+
.addFilter({
|
|
33
|
+
name: 'visibility',
|
|
34
|
+
type: { kind: 'boolean' },
|
|
35
|
+
label: _('common.visibility'),
|
|
36
|
+
toFilterInput: value => ({
|
|
37
|
+
isPrivate: { eq: !value },
|
|
38
|
+
}),
|
|
39
|
+
})
|
|
40
|
+
.addCustomFieldFilters(this.customFields)
|
|
41
|
+
.connectToRoute(this.route);
|
|
42
|
+
this.sorts = this.createSortCollection()
|
|
43
|
+
.defaultSort('createdAt', 'DESC')
|
|
44
|
+
.addSort({ name: 'id' })
|
|
45
|
+
.addSort({ name: 'createdAt' })
|
|
46
|
+
.addSort({ name: 'updatedAt' })
|
|
47
|
+
.addSort({ name: 'name' })
|
|
48
|
+
.addSort({ name: 'code' })
|
|
49
|
+
.addCustomFieldSorts(this.customFields)
|
|
50
|
+
.connectToRoute(this.route);
|
|
51
|
+
super.configure({
|
|
52
|
+
document: GetFacetListDocument,
|
|
53
|
+
getItems: data => data.facets,
|
|
54
|
+
setVariables: (skip, take) => ({
|
|
55
|
+
options: {
|
|
56
|
+
skip,
|
|
57
|
+
take,
|
|
58
|
+
filter: {
|
|
59
|
+
name: {
|
|
60
|
+
contains: this.searchTermControl.value,
|
|
61
|
+
},
|
|
62
|
+
...this.filters.createFilterInput(),
|
|
63
|
+
},
|
|
64
|
+
sort: this.sorts.createSortInput(),
|
|
65
|
+
},
|
|
66
|
+
facetValueListOptions: {
|
|
67
|
+
take: 100,
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
toggleDisplayLimit(facet) {
|
|
74
|
+
if (this.displayLimit[facet.id] === facet.valueList.items.length) {
|
|
75
|
+
this.displayLimit[facet.id] = this.initialLimit;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.displayLimit[facet.id] = facet.valueList.items.length;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
setLanguage(code) {
|
|
82
|
+
this.dataService.client.setContentLanguage(code).subscribe();
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetListComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FacetListComponent, selector: "vdr-facet-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"facet-list\" />\n <a\n class=\"btn btn-primary\"\n [routerLink]=\"['./create']\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateFacet']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-facet' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"facet-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n id=\"facet-list\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"facet-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-facet=\"item\">\n {{ facet.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-facet=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', facet.id]\"\n ><span>{{ facet.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\n <ng-template let-facet=\"item\">\n {{ facet.code }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.visibility' | translate\" id=\"visibility\">\n <ng-template let-facet=\"item\">\n <vdr-chip *ngIf=\"facet.isPrivate\" colorType=\"warning\">{{\n 'common.private' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!facet.isPrivate\" colorType=\"success\">{{\n 'common.public' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.values' | translate\" id=\"values\">\n <ng-template let-facet=\"item\">\n <div class=\"facet-values-list\">\n <vdr-facet-value-chip\n *ngFor=\"let value of facet.valueList.items | slice : 0 : displayLimit[facet.id] || 3\"\n [facetValue]=\"value\"\n [removable]=\"false\"\n [displayFacetName]=\"false\"\n ></vdr-facet-value-chip>\n <vdr-chip *ngIf=\"displayLimit[facet.id] < facet.valueList.totalItems && (displayLimit[facet.id] || 0) === facet.valueList.items.length\">\n ... + {{ facet.valueList.totalItems - facet.valueList.items.length }}\n </vdr-chip>\n <button\n class=\"button-small\"\n *ngIf=\"facet.valueList.items.length > initialLimit\"\n (click)=\"toggleDisplayLimit(facet)\"\n >\n <ng-container *ngIf=\"(displayLimit[facet.id] || 0) < facet.valueList.items.length; else collapse\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ facet.valueList.totalItems - initialLimit }}\n </ng-container>\n <ng-template #collapse>\n <clr-icon shape=\"minus\"></clr-icon>\n </ng-template>\n </button>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", styles: [".facet-values-list{max-width:500px;display:flex;flex-wrap:wrap;align-items:center;gap:4px}\n"], dependencies: [{ kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarDropdownMenuComponent, selector: "vdr-action-bar-dropdown-menu", inputs: ["alwaysShow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.FacetValueChipComponent, selector: "vdr-facet-value-chip", inputs: ["facetValue", "removable", "displayFacetName"], outputs: ["remove"] }, { kind: "component", type: i1.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }] }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FacetListComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'vdr-facet-list', template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"facet-list\" />\n <a\n class=\"btn btn-primary\"\n [routerLink]=\"['./create']\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateFacet']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-facet' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"facet-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n id=\"facet-list\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"facet-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-facet=\"item\">\n {{ facet.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-facet=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', facet.id]\"\n ><span>{{ facet.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\n <ng-template let-facet=\"item\">\n {{ facet.code }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.visibility' | translate\" id=\"visibility\">\n <ng-template let-facet=\"item\">\n <vdr-chip *ngIf=\"facet.isPrivate\" colorType=\"warning\">{{\n 'common.private' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!facet.isPrivate\" colorType=\"success\">{{\n 'common.public' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.values' | translate\" id=\"values\">\n <ng-template let-facet=\"item\">\n <div class=\"facet-values-list\">\n <vdr-facet-value-chip\n *ngFor=\"let value of facet.valueList.items | slice : 0 : displayLimit[facet.id] || 3\"\n [facetValue]=\"value\"\n [removable]=\"false\"\n [displayFacetName]=\"false\"\n ></vdr-facet-value-chip>\n <vdr-chip *ngIf=\"displayLimit[facet.id] < facet.valueList.totalItems && (displayLimit[facet.id] || 0) === facet.valueList.items.length\">\n ... + {{ facet.valueList.totalItems - facet.valueList.items.length }}\n </vdr-chip>\n <button\n class=\"button-small\"\n *ngIf=\"facet.valueList.items.length > initialLimit\"\n (click)=\"toggleDisplayLimit(facet)\"\n >\n <ng-container *ngIf=\"(displayLimit[facet.id] || 0) < facet.valueList.items.length; else collapse\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ facet.valueList.totalItems - initialLimit }}\n </ng-container>\n <ng-template #collapse>\n <clr-icon shape=\"minus\"></clr-icon>\n </ng-template>\n </button>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", styles: [".facet-values-list{max-width:500px;display:flex;flex-wrap:wrap;align-items:center;gap:4px}\n"] }]
|
|
90
|
+
}], ctorParameters: () => [{ type: i1.DataService }] });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvZmFjZXQtbGlzdC9mYWNldC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9mYWNldC1saXN0L2ZhY2V0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBSXBCLHNCQUFzQixHQUN6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUVyQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7OztNQVM3Qiw4QkFBOEI7Q0FDbkMsQ0FBQztBQU9GLE1BQU0sT0FBTyxrQkFDVCxTQUFRLHNCQUE2RDtJQStCckUsWUFBc0IsV0FBd0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTVCckMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBNkIsRUFBRSxDQUFDO1FBRW5DLGlCQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7YUFDM0MsV0FBVyxFQUFFO2FBQ2IsY0FBYyxFQUFFO2FBQ2hCLFNBQVMsQ0FBQztZQUNQLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDekIsS0FBSyxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztZQUM3QixhQUFhLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQixTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUU7YUFDNUIsQ0FBQztTQUNMLENBQUM7YUFDRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsVUFBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRTthQUN2QyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQzthQUNoQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDdkIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQzlCLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDekIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3pCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDdEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUk1QixLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ1osUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUM3QixZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUU7b0JBQ0wsSUFBSTtvQkFDSixJQUFJO29CQUNKLE1BQU0sRUFBRTt3QkFDSixJQUFJLEVBQUU7NEJBQ0YsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO3lCQUN6Qzt3QkFDRCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7cUJBQ3RDO29CQUNELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtpQkFDckM7Z0JBQ0QscUJBQXFCLEVBQUU7b0JBQ25CLElBQUksRUFBRSxHQUFHO2lCQUNaO2FBQ0osQ0FBQztZQUNGLG9CQUFvQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDN0UsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQTBDO1FBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMvRCxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrQjtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRSxDQUFDOytHQW5FUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2RUM5Qi9CLGlwS0F1SEE7OzRGRHpGYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcbmltcG9ydCB7XG4gICAgRGF0YVNlcnZpY2UsXG4gICAgRkFDRVRfV0lUSF9WQUxVRV9MSVNUX0ZSQUdNRU5ULFxuICAgIEdldEZhY2V0TGlzdERvY3VtZW50LFxuICAgIEdldEZhY2V0TGlzdFF1ZXJ5LFxuICAgIEl0ZW1PZixcbiAgICBMYW5ndWFnZUNvZGUsXG4gICAgVHlwZWRCYXNlTGlzdENvbXBvbmVudCxcbn0gZnJvbSAnQGRlZW5ydXYvYWRtaW4tdWkvY29yZSc7XG5pbXBvcnQgeyBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5cbmV4cG9ydCBjb25zdCBGQUNFVF9MSVNUX1FVRVJZID0gZ3FsYFxuICAgIHF1ZXJ5IEdldEZhY2V0TGlzdCgkb3B0aW9uczogRmFjZXRMaXN0T3B0aW9ucywgJGZhY2V0VmFsdWVMaXN0T3B0aW9uczogRmFjZXRWYWx1ZUxpc3RPcHRpb25zKSB7XG4gICAgICAgIGZhY2V0cyhvcHRpb25zOiAkb3B0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMge1xuICAgICAgICAgICAgICAgIC4uLkZhY2V0V2l0aFZhbHVlTGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG90YWxJdGVtc1xuICAgICAgICB9XG4gICAgfVxuICAgICR7RkFDRVRfV0lUSF9WQUxVRV9MSVNUX0ZSQUdNRU5UfVxuYDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItZmFjZXQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZhY2V0LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjZXRMaXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VMaXN0Q29tcG9uZW50PHR5cGVvZiBHZXRGYWNldExpc3REb2N1bWVudCwgJ2ZhY2V0cyc+XG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICByZWFkb25seSBpbml0aWFsTGltaXQgPSAzO1xuICAgIGRpc3BsYXlMaW1pdDogeyBbaWQ6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgICByZWFkb25seSBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdGYWNldCcpO1xuICAgIHJlYWRvbmx5IGZpbHRlcnMgPSB0aGlzLmNyZWF0ZUZpbHRlckNvbGxlY3Rpb24oKVxuICAgICAgICAuYWRkSWRGaWx0ZXIoKVxuICAgICAgICAuYWRkRGF0ZUZpbHRlcnMoKVxuICAgICAgICAuYWRkRmlsdGVyKHtcbiAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5JyxcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnZpc2liaWxpdHknKSxcbiAgICAgICAgICAgIHRvRmlsdGVySW5wdXQ6IHZhbHVlID0+ICh7XG4gICAgICAgICAgICAgICAgaXNQcml2YXRlOiB7IGVxOiAhdmFsdWUgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRGaWx0ZXJzKHRoaXMuY3VzdG9tRmllbGRzKVxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XG5cbiAgICByZWFkb25seSBzb3J0cyA9IHRoaXMuY3JlYXRlU29ydENvbGxlY3Rpb24oKVxuICAgICAgICAuZGVmYXVsdFNvcnQoJ2NyZWF0ZWRBdCcsICdERVNDJylcbiAgICAgICAgLmFkZFNvcnQoeyBuYW1lOiAnaWQnIH0pXG4gICAgICAgIC5hZGRTb3J0KHsgbmFtZTogJ2NyZWF0ZWRBdCcgfSlcbiAgICAgICAgLmFkZFNvcnQoeyBuYW1lOiAndXBkYXRlZEF0JyB9KVxuICAgICAgICAuYWRkU29ydCh7IG5hbWU6ICduYW1lJyB9KVxuICAgICAgICAuYWRkU29ydCh7IG5hbWU6ICdjb2RlJyB9KVxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRTb3J0cyh0aGlzLmN1c3RvbUZpZWxkcylcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzdXBlci5jb25maWd1cmUoe1xuICAgICAgICAgICAgZG9jdW1lbnQ6IEdldEZhY2V0TGlzdERvY3VtZW50LFxuICAgICAgICAgICAgZ2V0SXRlbXM6IGRhdGEgPT4gZGF0YS5mYWNldHMsXG4gICAgICAgICAgICBzZXRWYXJpYWJsZXM6IChza2lwLCB0YWtlKSA9PiAoe1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWx0ZXJzLmNyZWF0ZUZpbHRlcklucHV0KCksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHNvcnQ6IHRoaXMuc29ydHMuY3JlYXRlU29ydElucHV0KCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmYWNldFZhbHVlTGlzdE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGFrZTogMTAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5maWx0ZXJzLnZhbHVlQ2hhbmdlcywgdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXNdLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGVEaXNwbGF5TGltaXQoZmFjZXQ6IEl0ZW1PZjxHZXRGYWNldExpc3RRdWVyeSwgJ2ZhY2V0cyc+KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlMaW1pdFtmYWNldC5pZF0gPT09IGZhY2V0LnZhbHVlTGlzdC5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUxpbWl0W2ZhY2V0LmlkXSA9IHRoaXMuaW5pdGlhbExpbWl0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TGltaXRbZmFjZXQuaWRdID0gZmFjZXQudmFsdWVMaXN0Lml0ZW1zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldExhbmd1YWdlKGNvZGU6IExhbmd1YWdlQ29kZSkge1xuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zZXRDb250ZW50TGFuZ3VhZ2UoY29kZSkuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiPHZkci1wYWdlLWJsb2NrPlxuICAgIDx2ZHItYWN0aW9uLWJhcj5cbiAgICAgICAgPHZkci1hYi1sZWZ0PlxuICAgICAgICAgICAgPHZkci1sYW5ndWFnZS1zZWxlY3RvclxuICAgICAgICAgICAgICAgIFthdmFpbGFibGVMYW5ndWFnZUNvZGVzXT1cImF2YWlsYWJsZUxhbmd1YWdlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRMYW5ndWFnZUNvZGVdPVwiY29udGVudExhbmd1YWdlJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAobGFuZ3VhZ2VDb2RlQ2hhbmdlKT1cInNldExhbmd1YWdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmRyLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgICA8L3Zkci1hYi1sZWZ0PlxuICAgICAgICA8dmRyLWFiLXJpZ2h0PlxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJmYWNldC1saXN0XCIgLz5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi9jcmVhdGUnXVwiXG4gICAgICAgICAgICAgICAgKnZkcklmUGVybWlzc2lvbnM9XCJbJ0NyZWF0ZUNhdGFsb2cnLCAnQ3JlYXRlRmFjZXQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuY3JlYXRlLW5ldy1mYWNldCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1kcm9wZG93bi1tZW51IGxvY2F0aW9uSWQ9XCJmYWNldC1saXN0XCIgLz5cbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XG4gICAgPC92ZHItYWN0aW9uLWJhcj5cbjwvdmRyLXBhZ2UtYmxvY2s+XG48dmRyLWRhdGEtdGFibGUtMlxuICAgIGNsYXNzPVwibXQtMlwiXG4gICAgaWQ9XCJmYWNldC1saXN0XCJcbiAgICBbaXRlbXNdPVwiaXRlbXMkIHwgYXN5bmNcIlxuICAgIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlJCB8IGFzeW5jXCJcbiAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zJCB8IGFzeW5jXCJcbiAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2UkIHwgYXN5bmNcIlxuICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgIChwYWdlQ2hhbmdlKT1cInNldFBhZ2VOdW1iZXIoJGV2ZW50KVwiXG4gICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJzZXRJdGVtc1BlclBhZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHZkci1idWxrLWFjdGlvbi1tZW51XG4gICAgICAgIGxvY2F0aW9uSWQ9XCJmYWNldC1saXN0XCJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzZWxlY3Rpb25NYW5hZ2VyXT1cInNlbGVjdGlvbk1hbmFnZXJcIlxuICAgID48L3Zkci1idWxrLWFjdGlvbi1tZW51PlxuICAgIDx2ZHItZHQyLXNlYXJjaFxuICAgICAgICBbc2VhcmNoVGVybUNvbnRyb2xdPVwic2VhcmNoVGVybUNvbnRyb2xcIlxuICAgICAgICBbc2VhcmNoVGVybVBsYWNlaG9sZGVyXT1cIidjYXRhbG9nLmZpbHRlci1ieS1uYW1lJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmRyLWR0Mi1zZWFyY2g+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaWQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpZFwiIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiIFtzb3J0XT1cInNvcnRzLmdldCgnaWQnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWZhY2V0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgZmFjZXQuaWQgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJjcmVhdGVkLWF0XCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWZhY2V0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgZmFjZXQuY3JlYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJ1cGRhdGVkLWF0XCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCd1cGRhdGVkQXQnKVwiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWZhY2V0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgZmFjZXQudXBkYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLm5hbWUnIHwgdHJhbnNsYXRlXCIgaWQ9XCJuYW1lXCIgW29wdGlvbmFsXT1cImZhbHNlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCduYW1lJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1mYWNldD1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uLWdob3N0XCIgW3JvdXRlckxpbmtdPVwiWycuLycsIGZhY2V0LmlkXVwiXG4gICAgICAgICAgICAgICAgPjxzcGFuPnt7IGZhY2V0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uY29kZScgfCB0cmFuc2xhdGVcIiBpZD1cImNvZGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1mYWNldD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IGZhY2V0LmNvZGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLnZpc2liaWxpdHknIHwgdHJhbnNsYXRlXCIgaWQ9XCJ2aXNpYmlsaXR5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZmFjZXQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCJmYWNldC5pc1ByaXZhdGVcIiBjb2xvclR5cGU9XCJ3YXJuaW5nXCI+e3tcbiAgICAgICAgICAgICAgICAnY29tbW9uLnByaXZhdGUnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCIhZmFjZXQuaXNQcml2YXRlXCIgY29sb3JUeXBlPVwic3VjY2Vzc1wiPnt7XG4gICAgICAgICAgICAgICAgJ2NvbW1vbi5wdWJsaWMnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NhdGFsb2cudmFsdWVzJyB8IHRyYW5zbGF0ZVwiIGlkPVwidmFsdWVzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZmFjZXQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFjZXQtdmFsdWVzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8dmRyLWZhY2V0LXZhbHVlLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIGZhY2V0LnZhbHVlTGlzdC5pdGVtcyB8IHNsaWNlIDogMCA6IGRpc3BsYXlMaW1pdFtmYWNldC5pZF0gfHwgM1wiXG4gICAgICAgICAgICAgICAgICAgIFtmYWNldFZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmFjZXROYW1lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+PC92ZHItZmFjZXQtdmFsdWUtY2hpcD5cbiAgICAgICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCJkaXNwbGF5TGltaXRbZmFjZXQuaWRdIDwgZmFjZXQudmFsdWVMaXN0LnRvdGFsSXRlbXMgJiYgKGRpc3BsYXlMaW1pdFtmYWNldC5pZF0gfHwgMCkgPT09IGZhY2V0LnZhbHVlTGlzdC5pdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgLi4uICsge3sgZmFjZXQudmFsdWVMaXN0LnRvdGFsSXRlbXMgLSBmYWNldC52YWx1ZUxpc3QuaXRlbXMubGVuZ3RoIH19XG4gICAgICAgICAgICAgICAgPC92ZHItY2hpcD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmYWNldC52YWx1ZUxpc3QuaXRlbXMubGVuZ3RoID4gaW5pdGlhbExpbWl0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURpc3BsYXlMaW1pdChmYWNldClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkaXNwbGF5TGltaXRbZmFjZXQuaWRdIHx8IDApIDwgZmFjZXQudmFsdWVMaXN0Lml0ZW1zLmxlbmd0aDsgZWxzZSBjb2xsYXBzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmYWNldC52YWx1ZUxpc3QudG90YWxJdGVtcyAtIGluaXRpYWxMaW1pdCB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cIm1pbnVzXCI+PC9jbHItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY3VzdG9tLWZpZWxkLWNvbHVtbiAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgY3VzdG9tRmllbGRzXCIgW2N1c3RvbUZpZWxkXT1cImN1c3RvbUZpZWxkXCIgW3NvcnRzXT1cInNvcnRzXCIgLz5cbjwvdmRyLWRhdGEtdGFibGUtMj5cbiJdfQ==
|
package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Output, ViewChildren } from '@angular/core';
|
|
2
|
+
import { GetStockLocationListDocument, } from '@deenruv/admin-ui/core';
|
|
3
|
+
import { generateAllCombinations } from '@deenruv/common/lib/shared-utils';
|
|
4
|
+
import { tap } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@deenruv/admin-ui/core";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@clr/angular";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "../option-value-input/option-value-input.component";
|
|
11
|
+
import * as i6 from "@ngx-translate/core";
|
|
12
|
+
const DEFAULT_VARIANT_CODE = '__DEFAULT_VARIANT__';
|
|
13
|
+
export class GenerateProductVariantsComponent {
|
|
14
|
+
constructor(dataService, formBuilder) {
|
|
15
|
+
this.dataService = dataService;
|
|
16
|
+
this.formBuilder = formBuilder;
|
|
17
|
+
this.variantsChange = new EventEmitter();
|
|
18
|
+
this.optionGroups = [];
|
|
19
|
+
this.variantFormValues = {};
|
|
20
|
+
this.selectedStockLocationId = null;
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.dataService.settings.getActiveChannel().single$.subscribe(data => {
|
|
24
|
+
this.currencyCode = data.activeChannel.defaultCurrencyCode;
|
|
25
|
+
});
|
|
26
|
+
this.stockLocations$ = this.dataService
|
|
27
|
+
.query(GetStockLocationListDocument, {
|
|
28
|
+
options: {
|
|
29
|
+
take: 999,
|
|
30
|
+
},
|
|
31
|
+
})
|
|
32
|
+
.refetchOnChannelChange()
|
|
33
|
+
.mapStream(({ stockLocations }) => stockLocations.items)
|
|
34
|
+
.pipe(tap(items => {
|
|
35
|
+
if (items.length) {
|
|
36
|
+
this.selectedStockLocationId = items[0].id;
|
|
37
|
+
this.onFormChange();
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
this.generateVariants();
|
|
41
|
+
}
|
|
42
|
+
addOption() {
|
|
43
|
+
this.optionGroups.push({ name: '', values: [] });
|
|
44
|
+
const index = this.optionGroups.length - 1;
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
const input = this.groupNameInputs.get(index)?.nativeElement;
|
|
47
|
+
input?.focus();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
removeOption(name) {
|
|
51
|
+
this.optionGroups = this.optionGroups.filter(g => g.name !== name);
|
|
52
|
+
this.generateVariants();
|
|
53
|
+
}
|
|
54
|
+
generateVariants() {
|
|
55
|
+
const totalValuesCount = this.optionGroups.reduce((sum, group) => sum + group.values.length, 0);
|
|
56
|
+
const groups = totalValuesCount
|
|
57
|
+
? this.optionGroups.map(g => g.values.map(v => v.name))
|
|
58
|
+
: [[DEFAULT_VARIANT_CODE]];
|
|
59
|
+
this.variants = generateAllCombinations(groups).map(values => ({ id: values.join('|'), values }));
|
|
60
|
+
this.variants.forEach((variant, index) => {
|
|
61
|
+
if (!this.variantFormValues[variant.id]) {
|
|
62
|
+
const formGroup = this.formBuilder.nonNullable.group({
|
|
63
|
+
optionValues: [variant.values],
|
|
64
|
+
enabled: true,
|
|
65
|
+
price: this.copyFromDefault(variant.id, 'price', 0),
|
|
66
|
+
sku: this.copyFromDefault(variant.id, 'sku', ''),
|
|
67
|
+
stock: this.copyFromDefault(variant.id, 'stock', 0),
|
|
68
|
+
});
|
|
69
|
+
formGroup.valueChanges.subscribe(() => this.onFormChange());
|
|
70
|
+
if (index === 0) {
|
|
71
|
+
formGroup.get('price')?.valueChanges.subscribe(value => {
|
|
72
|
+
this.copyValuesToPristine('price', formGroup.get('price'));
|
|
73
|
+
});
|
|
74
|
+
formGroup.get('sku')?.valueChanges.subscribe(value => {
|
|
75
|
+
this.copyValuesToPristine('sku', formGroup.get('sku'));
|
|
76
|
+
});
|
|
77
|
+
formGroup.get('stock')?.valueChanges.subscribe(value => {
|
|
78
|
+
this.copyValuesToPristine('stock', formGroup.get('stock'));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
this.variantFormValues[variant.id] = formGroup;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
this.onFormChange();
|
|
85
|
+
}
|
|
86
|
+
trackByFn(index, variant) {
|
|
87
|
+
return variant.values.join('|');
|
|
88
|
+
}
|
|
89
|
+
handleEnter(event, optionValueInputComponent) {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
event.stopPropagation();
|
|
92
|
+
optionValueInputComponent.focus();
|
|
93
|
+
}
|
|
94
|
+
copyValuesToPristine(field, formControl) {
|
|
95
|
+
if (!formControl) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
Object.values(this.variantFormValues).forEach(formGroup => {
|
|
99
|
+
const correspondingFormControl = formGroup.get(field);
|
|
100
|
+
if (correspondingFormControl && correspondingFormControl.pristine) {
|
|
101
|
+
correspondingFormControl.setValue(formControl.value, { emitEvent: false });
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
onFormChange() {
|
|
106
|
+
const variantsToCreate = this.variants
|
|
107
|
+
.map(v => this.variantFormValues[v.id].value)
|
|
108
|
+
.filter(v => v.enabled);
|
|
109
|
+
this.variantsChange.emit({
|
|
110
|
+
groups: this.optionGroups.map(og => ({ name: og.name, values: og.values.map(v => v.name) })),
|
|
111
|
+
variants: variantsToCreate,
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
113
|
+
stockLocationId: this.selectedStockLocationId,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
copyFromDefault(variantId, prop, value) {
|
|
117
|
+
return variantId !== DEFAULT_VARIANT_CODE
|
|
118
|
+
? this.variantFormValues[DEFAULT_VARIANT_CODE].get(prop)?.value
|
|
119
|
+
: value;
|
|
120
|
+
}
|
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GenerateProductVariantsComponent, deps: [{ token: i1.DataService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GenerateProductVariantsComponent, selector: "vdr-generate-product-variants", outputs: { variantsChange: "variantsChange" }, viewQueries: [{ propertyName: "groupNameInputs", predicate: ["optionGroupName"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div *ngFor=\"let group of optionGroups\" class=\"option-groups\">\n <div class=\"name\">\n <label>{{ 'catalog.option' | translate }}</label>\n <input\n #optionGroupName\n placeholder=\"e.g. Size\"\n clrInput\n [(ngModel)]=\"group.name\"\n name=\"name\"\n required\n (keydown.enter)=\"handleEnter($event, optionValueInputComponent)\"\n />\n </div>\n <div class=\"values\">\n <label>{{ 'catalog.option-values' | translate }}</label>\n <vdr-option-value-input\n #optionValueInputComponent\n [(ngModel)]=\"group.values\"\n (ngModelChange)=\"generateVariants()\"\n (edit)=\"generateVariants()\"\n [groupName]=\"group.name\"\n [disabled]=\"group.name === ''\"\n ></vdr-option-value-input>\n </div>\n <div class=\"remove-group\">\n <button\n class=\"button-small mt-2\"\n [title]=\"'catalog.remove-option' | translate\"\n (click)=\"removeOption(group.name)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n</div>\n<button class=\"button mb-2\" (click)=\"addOption()\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-option' | translate }}\n</button>\n\n<ng-container *ngIf=\"stockLocations$ | async as stockLocations\">\n <clr-alert *ngIf=\"stockLocations.length === 0\" clrAlertType=\"warning\" [clrAlertClosable]=\"false\" class=\"\">\n <clr-alert-item>\n <span class=\"alert-text\">\n {{ 'catalog.no-stock-locations-available-on-current-channel' | translate }}\n </span>\n </clr-alert-item>\n </clr-alert>\n\n <div class=\"form-grid mb-2\">\n <vdr-form-field *ngIf=\"stockLocations.length\" [label]=\"'catalog.add-stock-to-location' | translate\">\n <select [(ngModel)]=\"selectedStockLocationId\">\n <option *ngFor=\"let location of stockLocations\" [value]=\"location.id\">\n {{ location.name }}\n </option>\n </select>\n </vdr-form-field>\n </div>\n\n <div class=\"variants-preview\" *ngIf=\"0 < stockLocations.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <th *ngIf=\"1 < variants.length\">{{ 'common.create' | translate }}</th>\n <th *ngIf=\"1 < variants.length\">{{ 'catalog.variant' | translate }}</th>\n <th>{{ 'catalog.sku' | translate }}</th>\n <th>{{ 'catalog.price' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let variant of variants; trackBy: trackByFn\"\n [class.disabled]=\"!variantFormValues[variant.id].value.enabled === false\"\n [formGroup]=\"variantFormValues[variant.id]\"\n >\n <td *ngIf=\"1 < variants.length\">\n <input type=\"checkbox\" formControlName=\"enabled\" clrCheckbox />\n </td>\n <td *ngIf=\"1 < variants.length\">\n {{ variant.values.join(' ') }}\n </td>\n <td>\n <vdr-form-field>\n <input type=\"text\" formControlName=\"sku\" [placeholder]=\"'catalog.sku' | translate\" />\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <vdr-currency-input\n formControlName=\"price\"\n [currencyCode]=\"currencyCode\"\n ></vdr-currency-input>\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <input type=\"number\" formControlName=\"stock\" min=\"0\" step=\"1\" />\n </vdr-form-field>\n </td>\n </tr>\n </table>\n </div>\n</ng-container>\n", styles: [":host{display:block;margin-bottom:120px}.option-groups{display:flex}.values{flex:1;margin:0 6px}.remove-group{padding-top:18px}.variants-preview tr.disabled td{background-color:var(--color-component-bg-100);color:var(--color-grey-400)}\n"], dependencies: [{ kind: "component", type: i3.ClrAlert, selector: "clr-alert", inputs: ["clrAlertSizeSmall", "clrAlertClosable", "clrAlertAppLevel", "clrCloseButtonAriaLabel", "clrAlertLightweight", "clrAlertType", "clrAlertIcon", "clrAlertClosed"], outputs: ["clrAlertClosedChange"] }, { kind: "component", type: i3.ClrAlertItem, selector: "clr-alert-item" }, { kind: "directive", type: i3.ClrAlertText, selector: ".alert-text" }, { kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "directive", type: i3.ClrInput, selector: "[clrInput]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i1.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"], outputs: ["readOnlyToggleChange"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i5.OptionValueInputComponent, selector: "vdr-option-value-input", inputs: ["groupName", "options", "disabled"], outputs: ["add", "remove", "edit"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GenerateProductVariantsComponent, decorators: [{
|
|
125
|
+
type: Component,
|
|
126
|
+
args: [{ selector: 'vdr-generate-product-variants', template: "<div *ngFor=\"let group of optionGroups\" class=\"option-groups\">\n <div class=\"name\">\n <label>{{ 'catalog.option' | translate }}</label>\n <input\n #optionGroupName\n placeholder=\"e.g. Size\"\n clrInput\n [(ngModel)]=\"group.name\"\n name=\"name\"\n required\n (keydown.enter)=\"handleEnter($event, optionValueInputComponent)\"\n />\n </div>\n <div class=\"values\">\n <label>{{ 'catalog.option-values' | translate }}</label>\n <vdr-option-value-input\n #optionValueInputComponent\n [(ngModel)]=\"group.values\"\n (ngModelChange)=\"generateVariants()\"\n (edit)=\"generateVariants()\"\n [groupName]=\"group.name\"\n [disabled]=\"group.name === ''\"\n ></vdr-option-value-input>\n </div>\n <div class=\"remove-group\">\n <button\n class=\"button-small mt-2\"\n [title]=\"'catalog.remove-option' | translate\"\n (click)=\"removeOption(group.name)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n</div>\n<button class=\"button mb-2\" (click)=\"addOption()\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-option' | translate }}\n</button>\n\n<ng-container *ngIf=\"stockLocations$ | async as stockLocations\">\n <clr-alert *ngIf=\"stockLocations.length === 0\" clrAlertType=\"warning\" [clrAlertClosable]=\"false\" class=\"\">\n <clr-alert-item>\n <span class=\"alert-text\">\n {{ 'catalog.no-stock-locations-available-on-current-channel' | translate }}\n </span>\n </clr-alert-item>\n </clr-alert>\n\n <div class=\"form-grid mb-2\">\n <vdr-form-field *ngIf=\"stockLocations.length\" [label]=\"'catalog.add-stock-to-location' | translate\">\n <select [(ngModel)]=\"selectedStockLocationId\">\n <option *ngFor=\"let location of stockLocations\" [value]=\"location.id\">\n {{ location.name }}\n </option>\n </select>\n </vdr-form-field>\n </div>\n\n <div class=\"variants-preview\" *ngIf=\"0 < stockLocations.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <th *ngIf=\"1 < variants.length\">{{ 'common.create' | translate }}</th>\n <th *ngIf=\"1 < variants.length\">{{ 'catalog.variant' | translate }}</th>\n <th>{{ 'catalog.sku' | translate }}</th>\n <th>{{ 'catalog.price' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let variant of variants; trackBy: trackByFn\"\n [class.disabled]=\"!variantFormValues[variant.id].value.enabled === false\"\n [formGroup]=\"variantFormValues[variant.id]\"\n >\n <td *ngIf=\"1 < variants.length\">\n <input type=\"checkbox\" formControlName=\"enabled\" clrCheckbox />\n </td>\n <td *ngIf=\"1 < variants.length\">\n {{ variant.values.join(' ') }}\n </td>\n <td>\n <vdr-form-field>\n <input type=\"text\" formControlName=\"sku\" [placeholder]=\"'catalog.sku' | translate\" />\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <vdr-currency-input\n formControlName=\"price\"\n [currencyCode]=\"currencyCode\"\n ></vdr-currency-input>\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <input type=\"number\" formControlName=\"stock\" min=\"0\" step=\"1\" />\n </vdr-form-field>\n </td>\n </tr>\n </table>\n </div>\n</ng-container>\n", styles: [":host{display:block;margin-bottom:120px}.option-groups{display:flex}.values{flex:1;margin:0 6px}.remove-group{padding-top:18px}.variants-preview tr.disabled td{background-color:var(--color-component-bg-100);color:var(--color-grey-400)}\n"] }]
|
|
127
|
+
}], ctorParameters: () => [{ type: i1.DataService }, { type: i2.FormBuilder }], propDecorators: { variantsChange: [{
|
|
128
|
+
type: Output
|
|
129
|
+
}], groupNameInputs: [{
|
|
130
|
+
type: ViewChildren,
|
|
131
|
+
args: ['optionGroupName', { read: ElementRef }]
|
|
132
|
+
}] } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcHJvZHVjdC12YXJpYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGUtcHJvZHVjdC12YXJpYW50cy9nZW5lcmF0ZS1wcm9kdWN0LXZhcmlhbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZS1wcm9kdWN0LXZhcmlhbnRzL2dlbmVyYXRlLXByb2R1Y3QtdmFyaWFudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUdILDRCQUE0QixHQUcvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFJckMsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztBQW1CbkQsTUFBTSxPQUFPLGdDQUFnQztJQWlCekMsWUFDWSxXQUF3QixFQUN4QixXQUF3QjtRQUR4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWxCMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUUzRSxpQkFBWSxHQUE4RSxFQUFFLENBQUM7UUFHN0Ysc0JBQWlCLEdBUWIsRUFBRSxDQUFDO1FBRVAsNEJBQXVCLEdBQWtCLElBQUksQ0FBQztJQUkzQyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMs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ZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ3VycmVuY3lDb2RlLFxuICAgIERhdGFTZXJ2aWNlLFxuICAgIEdldFN0b2NrTG9jYXRpb25MaXN0RG9jdW1lbnQsXG4gICAgR2V0U3RvY2tMb2NhdGlvbkxpc3RRdWVyeSxcbiAgICBJdGVtT2YsXG59IGZyb20gJ0BkZWVucnV2L2FkbWluLXVpL2NvcmUnO1xuaW1wb3J0IHsgZ2VuZXJhdGVBbGxDb21iaW5hdGlvbnMgfSBmcm9tICdAZGVlbnJ1di9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9wdGlvblZhbHVlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24tdmFsdWUtaW5wdXQvb3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudCc7XG5cbmNvbnN0IERFRkFVTFRfVkFSSUFOVF9DT0RFID0gJ19fREVGQVVMVF9WQVJJQU5UX18nO1xuZXhwb3J0IHR5cGUgQ3JlYXRlVmFyaWFudFZhbHVlcyA9IHtcbiAgICBvcHRpb25WYWx1ZXM6IHN0cmluZ1tdO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgcHJpY2U6IG51bWJlcjtcbiAgICBzdG9jazogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIENyZWF0ZVByb2R1Y3RWYXJpYW50c0NvbmZpZyA9IHtcbiAgICBncm91cHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdIH0+O1xuICAgIHZhcmlhbnRzOiBDcmVhdGVWYXJpYW50VmFsdWVzW107XG4gICAgc3RvY2tMb2NhdGlvbklkOiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1nZW5lcmF0ZS1wcm9kdWN0LXZhcmlhbnRzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJhdGUtcHJvZHVjdC12YXJpYW50cy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJhdGUtcHJvZHVjdC12YXJpYW50cy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmF0ZVByb2R1Y3RWYXJpYW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQE91dHB1dCgpIHZhcmlhbnRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDcmVhdGVQcm9kdWN0VmFyaWFudHNDb25maWc+KCk7XG4gICAgQFZpZXdDaGlsZHJlbignb3B0aW9uR3JvdXBOYW1lJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGdyb3VwTmFtZUlucHV0czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICAgIG9wdGlvbkdyb3VwczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IGxvY2tlZDogYm9vbGVhbiB9PiB9PiA9IFtdO1xuICAgIGN1cnJlbmN5Q29kZTogQ3VycmVuY3lDb2RlO1xuICAgIHZhcmlhbnRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHZhbHVlczogc3RyaW5nW10gfT47XG4gICAgdmFyaWFudEZvcm1WYWx1ZXM6IHtcbiAgICAgICAgW2lkOiBzdHJpbmddOiBGb3JtR3JvdXA8e1xuICAgICAgICAgICAgb3B0aW9uVmFsdWVzOiBGb3JtQ29udHJvbDxzdHJpbmdbXT47XG4gICAgICAgICAgICBlbmFibGVkOiBGb3JtQ29udHJvbDxib29sZWFuPjtcbiAgICAgICAgICAgIHByaWNlOiBGb3JtQ29udHJvbDxudW1iZXI+O1xuICAgICAgICAgICAgc2t1OiBGb3JtQ29udHJvbDxzdHJpbmc+O1xuICAgICAgICAgICAgc3RvY2s6IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIH0+O1xuICAgIH0gPSB7fTtcbiAgICBzdG9ja0xvY2F0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8SXRlbU9mPEdldFN0b2NrTG9jYXRpb25MaXN0UXVlcnksICdzdG9ja0xvY2F0aW9ucyc+Pj47XG4gICAgc2VsZWN0ZWRTdG9ja0xvY2F0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuZ2V0QWN0aXZlQ2hhbm5lbCgpLnNpbmdsZSQuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUNvZGUgPSBkYXRhLmFjdGl2ZUNoYW5uZWwuZGVmYXVsdEN1cnJlbmN5Q29kZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3RvY2tMb2NhdGlvbnMkID0gdGhpcy5kYXRhU2VydmljZVxuICAgICAgICAgICAgLnF1ZXJ5KEdldFN0b2NrTG9jYXRpb25MaXN0RG9jdW1lbnQsIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRha2U6IDk5OSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWZldGNoT25DaGFubmVsQ2hhbmdlKClcbiAgICAgICAgICAgIC5tYXBTdHJlYW0oKHsgc3RvY2tMb2NhdGlvbnMgfSkgPT4gc3RvY2tMb2NhdGlvbnMuaXRlbXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvY2tMb2NhdGlvbklkID0gaXRlbXNbMF0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9ybUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVWYXJpYW50cygpO1xuICAgIH1cblxuICAgIGFkZE9wdGlvbigpIHtcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMucHVzaCh7IG5hbWU6ICcnLCB2YWx1ZXM6IFtdIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9uR3JvdXBzLmxlbmd0aCAtIDE7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmdyb3VwTmFtZUlucHV0cy5nZXQoaW5kZXgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaW5wdXQ/LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZU9wdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMgPSB0aGlzLm9wdGlvbkdyb3Vwcy5maWx0ZXIoZyA9PiBnLm5hbWUgIT09IG5hbWUpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlVmFyaWFudHMoKTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVZhcmlhbnRzKCkge1xuICAgICAgICBjb25zdCB0b3RhbFZhbHVlc0NvdW50ID0gdGhpcy5vcHRpb25Hcm91cHMucmVkdWNlKChzdW0sIGdyb3VwKSA9PiBzdW0gKyBncm91cC52YWx1ZXMubGVuZ3RoLCAwKTtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdG90YWxWYWx1ZXNDb3VudFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbkdyb3Vwcy5tYXAoZyA9PiBnLnZhbHVlcy5tYXAodiA9PiB2Lm5hbWUpKVxuICAgICAgICAgICAgOiBbW0RFRkFVTFRfVkFSSUFOVF9DT0RFXV07XG4gICAgICAgIHRoaXMudmFyaWFudHMgPSBnZW5lcmF0ZUFsbENvbWJpbmF0aW9ucyhncm91cHMpLm1hcCh2YWx1ZXMgPT4gKHsgaWQ6IHZhbHVlcy5qb2luKCd8JyksIHZhbHVlcyB9KSk7XG5cbiAgICAgICAgdGhpcy52YXJpYW50cy5mb3JFYWNoKCh2YXJpYW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZhcmlhbnRGb3JtVmFsdWVzW3ZhcmlhbnQuaWRdKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ub25OdWxsYWJsZS5ncm91cCh7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlczogW3ZhcmlhbnQudmFsdWVzXSxcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogdGhpcy5jb3B5RnJvbURlZmF1bHQodmFyaWFudC5pZCwgJ3ByaWNlJywgMCksXG4gICAgICAgICAgICAgICAgICAgIHNrdTogdGhpcy5jb3B5RnJvbURlZmF1bHQodmFyaWFudC5pZCwgJ3NrdScsICcnKSxcbiAgICAgICAgICAgICAgICAgICAgc3RvY2s6IHRoaXMuY29weUZyb21EZWZhdWx0KHZhcmlhbnQuaWQsICdzdG9jaycsIDApLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtQ2hhbmdlKCkpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdwcmljZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29weVZhbHVlc1RvUHJpc3RpbmUoJ3ByaWNlJywgZm9ybUdyb3VwLmdldCgncHJpY2UnKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdza3UnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHlWYWx1ZXNUb1ByaXN0aW5lKCdza3UnLCBmb3JtR3JvdXAuZ2V0KCdza3UnKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdzdG9jaycpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29weVZhbHVlc1RvUHJpc3RpbmUoJ3N0b2NrJywgZm9ybUdyb3VwLmdldCgnc3RvY2snKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnZhcmlhbnRGb3JtVmFsdWVzW3ZhcmlhbnQuaWRdID0gZm9ybUdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbkZvcm1DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgdmFyaWFudDogeyBuYW1lOiBzdHJpbmc7IHZhbHVlczogc3RyaW5nW10gfSkge1xuICAgICAgICByZXR1cm4gdmFyaWFudC52YWx1ZXMuam9pbignfCcpO1xuICAgIH1cblxuICAgIGhhbmRsZUVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBvcHRpb25WYWx1ZUlucHV0Q29tcG9uZW50OiBPcHRpb25WYWx1ZUlucHV0Q29tcG9uZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvcHRpb25WYWx1ZUlucHV0Q29tcG9uZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgY29weVZhbHVlc1RvUHJpc3RpbmUoZmllbGQ6ICdwcmljZScgfCAnc2t1JyB8ICdzdG9jaycsIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKSB7XG4gICAgICAgIGlmICghZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMudmFyaWFudEZvcm1WYWx1ZXMpLmZvckVhY2goZm9ybUdyb3VwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdGb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpIGFzIEZvcm1Db250cm9sO1xuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdGb3JtQ29udHJvbCAmJiBjb3JyZXNwb25kaW5nRm9ybUNvbnRyb2wucHJpc3RpbmUpIHtcbiAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nRm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybUNvbnRyb2wudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Gb3JtQ2hhbmdlKCkge1xuICAgICAgICBjb25zdCB2YXJpYW50c1RvQ3JlYXRlID0gdGhpcy52YXJpYW50c1xuICAgICAgICAgICAgLm1hcCh2ID0+IHRoaXMudmFyaWFudEZvcm1WYWx1ZXNbdi5pZF0udmFsdWUgYXMgQ3JlYXRlVmFyaWFudFZhbHVlcylcbiAgICAgICAgICAgIC5maWx0ZXIodiA9PiB2LmVuYWJsZWQpO1xuICAgICAgICB0aGlzLnZhcmlhbnRzQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLm9wdGlvbkdyb3Vwcy5tYXAob2cgPT4gKHsgbmFtZTogb2cubmFtZSwgdmFsdWVzOiBvZy52YWx1ZXMubWFwKHYgPT4gdi5uYW1lKSB9KSksXG4gICAgICAgICAgICB2YXJpYW50czogdmFyaWFudHNUb0NyZWF0ZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRTdG9ja0xvY2F0aW9uSWQhLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvcHlGcm9tRGVmYXVsdDxUIGV4dGVuZHMga2V5b2YgQ3JlYXRlVmFyaWFudFZhbHVlcz4oXG4gICAgICAgIHZhcmlhbnRJZDogc3RyaW5nLFxuICAgICAgICBwcm9wOiBULFxuICAgICAgICB2YWx1ZTogQ3JlYXRlVmFyaWFudFZhbHVlc1tUXSxcbiAgICApOiBDcmVhdGVWYXJpYW50VmFsdWVzW1RdIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhbnRJZCAhPT0gREVGQVVMVF9WQVJJQU5UX0NPREVcbiAgICAgICAgICAgID8gKHRoaXMudmFyaWFudEZvcm1WYWx1ZXNbREVGQVVMVF9WQVJJQU5UX0NPREVdLmdldChwcm9wKT8udmFsdWUgYXMgQ3JlYXRlVmFyaWFudFZhbHVlc1tUXSlcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2Ygb3B0aW9uR3JvdXBzXCIgY2xhc3M9XCJvcHRpb24tZ3JvdXBzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgPGxhYmVsPnt7ICdjYXRhbG9nLm9wdGlvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNvcHRpb25Hcm91cE5hbWVcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBTaXplXCJcbiAgICAgICAgICAgIGNscklucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwLm5hbWVcIlxuICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZUVudGVyKCRldmVudCwgb3B0aW9uVmFsdWVJbnB1dENvbXBvbmVudClcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgPGxhYmVsPnt7ICdjYXRhbG9nLm9wdGlvbi12YWx1ZXMnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgPHZkci1vcHRpb24tdmFsdWUtaW5wdXRcbiAgICAgICAgICAgICNvcHRpb25WYWx1ZUlucHV0Q29tcG9uZW50XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwLnZhbHVlc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJnZW5lcmF0ZVZhcmlhbnRzKClcIlxuICAgICAgICAgICAgKGVkaXQpPVwiZ2VuZXJhdGVWYXJpYW50cygpXCJcbiAgICAgICAgICAgIFtncm91cE5hbWVdPVwiZ3JvdXAubmFtZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAubmFtZSA9PT0gJydcIlxuICAgICAgICA+PC92ZHItb3B0aW9uLXZhbHVlLWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyZW1vdmUtZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGwgbXQtMlwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ2NhdGFsb2cucmVtb3ZlLW9wdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihncm91cC5uYW1lKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRyYXNoXCI+PC9jbHItaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxidXR0b24gY2xhc3M9XCJidXR0b24gbWItMlwiIChjbGljayk9XCJhZGRPcHRpb24oKVwiPlxuICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxuICAgIHt7ICdjYXRhbG9nLmFkZC1vcHRpb24nIHwgdHJhbnNsYXRlIH19XG48L2J1dHRvbj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b2NrTG9jYXRpb25zJCB8IGFzeW5jIGFzIHN0b2NrTG9jYXRpb25zXCI+XG4gICAgPGNsci1hbGVydCAqbmdJZj1cInN0b2NrTG9jYXRpb25zLmxlbmd0aCA9PT0gMFwiIGNsckFsZXJ0VHlwZT1cIndhcm5pbmdcIiBbY2xyQWxlcnRDbG9zYWJsZV09XCJmYWxzZVwiIGNsYXNzPVwiXCI+XG4gICAgICAgIDxjbHItYWxlcnQtaXRlbT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLm5vLXN0b2NrLWxvY2F0aW9ucy1hdmFpbGFibGUtb24tY3VycmVudC1jaGFubmVsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Nsci1hbGVydC1pdGVtPlxuICAgIDwvY2xyLWFsZXJ0PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZCBtYi0yXCI+XG4gICAgICAgIDx2ZHItZm9ybS1maWVsZCAqbmdJZj1cInN0b2NrTG9jYXRpb25zLmxlbmd0aFwiIFtsYWJlbF09XCInY2F0YWxvZy5hZGQtc3RvY2stdG8tbG9jYXRpb24nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdG9ja0xvY2F0aW9uSWRcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBzdG9ja0xvY2F0aW9uc1wiIFt2YWx1ZV09XCJsb2NhdGlvbi5pZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBsb2NhdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50cy1wcmV2aWV3XCIgKm5nSWY9XCIwIDwgc3RvY2tMb2NhdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIxIDwgdmFyaWFudHMubGVuZ3RoXCI+e3sgJ2NvbW1vbi5jcmVhdGUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiMSA8IHZhcmlhbnRzLmxlbmd0aFwiPnt7ICdjYXRhbG9nLnZhcmlhbnQnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICdjYXRhbG9nLnNrdScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJ2NhdGFsb2cucHJpY2UnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICdjYXRhbG9nLnN0b2NrLW9uLWhhbmQnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YXJpYW50IG9mIHZhcmlhbnRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhdmFyaWFudEZvcm1WYWx1ZXNbdmFyaWFudC5pZF0udmFsdWUuZW5hYmxlZCA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwidmFyaWFudEZvcm1WYWx1ZXNbdmFyaWFudC5pZF1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIjEgPCB2YXJpYW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRcIiBjbHJDaGVja2JveCAvPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiMSA8IHZhcmlhbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB2YXJpYW50LnZhbHVlcy5qb2luKCcgJykgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwic2t1XCIgW3BsYWNlaG9sZGVyXT1cIidjYXRhbG9nLnNrdScgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwiY3VycmVuY3lDb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1jdXJyZW5jeS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9ja1wiIG1pbj1cIjBcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|