@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,1400 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Input, ChangeDetectionStrategy, Component, EventEmitter, Output, ViewContainerRef, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, Subject, combineLatest, forkJoin, from, EMPTY, of } from 'rxjs';
|
|
4
|
+
import { map, startWith, distinctUntilChanged, debounceTime, tap, takeUntil, switchMap, filter, take, shareReplay, merge, mergeMap, concatMap, mapTo } from 'rxjs/operators';
|
|
5
|
+
import * as i1 from '@deenruv/admin-ui/core';
|
|
6
|
+
import { SelectionManager, HistoryEntryType, CUSTOMER_FRAGMENT, TypedBaseDetailComponent, getCustomFieldsDefaults, SortOrder, EditNoteDialogComponent, CustomerDetailQueryDocument, createBulkDeleteAction, Permission, CUSTOMER_GROUP_FRAGMENT, TypedBaseListComponent, GetCustomerGroupListDocument, ModalService, DataService, NotificationService, LogicalOperator, CustomerListQueryDocument, PageComponent, detailBreadcrumb, detailComponentWithResolver, GetCustomerGroupDetailDocument, SharedModule, PageService } from '@deenruv/admin-ui/core';
|
|
7
|
+
import * as i1$1 from '@angular/forms';
|
|
8
|
+
import { FormControl, UntypedFormArray, Validators } from '@angular/forms';
|
|
9
|
+
import * as i2 from '@angular/router';
|
|
10
|
+
import { RouterModule, ROUTES } from '@angular/router';
|
|
11
|
+
import * as i3 from '@clr/angular';
|
|
12
|
+
import * as i3$1 from '@angular/common';
|
|
13
|
+
import * as i4 from '@ngx-translate/core';
|
|
14
|
+
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
15
|
+
import { notNullOrUndefined } from '@deenruv/common/lib/shared-utils';
|
|
16
|
+
import { gql } from 'apollo-angular';
|
|
17
|
+
import * as i3$2 from '@ng-select/ng-select';
|
|
18
|
+
|
|
19
|
+
class CustomerStatusLabelComponent {
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerStatusLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: { customer: "customer" }, ngImport: i0, template: "<vdr-chip *ngIf=\"customer.user?.id\">\n <ng-container *ngIf=\"customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\n {{ 'customer.verified' | translate }}\n </ng-container>\n <ng-container *ngIf=\"!customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\n {{ 'customer.registered' | translate }}\n </ng-container>\n</vdr-chip>\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\n", styles: [".registered-user-icon{color:var(--color-grey-300)}.verified-user-icon{color:var(--color-success-500)}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerStatusLabelComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ selector: 'vdr-customer-status-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-chip *ngIf=\"customer.user?.id\">\n <ng-container *ngIf=\"customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\n {{ 'customer.verified' | translate }}\n </ng-container>\n <ng-container *ngIf=\"!customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\n {{ 'customer.registered' | translate }}\n </ng-container>\n</vdr-chip>\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\n", styles: [".registered-user-icon{color:var(--color-grey-300)}.verified-user-icon{color:var(--color-success-500)}\n"] }]
|
|
26
|
+
}], propDecorators: { customer: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}] } });
|
|
29
|
+
|
|
30
|
+
class CustomerGroupMemberListComponent {
|
|
31
|
+
constructor(router, dataService) {
|
|
32
|
+
this.router = router;
|
|
33
|
+
this.dataService = dataService;
|
|
34
|
+
this.selectedMemberIds = [];
|
|
35
|
+
this.selectionChange = new EventEmitter();
|
|
36
|
+
this.fetchParamsChange = new EventEmitter();
|
|
37
|
+
this.filterTermControl = new FormControl('');
|
|
38
|
+
this.selectionManager = new SelectionManager({
|
|
39
|
+
multiSelect: true,
|
|
40
|
+
itemsAreEqual: (a, b) => a.id === b.id,
|
|
41
|
+
additiveMode: true,
|
|
42
|
+
});
|
|
43
|
+
this.refresh$ = new BehaviorSubject(true);
|
|
44
|
+
this.destroy$ = new Subject();
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.membersCurrentPage$ = this.route.paramMap.pipe(map(qpm => qpm.get('membersPage')), map(page => (!page ? 1 : +page)), startWith(1), distinctUntilChanged());
|
|
48
|
+
this.membersItemsPerPage$ = this.route.paramMap.pipe(map(qpm => qpm.get('membersPerPage')), map(perPage => (!perPage ? 10 : +perPage)), startWith(10), distinctUntilChanged());
|
|
49
|
+
const filterTerm$ = this.filterTermControl.valueChanges.pipe(debounceTime(250), tap(() => this.setContentsPageNumber(1)), startWith(''));
|
|
50
|
+
combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)
|
|
51
|
+
.pipe(takeUntil(this.destroy$))
|
|
52
|
+
.subscribe(([currentPage, itemsPerPage, filterTerm]) => {
|
|
53
|
+
const take = itemsPerPage;
|
|
54
|
+
const skip = (currentPage - 1) * itemsPerPage;
|
|
55
|
+
this.fetchParamsChange.emit({
|
|
56
|
+
filterTerm: filterTerm ?? '',
|
|
57
|
+
skip,
|
|
58
|
+
take,
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
this.selectionManager.setCurrentItems(this.members?.filter(m => this.selectedMemberIds.includes(m.id)) ?? []);
|
|
62
|
+
this.selectionManager.selectionChanges$.pipe(takeUntil(this.destroy$)).subscribe(selection => {
|
|
63
|
+
this.selectionChange.emit(selection.map(s => s.id));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
ngOnDestroy() {
|
|
67
|
+
this.destroy$.next();
|
|
68
|
+
this.destroy$.complete();
|
|
69
|
+
}
|
|
70
|
+
setContentsPageNumber(page) {
|
|
71
|
+
this.setParam('membersPage', page);
|
|
72
|
+
}
|
|
73
|
+
setContentsItemsPerPage(perPage) {
|
|
74
|
+
this.setParam('membersPerPage', perPage);
|
|
75
|
+
}
|
|
76
|
+
refresh() {
|
|
77
|
+
this.refresh$.next(true);
|
|
78
|
+
}
|
|
79
|
+
setParam(key, value) {
|
|
80
|
+
this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {
|
|
81
|
+
relativeTo: this.route,
|
|
82
|
+
queryParamsHandling: 'merge',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupMemberListComponent, deps: [{ token: i2.Router }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: { locationId: "locationId", members: "members", totalItems: "totalItems", route: "route", selectedMemberIds: "selectedMemberIds", activeGroup: "activeGroup" }, outputs: { selectionChange: "selectionChange", fetchParamsChange: "fetchParamsChange" }, ngImport: i0, template: "<vdr-data-table-2\n [id]=\"locationId\"\n [items]=\"members\"\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\n [totalItems]=\"totalItems\"\n [currentPage]=\"membersCurrentPage$ | async\"\n (pageChange)=\"setContentsPageNumber($event)\"\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n [locationId]=\"locationId\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"filterTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n</vdr-data-table-2>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupMemberListComponent, decorators: [{
|
|
89
|
+
type: Component,
|
|
90
|
+
args: [{ selector: 'vdr-customer-group-member-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-data-table-2\n [id]=\"locationId\"\n [items]=\"members\"\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\n [totalItems]=\"totalItems\"\n [currentPage]=\"membersCurrentPage$ | async\"\n (pageChange)=\"setContentsPageNumber($event)\"\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n [locationId]=\"locationId\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"filterTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n</vdr-data-table-2>\n" }]
|
|
91
|
+
}], ctorParameters: () => [{ type: i2.Router }, { type: i1.DataService }], propDecorators: { locationId: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], members: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], totalItems: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], route: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], selectedMemberIds: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], activeGroup: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], selectionChange: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], fetchParamsChange: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}] } });
|
|
108
|
+
|
|
109
|
+
class AddCustomerToGroupDialogComponent {
|
|
110
|
+
constructor(dataService) {
|
|
111
|
+
this.dataService = dataService;
|
|
112
|
+
this.selectedCustomerIds = [];
|
|
113
|
+
this.fetchGroupMembers$ = new BehaviorSubject({
|
|
114
|
+
skip: 0,
|
|
115
|
+
take: 10,
|
|
116
|
+
filterTerm: '',
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
ngOnInit() {
|
|
120
|
+
const customerResult$ = this.fetchGroupMembers$.pipe(switchMap(({ skip, take, filterTerm }) => this.dataService.customer
|
|
121
|
+
.getCustomerList(take, skip, filterTerm)
|
|
122
|
+
.mapStream(res => res.customers)));
|
|
123
|
+
this.customers$ = customerResult$.pipe(map(res => res.items));
|
|
124
|
+
this.customersTotal$ = customerResult$.pipe(map(res => res.totalItems));
|
|
125
|
+
}
|
|
126
|
+
cancel() {
|
|
127
|
+
this.resolveWith();
|
|
128
|
+
}
|
|
129
|
+
add() {
|
|
130
|
+
this.resolveWith(this.selectedCustomerIds);
|
|
131
|
+
}
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddCustomerToGroupDialogComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddCustomerToGroupDialogComponent, selector: "vdr-add-customer-to-group-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\n</ng-template>\n\n<vdr-customer-group-member-list\n locationId=\"customer-group-members-picker-list\"\n [members]=\"customers$ | async\"\n [totalItems]=\"customersTotal$ | async\"\n [route]=\"route\"\n [selectedMemberIds]=\"selectedCustomerIds\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n (selectionChange)=\"selectedCustomerIds = $event\"\n/>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i1.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["locationId", "members", "totalItems", "route", "selectedMemberIds", "activeGroup"], outputs: ["selectionChange", "fetchParamsChange"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddCustomerToGroupDialogComponent, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{ selector: 'vdr-add-customer-to-group-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\n</ng-template>\n\n<vdr-customer-group-member-list\n locationId=\"customer-group-members-picker-list\"\n [members]=\"customers$ | async\"\n [totalItems]=\"customersTotal$ | async\"\n [route]=\"route\"\n [selectedMemberIds]=\"selectedCustomerIds\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n (selectionChange)=\"selectedCustomerIds = $event\"\n/>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\n </button>\n</ng-template>\n" }]
|
|
138
|
+
}], ctorParameters: () => [{ type: i1.DataService }] });
|
|
139
|
+
|
|
140
|
+
class AddressDetailDialogComponent {
|
|
141
|
+
constructor(changeDetector) {
|
|
142
|
+
this.changeDetector = changeDetector;
|
|
143
|
+
this.availableCountries = [];
|
|
144
|
+
}
|
|
145
|
+
ngOnInit() {
|
|
146
|
+
this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());
|
|
147
|
+
}
|
|
148
|
+
cancel() {
|
|
149
|
+
this.resolveWith();
|
|
150
|
+
}
|
|
151
|
+
save() {
|
|
152
|
+
this.resolveWith(this.addressForm);
|
|
153
|
+
}
|
|
154
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddressDetailDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddressDetailDialogComponent, selector: "vdr-address-detail-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\n</ng-template>\n\n<vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries\"\n [customFields]=\"customFields\"\n></vdr-address-form>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\n class=\"btn btn-primary\"\n >\n {{ 'common.update' | translate }}\n </button>\n</ng-template>\n", styles: ["clr-input-container{margin-bottom:12px}\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i1.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: i1.AddressFormComponent, selector: "vdr-address-form", inputs: ["customFields", "formGroup", "availableCountries"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
156
|
+
}
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddressDetailDialogComponent, decorators: [{
|
|
158
|
+
type: Component,
|
|
159
|
+
args: [{ selector: 'vdr-address-detail-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\n</ng-template>\n\n<vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries\"\n [customFields]=\"customFields\"\n></vdr-address-form>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\n class=\"btn btn-primary\"\n >\n {{ 'common.update' | translate }}\n </button>\n</ng-template>\n", styles: ["clr-input-container{margin-bottom:12px}\n"] }]
|
|
160
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
161
|
+
|
|
162
|
+
class AddressCardComponent {
|
|
163
|
+
constructor(modalService, changeDetector) {
|
|
164
|
+
this.modalService = modalService;
|
|
165
|
+
this.changeDetector = changeDetector;
|
|
166
|
+
this.availableCountries = [];
|
|
167
|
+
this.editable = true;
|
|
168
|
+
this.setAsDefaultShipping = new EventEmitter();
|
|
169
|
+
this.setAsDefaultBilling = new EventEmitter();
|
|
170
|
+
this.deleteAddress = new EventEmitter();
|
|
171
|
+
this.dataDependenciesPopulated = new BehaviorSubject(false);
|
|
172
|
+
}
|
|
173
|
+
ngOnInit() {
|
|
174
|
+
const streetLine1 = this.addressForm.get('streetLine1');
|
|
175
|
+
// Make the address dialog display automatically if there is no address line
|
|
176
|
+
// as is the case when adding a new address.
|
|
177
|
+
if (!streetLine1.value) {
|
|
178
|
+
this.dataDependenciesPopulated
|
|
179
|
+
.pipe(filter(value => value), take(1))
|
|
180
|
+
.subscribe(() => {
|
|
181
|
+
this.editAddress();
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
ngOnChanges(changes) {
|
|
186
|
+
if (this.customFields != null && this.availableCountries != null) {
|
|
187
|
+
this.dataDependenciesPopulated.next(true);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
getCountryName(countryCode) {
|
|
191
|
+
if (!this.availableCountries) {
|
|
192
|
+
return '';
|
|
193
|
+
}
|
|
194
|
+
const match = this.availableCountries.find(c => c.code === countryCode);
|
|
195
|
+
return match ? match.name : '';
|
|
196
|
+
}
|
|
197
|
+
setAsDefaultBillingAddress() {
|
|
198
|
+
this.setAsDefaultBilling.emit(this.addressForm.value.id);
|
|
199
|
+
this.addressForm.markAsDirty();
|
|
200
|
+
}
|
|
201
|
+
setAsDefaultShippingAddress() {
|
|
202
|
+
this.setAsDefaultShipping.emit(this.addressForm.value.id);
|
|
203
|
+
this.addressForm.markAsDirty();
|
|
204
|
+
}
|
|
205
|
+
delete() {
|
|
206
|
+
this.deleteAddress.emit(this.addressForm.value.id);
|
|
207
|
+
this.addressForm.markAsDirty();
|
|
208
|
+
}
|
|
209
|
+
editAddress() {
|
|
210
|
+
this.modalService
|
|
211
|
+
.fromComponent(AddressDetailDialogComponent, {
|
|
212
|
+
locals: {
|
|
213
|
+
addressForm: this.addressForm,
|
|
214
|
+
customFields: this.customFields,
|
|
215
|
+
availableCountries: this.availableCountries,
|
|
216
|
+
},
|
|
217
|
+
size: 'md',
|
|
218
|
+
closable: true,
|
|
219
|
+
})
|
|
220
|
+
.subscribe(() => {
|
|
221
|
+
this.changeDetector.markForCheck();
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddressCardComponent, deps: [{ token: i1.ModalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddressCardComponent, selector: "vdr-address-card", inputs: { addressForm: "addressForm", customFields: "customFields", availableCountries: "availableCountries", isDefaultBilling: "isDefaultBilling", isDefaultShipping: "isDefaultShipping", editable: "editable" }, outputs: { setAsDefaultShipping: "setAsDefaultShipping", setAsDefaultBilling: "setAsDefaultBilling", deleteAddress: "deleteAddress" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" *ngIf=\"addressForm.value as address\">\n <div class=\"card-header\">\n <div class=\"address-title\">\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\n {{ address.countryCode }}\n </div>\n <div class=\"default-controls\">\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\n <clr-icon shape=\"truck\"></clr-icon>\n {{ 'customer.default-shipping-address' | translate }}\n </vdr-chip>\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\n <clr-icon shape=\"credit-card\"></clr-icon>\n {{ 'customer.default-billing-address' | translate }}\n </vdr-chip>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-text\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"address-actions\">\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\n <ng-container *ngIf=\"editable\">\n <button class=\"button-small\" (click)=\"editAddress()\">\n {{ 'common.edit' | translate }}\n </button>\n <vdr-dropdown>\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\n {{ 'common.more' | translate }}\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultShipping\"\n (click)=\"setAsDefaultShippingAddress()\"\n >\n {{ 'customer.set-as-default-shipping-address' | translate }}\n </button>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultBilling\"\n (click)=\"setAsDefaultBillingAddress()\"\n >\n {{ 'customer.set-as-default-billing-address' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;max-width:360px}clr-input-container{margin-bottom:12px}.defaul-controls{display:flex}.is-default{margin:0;color:var(--color-success-500)}.address-actions{display:flex;align-items:center;gap:var(--space-unit)}.address-actions vdr-entity-info{margin-top:1px}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i1.FormattedAddressComponent, selector: "vdr-formatted-address", inputs: ["address"] }, { kind: "component", type: i1.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
226
|
+
}
|
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddressCardComponent, decorators: [{
|
|
228
|
+
type: Component,
|
|
229
|
+
args: [{ selector: 'vdr-address-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card\" *ngIf=\"addressForm.value as address\">\n <div class=\"card-header\">\n <div class=\"address-title\">\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\n {{ address.countryCode }}\n </div>\n <div class=\"default-controls\">\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\n <clr-icon shape=\"truck\"></clr-icon>\n {{ 'customer.default-shipping-address' | translate }}\n </vdr-chip>\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\n <clr-icon shape=\"credit-card\"></clr-icon>\n {{ 'customer.default-billing-address' | translate }}\n </vdr-chip>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-text\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"address-actions\">\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\n <ng-container *ngIf=\"editable\">\n <button class=\"button-small\" (click)=\"editAddress()\">\n {{ 'common.edit' | translate }}\n </button>\n <vdr-dropdown>\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\n {{ 'common.more' | translate }}\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultShipping\"\n (click)=\"setAsDefaultShippingAddress()\"\n >\n {{ 'customer.set-as-default-shipping-address' | translate }}\n </button>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultBilling\"\n (click)=\"setAsDefaultBillingAddress()\"\n >\n {{ 'customer.set-as-default-billing-address' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;max-width:360px}clr-input-container{margin-bottom:12px}.defaul-controls{display:flex}.is-default{margin:0;color:var(--color-success-500)}.address-actions{display:flex;align-items:center;gap:var(--space-unit)}.address-actions vdr-entity-info{margin-top:1px}\n"] }]
|
|
230
|
+
}], ctorParameters: () => [{ type: i1.ModalService }, { type: i0.ChangeDetectorRef }], propDecorators: { addressForm: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], customFields: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], availableCountries: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], isDefaultBilling: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], isDefaultShipping: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], editable: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], setAsDefaultShipping: [{
|
|
243
|
+
type: Output
|
|
244
|
+
}], setAsDefaultBilling: [{
|
|
245
|
+
type: Output
|
|
246
|
+
}], deleteAddress: [{
|
|
247
|
+
type: Output
|
|
248
|
+
}] } });
|
|
249
|
+
|
|
250
|
+
class SelectCustomerGroupDialogComponent {
|
|
251
|
+
constructor(dataService) {
|
|
252
|
+
this.dataService = dataService;
|
|
253
|
+
this.selectedGroupIds = [];
|
|
254
|
+
}
|
|
255
|
+
ngOnInit() {
|
|
256
|
+
this.groups$ = this.dataService.customer
|
|
257
|
+
.getCustomerGroupList()
|
|
258
|
+
.mapStream(res => res.customerGroups.items);
|
|
259
|
+
}
|
|
260
|
+
cancel() {
|
|
261
|
+
this.resolveWith();
|
|
262
|
+
}
|
|
263
|
+
add() {
|
|
264
|
+
this.resolveWith(this.selectedGroupIds);
|
|
265
|
+
}
|
|
266
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectCustomerGroupDialogComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
267
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectCustomerGroupDialogComponent, selector: "vdr-select-customer-group-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\n {{ 'customer.add-customer-to-group' | translate }}\n</ng-template>\n\n<ng-select\n [items]=\"groups$ | async\"\n appendTo=\"body\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n bindValue=\"id\"\n [(ngModel)]=\"selectedGroupIds\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> \u00D7 </span>\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n</ng-select>\n\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3$2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "directive", type: i1.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i1.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectCustomerGroupDialogComponent, decorators: [{
|
|
270
|
+
type: Component,
|
|
271
|
+
args: [{ selector: 'vdr-select-customer-group-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\n {{ 'customer.add-customer-to-group' | translate }}\n</ng-template>\n\n<ng-select\n [items]=\"groups$ | async\"\n appendTo=\"body\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n bindValue=\"id\"\n [(ngModel)]=\"selectedGroupIds\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> \u00D7 </span>\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n</ng-select>\n\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\n </button>\n</ng-template>\n" }]
|
|
272
|
+
}], ctorParameters: () => [{ type: i1.DataService }] });
|
|
273
|
+
|
|
274
|
+
class CustomerHistoryEntryHostComponent {
|
|
275
|
+
constructor(historyEntryComponentService) {
|
|
276
|
+
this.historyEntryComponentService = historyEntryComponentService;
|
|
277
|
+
this.expandClick = new EventEmitter();
|
|
278
|
+
}
|
|
279
|
+
ngOnInit() {
|
|
280
|
+
const componentType = this.historyEntryComponentService.getComponent(this.entry.type);
|
|
281
|
+
const componentRef = this.portalRef.createComponent(componentType);
|
|
282
|
+
componentRef.instance.entry = this.entry;
|
|
283
|
+
componentRef.instance.customer = this.customer;
|
|
284
|
+
this.instance = componentRef.instance;
|
|
285
|
+
this.componentRef = componentRef;
|
|
286
|
+
}
|
|
287
|
+
ngOnDestroy() {
|
|
288
|
+
this.componentRef?.destroy();
|
|
289
|
+
}
|
|
290
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerHistoryEntryHostComponent, deps: [{ token: i1.HistoryEntryComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
291
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerHistoryEntryHostComponent, selector: "vdr-customer-history-entry-host", inputs: { entry: "entry", customer: "customer", expanded: "expanded" }, outputs: { expandClick: "expandClick" }, viewQueries: [{ propertyName: "portalRef", first: true, predicate: ["portal"], descendants: true, read: ViewContainerRef, static: true }], exportAs: ["historyEntry"], ngImport: i0, template: ` <vdr-timeline-entry
|
|
292
|
+
[displayType]="instance.getDisplayType(entry)"
|
|
293
|
+
[iconShape]="instance.getIconShape && instance.getIconShape(entry)"
|
|
294
|
+
[createdAt]="entry.createdAt"
|
|
295
|
+
[name]="instance.getName && instance.getName(entry)"
|
|
296
|
+
[featured]="instance.isFeatured(entry)"
|
|
297
|
+
[collapsed]="!expanded && !instance.isFeatured(entry)"
|
|
298
|
+
(expandClick)="expandClick.emit()"
|
|
299
|
+
>
|
|
300
|
+
<div #portal></div>
|
|
301
|
+
</vdr-timeline-entry>`, isInline: true, dependencies: [{ kind: "component", type: i1.TimelineEntryComponent, selector: "vdr-timeline-entry", inputs: ["displayType", "createdAt", "name", "featured", "iconShape", "isFirst", "isLast", "collapsed"], outputs: ["expandClick"] }] }); }
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerHistoryEntryHostComponent, decorators: [{
|
|
304
|
+
type: Component,
|
|
305
|
+
args: [{
|
|
306
|
+
selector: 'vdr-customer-history-entry-host',
|
|
307
|
+
template: ` <vdr-timeline-entry
|
|
308
|
+
[displayType]="instance.getDisplayType(entry)"
|
|
309
|
+
[iconShape]="instance.getIconShape && instance.getIconShape(entry)"
|
|
310
|
+
[createdAt]="entry.createdAt"
|
|
311
|
+
[name]="instance.getName && instance.getName(entry)"
|
|
312
|
+
[featured]="instance.isFeatured(entry)"
|
|
313
|
+
[collapsed]="!expanded && !instance.isFeatured(entry)"
|
|
314
|
+
(expandClick)="expandClick.emit()"
|
|
315
|
+
>
|
|
316
|
+
<div #portal></div>
|
|
317
|
+
</vdr-timeline-entry>`,
|
|
318
|
+
exportAs: 'historyEntry',
|
|
319
|
+
}]
|
|
320
|
+
}], ctorParameters: () => [{ type: i1.HistoryEntryComponentService }], propDecorators: { entry: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], customer: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], expanded: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], expandClick: [{
|
|
327
|
+
type: Output
|
|
328
|
+
}], portalRef: [{
|
|
329
|
+
type: ViewChild,
|
|
330
|
+
args: ['portal', { static: true, read: ViewContainerRef }]
|
|
331
|
+
}] } });
|
|
332
|
+
|
|
333
|
+
class CustomerHistoryComponent {
|
|
334
|
+
constructor(historyEntryComponentService) {
|
|
335
|
+
this.historyEntryComponentService = historyEntryComponentService;
|
|
336
|
+
this.addNote = new EventEmitter();
|
|
337
|
+
this.updateNote = new EventEmitter();
|
|
338
|
+
this.deleteNote = new EventEmitter();
|
|
339
|
+
this.note = '';
|
|
340
|
+
this.expanded = false;
|
|
341
|
+
this.type = HistoryEntryType;
|
|
342
|
+
}
|
|
343
|
+
hasCustomComponent(type) {
|
|
344
|
+
return !!this.historyEntryComponentService.getComponent(type);
|
|
345
|
+
}
|
|
346
|
+
getDisplayType(entry) {
|
|
347
|
+
switch (entry.type) {
|
|
348
|
+
case HistoryEntryType.CUSTOMER_VERIFIED:
|
|
349
|
+
case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:
|
|
350
|
+
case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:
|
|
351
|
+
return 'success';
|
|
352
|
+
case HistoryEntryType.CUSTOMER_REGISTERED:
|
|
353
|
+
return 'muted';
|
|
354
|
+
case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:
|
|
355
|
+
return 'error';
|
|
356
|
+
default:
|
|
357
|
+
return 'default';
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
getTimelineIcon(entry) {
|
|
361
|
+
switch (entry.type) {
|
|
362
|
+
case HistoryEntryType.CUSTOMER_REGISTERED:
|
|
363
|
+
return 'user';
|
|
364
|
+
case HistoryEntryType.CUSTOMER_VERIFIED:
|
|
365
|
+
return ['assign-user', 'is-solid'];
|
|
366
|
+
case HistoryEntryType.CUSTOMER_NOTE:
|
|
367
|
+
return 'note';
|
|
368
|
+
case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:
|
|
369
|
+
case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:
|
|
370
|
+
return 'users';
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
isFeatured(entry) {
|
|
374
|
+
switch (entry.type) {
|
|
375
|
+
case HistoryEntryType.CUSTOMER_REGISTERED:
|
|
376
|
+
case HistoryEntryType.CUSTOMER_VERIFIED:
|
|
377
|
+
return true;
|
|
378
|
+
default:
|
|
379
|
+
return false;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
getName(entry) {
|
|
383
|
+
const { administrator } = entry;
|
|
384
|
+
if (administrator) {
|
|
385
|
+
return `${administrator.firstName} ${administrator.lastName}`;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
return `${this.customer.firstName} ${this.customer.lastName}`;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
addNoteToCustomer() {
|
|
392
|
+
this.addNote.emit({ note: this.note });
|
|
393
|
+
this.note = '';
|
|
394
|
+
}
|
|
395
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerHistoryComponent, deps: [{ token: i1.HistoryEntryComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
396
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerHistoryComponent, selector: "vdr-customer-history", inputs: { customer: "customer", history: "history" }, outputs: { addNote: "addNote", updateNote: "updateNote", deleteNote: "deleteNote" }, ngImport: i0, template: "<div class=\"entry-list\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\n [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\n {{ 'order.add-note' | translate }}\n </button>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-customer-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [customer]=\"customer\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-customer-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\n <div class=\"title\">\n {{ 'customer.history-customer-registered' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\n <div class=\"title\">\n {{ 'customer.history-customer-verified' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-detail-updated' | translate }}\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\n {{\n 'customer.history-customer-added-to-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\n {{\n 'customer.history-customer-removed-from-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\n {{ 'customer.history-customer-address-created' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\n {{ 'customer.history-customer-address-updated' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\n {{ 'customer.history-customer-address-deleted' | translate }}\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\n {{ 'customer.history-customer-password-updated' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\n {{ 'customer.history-customer-password-reset-requested' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\n {{ 'customer.history-customer-password-reset-verified' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-requested' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-verified' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\n</div>\n", styles: [".entry-list{margin:24px 12px 24px 24px}.note-entry{display:flex;align-items:center}.note-entry .note{flex:1}.note-entry button{margin:0}textarea.note{flex:1;height:36px;border-radius:3px;margin-inline-end:6px}.note-text{color:var(--color-text-100);white-space:pre-wrap}.address-string{font-size:smaller;color:var(--color-text-200)}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "component", type: i1.ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.TimelineEntryComponent, selector: "vdr-timeline-entry", inputs: ["displayType", "createdAt", "name", "featured", "iconShape", "isFirst", "isLast", "collapsed"], outputs: ["expandClick"] }, { kind: "component", type: i1.HistoryEntryDetailComponent, selector: "vdr-history-entry-detail" }, { kind: "component", type: CustomerHistoryEntryHostComponent, selector: "vdr-customer-history-entry-host", inputs: ["entry", "customer", "expanded"], outputs: ["expandClick"], exportAs: ["historyEntry"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
397
|
+
}
|
|
398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerHistoryComponent, decorators: [{
|
|
399
|
+
type: Component,
|
|
400
|
+
args: [{ selector: 'vdr-customer-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"entry-list\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\n [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\n {{ 'order.add-note' | translate }}\n </button>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-customer-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [customer]=\"customer\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-customer-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\n <div class=\"title\">\n {{ 'customer.history-customer-registered' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\n <div class=\"title\">\n {{ 'customer.history-customer-verified' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-detail-updated' | translate }}\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\n {{\n 'customer.history-customer-added-to-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\n {{\n 'customer.history-customer-removed-from-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\n {{ 'customer.history-customer-address-created' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\n {{ 'customer.history-customer-address-updated' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\n {{ 'customer.history-customer-address-deleted' | translate }}\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\n {{ 'customer.history-customer-password-updated' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\n {{ 'customer.history-customer-password-reset-requested' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\n {{ 'customer.history-customer-password-reset-verified' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-requested' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-verified' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\n</div>\n", styles: [".entry-list{margin:24px 12px 24px 24px}.note-entry{display:flex;align-items:center}.note-entry .note{flex:1}.note-entry button{margin:0}textarea.note{flex:1;height:36px;border-radius:3px;margin-inline-end:6px}.note-text{color:var(--color-text-100);white-space:pre-wrap}.address-string{font-size:smaller;color:var(--color-text-200)}\n"] }]
|
|
401
|
+
}], ctorParameters: () => [{ type: i1.HistoryEntryComponentService }], propDecorators: { customer: [{
|
|
402
|
+
type: Input
|
|
403
|
+
}], history: [{
|
|
404
|
+
type: Input
|
|
405
|
+
}], addNote: [{
|
|
406
|
+
type: Output
|
|
407
|
+
}], updateNote: [{
|
|
408
|
+
type: Output
|
|
409
|
+
}], deleteNote: [{
|
|
410
|
+
type: Output
|
|
411
|
+
}] } });
|
|
412
|
+
|
|
413
|
+
const CUSTOMER_DETAIL_QUERY = gql `
|
|
414
|
+
query CustomerDetailQuery($id: ID!, $orderListOptions: OrderListOptions) {
|
|
415
|
+
customer(id: $id) {
|
|
416
|
+
...Customer
|
|
417
|
+
groups {
|
|
418
|
+
id
|
|
419
|
+
name
|
|
420
|
+
}
|
|
421
|
+
orders(options: $orderListOptions) {
|
|
422
|
+
items {
|
|
423
|
+
id
|
|
424
|
+
code
|
|
425
|
+
type
|
|
426
|
+
state
|
|
427
|
+
total
|
|
428
|
+
totalWithTax
|
|
429
|
+
currencyCode
|
|
430
|
+
createdAt
|
|
431
|
+
updatedAt
|
|
432
|
+
orderPlacedAt
|
|
433
|
+
}
|
|
434
|
+
totalItems
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
${CUSTOMER_FRAGMENT}
|
|
439
|
+
`;
|
|
440
|
+
class CustomerDetailComponent extends TypedBaseDetailComponent {
|
|
441
|
+
constructor(changeDetector, formBuilder, dataService, modalService, notificationService) {
|
|
442
|
+
super();
|
|
443
|
+
this.changeDetector = changeDetector;
|
|
444
|
+
this.formBuilder = formBuilder;
|
|
445
|
+
this.dataService = dataService;
|
|
446
|
+
this.modalService = modalService;
|
|
447
|
+
this.notificationService = notificationService;
|
|
448
|
+
this.customFields = this.getCustomFieldConfig('Customer');
|
|
449
|
+
this.addressCustomFields = this.getCustomFieldConfig('Address');
|
|
450
|
+
this.detailForm = this.formBuilder.group({
|
|
451
|
+
customer: this.formBuilder.group({
|
|
452
|
+
title: '',
|
|
453
|
+
firstName: ['', Validators.required],
|
|
454
|
+
lastName: ['', Validators.required],
|
|
455
|
+
phoneNumber: '',
|
|
456
|
+
emailAddress: ['', [Validators.required, Validators.email]],
|
|
457
|
+
password: '',
|
|
458
|
+
customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
|
|
459
|
+
}),
|
|
460
|
+
addresses: new UntypedFormArray([]),
|
|
461
|
+
});
|
|
462
|
+
this.fetchHistory = new Subject();
|
|
463
|
+
this.addressesToDeleteIds = new Set();
|
|
464
|
+
this.addressDefaultsUpdated = false;
|
|
465
|
+
this.ordersPerPage = 10;
|
|
466
|
+
this.currentOrdersPage = 1;
|
|
467
|
+
this.orderListUpdates$ = new Subject();
|
|
468
|
+
}
|
|
469
|
+
ngOnInit() {
|
|
470
|
+
this.init();
|
|
471
|
+
this.availableCountries$ = this.dataService.settings
|
|
472
|
+
.getAvailableCountries()
|
|
473
|
+
.mapSingle(result => result.countries.items)
|
|
474
|
+
.pipe(shareReplay(1));
|
|
475
|
+
const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));
|
|
476
|
+
this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));
|
|
477
|
+
this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));
|
|
478
|
+
this.history$ = this.fetchHistory.pipe(startWith(null), switchMap(() => this.dataService.customer
|
|
479
|
+
.getCustomerHistory(this.id, {
|
|
480
|
+
sort: {
|
|
481
|
+
createdAt: SortOrder.DESC,
|
|
482
|
+
},
|
|
483
|
+
})
|
|
484
|
+
.mapStream(data => data.customer?.history.items)));
|
|
485
|
+
}
|
|
486
|
+
ngOnDestroy() {
|
|
487
|
+
this.destroy();
|
|
488
|
+
this.orderListUpdates$.complete();
|
|
489
|
+
}
|
|
490
|
+
getAddressFormControls() {
|
|
491
|
+
const formArray = this.detailForm.get(['addresses']);
|
|
492
|
+
return formArray.controls;
|
|
493
|
+
}
|
|
494
|
+
setDefaultBillingAddressId(id) {
|
|
495
|
+
this.defaultBillingAddressId = id;
|
|
496
|
+
this.addressDefaultsUpdated = true;
|
|
497
|
+
}
|
|
498
|
+
setDefaultShippingAddressId(id) {
|
|
499
|
+
this.defaultShippingAddressId = id;
|
|
500
|
+
this.addressDefaultsUpdated = true;
|
|
501
|
+
}
|
|
502
|
+
toggleDeleteAddress(id) {
|
|
503
|
+
if (this.addressesToDeleteIds.has(id)) {
|
|
504
|
+
this.addressesToDeleteIds.delete(id);
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
this.addressesToDeleteIds.add(id);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
addAddress() {
|
|
511
|
+
const addressFormArray = this.detailForm.get('addresses');
|
|
512
|
+
const newAddress = this.formBuilder.group({
|
|
513
|
+
fullName: '',
|
|
514
|
+
company: '',
|
|
515
|
+
streetLine1: ['', Validators.required],
|
|
516
|
+
streetLine2: '',
|
|
517
|
+
city: '',
|
|
518
|
+
province: '',
|
|
519
|
+
postalCode: '',
|
|
520
|
+
countryCode: ['', Validators.required],
|
|
521
|
+
phoneNumber: '',
|
|
522
|
+
defaultShippingAddress: false,
|
|
523
|
+
defaultBillingAddress: false,
|
|
524
|
+
customFields: this.formBuilder.group(this.addressCustomFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {})),
|
|
525
|
+
});
|
|
526
|
+
addressFormArray.push(newAddress);
|
|
527
|
+
}
|
|
528
|
+
setOrderItemsPerPage(itemsPerPage) {
|
|
529
|
+
this.ordersPerPage = +itemsPerPage;
|
|
530
|
+
this.fetchOrdersList();
|
|
531
|
+
}
|
|
532
|
+
setOrderCurrentPage(page) {
|
|
533
|
+
this.currentOrdersPage = +page;
|
|
534
|
+
this.fetchOrdersList();
|
|
535
|
+
}
|
|
536
|
+
create() {
|
|
537
|
+
const customerForm = this.detailForm.get('customer');
|
|
538
|
+
if (!customerForm) {
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
const { title, emailAddress, firstName, lastName, phoneNumber, password } = customerForm.value;
|
|
542
|
+
const customFields = customerForm.get('customFields')?.value;
|
|
543
|
+
if (!emailAddress || !firstName || !lastName) {
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
const customer = {
|
|
547
|
+
title,
|
|
548
|
+
emailAddress,
|
|
549
|
+
firstName,
|
|
550
|
+
lastName,
|
|
551
|
+
phoneNumber,
|
|
552
|
+
customFields,
|
|
553
|
+
};
|
|
554
|
+
this.dataService.customer.createCustomer(customer, password).subscribe(({ createCustomer }) => {
|
|
555
|
+
switch (createCustomer.__typename) {
|
|
556
|
+
case 'Customer':
|
|
557
|
+
this.notificationService.success(marker('common.notify-create-success'), {
|
|
558
|
+
entity: 'Customer',
|
|
559
|
+
});
|
|
560
|
+
if (createCustomer.emailAddress && !password) {
|
|
561
|
+
this.notificationService.notify({
|
|
562
|
+
message: marker('customer.email-verification-sent'),
|
|
563
|
+
translationVars: { emailAddress },
|
|
564
|
+
type: 'info',
|
|
565
|
+
duration: 10000,
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
this.detailForm.markAsPristine();
|
|
569
|
+
this.addressDefaultsUpdated = false;
|
|
570
|
+
this.changeDetector.markForCheck();
|
|
571
|
+
this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });
|
|
572
|
+
break;
|
|
573
|
+
case 'EmailAddressConflictError':
|
|
574
|
+
this.notificationService.error(createCustomer.message);
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
save() {
|
|
579
|
+
this.entity$
|
|
580
|
+
.pipe(take(1), mergeMap(({ id }) => {
|
|
581
|
+
const saveOperations = [];
|
|
582
|
+
const customerForm = this.detailForm.get('customer');
|
|
583
|
+
if (customerForm && customerForm.dirty) {
|
|
584
|
+
const formValue = customerForm.value;
|
|
585
|
+
const customFields = customerForm.get('customFields')?.value;
|
|
586
|
+
const customer = {
|
|
587
|
+
id,
|
|
588
|
+
title: formValue.title,
|
|
589
|
+
emailAddress: formValue.emailAddress,
|
|
590
|
+
firstName: formValue.firstName,
|
|
591
|
+
lastName: formValue.lastName,
|
|
592
|
+
phoneNumber: formValue.phoneNumber,
|
|
593
|
+
customFields,
|
|
594
|
+
};
|
|
595
|
+
saveOperations.push(this.dataService.customer
|
|
596
|
+
.updateCustomer(customer)
|
|
597
|
+
.pipe(map(res => res.updateCustomer)));
|
|
598
|
+
}
|
|
599
|
+
const addressFormArray = this.detailForm.get('addresses');
|
|
600
|
+
if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {
|
|
601
|
+
for (const addressControl of addressFormArray.controls) {
|
|
602
|
+
if (addressControl.dirty || this.addressDefaultsUpdated) {
|
|
603
|
+
const address = addressControl.value;
|
|
604
|
+
const input = {
|
|
605
|
+
fullName: address.fullName,
|
|
606
|
+
company: address.company,
|
|
607
|
+
streetLine1: address.streetLine1,
|
|
608
|
+
streetLine2: address.streetLine2,
|
|
609
|
+
city: address.city,
|
|
610
|
+
province: address.province,
|
|
611
|
+
postalCode: address.postalCode,
|
|
612
|
+
countryCode: address.countryCode,
|
|
613
|
+
phoneNumber: address.phoneNumber,
|
|
614
|
+
defaultShippingAddress: this.defaultShippingAddressId === address.id,
|
|
615
|
+
defaultBillingAddress: this.defaultBillingAddressId === address.id,
|
|
616
|
+
customFields: address.customFields,
|
|
617
|
+
};
|
|
618
|
+
if (!address.id) {
|
|
619
|
+
saveOperations.push(this.dataService.customer
|
|
620
|
+
.createCustomerAddress(id, input)
|
|
621
|
+
.pipe(map(res => res.createCustomerAddress)));
|
|
622
|
+
}
|
|
623
|
+
else {
|
|
624
|
+
if (this.addressesToDeleteIds.has(address.id)) {
|
|
625
|
+
saveOperations.push(this.dataService.customer
|
|
626
|
+
.deleteCustomerAddress(address.id)
|
|
627
|
+
.pipe(map(res => res.deleteCustomerAddress)));
|
|
628
|
+
}
|
|
629
|
+
else {
|
|
630
|
+
saveOperations.push(this.dataService.customer
|
|
631
|
+
.updateCustomerAddress({
|
|
632
|
+
...input,
|
|
633
|
+
id: address.id,
|
|
634
|
+
})
|
|
635
|
+
.pipe(map(res => res.updateCustomerAddress)));
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
return forkJoin(saveOperations);
|
|
642
|
+
}))
|
|
643
|
+
.subscribe(data => {
|
|
644
|
+
let notified = false;
|
|
645
|
+
for (const result of data) {
|
|
646
|
+
switch (result.__typename) {
|
|
647
|
+
case 'Customer':
|
|
648
|
+
case 'Address':
|
|
649
|
+
case 'Success':
|
|
650
|
+
if (!notified) {
|
|
651
|
+
this.notificationService.success(marker('common.notify-update-success'), {
|
|
652
|
+
entity: 'Customer',
|
|
653
|
+
});
|
|
654
|
+
notified = true;
|
|
655
|
+
this.detailForm.markAsPristine();
|
|
656
|
+
this.addressDefaultsUpdated = false;
|
|
657
|
+
this.changeDetector.markForCheck();
|
|
658
|
+
this.fetchHistory.next();
|
|
659
|
+
this.refreshCustomer().subscribe();
|
|
660
|
+
}
|
|
661
|
+
break;
|
|
662
|
+
case 'EmailAddressConflictError':
|
|
663
|
+
this.notificationService.error(result.message);
|
|
664
|
+
break;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}, err => {
|
|
668
|
+
this.notificationService.error(marker('common.notify-update-error'), {
|
|
669
|
+
entity: 'Customer',
|
|
670
|
+
});
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
addToGroup() {
|
|
674
|
+
this.modalService
|
|
675
|
+
.fromComponent(SelectCustomerGroupDialogComponent, {
|
|
676
|
+
size: 'md',
|
|
677
|
+
})
|
|
678
|
+
.pipe(switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)), concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])))
|
|
679
|
+
.subscribe({
|
|
680
|
+
next: res => {
|
|
681
|
+
this.notificationService.success(marker(`customer.add-customers-to-group-success`), {
|
|
682
|
+
customerCount: 1,
|
|
683
|
+
groupName: res.addCustomersToGroup.name,
|
|
684
|
+
});
|
|
685
|
+
},
|
|
686
|
+
complete: () => {
|
|
687
|
+
this.refreshCustomer().subscribe();
|
|
688
|
+
this.fetchHistory.next();
|
|
689
|
+
},
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
removeFromGroup(group) {
|
|
693
|
+
this.modalService
|
|
694
|
+
.dialog({
|
|
695
|
+
title: marker('customer.confirm-remove-customer-from-group'),
|
|
696
|
+
buttons: [
|
|
697
|
+
{ type: 'secondary', label: marker('common.cancel') },
|
|
698
|
+
{ type: 'danger', label: marker('common.delete'), returnValue: true },
|
|
699
|
+
],
|
|
700
|
+
})
|
|
701
|
+
.pipe(switchMap(response => response
|
|
702
|
+
? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])
|
|
703
|
+
: EMPTY), switchMap(() => this.refreshCustomer()))
|
|
704
|
+
.subscribe(result => {
|
|
705
|
+
this.notificationService.success(marker(`customer.remove-customers-from-group-success`), {
|
|
706
|
+
customerCount: 1,
|
|
707
|
+
groupName: group.name,
|
|
708
|
+
});
|
|
709
|
+
this.fetchHistory.next();
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
addNoteToCustomer({ note }) {
|
|
713
|
+
this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {
|
|
714
|
+
this.fetchHistory.next();
|
|
715
|
+
this.notificationService.success(marker('common.notify-create-success'), {
|
|
716
|
+
entity: 'Note',
|
|
717
|
+
});
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
updateNote(entry) {
|
|
721
|
+
this.modalService
|
|
722
|
+
.fromComponent(EditNoteDialogComponent, {
|
|
723
|
+
closable: true,
|
|
724
|
+
locals: {
|
|
725
|
+
displayPrivacyControls: false,
|
|
726
|
+
note: entry.data.note,
|
|
727
|
+
},
|
|
728
|
+
})
|
|
729
|
+
.pipe(switchMap(result => {
|
|
730
|
+
if (result) {
|
|
731
|
+
return this.dataService.customer.updateCustomerNote({
|
|
732
|
+
noteId: entry.id,
|
|
733
|
+
note: result.note,
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
else {
|
|
737
|
+
return EMPTY;
|
|
738
|
+
}
|
|
739
|
+
}))
|
|
740
|
+
.subscribe(result => {
|
|
741
|
+
this.fetchHistory.next();
|
|
742
|
+
this.notificationService.success(marker('common.notify-update-success'), {
|
|
743
|
+
entity: 'Note',
|
|
744
|
+
});
|
|
745
|
+
});
|
|
746
|
+
}
|
|
747
|
+
deleteNote(entry) {
|
|
748
|
+
return this.modalService
|
|
749
|
+
.dialog({
|
|
750
|
+
title: marker('common.confirm-delete-note'),
|
|
751
|
+
body: entry.data.note,
|
|
752
|
+
buttons: [
|
|
753
|
+
{ type: 'secondary', label: marker('common.cancel') },
|
|
754
|
+
{ type: 'danger', label: marker('common.delete'), returnValue: true },
|
|
755
|
+
],
|
|
756
|
+
})
|
|
757
|
+
.pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))
|
|
758
|
+
.subscribe(() => {
|
|
759
|
+
this.fetchHistory.next();
|
|
760
|
+
this.notificationService.success(marker('common.notify-delete-success'), {
|
|
761
|
+
entity: 'Note',
|
|
762
|
+
});
|
|
763
|
+
});
|
|
764
|
+
}
|
|
765
|
+
setFormValues(entity) {
|
|
766
|
+
const customerGroup = this.detailForm.get('customer');
|
|
767
|
+
if (customerGroup) {
|
|
768
|
+
customerGroup.patchValue({
|
|
769
|
+
title: entity.title ?? null,
|
|
770
|
+
firstName: entity.firstName,
|
|
771
|
+
lastName: entity.lastName,
|
|
772
|
+
phoneNumber: entity.phoneNumber ?? null,
|
|
773
|
+
emailAddress: entity.emailAddress,
|
|
774
|
+
password: '',
|
|
775
|
+
customFields: {},
|
|
776
|
+
});
|
|
777
|
+
}
|
|
778
|
+
if (entity.addresses) {
|
|
779
|
+
const addressesArray = new UntypedFormArray([]);
|
|
780
|
+
for (const address of entity.addresses) {
|
|
781
|
+
const { customFields, ...rest } = address;
|
|
782
|
+
const addressGroup = this.formBuilder.group({
|
|
783
|
+
...rest,
|
|
784
|
+
countryCode: address.country.code,
|
|
785
|
+
customFields: this.formBuilder.group(this.addressCustomFields.reduce((hash, field) => ({
|
|
786
|
+
...hash,
|
|
787
|
+
[field.name]: address['customFields'][field.name],
|
|
788
|
+
}), {})),
|
|
789
|
+
});
|
|
790
|
+
addressesArray.push(addressGroup);
|
|
791
|
+
if (address.defaultShippingAddress) {
|
|
792
|
+
this.defaultShippingAddressId = address.id;
|
|
793
|
+
}
|
|
794
|
+
if (address.defaultBillingAddress) {
|
|
795
|
+
this.defaultBillingAddressId = address.id;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
this.detailForm.setControl('addresses', addressesArray);
|
|
799
|
+
}
|
|
800
|
+
if (this.customFields.length) {
|
|
801
|
+
this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customer', 'customFields']), entity);
|
|
802
|
+
}
|
|
803
|
+
this.changeDetector.markForCheck();
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* Refetch the customer with the current order list settings.
|
|
807
|
+
*/
|
|
808
|
+
fetchOrdersList() {
|
|
809
|
+
this.dataService
|
|
810
|
+
.query(CustomerDetailQueryDocument, {
|
|
811
|
+
id: this.id,
|
|
812
|
+
orderListOptions: {
|
|
813
|
+
take: this.ordersPerPage,
|
|
814
|
+
skip: (this.currentOrdersPage - 1) * this.ordersPerPage,
|
|
815
|
+
sort: { orderPlacedAt: SortOrder.DESC },
|
|
816
|
+
},
|
|
817
|
+
})
|
|
818
|
+
.single$.pipe(map(data => data.customer), filter(notNullOrUndefined))
|
|
819
|
+
.subscribe(result => this.orderListUpdates$.next(result));
|
|
820
|
+
}
|
|
821
|
+
refreshCustomer() {
|
|
822
|
+
return this.dataService.query(CustomerDetailQueryDocument, {
|
|
823
|
+
id: this.id,
|
|
824
|
+
orderListOptions: { take: 0 },
|
|
825
|
+
}).single$;
|
|
826
|
+
}
|
|
827
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.FormBuilder }, { token: i1.DataService }, { token: i1.ModalService }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerDetailComponent, selector: "vdr-customer-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as customer\">\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\n <vdr-labeled-data\n class=\"last-login\"\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\n [label]=\"'customer.last-login' | translate\"\n >\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card\n [title]=\"'customer.customer-groups' | translate\"\n *ngIf=\"(entity$ | async)?.groups as groups\"\n >\n <div *ngIf=\"groups.length; else noGroups\">\n <vdr-chip\n *ngFor=\"let group of groups\"\n [colorFrom]=\"group.id\"\n icon=\"times\"\n (iconClick)=\"removeFromGroup(group)\"\n >{{ group.name }}</vdr-chip\n >\n </div>\n <ng-template #noGroups>\n <span class=\"color-weight-400\">\n {{ 'customer.not-a-member-of-any-groups' | translate }}\n </span>\n </ng-template>\n <div>\n <button\n class=\"button-small mt-1\"\n (click)=\"addToGroup()\"\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.add-customer-to-group' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field\n [label]=\"'customer.title' | translate\"\n for=\"title\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <div><!-- spacer --></div>\n <vdr-form-field\n [label]=\"'customer.first-name' | translate\"\n for=\"firstName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.last-name' | translate\"\n for=\"lastName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.email-address' | translate\"\n for=\"emailAddress\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.phone-number' | translate\"\n for=\"phoneNumber\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.password' | translate\"\n for=\"password\"\n *ngIf=\"isNew$ | async\"\n >\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"Customer\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n </form>\n <vdr-custom-detail-component-host\n locationId=\"customer-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <ng-container *ngIf=\"!(isNew$ | async)\">\n <vdr-card [title]=\"'customer.addresses' | translate\">\n <div class=\"form-grid\">\n <vdr-address-card\n *ngFor=\"let addressForm of getAddressFormControls()\"\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\n [availableCountries]=\"availableCountries$ | async\"\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\n [addressForm]=\"addressForm\"\n [customFields]=\"addressCustomFields\"\n [editable]=\"\n (['UpdateCustomer'] | hasPermission) &&\n !addressesToDeleteIds.has(addressForm.value.id)\n \"\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\n (deleteAddress)=\"toggleDeleteAddress($event)\"\n ></vdr-address-card>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n (click)=\"addAddress()\"\n *vdrIfPermissions=\"'UpdateCustomer'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\n <vdr-data-table-2\n id=\"customer-order-list\"\n [items]=\"orders$ | async\"\n [itemsPerPage]=\"ordersPerPage\"\n [totalItems]=\"ordersCount$ | async\"\n [currentPage]=\"currentOrdersPage\"\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\n (pageChange)=\"setOrderCurrentPage($event)\"\n >\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\"\n id=\"created-at\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'order.order-type' | translate\"\n id=\"order-type\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n <vdr-chip>{{ order.type }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n />\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'customer.customer-history' | translate\">\n <vdr-customer-history\n [customer]=\"entity$ | async\"\n [history]=\"history$ | async\"\n (addNote)=\"addNoteToCustomer($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-customer-history>\n </vdr-card>\n </ng-container>\n </vdr-page-block>\n</vdr-page-detail-layout>\n", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.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.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: i1.OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: ["state"] }, { kind: "component", type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { 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.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "component", type: AddressCardComponent, selector: "vdr-address-card", inputs: ["addressForm", "customFields", "availableCountries", "isDefaultBilling", "isDefaultShipping", "editable"], outputs: ["setAsDefaultShipping", "setAsDefaultBilling", "deleteAddress"] }, { kind: "component", type: CustomerHistoryComponent, selector: "vdr-customer-history", inputs: ["customer", "history"], outputs: ["addNote", "updateNote", "deleteNote"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
829
|
+
}
|
|
830
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerDetailComponent, decorators: [{
|
|
831
|
+
type: Component,
|
|
832
|
+
args: [{ selector: 'vdr-customer-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as customer\">\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\n <vdr-labeled-data\n class=\"last-login\"\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\n [label]=\"'customer.last-login' | translate\"\n >\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card\n [title]=\"'customer.customer-groups' | translate\"\n *ngIf=\"(entity$ | async)?.groups as groups\"\n >\n <div *ngIf=\"groups.length; else noGroups\">\n <vdr-chip\n *ngFor=\"let group of groups\"\n [colorFrom]=\"group.id\"\n icon=\"times\"\n (iconClick)=\"removeFromGroup(group)\"\n >{{ group.name }}</vdr-chip\n >\n </div>\n <ng-template #noGroups>\n <span class=\"color-weight-400\">\n {{ 'customer.not-a-member-of-any-groups' | translate }}\n </span>\n </ng-template>\n <div>\n <button\n class=\"button-small mt-1\"\n (click)=\"addToGroup()\"\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.add-customer-to-group' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field\n [label]=\"'customer.title' | translate\"\n for=\"title\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <div><!-- spacer --></div>\n <vdr-form-field\n [label]=\"'customer.first-name' | translate\"\n for=\"firstName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.last-name' | translate\"\n for=\"lastName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.email-address' | translate\"\n for=\"emailAddress\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.phone-number' | translate\"\n for=\"phoneNumber\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.password' | translate\"\n for=\"password\"\n *ngIf=\"isNew$ | async\"\n >\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"Customer\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n </form>\n <vdr-custom-detail-component-host\n locationId=\"customer-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <ng-container *ngIf=\"!(isNew$ | async)\">\n <vdr-card [title]=\"'customer.addresses' | translate\">\n <div class=\"form-grid\">\n <vdr-address-card\n *ngFor=\"let addressForm of getAddressFormControls()\"\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\n [availableCountries]=\"availableCountries$ | async\"\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\n [addressForm]=\"addressForm\"\n [customFields]=\"addressCustomFields\"\n [editable]=\"\n (['UpdateCustomer'] | hasPermission) &&\n !addressesToDeleteIds.has(addressForm.value.id)\n \"\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\n (deleteAddress)=\"toggleDeleteAddress($event)\"\n ></vdr-address-card>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n (click)=\"addAddress()\"\n *vdrIfPermissions=\"'UpdateCustomer'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\n <vdr-data-table-2\n id=\"customer-order-list\"\n [items]=\"orders$ | async\"\n [itemsPerPage]=\"ordersPerPage\"\n [totalItems]=\"ordersCount$ | async\"\n [currentPage]=\"currentOrdersPage\"\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\n (pageChange)=\"setOrderCurrentPage($event)\"\n >\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\"\n id=\"created-at\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'order.order-type' | translate\"\n id=\"order-type\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n <vdr-chip>{{ order.type }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n />\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'customer.customer-history' | translate\">\n <vdr-customer-history\n [customer]=\"entity$ | async\"\n [history]=\"history$ | async\"\n (addNote)=\"addNoteToCustomer($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-customer-history>\n </vdr-card>\n </ng-container>\n </vdr-page-block>\n</vdr-page-detail-layout>\n", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"] }]
|
|
833
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.FormBuilder }, { type: i1.DataService }, { type: i1.ModalService }, { type: i1.NotificationService }] });
|
|
834
|
+
|
|
835
|
+
const CUSTOMER_GROUP_DETAIL_QUERY = gql `
|
|
836
|
+
query GetCustomerGroupDetail($id: ID!) {
|
|
837
|
+
customerGroup(id: $id) {
|
|
838
|
+
...CustomerGroupDetail
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
fragment CustomerGroupDetail on CustomerGroup {
|
|
842
|
+
id
|
|
843
|
+
createdAt
|
|
844
|
+
updatedAt
|
|
845
|
+
name
|
|
846
|
+
}
|
|
847
|
+
`;
|
|
848
|
+
class CustomerGroupDetailComponent extends TypedBaseDetailComponent {
|
|
849
|
+
constructor(formBuilder, dataService, modalService, notificationService) {
|
|
850
|
+
super();
|
|
851
|
+
this.formBuilder = formBuilder;
|
|
852
|
+
this.dataService = dataService;
|
|
853
|
+
this.modalService = modalService;
|
|
854
|
+
this.notificationService = notificationService;
|
|
855
|
+
this.customFields = this.getCustomFieldConfig('CustomerGroup');
|
|
856
|
+
this.detailForm = this.formBuilder.group({
|
|
857
|
+
name: '',
|
|
858
|
+
customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
|
|
859
|
+
});
|
|
860
|
+
}
|
|
861
|
+
ngOnInit() {
|
|
862
|
+
super.init();
|
|
863
|
+
}
|
|
864
|
+
create() {
|
|
865
|
+
const formvalue = this.detailForm.value;
|
|
866
|
+
if (formvalue.name) {
|
|
867
|
+
this.dataService.customer
|
|
868
|
+
.createCustomerGroup({
|
|
869
|
+
name: formvalue.name,
|
|
870
|
+
customFields: formvalue.customFields,
|
|
871
|
+
customerIds: [],
|
|
872
|
+
})
|
|
873
|
+
.subscribe(({ createCustomerGroup }) => {
|
|
874
|
+
this.notificationService.success(marker('common.notify-create-success'), {
|
|
875
|
+
entity: 'CustomerGroup',
|
|
876
|
+
});
|
|
877
|
+
this.detailForm.markAsPristine();
|
|
878
|
+
this.router.navigate(['../', createCustomerGroup.id], { relativeTo: this.route });
|
|
879
|
+
}, err => {
|
|
880
|
+
this.notificationService.error(marker('common.notify-create-error'), {
|
|
881
|
+
entity: 'CustomerGroup',
|
|
882
|
+
});
|
|
883
|
+
});
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
save() {
|
|
887
|
+
const formValue = this.detailForm.value;
|
|
888
|
+
this.dataService.customer.updateCustomerGroup({ id: this.id, ...formValue }).subscribe(() => {
|
|
889
|
+
this.notificationService.success(marker('common.notify-update-success'), {
|
|
890
|
+
entity: 'CustomerGroup',
|
|
891
|
+
});
|
|
892
|
+
this.detailForm.markAsPristine();
|
|
893
|
+
}, err => {
|
|
894
|
+
this.notificationService.error(marker('common.notify-update-error'), {
|
|
895
|
+
entity: 'CustomerGroup',
|
|
896
|
+
});
|
|
897
|
+
});
|
|
898
|
+
}
|
|
899
|
+
setFormValues(entity) {
|
|
900
|
+
this.detailForm.patchValue({
|
|
901
|
+
name: entity.name,
|
|
902
|
+
});
|
|
903
|
+
if (this.customFields.length) {
|
|
904
|
+
const customFieldsGroup = this.detailForm.get(['customFields']);
|
|
905
|
+
this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupDetailComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.DataService }, { token: i1.ModalService }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
909
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerGroupDetailComponent, selector: "vdr-customer-group-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"customer-group-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { 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.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: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items" }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
910
|
+
}
|
|
911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupDetailComponent, decorators: [{
|
|
912
|
+
type: Component,
|
|
913
|
+
args: [{ selector: 'vdr-customer-group-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"customer-group-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n" }]
|
|
914
|
+
}], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: i1.DataService }, { type: i1.ModalService }, { type: i1.NotificationService }] });
|
|
915
|
+
|
|
916
|
+
class CustomerGroupDetailDialogComponent {
|
|
917
|
+
constructor(serverConfigService, formBuilder) {
|
|
918
|
+
this.serverConfigService = serverConfigService;
|
|
919
|
+
this.formBuilder = formBuilder;
|
|
920
|
+
this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');
|
|
921
|
+
}
|
|
922
|
+
ngOnInit() {
|
|
923
|
+
this.form = this.formBuilder.group({
|
|
924
|
+
name: [this.group.name, Validators.required],
|
|
925
|
+
customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
|
|
926
|
+
});
|
|
927
|
+
if (this.customFields.length) {
|
|
928
|
+
const customFieldsGroup = this.form.get('customFields');
|
|
929
|
+
for (const fieldDef of this.customFields) {
|
|
930
|
+
const key = fieldDef.name;
|
|
931
|
+
const value = this.group.customFields?.[key];
|
|
932
|
+
const control = customFieldsGroup.get(key);
|
|
933
|
+
if (control) {
|
|
934
|
+
control.patchValue(value);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
cancel() {
|
|
940
|
+
this.resolveWith();
|
|
941
|
+
}
|
|
942
|
+
save() {
|
|
943
|
+
this.resolveWith(this.form.value);
|
|
944
|
+
}
|
|
945
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupDetailDialogComponent, deps: [{ token: i1.ServerConfigService }, { token: i1$1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
946
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerGroupDetailDialogComponent, selector: "vdr-customer-group-detail-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\n />\n </vdr-form-field>\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\n <label>{{ 'common.custom-fields' | translate }}</label>\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"form.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </section>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { 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: "directive", type: i1.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i1.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
947
|
+
}
|
|
948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupDetailDialogComponent, decorators: [{
|
|
949
|
+
type: Component,
|
|
950
|
+
args: [{ selector: 'vdr-customer-group-detail-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\n />\n </vdr-form-field>\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\n <label>{{ 'common.custom-fields' | translate }}</label>\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"form.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </section>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n </button>\n</ng-template>\n" }]
|
|
951
|
+
}], ctorParameters: () => [{ type: i1.ServerConfigService }, { type: i1$1.UntypedFormBuilder }] });
|
|
952
|
+
|
|
953
|
+
const deleteCustomerGroupsBulkAction = createBulkDeleteAction({
|
|
954
|
+
location: 'customer-group-list',
|
|
955
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomerGroup),
|
|
956
|
+
getItemName: item => item.name,
|
|
957
|
+
bulkDelete: (dataService, ids) => dataService.customer.deleteCustomerGroups(ids).pipe(map(res => res.deleteCustomerGroups)),
|
|
958
|
+
});
|
|
959
|
+
|
|
960
|
+
const GET_CUSTOMER_GROUP_LIST = gql `
|
|
961
|
+
query GetCustomerGroupList($options: CustomerGroupListOptions) {
|
|
962
|
+
customerGroups(options: $options) {
|
|
963
|
+
items {
|
|
964
|
+
...CustomerGroup
|
|
965
|
+
}
|
|
966
|
+
totalItems
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
${CUSTOMER_GROUP_FRAGMENT}
|
|
970
|
+
`;
|
|
971
|
+
class CustomerGroupListComponent extends TypedBaseListComponent {
|
|
972
|
+
constructor(dataService, notificationService, modalService, route, router) {
|
|
973
|
+
super();
|
|
974
|
+
this.dataService = dataService;
|
|
975
|
+
this.notificationService = notificationService;
|
|
976
|
+
this.modalService = modalService;
|
|
977
|
+
this.route = route;
|
|
978
|
+
this.router = router;
|
|
979
|
+
this.fetchGroupMembers$ = new BehaviorSubject({
|
|
980
|
+
skip: 0,
|
|
981
|
+
take: 0,
|
|
982
|
+
filterTerm: '',
|
|
983
|
+
});
|
|
984
|
+
this.filters = this.createFilterCollection()
|
|
985
|
+
.addIdFilter()
|
|
986
|
+
.addDateFilters()
|
|
987
|
+
.addFilter({
|
|
988
|
+
name: 'name',
|
|
989
|
+
type: { kind: 'text' },
|
|
990
|
+
label: marker('common.name'),
|
|
991
|
+
filterField: 'name',
|
|
992
|
+
})
|
|
993
|
+
.connectToRoute(this.route);
|
|
994
|
+
this.sorts = this.createSortCollection()
|
|
995
|
+
.defaultSort('createdAt', 'DESC')
|
|
996
|
+
.addSort({ name: 'createdAt' })
|
|
997
|
+
.addSort({ name: 'updatedAt' })
|
|
998
|
+
.addSort({ name: 'name' })
|
|
999
|
+
.connectToRoute(this.route);
|
|
1000
|
+
this.refreshActiveGroupMembers$ = new BehaviorSubject(undefined);
|
|
1001
|
+
super.configure({
|
|
1002
|
+
document: GetCustomerGroupListDocument,
|
|
1003
|
+
getItems: data => data.customerGroups,
|
|
1004
|
+
setVariables: (skip, take) => ({
|
|
1005
|
+
options: {
|
|
1006
|
+
skip,
|
|
1007
|
+
take,
|
|
1008
|
+
filter: {
|
|
1009
|
+
name: { contains: this.searchTermControl.value },
|
|
1010
|
+
...this.filters.createFilterInput(),
|
|
1011
|
+
},
|
|
1012
|
+
sort: this.sorts.createSortInput(),
|
|
1013
|
+
},
|
|
1014
|
+
}),
|
|
1015
|
+
refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
ngOnInit() {
|
|
1019
|
+
super.ngOnInit();
|
|
1020
|
+
const activeGroupId$ = this.route.paramMap.pipe(map(pm => pm.get('contents')), distinctUntilChanged());
|
|
1021
|
+
this.listIsEmpty$ = this.items$.pipe(map(groups => groups.length === 0));
|
|
1022
|
+
this.activeGroup$ = combineLatest(this.items$, activeGroupId$).pipe(map(([groups, activeGroupId]) => {
|
|
1023
|
+
if (activeGroupId) {
|
|
1024
|
+
return groups.find(g => g.id === activeGroupId);
|
|
1025
|
+
}
|
|
1026
|
+
}));
|
|
1027
|
+
this.activeIndex$ = combineLatest(this.items$, activeGroupId$).pipe(map(([groups, activeGroupId]) => {
|
|
1028
|
+
if (activeGroupId) {
|
|
1029
|
+
return groups.findIndex(g => g.id === activeGroupId);
|
|
1030
|
+
}
|
|
1031
|
+
else {
|
|
1032
|
+
return -1;
|
|
1033
|
+
}
|
|
1034
|
+
}));
|
|
1035
|
+
const membersResult$ = combineLatest(this.activeGroup$, this.fetchGroupMembers$, this.refreshActiveGroupMembers$).pipe(switchMap(([activeGroup, { skip, take, filterTerm }]) => {
|
|
1036
|
+
if (activeGroup) {
|
|
1037
|
+
return this.dataService.customer
|
|
1038
|
+
.getCustomerGroupWithCustomers(activeGroup.id, {
|
|
1039
|
+
skip,
|
|
1040
|
+
take,
|
|
1041
|
+
filter: {
|
|
1042
|
+
emailAddress: {
|
|
1043
|
+
contains: filterTerm,
|
|
1044
|
+
},
|
|
1045
|
+
},
|
|
1046
|
+
})
|
|
1047
|
+
.mapStream(res => res.customerGroup?.customers);
|
|
1048
|
+
}
|
|
1049
|
+
else {
|
|
1050
|
+
return of(undefined);
|
|
1051
|
+
}
|
|
1052
|
+
}));
|
|
1053
|
+
this.members$ = membersResult$.pipe(map(res => res?.items ?? []));
|
|
1054
|
+
this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));
|
|
1055
|
+
}
|
|
1056
|
+
closeMembers() {
|
|
1057
|
+
const params = { ...this.route.snapshot.params };
|
|
1058
|
+
delete params.contents;
|
|
1059
|
+
this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });
|
|
1060
|
+
}
|
|
1061
|
+
addToGroup(group) {
|
|
1062
|
+
this.modalService
|
|
1063
|
+
.fromComponent(AddCustomerToGroupDialogComponent, {
|
|
1064
|
+
locals: {
|
|
1065
|
+
group,
|
|
1066
|
+
route: this.route,
|
|
1067
|
+
},
|
|
1068
|
+
size: 'md',
|
|
1069
|
+
verticalAlign: 'top',
|
|
1070
|
+
})
|
|
1071
|
+
.pipe(switchMap(customerIds => customerIds
|
|
1072
|
+
? this.dataService.customer
|
|
1073
|
+
.addCustomersToGroup(group.id, customerIds)
|
|
1074
|
+
.pipe(mapTo(customerIds))
|
|
1075
|
+
: EMPTY))
|
|
1076
|
+
.subscribe({
|
|
1077
|
+
next: result => {
|
|
1078
|
+
this.notificationService.success(marker(`customer.add-customers-to-group-success`), {
|
|
1079
|
+
customerCount: result.length,
|
|
1080
|
+
groupName: group.name,
|
|
1081
|
+
});
|
|
1082
|
+
this.refreshActiveGroupMembers$.next();
|
|
1083
|
+
},
|
|
1084
|
+
});
|
|
1085
|
+
}
|
|
1086
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupListComponent, deps: [{ token: i1.DataService }, { token: i1.NotificationService }, { token: i1.ModalService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1087
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerGroupListComponent, selector: "vdr-customer-group-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer-group' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\n <ng-template vdrSplitViewLeft>\n <vdr-data-table-2\n class=\"mt-2\"\n id=\"customer-group-list\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n [activeIndex]=\"activeIndex$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n >\n <vdr-bulk-action-menu\n locationId=\"customer-group-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.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-customerGroup=\"item\">\n {{ customerGroup.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-customerGroup=\"item\">\n {{ customerGroup.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.name' | translate\" id=\"name\"\n [optional]=\"false\"\n [sort]=\"sorts.get('name')\"\n >\n <ng-template let-customerGroup=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\n ><span>{{ customerGroup.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\n [optional]=\"false\"\n >\n <ng-template let-customerGroup=\"item\">\n <a\n class=\"button-small bg-weight-150\"\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\n queryParamsHandling=\"preserve\"\n >\n <span>{{ 'customer.view-group-members' | translate }}</span>\n <clr-icon shape=\"file-group\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </ng-template>\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\n <clr-icon shape=\"plus\"></clr-icon>\n <span>{{\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\n }}</span>\n </button>\n <vdr-customer-group-member-list\n locationId=\"customer-group-members-list\"\n [members]=\"members$ | async\"\n [route]=\"route\"\n [totalItems]=\"membersTotal$ | async\"\n [activeGroup]=\"activeGroup$ | async\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n />\n </ng-container>\n </ng-template>\n</vdr-split-view>\n", styles: ["vdr-empty-placeholder{flex:1}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: "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.SplitViewComponent, selector: "vdr-split-view", inputs: ["rightPanelOpen"], outputs: ["closeClicked"] }, { kind: "directive", type: i1.SplitViewLeftDirective, selector: "[vdrSplitViewLeft]" }, { kind: "directive", type: i1.SplitViewRightDirective, selector: "[vdrSplitViewRight]", inputs: ["splitViewTitle"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["locationId", "members", "totalItems", "route", "selectedMemberIds", "activeGroup"], outputs: ["selectionChange", "fetchParamsChange"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1088
|
+
}
|
|
1089
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerGroupListComponent, decorators: [{
|
|
1090
|
+
type: Component,
|
|
1091
|
+
args: [{ selector: 'vdr-customer-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer-group' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\n <ng-template vdrSplitViewLeft>\n <vdr-data-table-2\n class=\"mt-2\"\n id=\"customer-group-list\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n [activeIndex]=\"activeIndex$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n >\n <vdr-bulk-action-menu\n locationId=\"customer-group-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.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-customerGroup=\"item\">\n {{ customerGroup.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-customerGroup=\"item\">\n {{ customerGroup.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.name' | translate\" id=\"name\"\n [optional]=\"false\"\n [sort]=\"sorts.get('name')\"\n >\n <ng-template let-customerGroup=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\n ><span>{{ customerGroup.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\n [optional]=\"false\"\n >\n <ng-template let-customerGroup=\"item\">\n <a\n class=\"button-small bg-weight-150\"\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\n queryParamsHandling=\"preserve\"\n >\n <span>{{ 'customer.view-group-members' | translate }}</span>\n <clr-icon shape=\"file-group\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </ng-template>\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\n <clr-icon shape=\"plus\"></clr-icon>\n <span>{{\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\n }}</span>\n </button>\n <vdr-customer-group-member-list\n locationId=\"customer-group-members-list\"\n [members]=\"members$ | async\"\n [route]=\"route\"\n [totalItems]=\"membersTotal$ | async\"\n [activeGroup]=\"activeGroup$ | async\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n />\n </ng-container>\n </ng-template>\n</vdr-split-view>\n", styles: ["vdr-empty-placeholder{flex:1}\n"] }]
|
|
1092
|
+
}], ctorParameters: () => [{ type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.ActivatedRoute }, { type: i2.Router }] });
|
|
1093
|
+
|
|
1094
|
+
const removeCustomerGroupMembersBulkAction = {
|
|
1095
|
+
location: 'customer-group-members-list',
|
|
1096
|
+
label: marker('customer.remove-from-group'),
|
|
1097
|
+
icon: 'trash',
|
|
1098
|
+
iconClass: 'is-danger',
|
|
1099
|
+
requiresPermission: Permission.UpdateCustomerGroup,
|
|
1100
|
+
onClick: ({ injector, selection, hostComponent, clearSelection }) => {
|
|
1101
|
+
const modalService = injector.get(ModalService);
|
|
1102
|
+
const dataService = injector.get(DataService);
|
|
1103
|
+
const notificationService = injector.get(NotificationService);
|
|
1104
|
+
const group = hostComponent.activeGroup;
|
|
1105
|
+
const customerIds = selection.map(s => s.id);
|
|
1106
|
+
dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({
|
|
1107
|
+
complete: () => {
|
|
1108
|
+
notificationService.success(marker(`customer.remove-customers-from-group-success`), {
|
|
1109
|
+
customerCount: customerIds.length,
|
|
1110
|
+
groupName: group.name,
|
|
1111
|
+
});
|
|
1112
|
+
clearSelection();
|
|
1113
|
+
hostComponent.refresh();
|
|
1114
|
+
},
|
|
1115
|
+
});
|
|
1116
|
+
},
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1119
|
+
const deleteCustomersBulkAction = createBulkDeleteAction({
|
|
1120
|
+
location: 'customer-list',
|
|
1121
|
+
requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomer),
|
|
1122
|
+
getItemName: item => item.firstName + ' ' + item.lastName,
|
|
1123
|
+
bulkDelete: (dataService, ids) => dataService.customer.deleteCustomers(ids).pipe(map(res => res.deleteCustomers)),
|
|
1124
|
+
});
|
|
1125
|
+
|
|
1126
|
+
const CUSTOMER_LIST_QUERY = gql `
|
|
1127
|
+
query CustomerListQuery($options: CustomerListOptions) {
|
|
1128
|
+
customers(options: $options) {
|
|
1129
|
+
items {
|
|
1130
|
+
...CustomerListItem
|
|
1131
|
+
}
|
|
1132
|
+
totalItems
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
fragment CustomerListItem on Customer {
|
|
1137
|
+
id
|
|
1138
|
+
createdAt
|
|
1139
|
+
updatedAt
|
|
1140
|
+
title
|
|
1141
|
+
firstName
|
|
1142
|
+
lastName
|
|
1143
|
+
emailAddress
|
|
1144
|
+
user {
|
|
1145
|
+
id
|
|
1146
|
+
verified
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
`;
|
|
1150
|
+
class CustomerListComponent extends TypedBaseListComponent {
|
|
1151
|
+
constructor() {
|
|
1152
|
+
super();
|
|
1153
|
+
this.customFields = this.getCustomFieldConfig('Customer');
|
|
1154
|
+
this.filters = this.createFilterCollection()
|
|
1155
|
+
.addIdFilter()
|
|
1156
|
+
.addDateFilters()
|
|
1157
|
+
.addFilter({
|
|
1158
|
+
name: 'firstName',
|
|
1159
|
+
type: { kind: 'text' },
|
|
1160
|
+
label: marker('customer.first-name'),
|
|
1161
|
+
filterField: 'firstName',
|
|
1162
|
+
})
|
|
1163
|
+
.addFilter({
|
|
1164
|
+
name: 'lastName',
|
|
1165
|
+
type: { kind: 'text' },
|
|
1166
|
+
label: marker('customer.last-name'),
|
|
1167
|
+
filterField: 'lastName',
|
|
1168
|
+
})
|
|
1169
|
+
.addFilter({
|
|
1170
|
+
name: 'emailAddress',
|
|
1171
|
+
type: { kind: 'text' },
|
|
1172
|
+
label: marker('customer.email-address'),
|
|
1173
|
+
filterField: 'emailAddress',
|
|
1174
|
+
})
|
|
1175
|
+
.addCustomFieldFilters(this.customFields)
|
|
1176
|
+
.connectToRoute(this.route);
|
|
1177
|
+
this.sorts = this.createSortCollection()
|
|
1178
|
+
.defaultSort('createdAt', 'DESC')
|
|
1179
|
+
.addSort({ name: 'createdAt' })
|
|
1180
|
+
.addSort({ name: 'updatedAt' })
|
|
1181
|
+
.addSort({ name: 'lastName' })
|
|
1182
|
+
.addSort({ name: 'emailAddress' })
|
|
1183
|
+
.addCustomFieldSorts(this.customFields)
|
|
1184
|
+
.connectToRoute(this.route);
|
|
1185
|
+
this.configure({
|
|
1186
|
+
document: CustomerListQueryDocument,
|
|
1187
|
+
getItems: data => data.customers,
|
|
1188
|
+
setVariables: (skip, take) => ({
|
|
1189
|
+
options: {
|
|
1190
|
+
skip,
|
|
1191
|
+
take,
|
|
1192
|
+
filter: {
|
|
1193
|
+
...(this.searchTermControl.value
|
|
1194
|
+
? {
|
|
1195
|
+
emailAddress: {
|
|
1196
|
+
contains: this.searchTermControl.value,
|
|
1197
|
+
},
|
|
1198
|
+
lastName: {
|
|
1199
|
+
contains: this.searchTermControl.value,
|
|
1200
|
+
},
|
|
1201
|
+
postalCode: {
|
|
1202
|
+
contains: this.searchTermControl.value,
|
|
1203
|
+
},
|
|
1204
|
+
}
|
|
1205
|
+
: {}),
|
|
1206
|
+
...this.filters.createFilterInput(),
|
|
1207
|
+
},
|
|
1208
|
+
filterOperator: this.searchTermControl.value ? LogicalOperator.OR : LogicalOperator.AND,
|
|
1209
|
+
sort: this.sorts.createSortInput(),
|
|
1210
|
+
},
|
|
1211
|
+
}),
|
|
1212
|
+
refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1215
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1216
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomerListComponent, selector: "vdr-customer-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-data-table-2\n class=\"mt-2\"\n id=\"customer-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=\"customer-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.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-customer=\"item\">\n {{ customer.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-customer=\"item\">\n {{ customer.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", styles: [".search-input{margin-top:6px;min-width:300px}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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: "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: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }] }); }
|
|
1217
|
+
}
|
|
1218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerListComponent, decorators: [{
|
|
1219
|
+
type: Component,
|
|
1220
|
+
args: [{ selector: 'vdr-customer-list', template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-data-table-2\n class=\"mt-2\"\n id=\"customer-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=\"customer-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.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-customer=\"item\">\n {{ customer.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-customer=\"item\">\n {{ customer.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", styles: [".search-input{margin-top:6px;min-width:300px}\n"] }]
|
|
1221
|
+
}], ctorParameters: () => [] });
|
|
1222
|
+
|
|
1223
|
+
const createRoutes = (pageService) => [
|
|
1224
|
+
{
|
|
1225
|
+
path: 'customers',
|
|
1226
|
+
component: PageComponent,
|
|
1227
|
+
data: {
|
|
1228
|
+
locationId: 'customer-list',
|
|
1229
|
+
breadcrumb: marker('breadcrumb.customers'),
|
|
1230
|
+
},
|
|
1231
|
+
children: pageService.getPageTabRoutes('customer-list'),
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
path: 'customers/:id',
|
|
1235
|
+
component: PageComponent,
|
|
1236
|
+
data: {
|
|
1237
|
+
locationId: 'customer-detail',
|
|
1238
|
+
breadcrumb: { label: marker('breadcrumb.customers'), link: ['../', 'customers'] },
|
|
1239
|
+
},
|
|
1240
|
+
children: pageService.getPageTabRoutes('customer-detail'),
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
path: 'groups',
|
|
1244
|
+
component: PageComponent,
|
|
1245
|
+
data: {
|
|
1246
|
+
locationId: 'customer-group-list',
|
|
1247
|
+
breadcrumb: marker('breadcrumb.customer-groups'),
|
|
1248
|
+
},
|
|
1249
|
+
children: pageService.getPageTabRoutes('customer-group-list'),
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
path: 'groups/:id',
|
|
1253
|
+
component: PageComponent,
|
|
1254
|
+
data: {
|
|
1255
|
+
locationId: 'customer-group-detail',
|
|
1256
|
+
breadcrumb: { label: marker('breadcrumb.customer-groups'), link: ['../', 'groups'] },
|
|
1257
|
+
},
|
|
1258
|
+
children: pageService.getPageTabRoutes('customer-group-detail'),
|
|
1259
|
+
},
|
|
1260
|
+
];
|
|
1261
|
+
function customerBreadcrumb(data, params) {
|
|
1262
|
+
return detailBreadcrumb({
|
|
1263
|
+
entity: data.entity,
|
|
1264
|
+
id: params.id,
|
|
1265
|
+
breadcrumbKey: 'breadcrumb.customers',
|
|
1266
|
+
getName: customer => `${customer.firstName} ${customer.lastName}`,
|
|
1267
|
+
route: 'customers',
|
|
1268
|
+
});
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
class CustomerModule {
|
|
1272
|
+
static { this.hasRegisteredTabsAndBulkActions = false; }
|
|
1273
|
+
constructor(bulkActionRegistryService, pageService) {
|
|
1274
|
+
if (CustomerModule.hasRegisteredTabsAndBulkActions) {
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
bulkActionRegistryService.registerBulkAction(deleteCustomersBulkAction);
|
|
1278
|
+
bulkActionRegistryService.registerBulkAction(deleteCustomerGroupsBulkAction);
|
|
1279
|
+
bulkActionRegistryService.registerBulkAction(removeCustomerGroupMembersBulkAction);
|
|
1280
|
+
pageService.registerPageTab({
|
|
1281
|
+
priority: 0,
|
|
1282
|
+
location: 'customer-list',
|
|
1283
|
+
tab: marker('customer.customers'),
|
|
1284
|
+
route: '',
|
|
1285
|
+
component: CustomerListComponent,
|
|
1286
|
+
});
|
|
1287
|
+
pageService.registerPageTab({
|
|
1288
|
+
priority: 0,
|
|
1289
|
+
location: 'customer-detail',
|
|
1290
|
+
tab: marker('customer.customer'),
|
|
1291
|
+
route: '',
|
|
1292
|
+
component: detailComponentWithResolver({
|
|
1293
|
+
component: CustomerDetailComponent,
|
|
1294
|
+
query: CustomerDetailQueryDocument,
|
|
1295
|
+
entityKey: 'customer',
|
|
1296
|
+
variables: {
|
|
1297
|
+
orderListOptions: {
|
|
1298
|
+
sort: {
|
|
1299
|
+
orderPlacedAt: SortOrder.DESC,
|
|
1300
|
+
},
|
|
1301
|
+
},
|
|
1302
|
+
},
|
|
1303
|
+
getBreadcrumbs: entity => [
|
|
1304
|
+
{
|
|
1305
|
+
label: entity
|
|
1306
|
+
? `${entity?.firstName} ${entity?.lastName}`
|
|
1307
|
+
: marker('customer.create-new-customer'),
|
|
1308
|
+
link: [entity?.id],
|
|
1309
|
+
},
|
|
1310
|
+
],
|
|
1311
|
+
}),
|
|
1312
|
+
});
|
|
1313
|
+
pageService.registerPageTab({
|
|
1314
|
+
priority: 0,
|
|
1315
|
+
location: 'customer-group-list',
|
|
1316
|
+
tab: marker('customer.customer-groups'),
|
|
1317
|
+
route: '',
|
|
1318
|
+
component: CustomerGroupListComponent,
|
|
1319
|
+
});
|
|
1320
|
+
pageService.registerPageTab({
|
|
1321
|
+
priority: 0,
|
|
1322
|
+
location: 'customer-group-detail',
|
|
1323
|
+
tab: marker('customer.customer-group'),
|
|
1324
|
+
route: '',
|
|
1325
|
+
component: detailComponentWithResolver({
|
|
1326
|
+
component: CustomerGroupDetailComponent,
|
|
1327
|
+
query: GetCustomerGroupDetailDocument,
|
|
1328
|
+
entityKey: 'customerGroup',
|
|
1329
|
+
getBreadcrumbs: entity => [
|
|
1330
|
+
{
|
|
1331
|
+
label: entity ? entity.name : marker('customer.create-new-customer-group'),
|
|
1332
|
+
link: [entity?.id],
|
|
1333
|
+
},
|
|
1334
|
+
],
|
|
1335
|
+
}),
|
|
1336
|
+
});
|
|
1337
|
+
CustomerModule.hasRegisteredTabsAndBulkActions = true;
|
|
1338
|
+
}
|
|
1339
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerModule, deps: [{ token: i1.BulkActionRegistryService }, { token: i1.PageService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1340
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CustomerModule, declarations: [CustomerListComponent,
|
|
1341
|
+
CustomerDetailComponent,
|
|
1342
|
+
CustomerStatusLabelComponent,
|
|
1343
|
+
AddressCardComponent,
|
|
1344
|
+
CustomerGroupListComponent,
|
|
1345
|
+
CustomerGroupDetailDialogComponent,
|
|
1346
|
+
AddCustomerToGroupDialogComponent,
|
|
1347
|
+
CustomerGroupMemberListComponent,
|
|
1348
|
+
SelectCustomerGroupDialogComponent,
|
|
1349
|
+
CustomerHistoryComponent,
|
|
1350
|
+
AddressDetailDialogComponent,
|
|
1351
|
+
CustomerHistoryEntryHostComponent,
|
|
1352
|
+
CustomerGroupDetailComponent], imports: [SharedModule, i2.RouterModule], exports: [AddressCardComponent] }); }
|
|
1353
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerModule, providers: [
|
|
1354
|
+
{
|
|
1355
|
+
provide: ROUTES,
|
|
1356
|
+
useFactory: (pageService) => createRoutes(pageService),
|
|
1357
|
+
multi: true,
|
|
1358
|
+
deps: [PageService],
|
|
1359
|
+
},
|
|
1360
|
+
], imports: [SharedModule, RouterModule.forChild([])] }); }
|
|
1361
|
+
}
|
|
1362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomerModule, decorators: [{
|
|
1363
|
+
type: NgModule,
|
|
1364
|
+
args: [{
|
|
1365
|
+
imports: [SharedModule, RouterModule.forChild([])],
|
|
1366
|
+
providers: [
|
|
1367
|
+
{
|
|
1368
|
+
provide: ROUTES,
|
|
1369
|
+
useFactory: (pageService) => createRoutes(pageService),
|
|
1370
|
+
multi: true,
|
|
1371
|
+
deps: [PageService],
|
|
1372
|
+
},
|
|
1373
|
+
],
|
|
1374
|
+
declarations: [
|
|
1375
|
+
CustomerListComponent,
|
|
1376
|
+
CustomerDetailComponent,
|
|
1377
|
+
CustomerStatusLabelComponent,
|
|
1378
|
+
AddressCardComponent,
|
|
1379
|
+
CustomerGroupListComponent,
|
|
1380
|
+
CustomerGroupDetailDialogComponent,
|
|
1381
|
+
AddCustomerToGroupDialogComponent,
|
|
1382
|
+
CustomerGroupMemberListComponent,
|
|
1383
|
+
SelectCustomerGroupDialogComponent,
|
|
1384
|
+
CustomerHistoryComponent,
|
|
1385
|
+
AddressDetailDialogComponent,
|
|
1386
|
+
CustomerHistoryEntryHostComponent,
|
|
1387
|
+
CustomerGroupDetailComponent,
|
|
1388
|
+
],
|
|
1389
|
+
exports: [AddressCardComponent],
|
|
1390
|
+
}]
|
|
1391
|
+
}], ctorParameters: () => [{ type: i1.BulkActionRegistryService }, { type: i1.PageService }] });
|
|
1392
|
+
|
|
1393
|
+
// This file was generated by the build-public-api.ts script
|
|
1394
|
+
|
|
1395
|
+
/**
|
|
1396
|
+
* Generated bundle index. Do not edit.
|
|
1397
|
+
*/
|
|
1398
|
+
|
|
1399
|
+
export { AddCustomerToGroupDialogComponent, AddressCardComponent, AddressDetailDialogComponent, CUSTOMER_DETAIL_QUERY, CUSTOMER_GROUP_DETAIL_QUERY, CUSTOMER_LIST_QUERY, CustomerDetailComponent, CustomerGroupDetailComponent, CustomerGroupDetailDialogComponent, CustomerGroupListComponent, CustomerGroupMemberListComponent, CustomerHistoryComponent, CustomerHistoryEntryHostComponent, CustomerListComponent, CustomerModule, CustomerStatusLabelComponent, GET_CUSTOMER_GROUP_LIST, SelectCustomerGroupDialogComponent, createRoutes, customerBreadcrumb, deleteCustomerGroupsBulkAction, deleteCustomersBulkAction, removeCustomerGroupMembersBulkAction };
|
|
1400
|
+
//# sourceMappingURL=deenruv-admin-ui-customer.mjs.map
|