@vendure/admin-ui 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +3 -5
  2. package/catalog/components/collection-list/collection-list.component.d.ts +1 -0
  3. package/catalog/components/facet-list/facet-list.component.d.ts +1 -0
  4. package/catalog/components/product-list/product-list.component.d.ts +2 -0
  5. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
  6. package/core/common/base-list.component.d.ts +13 -0
  7. package/core/common/version.d.ts +1 -1
  8. package/core/data/providers/base-data.service.d.ts +19 -2
  9. package/core/data/providers/collection-data.service.d.ts +2 -2
  10. package/core/data/providers/data.service.d.ts +3 -3
  11. package/core/data/query-result.d.ts +60 -4
  12. package/core/data/utils/add-custom-fields.d.ts +1 -1
  13. package/core/extension/register-route-component.d.ts +1 -1
  14. package/core/providers/alerts/alerts.service.d.ts +3 -0
  15. package/core/providers/auth/auth.service.d.ts +3 -1
  16. package/core/providers/data-table/data-table-config.service.d.ts +12 -0
  17. package/core/public_api.d.ts +1 -0
  18. package/core/shared/components/data-table-2/data-table2.component.d.ts +5 -5
  19. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +3 -4
  20. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  21. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  22. package/customer/components/customer-group-list/customer-group-list.component.d.ts +2 -0
  23. package/customer/components/customer-list/customer-list.component.d.ts +1 -0
  24. package/esm2022/catalog/catalog.module.mjs +5 -5
  25. package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +4 -4
  26. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +4 -4
  27. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +4 -4
  28. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +4 -4
  29. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +4 -4
  30. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +4 -4
  31. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +11 -13
  32. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +4 -4
  33. package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +4 -4
  34. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +6 -5
  35. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +4 -4
  36. package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +4 -4
  37. package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +4 -4
  38. package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +4 -4
  39. package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +4 -4
  40. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +4 -4
  41. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +4 -4
  42. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +4 -4
  43. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +6 -5
  44. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +4 -4
  45. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +4 -4
  46. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +4 -4
  47. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +4 -4
  48. package/esm2022/catalog/components/product-list/product-list.component.mjs +7 -5
  49. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +4 -4
  50. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +4 -4
  51. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +4 -4
  52. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +4 -4
  53. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +4 -4
  54. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +4 -4
  55. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +4 -4
  56. package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +4 -4
  57. package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +4 -4
  58. package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +4 -4
  59. package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +4 -4
  60. package/esm2022/core/app.component.mjs +4 -4
  61. package/esm2022/core/app.component.module.mjs +5 -5
  62. package/esm2022/core/common/base-list.component.mjs +26 -10
  63. package/esm2022/core/common/version.mjs +2 -2
  64. package/esm2022/core/components/alerts/alerts.component.mjs +4 -4
  65. package/esm2022/core/components/app-shell/app-shell.component.mjs +5 -5
  66. package/esm2022/core/components/base-nav/base-nav.component.mjs +4 -4
  67. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +4 -4
  68. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +4 -4
  69. package/esm2022/core/components/main-nav/main-nav.component.mjs +4 -4
  70. package/esm2022/core/components/notification/notification.component.mjs +4 -4
  71. package/esm2022/core/components/overlay-host/overlay-host.component.mjs +4 -4
  72. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +4 -4
  73. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +4 -4
  74. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +4 -4
  75. package/esm2022/core/components/user-menu/user-menu.component.mjs +4 -4
  76. package/esm2022/core/core.module.mjs +5 -5
  77. package/esm2022/core/data/data.module.mjs +7 -7
  78. package/esm2022/core/data/providers/base-data.service.mjs +10 -11
  79. package/esm2022/core/data/providers/collection-data.service.mjs +3 -3
  80. package/esm2022/core/data/providers/data.service.mjs +8 -8
  81. package/esm2022/core/data/providers/fetch-adapter.mjs +4 -4
  82. package/esm2022/core/data/providers/interceptor.mjs +4 -4
  83. package/esm2022/core/data/providers/product-data.service.mjs +4 -2
  84. package/esm2022/core/data/query-result.mjs +96 -10
  85. package/esm2022/core/data/server-config.mjs +4 -4
  86. package/esm2022/core/data/utils/add-custom-fields.mjs +48 -30
  87. package/esm2022/core/extension/components/angular-route.component.mjs +7 -7
  88. package/esm2022/core/extension/components/route.component.mjs +4 -4
  89. package/esm2022/core/extension/providers/page-metadata.service.mjs +4 -4
  90. package/esm2022/core/providers/alerts/alerts.service.mjs +16 -6
  91. package/esm2022/core/providers/auth/auth.service.mjs +13 -9
  92. package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +4 -4
  93. package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +4 -4
  94. package/esm2022/core/providers/channel/channel.service.mjs +4 -4
  95. package/esm2022/core/providers/component-registry/component-registry.service.mjs +4 -4
  96. package/esm2022/core/providers/currency/currency.service.mjs +4 -4
  97. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +4 -4
  98. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +4 -4
  99. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +4 -4
  100. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +4 -4
  101. package/esm2022/core/providers/data-table/data-table-config.service.mjs +43 -0
  102. package/esm2022/core/providers/guard/auth.guard.mjs +4 -4
  103. package/esm2022/core/providers/health-check/health-check.service.mjs +4 -4
  104. package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +4 -4
  105. package/esm2022/core/providers/i18n/i18n.service.mjs +4 -4
  106. package/esm2022/core/providers/job-queue/job-queue.service.mjs +4 -4
  107. package/esm2022/core/providers/local-storage/local-storage.service.mjs +4 -4
  108. package/esm2022/core/providers/localization/localization.service.mjs +4 -4
  109. package/esm2022/core/providers/modal/modal.service.mjs +4 -4
  110. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +4 -4
  111. package/esm2022/core/providers/notification/notification.service.mjs +4 -4
  112. package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +4 -4
  113. package/esm2022/core/providers/page/page.service.mjs +4 -4
  114. package/esm2022/core/providers/permissions/permissions.service.mjs +4 -4
  115. package/esm2022/core/public_api.mjs +2 -1
  116. package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +10 -10
  117. package/esm2022/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +4 -4
  118. package/esm2022/core/shared/components/action-bar-items/action-bar-base.component.mjs +4 -4
  119. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +4 -4
  120. package/esm2022/core/shared/components/address-form/address-form.component.mjs +4 -4
  121. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +4 -4
  122. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +4 -4
  123. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +4 -4
  124. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +4 -4
  125. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +4 -4
  126. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +4 -4
  127. package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +4 -4
  128. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +4 -4
  129. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +4 -4
  130. package/esm2022/core/shared/components/assets/assets.component.mjs +4 -4
  131. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +4 -4
  132. package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +4 -4
  133. package/esm2022/core/shared/components/card/card.component.mjs +7 -7
  134. package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +4 -4
  135. package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +4 -4
  136. package/esm2022/core/shared/components/chart/chart.component.mjs +4 -4
  137. package/esm2022/core/shared/components/chip/chip.component.mjs +4 -4
  138. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +4 -4
  139. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +4 -4
  140. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +4 -4
  141. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +4 -4
  142. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +4 -4
  143. package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +4 -4
  144. package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +4 -4
  145. package/esm2022/core/shared/components/data-table/data-table.component.mjs +4 -4
  146. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +4 -4
  147. package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +4 -4
  148. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +5 -5
  149. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +4 -4
  150. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +45 -53
  151. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +4 -4
  152. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +4 -4
  153. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +4 -4
  154. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +4 -4
  155. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +25 -37
  156. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +4 -4
  157. package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +4 -4
  158. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +4 -4
  159. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +4 -4
  160. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +4 -4
  161. package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +4 -4
  162. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +4 -4
  163. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +4 -4
  164. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +4 -4
  165. package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +4 -4
  166. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +4 -4
  167. package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +4 -4
  168. package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +4 -4
  169. package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +4 -4
  170. package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +4 -4
  171. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +4 -4
  172. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +4 -4
  173. package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +4 -4
  174. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +4 -4
  175. package/esm2022/core/shared/components/form-field/form-field.component.mjs +4 -4
  176. package/esm2022/core/shared/components/form-item/form-item.component.mjs +4 -4
  177. package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +4 -4
  178. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +4 -4
  179. package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +4 -4
  180. package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +4 -4
  181. package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +4 -4
  182. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +4 -4
  183. package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +4 -4
  184. package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +4 -4
  185. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +4 -4
  186. package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +4 -4
  187. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +4 -4
  188. package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +4 -4
  189. package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +4 -4
  190. package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +4 -4
  191. package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +4 -4
  192. package/esm2022/core/shared/components/page/page.component.mjs +4 -4
  193. package/esm2022/core/shared/components/page-block/page-block.component.mjs +4 -4
  194. package/esm2022/core/shared/components/page-body/page-body.component.mjs +4 -4
  195. package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +4 -4
  196. package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +4 -4
  197. package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +4 -4
  198. package/esm2022/core/shared/components/page-header/page-header.component.mjs +4 -4
  199. package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +4 -4
  200. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +4 -4
  201. package/esm2022/core/shared/components/page-title/page-title.component.mjs +4 -4
  202. package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +4 -4
  203. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +4 -4
  204. package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +4 -4
  205. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +4 -4
  206. package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +4 -4
  207. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +4 -4
  208. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +4 -4
  209. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +4 -4
  210. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +4 -4
  211. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +4 -4
  212. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +4 -4
  213. package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +4 -4
  214. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +4 -4
  215. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +4 -4
  216. package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +4 -4
  217. package/esm2022/core/shared/components/split-view/split-view.component.mjs +4 -4
  218. package/esm2022/core/shared/components/split-view/split-view.directive.mjs +7 -7
  219. package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +4 -4
  220. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +4 -4
  221. package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +4 -4
  222. package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +4 -4
  223. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +4 -4
  224. package/esm2022/core/shared/components/title-input/title-input.component.mjs +4 -4
  225. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +4 -4
  226. package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +4 -4
  227. package/esm2022/core/shared/directives/disabled.directive.mjs +4 -4
  228. package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +4 -4
  229. package/esm2022/core/shared/directives/if-directive-base.mjs +4 -4
  230. package/esm2022/core/shared/directives/if-multichannel.directive.mjs +4 -4
  231. package/esm2022/core/shared/directives/if-permissions.directive.mjs +4 -4
  232. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +4 -4
  233. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +4 -4
  234. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +4 -4
  235. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +4 -4
  236. package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +4 -4
  237. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +4 -4
  238. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +4 -4
  239. package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +4 -4
  240. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +4 -4
  241. package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +4 -4
  242. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +4 -4
  243. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +4 -4
  244. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +4 -4
  245. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +4 -4
  246. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +4 -4
  247. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +4 -4
  248. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +4 -4
  249. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +4 -4
  250. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +4 -4
  251. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +10 -10
  252. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +4 -4
  253. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +4 -4
  254. package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +4 -4
  255. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +4 -4
  256. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +4 -4
  257. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +4 -4
  258. package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +4 -4
  259. package/esm2022/core/shared/pipes/channel-label.pipe.mjs +4 -4
  260. package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +4 -4
  261. package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +4 -4
  262. package/esm2022/core/shared/pipes/duration.pipe.mjs +4 -4
  263. package/esm2022/core/shared/pipes/file-size.pipe.mjs +4 -4
  264. package/esm2022/core/shared/pipes/has-permission.pipe.mjs +4 -4
  265. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +6 -6
  266. package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +4 -4
  267. package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +4 -4
  268. package/esm2022/core/shared/pipes/locale-date.pipe.mjs +4 -4
  269. package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +4 -4
  270. package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +4 -4
  271. package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +4 -4
  272. package/esm2022/core/shared/pipes/sort.pipe.mjs +4 -4
  273. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +4 -4
  274. package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +4 -4
  275. package/esm2022/core/shared/pipes/time-ago.pipe.mjs +4 -4
  276. package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +4 -4
  277. package/esm2022/core/shared/shared.module.mjs +5 -5
  278. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +4 -4
  279. package/esm2022/customer/components/address-card/address-card.component.mjs +4 -4
  280. package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +4 -4
  281. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +4 -4
  282. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +4 -4
  283. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +4 -4
  284. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +7 -5
  285. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +4 -4
  286. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +4 -4
  287. package/esm2022/customer/components/customer-history/customer-history.component.mjs +4 -4
  288. package/esm2022/customer/components/customer-list/customer-list.component.mjs +6 -5
  289. package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +4 -4
  290. package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +4 -4
  291. package/esm2022/customer/customer.module.mjs +5 -5
  292. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +4 -4
  293. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +4 -4
  294. package/esm2022/dashboard/dashboard.module.mjs +5 -5
  295. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +8 -8
  296. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +4 -4
  297. package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +8 -8
  298. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +8 -8
  299. package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +8 -8
  300. package/esm2022/login/components/login/login.component.mjs +4 -4
  301. package/esm2022/login/login.module.mjs +5 -5
  302. package/esm2022/login/providers/login.guard.mjs +4 -4
  303. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +4 -4
  304. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +6 -5
  305. package/esm2022/marketing/marketing.module.mjs +5 -5
  306. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +4 -4
  307. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +4 -4
  308. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +4 -4
  309. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +4 -4
  310. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +4 -4
  311. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +4 -4
  312. package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +4 -4
  313. package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +4 -4
  314. package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +4 -4
  315. package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +4 -4
  316. package/esm2022/order/components/line-refunds/line-refunds.component.mjs +4 -4
  317. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +4 -4
  318. package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +4 -4
  319. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +4 -17
  320. package/esm2022/order/components/order-data-table/order-total-column.component.mjs +4 -4
  321. package/esm2022/order/components/order-detail/order-detail.component.mjs +5 -5
  322. package/esm2022/order/components/order-editor/order-editor.component.mjs +4 -4
  323. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +4 -4
  324. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +4 -4
  325. package/esm2022/order/components/order-history/order-history.component.mjs +4 -4
  326. package/esm2022/order/components/order-list/order-list.component.mjs +6 -5
  327. package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +4 -4
  328. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +4 -4
  329. package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +4 -4
  330. package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +4 -4
  331. package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +4 -4
  332. package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +4 -4
  333. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +4 -4
  334. package/esm2022/order/components/order-table/order-table.component.mjs +4 -4
  335. package/esm2022/order/components/payment-detail/payment-detail.component.mjs +4 -4
  336. package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +4 -4
  337. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +4 -4
  338. package/esm2022/order/components/refund-detail/refund-detail.component.mjs +4 -4
  339. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +4 -4
  340. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +4 -4
  341. package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +4 -4
  342. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +4 -4
  343. package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +4 -4
  344. package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +4 -4
  345. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +4 -4
  346. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +4 -4
  347. package/esm2022/order/order.module.mjs +5 -5
  348. package/esm2022/order/providers/order-transition.service.mjs +4 -4
  349. package/esm2022/order/providers/routing/order.guard.mjs +4 -4
  350. package/esm2022/react/components/react-custom-column.component.mjs +4 -4
  351. package/esm2022/react/components/react-custom-detail.component.mjs +4 -4
  352. package/esm2022/react/components/react-form-input.component.mjs +4 -4
  353. package/esm2022/react/components/react-route.component.mjs +4 -4
  354. package/esm2022/react/directives/react-component-host.directive.mjs +4 -4
  355. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +4 -4
  356. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +4 -4
  357. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +6 -5
  358. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +4 -4
  359. package/esm2022/settings/components/channel-list/channel-list.component.mjs +6 -5
  360. package/esm2022/settings/components/country-detail/country-detail.component.mjs +4 -4
  361. package/esm2022/settings/components/country-list/country-list.component.mjs +6 -5
  362. package/esm2022/settings/components/global-settings/global-settings.component.mjs +4 -4
  363. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +4 -4
  364. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +6 -5
  365. package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +4 -4
  366. package/esm2022/settings/components/profile/profile.component.mjs +4 -4
  367. package/esm2022/settings/components/role-detail/role-detail.component.mjs +4 -4
  368. package/esm2022/settings/components/role-list/role-list.component.mjs +6 -5
  369. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +4 -4
  370. package/esm2022/settings/components/seller-list/seller-list.component.mjs +6 -5
  371. package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +4 -4
  372. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +4 -4
  373. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +6 -5
  374. package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +4 -4
  375. package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +4 -4
  376. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +6 -5
  377. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +4 -4
  378. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +6 -5
  379. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +4 -4
  380. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +6 -5
  381. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +4 -4
  382. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +4 -4
  383. package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +4 -4
  384. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +4 -4
  385. package/esm2022/settings/components/zone-list/zone-list.component.mjs +6 -5
  386. package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +4 -4
  387. package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +4 -4
  388. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +4 -4
  389. package/esm2022/settings/providers/routing/profile-resolver.mjs +4 -4
  390. package/esm2022/settings/settings.module.mjs +5 -5
  391. package/esm2022/system/components/health-check/health-check.component.mjs +4 -4
  392. package/esm2022/system/components/job-list/job-list.component.mjs +4 -4
  393. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +4 -4
  394. package/esm2022/system/system.module.mjs +5 -5
  395. package/fesm2022/vendure-admin-ui-catalog.mjs +120 -118
  396. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  397. package/fesm2022/vendure-admin-ui-core.mjs +1027 -876
  398. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  399. package/fesm2022/vendure-admin-ui-customer.mjs +48 -45
  400. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  401. package/fesm2022/vendure-admin-ui-dashboard.mjs +41 -41
  402. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  403. package/fesm2022/vendure-admin-ui-login.mjs +10 -10
  404. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  405. package/fesm2022/vendure-admin-ui-marketing.mjs +12 -11
  406. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  407. package/fesm2022/vendure-admin-ui-order.mjs +136 -148
  408. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  409. package/fesm2022/vendure-admin-ui-react.mjs +15 -15
  410. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  411. package/fesm2022/vendure-admin-ui-settings.mjs +131 -120
  412. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  413. package/fesm2022/vendure-admin-ui-system.mjs +13 -13
  414. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  415. package/marketing/components/promotion-list/promotion-list.component.d.ts +1 -0
  416. package/order/components/order-data-table/order-data-table.component.d.ts +2 -3
  417. package/order/components/order-list/order-list.component.d.ts +1 -0
  418. package/package.json +13 -13
  419. package/settings/components/administrator-list/administrator-list.component.d.ts +1 -0
  420. package/settings/components/channel-list/channel-list.component.d.ts +1 -0
  421. package/settings/components/country-list/country-list.component.d.ts +1 -0
  422. package/settings/components/payment-method-list/payment-method-list.component.d.ts +1 -0
  423. package/settings/components/role-list/role-list.component.d.ts +1 -0
  424. package/settings/components/seller-list/seller-list.component.d.ts +1 -0
  425. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +1 -0
  426. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -0
  427. package/settings/components/tax-category-list/tax-category-list.component.d.ts +1 -0
  428. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +1 -0
  429. package/settings/components/zone-list/zone-list.component.d.ts +1 -0
  430. package/static/theme.min.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"vendure-admin-ui-customer.mjs","sources":["../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.html","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.html","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.html","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.html","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.html","../../src/lib/customer/src/components/customer-history/customer-history-entry-host.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.html","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.html","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.html","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.html","../../src/lib/customer/src/components/customer-group-list/customer-group-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.html","../../src/lib/customer/src/customer.routes.ts","../../src/lib/customer/src/customer.module.ts","../../src/lib/customer/src/public_api.ts","../../src/lib/customer/src/vendure-admin-ui-customer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CustomerFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-status-label',\r\n templateUrl: './customer-status-label.component.html',\r\n styleUrls: ['./customer-status-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerStatusLabelComponent {\r\n @Input() customer: CustomerFragment;\r\n}\r\n","<vdr-chip *ngIf=\"customer.user?.id\">\r\n <ng-container *ngIf=\"customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\r\n {{ 'customer.verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\r\n {{ 'customer.registered' | translate }}\r\n </ng-container>\r\n</vdr-chip>\r\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n BulkActionLocationId,\r\n Customer,\r\n DataService,\r\n GetCustomerGroupsQuery,\r\n ItemOf,\r\n SelectionManager,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\r\n\r\nexport interface CustomerGroupMemberFetchParams {\r\n skip: number;\r\n take: number;\r\n filterTerm: string;\r\n}\r\n\r\nexport type CustomerGroupMember = Pick<\r\n Customer,\r\n 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'\r\n>;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-member-list',\r\n templateUrl: './customer-group-member-list.component.html',\r\n styleUrls: ['./customer-group-member-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\r\n @Input() locationId: BulkActionLocationId;\r\n @Input() members: CustomerGroupMember[];\r\n @Input() totalItems: number;\r\n @Input() route: ActivatedRoute;\r\n @Input() selectedMemberIds: string[] = [];\r\n @Input() activeGroup: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\r\n\r\n membersItemsPerPage$: Observable<number>;\r\n membersCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n selectionManager = new SelectionManager<CustomerGroupMember>({\r\n multiSelect: true,\r\n itemsAreEqual: (a, b) => a.id === b.id,\r\n additiveMode: true,\r\n });\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.membersCurrentPage$ = this.route.paramMap.pipe(\r\n map(qpm => qpm.get('membersPage')),\r\n map(page => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\r\n map(qpm => qpm.get('membersPerPage')),\r\n map(perPage => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n this.fetchParamsChange.emit({\r\n filterTerm: filterTerm ?? '',\r\n skip,\r\n take,\r\n });\r\n });\r\n this.selectionManager.setCurrentItems(\r\n this.members?.filter(m => this.selectedMemberIds.includes(m.id)) ?? [],\r\n );\r\n this.selectionManager.selectionChanges$.pipe(takeUntil(this.destroy$)).subscribe(selection => {\r\n this.selectionChange.emit(selection.map(s => s.id));\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('membersPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('membersPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","<vdr-data-table-2\r\n [id]=\"locationId\"\r\n [items]=\"members\"\r\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\r\n [totalItems]=\"totalItems\"\r\n [currentPage]=\"membersCurrentPage$ | async\"\r\n (pageChange)=\"setContentsPageNumber($event)\"\r\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n [locationId]=\"locationId\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"filterTermControl\"\r\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\r\n <ng-template let-customer=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\r\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n <vdr-customer-status-label [customer]=\"customer\" />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.emailAddress }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n DataService,\r\n Dialog,\r\n GetCustomerGroupsQuery,\r\n GetCustomerListQuery,\r\n ItemOf,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-add-customer-to-group-dialog',\r\n templateUrl: './add-customer-to-group-dialog.component.html',\r\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n group: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\r\n route: ActivatedRoute;\r\n selectedCustomerIds: string[] = [];\r\n customers$: Observable<GetCustomerListQuery['customers']['items']>;\r\n customersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 10,\r\n filterTerm: '',\r\n });\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const customerResult$ = this.fetchGroupMembers$.pipe(\r\n switchMap(({ skip, take, filterTerm }) =>\r\n this.dataService.customer\r\n .getCustomerList(take, skip, filterTerm)\r\n .mapStream(res => res.customers),\r\n ),\r\n );\r\n\r\n this.customers$ = customerResult$.pipe(map(res => res.items));\r\n this.customersTotal$ = customerResult$.pipe(map(res => res.totalItems));\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedCustomerIds);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\r\n</ng-template>\r\n\r\n<vdr-customer-group-member-list\r\n locationId=\"customer-group-members-picker-list\"\r\n [members]=\"customers$ | async\"\r\n [totalItems]=\"customersTotal$ | async\"\r\n [route]=\"route\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n/>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, Dialog, GetAvailableCountriesQuery } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-address-detail-dialog',\r\n templateUrl: './address-detail-dialog.component.html',\r\n styleUrls: ['./address-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressDetailDialogComponent implements Dialog<UntypedFormGroup>, OnInit {\r\n addressForm: UntypedFormGroup;\r\n customFields: CustomFieldConfig;\r\n availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\r\n resolveWith: (result?: UntypedFormGroup) => void;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.addressForm);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\r\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\r\n</ng-template>\r\n\r\n<vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries\"\r\n [customFields]=\"customFields\"\r\n></vdr-address-form>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"save()\"\r\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, GetAvailableCountriesQuery, ModalService } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\nimport { AddressDetailDialogComponent } from '../address-detail-dialog/address-detail-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-address-card',\r\n templateUrl: './address-card.component.html',\r\n styleUrls: ['./address-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressCardComponent implements OnInit, OnChanges {\r\n @Input() addressForm: UntypedFormGroup;\r\n @Input() customFields: CustomFieldConfig;\r\n @Input() availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\r\n @Input() isDefaultBilling: string;\r\n @Input() isDefaultShipping: string;\r\n @Input() editable = true;\r\n @Output() setAsDefaultShipping = new EventEmitter<string>();\r\n @Output() setAsDefaultBilling = new EventEmitter<string>();\r\n @Output() deleteAddress = new EventEmitter<string>();\r\n private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\r\n\r\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n const streetLine1 = this.addressForm.get('streetLine1') as UntypedFormControl;\r\n // Make the address dialog display automatically if there is no address line\r\n // as is the case when adding a new address.\r\n if (!streetLine1.value) {\r\n this.dataDependenciesPopulated\r\n .pipe(\r\n filter(value => value),\r\n take(1),\r\n )\r\n .subscribe(() => {\r\n this.editAddress();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.customFields != null && this.availableCountries != null) {\r\n this.dataDependenciesPopulated.next(true);\r\n }\r\n }\r\n\r\n getCountryName(countryCode: string) {\r\n if (!this.availableCountries) {\r\n return '';\r\n }\r\n const match = this.availableCountries.find(c => c.code === countryCode);\r\n return match ? match.name : '';\r\n }\r\n\r\n setAsDefaultBillingAddress() {\r\n this.setAsDefaultBilling.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n setAsDefaultShippingAddress() {\r\n this.setAsDefaultShipping.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n delete() {\r\n this.deleteAddress.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n editAddress() {\r\n this.modalService\r\n .fromComponent(AddressDetailDialogComponent, {\r\n locals: {\r\n addressForm: this.addressForm,\r\n customFields: this.customFields,\r\n availableCountries: this.availableCountries,\r\n },\r\n size: 'md',\r\n closable: true,\r\n })\r\n .subscribe(() => {\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n}\r\n","<div class=\"card\" *ngIf=\"addressForm.value as address\">\r\n <div class=\"card-header\">\r\n <div class=\"address-title\">\r\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\r\n {{ address.countryCode }}\r\n </div>\r\n <div class=\"default-controls\">\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\r\n <clr-icon shape=\"truck\"></clr-icon>\r\n {{ 'customer.default-shipping-address' | translate }}\r\n </vdr-chip>\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\r\n <clr-icon shape=\"credit-card\"></clr-icon>\r\n {{ 'customer.default-billing-address' | translate }}\r\n </vdr-chip>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <div class=\"address-actions\">\r\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\r\n <ng-container *ngIf=\"editable\">\r\n <button class=\"button-small\" (click)=\"editAddress()\">\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\r\n {{ 'common.more' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"isDefaultShipping\"\r\n (click)=\"setAsDefaultShippingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-shipping-address' | translate }}\r\n </button>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"isDefaultBilling\"\r\n (click)=\"setAsDefaultBillingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-billing-address' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { DataService, Dialog, GetCustomerGroupsQuery, ItemOf } from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-select-customer-group-dialog',\r\n templateUrl: './select-customer-group-dialog.component.html',\r\n styleUrls: ['./select-customer-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n groups$: Observable<Array<ItemOf<GetCustomerGroupsQuery, 'customerGroups'>>>;\r\n selectedGroupIds: string[] = [];\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream(res => res.customerGroups.items);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedGroupIds);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n</ng-template>\r\n\r\n<ng-select\r\n [items]=\"groups$ | async\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n bindValue=\"id\"\r\n [(ngModel)]=\"selectedGroupIds\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n</ng-select>\r\n\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\r\n </button>\r\n</ng-template>\r\n","import {\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {\r\n CustomerFragment,\r\n CustomerHistoryEntryComponent,\r\n HistoryEntryComponentService,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history-entry-host',\r\n template: ` <vdr-timeline-entry\r\n [displayType]=\"instance.getDisplayType(entry)\"\r\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"instance.getName && instance.getName(entry)\"\r\n [featured]=\"instance.isFeatured(entry)\"\r\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\r\n (expandClick)=\"expandClick.emit()\"\r\n >\r\n <div #portal></div>\r\n </vdr-timeline-entry>`,\r\n exportAs: 'historyEntry',\r\n})\r\nexport class CustomerHistoryEntryHostComponent implements OnInit, OnDestroy {\r\n @Input() entry: TimelineHistoryEntry;\r\n @Input() customer: CustomerFragment;\r\n @Input() expanded: boolean;\r\n @Output() expandClick = new EventEmitter<void>();\r\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\r\n instance: CustomerHistoryEntryComponent;\r\n private componentRef: ComponentRef<CustomerHistoryEntryComponent>;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n ngOnInit(): void {\r\n const componentType = this.historyEntryComponentService.getComponent(\r\n this.entry.type,\r\n ) as Type<CustomerHistoryEntryComponent>;\r\n\r\n const componentRef = this.portalRef.createComponent(componentType);\r\n componentRef.instance.entry = this.entry;\r\n componentRef.instance.customer = this.customer;\r\n this.instance = componentRef.instance;\r\n this.componentRef = componentRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentRef?.destroy();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n CustomerFragment,\r\n GetCustomerHistoryQuery,\r\n HistoryEntryComponentService,\r\n HistoryEntryType,\r\n TimelineDisplayType,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history',\r\n templateUrl: './customer-history.component.html',\r\n styleUrls: ['./customer-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerHistoryComponent {\r\n @Input() customer: CustomerFragment;\r\n @Input() history: TimelineHistoryEntry[];\r\n @Output() addNote = new EventEmitter<{ note: string }>();\r\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\r\n note = '';\r\n expanded = false;\r\n readonly type = HistoryEntryType;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n hasCustomComponent(type: string): boolean {\r\n return !!this.historyEntryComponentService.getComponent(type);\r\n }\r\n\r\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\r\n return 'success';\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'muted';\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'error';\r\n default:\r\n return 'default';\r\n }\r\n }\r\n\r\n getTimelineIcon(entry: TimelineHistoryEntry): string | [string, string] | undefined {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'user';\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return ['assign-user', 'is-solid'];\r\n case HistoryEntryType.CUSTOMER_NOTE:\r\n return 'note';\r\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'users';\r\n }\r\n }\r\n\r\n isFeatured(entry: TimelineHistoryEntry): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getName(entry: TimelineHistoryEntry): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n return `${this.customer.firstName} ${this.customer.lastName}`;\r\n }\r\n }\r\n\r\n addNoteToCustomer() {\r\n this.addNote.emit({ note: this.note });\r\n this.note = '';\r\n }\r\n}\r\n","<div class=\"entry-list\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\r\n [isFirst]=\"true\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\r\n {{ 'order.add-note' | translate }}\r\n </button>\r\n </div>\r\n </vdr-timeline-entry>\r\n <ng-container *ngFor=\"let entry of history\">\r\n <vdr-customer-history-entry-host\r\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\r\n [customer]=\"customer\"\r\n [entry]=\"entry\"\r\n [expanded]=\"expanded\"\r\n (expandClick)=\"expanded = !expanded\"\r\n ></vdr-customer-history-entry-host>\r\n <ng-template #defaultComponents>\r\n <vdr-timeline-entry\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-registered' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-verified' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-detail-updated' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\r\n {{\r\n 'customer.history-customer-added-to-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\r\n {{\r\n 'customer.history-customer-removed-from-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\r\n {{ 'customer.history-customer-address-created' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\r\n {{ 'customer.history-customer-address-updated' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\r\n {{ 'customer.history-customer-address-deleted' | translate }}\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\r\n {{ 'customer.history-customer-password-updated' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\r\n {{ 'customer.history-customer-password-reset-requested' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\r\n {{ 'customer.history-customer-password-reset-verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-requested' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-verified' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n (click)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"title\">\r\n {{ entry.type | translate }}\r\n </div>\r\n <vdr-history-entry-detail *ngIf=\"entry.data\">\r\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n </ng-template>\r\n </ng-container>\r\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CreateAddressInput,\r\n CreateCustomerAddressMutation,\r\n CreateCustomerInput,\r\n CUSTOMER_FRAGMENT,\r\n CustomerDetailQueryDocument,\r\n CustomerDetailQueryQuery,\r\n DataService,\r\n DeleteCustomerAddressMutation,\r\n EditNoteDialogComponent,\r\n GetAvailableCountriesQuery,\r\n GetCustomerHistoryQuery,\r\n getCustomFieldsDefaults,\r\n ModalService,\r\n NotificationService,\r\n SortOrder,\r\n TimelineHistoryEntry,\r\n TypedBaseDetailComponent,\r\n UpdateCustomerAddressMutation,\r\n UpdateCustomerInput,\r\n UpdateCustomerMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { gql } from 'apollo-angular';\r\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\r\nimport {\r\n concatMap,\r\n filter,\r\n map,\r\n merge,\r\n mergeMap,\r\n shareReplay,\r\n startWith,\r\n switchMap,\r\n take,\r\n} from 'rxjs/operators';\r\n\r\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\r\n\r\ntype CustomerWithOrders = NonNullable<CustomerDetailQueryQuery['customer']>;\r\n\r\nexport const CUSTOMER_DETAIL_QUERY = gql`\r\n query CustomerDetailQuery($id: ID!, $orderListOptions: OrderListOptions) {\r\n customer(id: $id) {\r\n ...Customer\r\n groups {\r\n id\r\n name\r\n }\r\n orders(options: $orderListOptions) {\r\n items {\r\n id\r\n code\r\n type\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n createdAt\r\n updatedAt\r\n orderPlacedAt\r\n }\r\n totalItems\r\n }\r\n }\r\n }\r\n ${CUSTOMER_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-detail',\r\n templateUrl: './customer-detail.component.html',\r\n styleUrls: ['./customer-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerDetailComponent\r\n extends TypedBaseDetailComponent<typeof CustomerDetailQueryDocument, 'customer'>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields = this.getCustomFieldConfig('Customer');\r\n addressCustomFields = this.getCustomFieldConfig('Address');\r\n detailForm = this.formBuilder.group({\r\n customer: this.formBuilder.group({\r\n title: '',\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phoneNumber: '',\r\n emailAddress: ['', [Validators.required, Validators.email]],\r\n password: '',\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n }),\r\n addresses: new UntypedFormArray([]),\r\n });\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n orders$: Observable<CustomerWithOrders['orders']['items']>;\r\n ordersCount$: Observable<number>;\r\n history$: Observable<NonNullable<GetCustomerHistoryQuery['customer']>['history']['items'] | undefined>;\r\n fetchHistory = new Subject<void>();\r\n defaultShippingAddressId: string;\r\n defaultBillingAddressId: string;\r\n addressesToDeleteIds = new Set<string>();\r\n addressDefaultsUpdated = false;\r\n ordersPerPage = 10;\r\n currentOrdersPage = 1;\r\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n\r\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\r\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\r\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() =>\r\n this.dataService.customer\r\n .getCustomerHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.customer?.history.items),\r\n ),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n this.orderListUpdates$.complete();\r\n }\r\n\r\n getAddressFormControls(): UntypedFormControl[] {\r\n const formArray = this.detailForm.get(['addresses']) as UntypedFormArray;\r\n return formArray.controls as UntypedFormControl[];\r\n }\r\n\r\n setDefaultBillingAddressId(id: string) {\r\n this.defaultBillingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n setDefaultShippingAddressId(id: string) {\r\n this.defaultShippingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n toggleDeleteAddress(id: string) {\r\n if (this.addressesToDeleteIds.has(id)) {\r\n this.addressesToDeleteIds.delete(id);\r\n } else {\r\n this.addressesToDeleteIds.add(id);\r\n }\r\n }\r\n\r\n addAddress() {\r\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\r\n const newAddress = this.formBuilder.group({\r\n fullName: '',\r\n company: '',\r\n streetLine1: ['', Validators.required],\r\n streetLine2: '',\r\n city: '',\r\n province: '',\r\n postalCode: '',\r\n countryCode: ['', Validators.required],\r\n phoneNumber: '',\r\n defaultShippingAddress: false,\r\n defaultBillingAddress: false,\r\n customFields: this.formBuilder.group(\r\n this.addressCustomFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n addressFormArray.push(newAddress);\r\n }\r\n\r\n setOrderItemsPerPage(itemsPerPage: number) {\r\n this.ordersPerPage = +itemsPerPage;\r\n this.fetchOrdersList();\r\n }\r\n\r\n setOrderCurrentPage(page: number) {\r\n this.currentOrdersPage = +page;\r\n this.fetchOrdersList();\r\n }\r\n\r\n create() {\r\n const customerForm = this.detailForm.get('customer');\r\n if (!customerForm) {\r\n return;\r\n }\r\n const { title, emailAddress, firstName, lastName, phoneNumber, password } = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n if (!emailAddress || !firstName || !lastName) {\r\n return;\r\n }\r\n const customer: CreateCustomerInput = {\r\n title,\r\n emailAddress,\r\n firstName,\r\n lastName,\r\n phoneNumber,\r\n customFields,\r\n };\r\n this.dataService.customer.createCustomer(customer, password).subscribe(({ createCustomer }) => {\r\n switch (createCustomer.__typename) {\r\n case 'Customer':\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Customer',\r\n });\r\n if (createCustomer.emailAddress && !password) {\r\n this.notificationService.notify({\r\n message: _('customer.email-verification-sent'),\r\n translationVars: { emailAddress },\r\n type: 'info',\r\n duration: 10000,\r\n });\r\n }\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(createCustomer.message);\r\n }\r\n });\r\n }\r\n\r\n save() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n mergeMap(({ id }) => {\r\n const saveOperations: Array<\r\n Observable<\r\n | UpdateCustomerMutation['updateCustomer']\r\n | CreateCustomerAddressMutation['createCustomerAddress']\r\n | UpdateCustomerAddressMutation['updateCustomerAddress']\r\n | DeleteCustomerAddressMutation['deleteCustomerAddress']\r\n >\r\n > = [];\r\n const customerForm = this.detailForm.get('customer');\r\n if (customerForm && customerForm.dirty) {\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: UpdateCustomerInput = {\r\n id,\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomer(customer)\r\n .pipe(map(res => res.updateCustomer)),\r\n );\r\n }\r\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\r\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\r\n for (const addressControl of addressFormArray.controls) {\r\n if (addressControl.dirty || this.addressDefaultsUpdated) {\r\n const address = addressControl.value;\r\n const input: CreateAddressInput = {\r\n fullName: address.fullName,\r\n company: address.company,\r\n streetLine1: address.streetLine1,\r\n streetLine2: address.streetLine2,\r\n city: address.city,\r\n province: address.province,\r\n postalCode: address.postalCode,\r\n countryCode: address.countryCode,\r\n phoneNumber: address.phoneNumber,\r\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\r\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\r\n customFields: address.customFields,\r\n };\r\n if (!address.id) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .createCustomerAddress(id, input)\r\n .pipe(map(res => res.createCustomerAddress)),\r\n );\r\n } else {\r\n if (this.addressesToDeleteIds.has(address.id)) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .deleteCustomerAddress(address.id)\r\n .pipe(map(res => res.deleteCustomerAddress)),\r\n );\r\n } else {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomerAddress({\r\n ...input,\r\n id: address.id,\r\n })\r\n .pipe(map(res => res.updateCustomerAddress)),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(saveOperations);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n let notified = false;\r\n for (const result of data) {\r\n switch (result.__typename) {\r\n case 'Customer':\r\n case 'Address':\r\n case 'Success':\r\n if (!notified) {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Customer',\r\n });\r\n notified = true;\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.fetchHistory.next();\r\n this.refreshCustomer().subscribe();\r\n }\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n\r\n addToGroup() {\r\n this.modalService\r\n .fromComponent(SelectCustomerGroupDialogComponent, {\r\n size: 'md',\r\n })\r\n .pipe(\r\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\r\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\r\n )\r\n .subscribe({\r\n next: res => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: 1,\r\n groupName: res.addCustomersToGroup.name,\r\n });\r\n },\r\n complete: () => {\r\n this.refreshCustomer().subscribe();\r\n this.fetchHistory.next();\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: CustomerWithOrders['groups'][number]) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-remove-customer-from-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\r\n : EMPTY,\r\n ),\r\n switchMap(() => this.refreshCustomer()),\r\n )\r\n .subscribe(result => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: 1,\r\n groupName: group.name,\r\n });\r\n this.fetchHistory.next();\r\n });\r\n }\r\n\r\n addNoteToCustomer({ note }: { note: string }) {\r\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: TimelineHistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: false,\r\n note: entry.data.note,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.customer.updateCustomerNote({\r\n noteId: entry.id,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: TimelineHistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n protected setFormValues(entity: CustomerWithOrders): void {\r\n const customerGroup = this.detailForm.get('customer');\r\n if (customerGroup) {\r\n customerGroup.patchValue({\r\n title: entity.title ?? null,\r\n firstName: entity.firstName,\r\n lastName: entity.lastName,\r\n phoneNumber: entity.phoneNumber ?? null,\r\n emailAddress: entity.emailAddress,\r\n password: '',\r\n customFields: {},\r\n });\r\n }\r\n\r\n if (entity.addresses) {\r\n const addressesArray = new UntypedFormArray([]);\r\n for (const address of entity.addresses) {\r\n const { customFields, ...rest } = address as typeof address & { customFields: any };\r\n const addressGroup = this.formBuilder.group({\r\n ...rest,\r\n countryCode: address.country.code,\r\n customFields: this.formBuilder.group(\r\n this.addressCustomFields.reduce(\r\n (hash, field) => ({\r\n ...hash,\r\n [field.name]: address['customFields'][field.name],\r\n }),\r\n {},\r\n ),\r\n ),\r\n });\r\n addressesArray.push(addressGroup);\r\n if (address.defaultShippingAddress) {\r\n this.defaultShippingAddressId = address.id;\r\n }\r\n if (address.defaultBillingAddress) {\r\n this.defaultBillingAddressId = address.id;\r\n }\r\n }\r\n this.detailForm.setControl('addresses', addressesArray);\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customer', 'customFields']),\r\n entity,\r\n );\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Refetch the customer with the current order list settings.\r\n */\r\n private fetchOrdersList() {\r\n this.dataService\r\n .query(CustomerDetailQueryDocument, {\r\n id: this.id,\r\n orderListOptions: {\r\n take: this.ordersPerPage,\r\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\r\n sort: { orderPlacedAt: SortOrder.DESC },\r\n },\r\n })\r\n .single$.pipe(\r\n map(data => data.customer),\r\n filter(notNullOrUndefined),\r\n )\r\n .subscribe(result => this.orderListUpdates$.next(result));\r\n }\r\n\r\n private refreshCustomer() {\r\n return this.dataService.query(CustomerDetailQueryDocument, {\r\n id: this.id,\r\n orderListOptions: { take: 0 },\r\n }).single$;\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as customer\">\r\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\r\n <vdr-labeled-data\r\n class=\"last-login\"\r\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\r\n [label]=\"'customer.last-login' | translate\"\r\n >\r\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card\r\n [title]=\"'customer.customer-groups' | translate\"\r\n *ngIf=\"(entity$ | async)?.groups as groups\"\r\n >\r\n <div *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </div>\r\n <ng-template #noGroups>\r\n <span class=\"color-weight-400\">\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </span>\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"button-small mt-1\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n [label]=\"'customer.title' | translate\"\r\n for=\"title\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <div><!-- spacer --></div>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.password' | translate\"\r\n for=\"password\"\r\n *ngIf=\"isNew$ | async\"\r\n >\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n </form>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <ng-container *ngIf=\"!(isNew$ | async)\">\r\n <vdr-card [title]=\"'customer.addresses' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"\r\n (['UpdateCustomer'] | hasPermission) &&\r\n !addressesToDeleteIds.has(addressForm.value.id)\r\n \"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n </div>\r\n <button\r\n class=\"btn btn-secondary mt-2\"\r\n (click)=\"addAddress()\"\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\r\n <vdr-data-table-2\r\n id=\"customer-order-list\"\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n {{ order.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\"\r\n id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-order=\"item\">\r\n {{ order.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'order.order-type' | translate\"\r\n id=\"order-type\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-order=\"item\">\r\n <vdr-chip>{{ order.type }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.updatedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of customFields\"\r\n [customField]=\"customField\"\r\n />\r\n </vdr-data-table-2>\r\n </vdr-card>\r\n <vdr-card [title]=\"'customer.customer-history' | translate\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </vdr-card>\r\n </ng-container>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { ResultOf } from '@graphql-typed-document-node/core';\r\nimport {\r\n DataService,\r\n GetCustomerGroupDetailDocument,\r\n getCustomFieldsDefaults,\r\n ModalService,\r\n NotificationService,\r\n TypedBaseDetailComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const CUSTOMER_GROUP_DETAIL_QUERY = gql`\r\n query GetCustomerGroupDetail($id: ID!) {\r\n customerGroup(id: $id) {\r\n ...CustomerGroupDetail\r\n }\r\n }\r\n fragment CustomerGroupDetail on CustomerGroup {\r\n id\r\n createdAt\r\n updatedAt\r\n name\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail',\r\n templateUrl: './customer-group-detail.component.html',\r\n styleUrls: ['./customer-group-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailComponent\r\n extends TypedBaseDetailComponent<typeof GetCustomerGroupDetailDocument, 'customerGroup'>\r\n implements OnInit\r\n{\r\n customFields = this.getCustomFieldConfig('CustomerGroup');\r\n detailForm = this.formBuilder.group({\r\n name: '',\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.init();\r\n }\r\n\r\n create() {\r\n const formvalue = this.detailForm.value;\r\n if (formvalue.name) {\r\n this.dataService.customer\r\n .createCustomerGroup({\r\n name: formvalue.name,\r\n customFields: formvalue.customFields,\r\n customerIds: [],\r\n })\r\n .subscribe(\r\n ({ createCustomerGroup }) => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n this.detailForm.markAsPristine();\r\n this.router.navigate(['../', createCustomerGroup.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n }\r\n\r\n save() {\r\n const formValue = this.detailForm.value;\r\n this.dataService.customer.updateCustomerGroup({ id: this.id, ...formValue }).subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n this.detailForm.markAsPristine();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n protected setFormValues(\r\n entity: NonNullable<ResultOf<typeof GetCustomerGroupDetailDocument>['customerGroup']>,\r\n ) {\r\n this.detailForm.patchValue({\r\n name: entity.name,\r\n });\r\n\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.detailForm.get(['customFields']) as UntypedFormGroup;\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-group-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n CreateCustomerGroupInput,\r\n CustomFieldConfig,\r\n Dialog,\r\n getCustomFieldsDefaults,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail-dialog',\r\n templateUrl: './customer-group-detail-dialog.component.html',\r\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\r\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\r\n resolveWith: (result?: CreateCustomerGroupInput) => void;\r\n customFields: CustomFieldConfig[];\r\n form: UntypedFormGroup;\r\n\r\n constructor(private serverConfigService: ServerConfigService, private formBuilder: UntypedFormBuilder) {\r\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\r\n }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n name: [this.group.name, Validators.required],\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.form.get('customFields') as UntypedFormGroup;\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value = this.group.customFields?.[key];\r\n const control = customFieldsGroup.get(key);\r\n if (control) {\r\n control.patchValue(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.form.value);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"form.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n </button>\r\n</ng-template>\r\n","import { createBulkDeleteAction, GetCustomerGroupsQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const deleteCustomerGroupsBulkAction = createBulkDeleteAction<\r\n ItemOf<GetCustomerGroupsQuery, 'customerGroups'>\r\n>({\r\n location: 'customer-group-list',\r\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomerGroup),\r\n getItemName: item => item.name,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.customer.deleteCustomerGroups(ids).pipe(map(res => res.deleteCustomerGroups)),\r\n});\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CUSTOMER_GROUP_FRAGMENT,\r\n DataService,\r\n GetCustomerGroupListDocument,\r\n GetCustomerGroupsQuery,\r\n GetCustomerGroupWithCustomersQuery,\r\n ItemOf,\r\n ModalService,\r\n NotificationService,\r\n TypedBaseListComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\r\nimport { distinctUntilChanged, map, mapTo, switchMap } from 'rxjs/operators';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\nexport const GET_CUSTOMER_GROUP_LIST = gql`\r\n query GetCustomerGroupList($options: CustomerGroupListOptions) {\r\n customerGroups(options: $options) {\r\n items {\r\n ...CustomerGroup\r\n }\r\n totalItems\r\n }\r\n }\r\n ${CUSTOMER_GROUP_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-list',\r\n templateUrl: './customer-group-list.component.html',\r\n styleUrls: ['./customer-group-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupListComponent\r\n extends TypedBaseListComponent<typeof GetCustomerGroupListDocument, 'customerGroups'>\r\n implements OnInit\r\n{\r\n activeGroup$: Observable<ItemOf<GetCustomerGroupsQuery, 'customerGroups'> | undefined>;\r\n activeIndex$: Observable<number>;\r\n listIsEmpty$: Observable<boolean>;\r\n members$: Observable<\r\n NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>['customers']['items']\r\n >;\r\n membersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 0,\r\n filterTerm: '',\r\n });\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilter({\r\n name: 'name',\r\n type: { kind: 'text' },\r\n label: _('common.name'),\r\n filterField: 'name',\r\n })\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSort({ name: 'createdAt' })\r\n .addSort({ name: 'updatedAt' })\r\n .addSort({ name: 'name' })\r\n .connectToRoute(this.route);\r\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\r\n\r\n constructor(\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n public route: ActivatedRoute,\r\n protected router: Router,\r\n ) {\r\n super();\r\n super.configure({\r\n document: GetCustomerGroupListDocument,\r\n getItems: data => data.customerGroups,\r\n setVariables: (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n name: { contains: this.searchTermControl.value },\r\n ...this.filters.createFilterInput(),\r\n },\r\n sort: this.sorts.createSortInput(),\r\n },\r\n }),\r\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n const activeGroupId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n );\r\n this.listIsEmpty$ = this.items$.pipe(map(groups => groups.length === 0));\r\n this.activeGroup$ = combineLatest(this.items$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.find(g => g.id === activeGroupId);\r\n }\r\n }),\r\n );\r\n this.activeIndex$ = combineLatest(this.items$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.findIndex(g => g.id === activeGroupId);\r\n } else {\r\n return -1;\r\n }\r\n }),\r\n );\r\n const membersResult$ = combineLatest(\r\n this.activeGroup$,\r\n this.fetchGroupMembers$,\r\n this.refreshActiveGroupMembers$,\r\n ).pipe(\r\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\r\n if (activeGroup) {\r\n return this.dataService.customer\r\n .getCustomerGroupWithCustomers(activeGroup.id, {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: filterTerm,\r\n },\r\n },\r\n })\r\n .mapStream(res => res.customerGroup?.customers);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n );\r\n\r\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\r\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\r\n }\r\n\r\n closeMembers() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n addToGroup(group: NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>) {\r\n this.modalService\r\n .fromComponent(AddCustomerToGroupDialogComponent, {\r\n locals: {\r\n group,\r\n route: this.route,\r\n },\r\n size: 'md',\r\n verticalAlign: 'top',\r\n })\r\n .pipe(\r\n switchMap(customerIds =>\r\n customerIds\r\n ? this.dataService.customer\r\n .addCustomersToGroup(group.id, customerIds)\r\n .pipe(mapTo(customerIds))\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe({\r\n next: result => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: result.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n },\r\n });\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\r\n <ng-template vdrSplitViewLeft>\r\n <vdr-data-table-2\r\n class=\"mt-2\"\r\n id=\"customer-group-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n [activeIndex]=\"activeIndex$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <vdr-bulk-action-menu\r\n locationId=\"customer-group-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.name' | translate\" id=\"name\"\r\n [optional]=\"false\"\r\n [sort]=\"sorts.get('name')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\r\n ><span>{{ customerGroup.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\r\n [optional]=\"false\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n <a\r\n class=\"button-small bg-weight-150\"\r\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <span>{{ 'customer.view-group-members' | translate }}</span>\r\n <clr-icon shape=\"file-group\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n </ng-template>\r\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{\r\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\r\n }}</span>\r\n </button>\r\n <vdr-customer-group-member-list\r\n locationId=\"customer-group-members-list\"\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [activeGroup]=\"activeGroup$ | async\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n />\r\n </ng-container>\r\n </ng-template>\r\n</vdr-split-view>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BulkAction,\r\n DataService,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n} from '@vendure/admin-ui/core';\r\nimport {\r\n CustomerGroupMember,\r\n CustomerGroupMemberListComponent,\r\n} from './customer-group-member-list.component';\r\n\r\nexport const removeCustomerGroupMembersBulkAction: BulkAction<\r\n CustomerGroupMember,\r\n CustomerGroupMemberListComponent\r\n> = {\r\n location: 'customer-group-members-list',\r\n label: _('customer.remove-from-group'),\r\n icon: 'trash',\r\n iconClass: 'is-danger',\r\n requiresPermission: Permission.UpdateCustomerGroup,\r\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\r\n const modalService = injector.get(ModalService);\r\n const dataService = injector.get(DataService);\r\n const notificationService = injector.get(NotificationService);\r\n\r\n const group = hostComponent.activeGroup;\r\n const customerIds = selection.map(s => s.id);\r\n\r\n dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\r\n complete: () => {\r\n notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: customerIds.length,\r\n groupName: group.name,\r\n });\r\n clearSelection();\r\n hostComponent.refresh();\r\n },\r\n });\r\n },\r\n};\r\n","import { createBulkDeleteAction, GetCustomerListQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const deleteCustomersBulkAction = createBulkDeleteAction<ItemOf<GetCustomerListQuery, 'customers'>>({\r\n location: 'customer-list',\r\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomer),\r\n getItemName: item => item.firstName + ' ' + item.lastName,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.customer.deleteCustomers(ids).pipe(map(res => res.deleteCustomers)),\r\n});\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CustomerListQueryDocument, LogicalOperator, TypedBaseListComponent } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const CUSTOMER_LIST_QUERY = gql`\r\n query CustomerListQuery($options: CustomerListOptions) {\r\n customers(options: $options) {\r\n items {\r\n ...CustomerListItem\r\n }\r\n totalItems\r\n }\r\n }\r\n\r\n fragment CustomerListItem on Customer {\r\n id\r\n createdAt\r\n updatedAt\r\n title\r\n firstName\r\n lastName\r\n emailAddress\r\n user {\r\n id\r\n verified\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-list',\r\n templateUrl: './customer-list.component.html',\r\n styleUrls: ['./customer-list.component.scss'],\r\n})\r\nexport class CustomerListComponent\r\n extends TypedBaseListComponent<typeof CustomerListQueryDocument, 'customers'>\r\n implements OnInit\r\n{\r\n readonly customFields = this.getCustomFieldConfig('Customer');\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilter({\r\n name: 'firstName',\r\n type: { kind: 'text' },\r\n label: _('customer.first-name'),\r\n filterField: 'firstName',\r\n })\r\n .addFilter({\r\n name: 'lastName',\r\n type: { kind: 'text' },\r\n label: _('customer.last-name'),\r\n filterField: 'lastName',\r\n })\r\n .addFilter({\r\n name: 'emailAddress',\r\n type: { kind: 'text' },\r\n label: _('customer.email-address'),\r\n filterField: 'emailAddress',\r\n })\r\n .addCustomFieldFilters(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSort({ name: 'createdAt' })\r\n .addSort({ name: 'updatedAt' })\r\n .addSort({ name: 'lastName' })\r\n .addSort({ name: 'emailAddress' })\r\n .addCustomFieldSorts(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n constructor() {\r\n super();\r\n this.configure({\r\n document: CustomerListQueryDocument,\r\n getItems: data => data.customers,\r\n setVariables: (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n ...(this.searchTermControl.value\r\n ? {\r\n emailAddress: {\r\n contains: this.searchTermControl.value,\r\n },\r\n lastName: {\r\n contains: this.searchTermControl.value,\r\n },\r\n postalCode: {\r\n contains: this.searchTermControl.value,\r\n },\r\n }\r\n : {}),\r\n ...this.filters.createFilterInput(),\r\n },\r\n filterOperator: this.searchTermControl.value ? LogicalOperator.OR : LogicalOperator.AND,\r\n sort: this.sorts.createSortInput(),\r\n },\r\n }),\r\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\r\n });\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n class=\"mt-2\"\r\n id=\"customer-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"customer-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-customer=\"item\">\r\n {{ customer.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\r\n <ng-template let-customer=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\r\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\r\n <ng-template let-customer=\"item\">\r\n <vdr-customer-status-label [customer]=\"customer\" />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.emailAddress }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CustomerFragment, detailBreadcrumb, PageComponent, PageService } from '@vendure/admin-ui/core';\r\n\r\nexport const createRoutes = (pageService: PageService): Route[] => [\r\n {\r\n path: 'customers',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-list',\r\n breadcrumb: _('breadcrumb.customers'),\r\n },\r\n children: pageService.getPageTabRoutes('customer-list'),\r\n },\r\n {\r\n path: 'customers/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-detail',\r\n breadcrumb: { label: _('breadcrumb.customers'), link: ['../', 'customers'] },\r\n },\r\n children: pageService.getPageTabRoutes('customer-detail'),\r\n },\r\n {\r\n path: 'groups',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-group-list',\r\n breadcrumb: _('breadcrumb.customer-groups'),\r\n },\r\n children: pageService.getPageTabRoutes('customer-group-list'),\r\n },\r\n {\r\n path: 'groups/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-group-detail',\r\n breadcrumb: { label: _('breadcrumb.customer-groups'), link: ['../', 'groups'] },\r\n },\r\n children: pageService.getPageTabRoutes('customer-group-detail'),\r\n },\r\n];\r\n\r\nexport function customerBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<CustomerFragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.customers',\r\n getName: customer => `${customer.firstName} ${customer.lastName}`,\r\n route: 'customers',\r\n });\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, ROUTES } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BulkActionRegistryService,\r\n CustomerDetailQueryDocument,\r\n detailComponentWithResolver,\r\n GetCustomerGroupDetailDocument,\r\n PageService,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { AddressCardComponent } from './components/address-card/address-card.component';\r\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { deleteCustomerGroupsBulkAction } from './components/customer-group-list/customer-group-list-bulk-actions';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { removeCustomerGroupMembersBulkAction } from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\r\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\r\nimport { CustomerHistoryEntryHostComponent } from './components/customer-history/customer-history-entry-host.component';\r\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\r\nimport { deleteCustomersBulkAction } from './components/customer-list/customer-list-bulk-actions';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\r\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\r\nimport { createRoutes } from './customer.routes';\r\nimport { CustomerGroupDetailComponent } from './components/customer-group-detail/customer-group-detail.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild([])],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n useFactory: (pageService: PageService) => createRoutes(pageService),\r\n multi: true,\r\n deps: [PageService],\r\n },\r\n ],\r\n declarations: [\r\n CustomerListComponent,\r\n CustomerDetailComponent,\r\n CustomerStatusLabelComponent,\r\n AddressCardComponent,\r\n CustomerGroupListComponent,\r\n CustomerGroupDetailDialogComponent,\r\n AddCustomerToGroupDialogComponent,\r\n CustomerGroupMemberListComponent,\r\n SelectCustomerGroupDialogComponent,\r\n CustomerHistoryComponent,\r\n AddressDetailDialogComponent,\r\n CustomerHistoryEntryHostComponent,\r\n CustomerGroupDetailComponent,\r\n ],\r\n exports: [AddressCardComponent],\r\n})\r\nexport class CustomerModule {\r\n private static hasRegisteredTabsAndBulkActions = false;\r\n\r\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\r\n if (CustomerModule.hasRegisteredTabsAndBulkActions) {\r\n return;\r\n }\r\n bulkActionRegistryService.registerBulkAction(deleteCustomersBulkAction);\r\n bulkActionRegistryService.registerBulkAction(deleteCustomerGroupsBulkAction);\r\n bulkActionRegistryService.registerBulkAction(removeCustomerGroupMembersBulkAction);\r\n\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-list',\r\n tab: _('customer.customers'),\r\n route: '',\r\n component: CustomerListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-detail',\r\n tab: _('customer.customer'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: CustomerDetailComponent,\r\n query: CustomerDetailQueryDocument,\r\n entityKey: 'customer',\r\n variables: {\r\n orderListOptions: {\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n },\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity\r\n ? `${entity?.firstName} ${entity?.lastName}`\r\n : _('customer.create-new-customer'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-group-list',\r\n tab: _('customer.customer-groups'),\r\n route: '',\r\n component: CustomerGroupListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-group-detail',\r\n tab: _('customer.customer-group'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: CustomerGroupDetailComponent,\r\n query: GetCustomerGroupDetailDocument,\r\n entityKey: 'customerGroup',\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity ? entity.name : _('customer.create-new-customer-group'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n CustomerModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nexport * from './components/address-card/address-card.component';\nexport * from './components/address-detail-dialog/address-detail-dialog.component';\nexport * from './components/customer-detail/customer-detail.component';\nexport * from './components/customer-group-detail/customer-group-detail.component';\nexport * from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list-bulk-actions';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history-entry-host.component';\nexport * from './components/customer-history/customer-history.component';\nexport * from './components/customer-list/customer-list-bulk-actions';\nexport * from './components/customer-list/customer-list.component';\nexport * from './components/customer-status-label/customer-status-label.component';\nexport * from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nexport * from './customer.module';\nexport * from './customer.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4.CustomerStatusLabelComponent","i5","i6","i2.CustomerGroupMemberListComponent","i4","i5.CustomerHistoryEntryHostComponent","_","i6.CustomerStatusLabelComponent","i7.AddressCardComponent","i8.CustomerHistoryComponent","i9","i5.CustomerGroupMemberListComponent","i5.CustomerStatusLabelComponent"],"mappings":"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"}
1
+ {"version":3,"file":"vendure-admin-ui-customer.mjs","sources":["../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.html","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.html","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.html","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.html","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.html","../../src/lib/customer/src/components/customer-history/customer-history-entry-host.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.html","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.html","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.html","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.html","../../src/lib/customer/src/components/customer-group-list/customer-group-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.html","../../src/lib/customer/src/customer.routes.ts","../../src/lib/customer/src/customer.module.ts","../../src/lib/customer/src/public_api.ts","../../src/lib/customer/src/vendure-admin-ui-customer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CustomerFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-status-label',\r\n templateUrl: './customer-status-label.component.html',\r\n styleUrls: ['./customer-status-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerStatusLabelComponent {\r\n @Input() customer: CustomerFragment;\r\n}\r\n","<vdr-chip *ngIf=\"customer.user?.id\">\r\n <ng-container *ngIf=\"customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\r\n {{ 'customer.verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\r\n {{ 'customer.registered' | translate }}\r\n </ng-container>\r\n</vdr-chip>\r\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n BulkActionLocationId,\r\n Customer,\r\n DataService,\r\n GetCustomerGroupsQuery,\r\n ItemOf,\r\n SelectionManager,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\r\n\r\nexport interface CustomerGroupMemberFetchParams {\r\n skip: number;\r\n take: number;\r\n filterTerm: string;\r\n}\r\n\r\nexport type CustomerGroupMember = Pick<\r\n Customer,\r\n 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'\r\n>;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-member-list',\r\n templateUrl: './customer-group-member-list.component.html',\r\n styleUrls: ['./customer-group-member-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\r\n @Input() locationId: BulkActionLocationId;\r\n @Input() members: CustomerGroupMember[];\r\n @Input() totalItems: number;\r\n @Input() route: ActivatedRoute;\r\n @Input() selectedMemberIds: string[] = [];\r\n @Input() activeGroup: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\r\n\r\n membersItemsPerPage$: Observable<number>;\r\n membersCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n selectionManager = new SelectionManager<CustomerGroupMember>({\r\n multiSelect: true,\r\n itemsAreEqual: (a, b) => a.id === b.id,\r\n additiveMode: true,\r\n });\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.membersCurrentPage$ = this.route.paramMap.pipe(\r\n map(qpm => qpm.get('membersPage')),\r\n map(page => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\r\n map(qpm => qpm.get('membersPerPage')),\r\n map(perPage => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n this.fetchParamsChange.emit({\r\n filterTerm: filterTerm ?? '',\r\n skip,\r\n take,\r\n });\r\n });\r\n this.selectionManager.setCurrentItems(\r\n this.members?.filter(m => this.selectedMemberIds.includes(m.id)) ?? [],\r\n );\r\n this.selectionManager.selectionChanges$.pipe(takeUntil(this.destroy$)).subscribe(selection => {\r\n this.selectionChange.emit(selection.map(s => s.id));\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('membersPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('membersPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","<vdr-data-table-2\r\n [id]=\"locationId\"\r\n [items]=\"members\"\r\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\r\n [totalItems]=\"totalItems\"\r\n [currentPage]=\"membersCurrentPage$ | async\"\r\n (pageChange)=\"setContentsPageNumber($event)\"\r\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n [locationId]=\"locationId\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"filterTermControl\"\r\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\r\n <ng-template let-customer=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\r\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n <vdr-customer-status-label [customer]=\"customer\" />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.emailAddress }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n DataService,\r\n Dialog,\r\n GetCustomerGroupsQuery,\r\n GetCustomerListQuery,\r\n ItemOf,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-add-customer-to-group-dialog',\r\n templateUrl: './add-customer-to-group-dialog.component.html',\r\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n group: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\r\n route: ActivatedRoute;\r\n selectedCustomerIds: string[] = [];\r\n customers$: Observable<GetCustomerListQuery['customers']['items']>;\r\n customersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 10,\r\n filterTerm: '',\r\n });\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const customerResult$ = this.fetchGroupMembers$.pipe(\r\n switchMap(({ skip, take, filterTerm }) =>\r\n this.dataService.customer\r\n .getCustomerList(take, skip, filterTerm)\r\n .mapStream(res => res.customers),\r\n ),\r\n );\r\n\r\n this.customers$ = customerResult$.pipe(map(res => res.items));\r\n this.customersTotal$ = customerResult$.pipe(map(res => res.totalItems));\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedCustomerIds);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\r\n</ng-template>\r\n\r\n<vdr-customer-group-member-list\r\n locationId=\"customer-group-members-picker-list\"\r\n [members]=\"customers$ | async\"\r\n [totalItems]=\"customersTotal$ | async\"\r\n [route]=\"route\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n/>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, Dialog, GetAvailableCountriesQuery } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-address-detail-dialog',\r\n templateUrl: './address-detail-dialog.component.html',\r\n styleUrls: ['./address-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressDetailDialogComponent implements Dialog<UntypedFormGroup>, OnInit {\r\n addressForm: UntypedFormGroup;\r\n customFields: CustomFieldConfig;\r\n availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\r\n resolveWith: (result?: UntypedFormGroup) => void;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.addressForm);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\r\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\r\n</ng-template>\r\n\r\n<vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries\"\r\n [customFields]=\"customFields\"\r\n></vdr-address-form>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"save()\"\r\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, GetAvailableCountriesQuery, ModalService } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\nimport { AddressDetailDialogComponent } from '../address-detail-dialog/address-detail-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-address-card',\r\n templateUrl: './address-card.component.html',\r\n styleUrls: ['./address-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressCardComponent implements OnInit, OnChanges {\r\n @Input() addressForm: UntypedFormGroup;\r\n @Input() customFields: CustomFieldConfig;\r\n @Input() availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\r\n @Input() isDefaultBilling: string;\r\n @Input() isDefaultShipping: string;\r\n @Input() editable = true;\r\n @Output() setAsDefaultShipping = new EventEmitter<string>();\r\n @Output() setAsDefaultBilling = new EventEmitter<string>();\r\n @Output() deleteAddress = new EventEmitter<string>();\r\n private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\r\n\r\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n const streetLine1 = this.addressForm.get('streetLine1') as UntypedFormControl;\r\n // Make the address dialog display automatically if there is no address line\r\n // as is the case when adding a new address.\r\n if (!streetLine1.value) {\r\n this.dataDependenciesPopulated\r\n .pipe(\r\n filter(value => value),\r\n take(1),\r\n )\r\n .subscribe(() => {\r\n this.editAddress();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.customFields != null && this.availableCountries != null) {\r\n this.dataDependenciesPopulated.next(true);\r\n }\r\n }\r\n\r\n getCountryName(countryCode: string) {\r\n if (!this.availableCountries) {\r\n return '';\r\n }\r\n const match = this.availableCountries.find(c => c.code === countryCode);\r\n return match ? match.name : '';\r\n }\r\n\r\n setAsDefaultBillingAddress() {\r\n this.setAsDefaultBilling.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n setAsDefaultShippingAddress() {\r\n this.setAsDefaultShipping.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n delete() {\r\n this.deleteAddress.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n editAddress() {\r\n this.modalService\r\n .fromComponent(AddressDetailDialogComponent, {\r\n locals: {\r\n addressForm: this.addressForm,\r\n customFields: this.customFields,\r\n availableCountries: this.availableCountries,\r\n },\r\n size: 'md',\r\n closable: true,\r\n })\r\n .subscribe(() => {\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n}\r\n","<div class=\"card\" *ngIf=\"addressForm.value as address\">\r\n <div class=\"card-header\">\r\n <div class=\"address-title\">\r\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\r\n {{ address.countryCode }}\r\n </div>\r\n <div class=\"default-controls\">\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\r\n <clr-icon shape=\"truck\"></clr-icon>\r\n {{ 'customer.default-shipping-address' | translate }}\r\n </vdr-chip>\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\r\n <clr-icon shape=\"credit-card\"></clr-icon>\r\n {{ 'customer.default-billing-address' | translate }}\r\n </vdr-chip>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <div class=\"address-actions\">\r\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\r\n <ng-container *ngIf=\"editable\">\r\n <button class=\"button-small\" (click)=\"editAddress()\">\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\r\n {{ 'common.more' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"isDefaultShipping\"\r\n (click)=\"setAsDefaultShippingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-shipping-address' | translate }}\r\n </button>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"isDefaultBilling\"\r\n (click)=\"setAsDefaultBillingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-billing-address' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { DataService, Dialog, GetCustomerGroupsQuery, ItemOf } from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-select-customer-group-dialog',\r\n templateUrl: './select-customer-group-dialog.component.html',\r\n styleUrls: ['./select-customer-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n groups$: Observable<Array<ItemOf<GetCustomerGroupsQuery, 'customerGroups'>>>;\r\n selectedGroupIds: string[] = [];\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream(res => res.customerGroups.items);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedGroupIds);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n</ng-template>\r\n\r\n<ng-select\r\n [items]=\"groups$ | async\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n bindValue=\"id\"\r\n [(ngModel)]=\"selectedGroupIds\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n</ng-select>\r\n\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\r\n </button>\r\n</ng-template>\r\n","import {\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {\r\n CustomerFragment,\r\n CustomerHistoryEntryComponent,\r\n HistoryEntryComponentService,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history-entry-host',\r\n template: ` <vdr-timeline-entry\r\n [displayType]=\"instance.getDisplayType(entry)\"\r\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"instance.getName && instance.getName(entry)\"\r\n [featured]=\"instance.isFeatured(entry)\"\r\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\r\n (expandClick)=\"expandClick.emit()\"\r\n >\r\n <div #portal></div>\r\n </vdr-timeline-entry>`,\r\n exportAs: 'historyEntry',\r\n})\r\nexport class CustomerHistoryEntryHostComponent implements OnInit, OnDestroy {\r\n @Input() entry: TimelineHistoryEntry;\r\n @Input() customer: CustomerFragment;\r\n @Input() expanded: boolean;\r\n @Output() expandClick = new EventEmitter<void>();\r\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\r\n instance: CustomerHistoryEntryComponent;\r\n private componentRef: ComponentRef<CustomerHistoryEntryComponent>;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n ngOnInit(): void {\r\n const componentType = this.historyEntryComponentService.getComponent(\r\n this.entry.type,\r\n ) as Type<CustomerHistoryEntryComponent>;\r\n\r\n const componentRef = this.portalRef.createComponent(componentType);\r\n componentRef.instance.entry = this.entry;\r\n componentRef.instance.customer = this.customer;\r\n this.instance = componentRef.instance;\r\n this.componentRef = componentRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentRef?.destroy();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n CustomerFragment,\r\n GetCustomerHistoryQuery,\r\n HistoryEntryComponentService,\r\n HistoryEntryType,\r\n TimelineDisplayType,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history',\r\n templateUrl: './customer-history.component.html',\r\n styleUrls: ['./customer-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerHistoryComponent {\r\n @Input() customer: CustomerFragment;\r\n @Input() history: TimelineHistoryEntry[];\r\n @Output() addNote = new EventEmitter<{ note: string }>();\r\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\r\n note = '';\r\n expanded = false;\r\n readonly type = HistoryEntryType;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n hasCustomComponent(type: string): boolean {\r\n return !!this.historyEntryComponentService.getComponent(type);\r\n }\r\n\r\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\r\n return 'success';\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'muted';\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'error';\r\n default:\r\n return 'default';\r\n }\r\n }\r\n\r\n getTimelineIcon(entry: TimelineHistoryEntry): string | [string, string] | undefined {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'user';\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return ['assign-user', 'is-solid'];\r\n case HistoryEntryType.CUSTOMER_NOTE:\r\n return 'note';\r\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'users';\r\n }\r\n }\r\n\r\n isFeatured(entry: TimelineHistoryEntry): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getName(entry: TimelineHistoryEntry): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n return `${this.customer.firstName} ${this.customer.lastName}`;\r\n }\r\n }\r\n\r\n addNoteToCustomer() {\r\n this.addNote.emit({ note: this.note });\r\n this.note = '';\r\n }\r\n}\r\n","<div class=\"entry-list\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\r\n [isFirst]=\"true\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\r\n {{ 'order.add-note' | translate }}\r\n </button>\r\n </div>\r\n </vdr-timeline-entry>\r\n <ng-container *ngFor=\"let entry of history\">\r\n <vdr-customer-history-entry-host\r\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\r\n [customer]=\"customer\"\r\n [entry]=\"entry\"\r\n [expanded]=\"expanded\"\r\n (expandClick)=\"expanded = !expanded\"\r\n ></vdr-customer-history-entry-host>\r\n <ng-template #defaultComponents>\r\n <vdr-timeline-entry\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-registered' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-verified' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-detail-updated' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\r\n {{\r\n 'customer.history-customer-added-to-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\r\n {{\r\n 'customer.history-customer-removed-from-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\r\n {{ 'customer.history-customer-address-created' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\r\n {{ 'customer.history-customer-address-updated' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\r\n {{ 'customer.history-customer-address-deleted' | translate }}\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\r\n {{ 'customer.history-customer-password-updated' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\r\n {{ 'customer.history-customer-password-reset-requested' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\r\n {{ 'customer.history-customer-password-reset-verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-requested' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-verified' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n (click)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"title\">\r\n {{ entry.type | translate }}\r\n </div>\r\n <vdr-history-entry-detail *ngIf=\"entry.data\">\r\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n </ng-template>\r\n </ng-container>\r\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CreateAddressInput,\r\n CreateCustomerAddressMutation,\r\n CreateCustomerInput,\r\n CUSTOMER_FRAGMENT,\r\n CustomerDetailQueryDocument,\r\n CustomerDetailQueryQuery,\r\n DataService,\r\n DeleteCustomerAddressMutation,\r\n EditNoteDialogComponent,\r\n GetAvailableCountriesQuery,\r\n GetCustomerHistoryQuery,\r\n getCustomFieldsDefaults,\r\n ModalService,\r\n NotificationService,\r\n SortOrder,\r\n TimelineHistoryEntry,\r\n TypedBaseDetailComponent,\r\n UpdateCustomerAddressMutation,\r\n UpdateCustomerInput,\r\n UpdateCustomerMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { gql } from 'apollo-angular';\r\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\r\nimport {\r\n concatMap,\r\n filter,\r\n map,\r\n merge,\r\n mergeMap,\r\n shareReplay,\r\n startWith,\r\n switchMap,\r\n take,\r\n} from 'rxjs/operators';\r\n\r\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\r\n\r\ntype CustomerWithOrders = NonNullable<CustomerDetailQueryQuery['customer']>;\r\n\r\nexport const CUSTOMER_DETAIL_QUERY = gql`\r\n query CustomerDetailQuery($id: ID!, $orderListOptions: OrderListOptions) {\r\n customer(id: $id) {\r\n ...Customer\r\n groups {\r\n id\r\n name\r\n }\r\n orders(options: $orderListOptions) {\r\n items {\r\n id\r\n code\r\n type\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n createdAt\r\n updatedAt\r\n orderPlacedAt\r\n }\r\n totalItems\r\n }\r\n }\r\n }\r\n ${CUSTOMER_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-detail',\r\n templateUrl: './customer-detail.component.html',\r\n styleUrls: ['./customer-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerDetailComponent\r\n extends TypedBaseDetailComponent<typeof CustomerDetailQueryDocument, 'customer'>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields = this.getCustomFieldConfig('Customer');\r\n addressCustomFields = this.getCustomFieldConfig('Address');\r\n detailForm = this.formBuilder.group({\r\n customer: this.formBuilder.group({\r\n title: '',\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phoneNumber: '',\r\n emailAddress: ['', [Validators.required, Validators.email]],\r\n password: '',\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n }),\r\n addresses: new UntypedFormArray([]),\r\n });\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n orders$: Observable<CustomerWithOrders['orders']['items']>;\r\n ordersCount$: Observable<number>;\r\n history$: Observable<NonNullable<GetCustomerHistoryQuery['customer']>['history']['items'] | undefined>;\r\n fetchHistory = new Subject<void>();\r\n defaultShippingAddressId: string;\r\n defaultBillingAddressId: string;\r\n addressesToDeleteIds = new Set<string>();\r\n addressDefaultsUpdated = false;\r\n ordersPerPage = 10;\r\n currentOrdersPage = 1;\r\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n\r\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\r\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\r\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() =>\r\n this.dataService.customer\r\n .getCustomerHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.customer?.history.items),\r\n ),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n this.orderListUpdates$.complete();\r\n }\r\n\r\n getAddressFormControls(): UntypedFormControl[] {\r\n const formArray = this.detailForm.get(['addresses']) as UntypedFormArray;\r\n return formArray.controls as UntypedFormControl[];\r\n }\r\n\r\n setDefaultBillingAddressId(id: string) {\r\n this.defaultBillingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n setDefaultShippingAddressId(id: string) {\r\n this.defaultShippingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n toggleDeleteAddress(id: string) {\r\n if (this.addressesToDeleteIds.has(id)) {\r\n this.addressesToDeleteIds.delete(id);\r\n } else {\r\n this.addressesToDeleteIds.add(id);\r\n }\r\n }\r\n\r\n addAddress() {\r\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\r\n const newAddress = this.formBuilder.group({\r\n fullName: '',\r\n company: '',\r\n streetLine1: ['', Validators.required],\r\n streetLine2: '',\r\n city: '',\r\n province: '',\r\n postalCode: '',\r\n countryCode: ['', Validators.required],\r\n phoneNumber: '',\r\n defaultShippingAddress: false,\r\n defaultBillingAddress: false,\r\n customFields: this.formBuilder.group(\r\n this.addressCustomFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n addressFormArray.push(newAddress);\r\n }\r\n\r\n setOrderItemsPerPage(itemsPerPage: number) {\r\n this.ordersPerPage = +itemsPerPage;\r\n this.fetchOrdersList();\r\n }\r\n\r\n setOrderCurrentPage(page: number) {\r\n this.currentOrdersPage = +page;\r\n this.fetchOrdersList();\r\n }\r\n\r\n create() {\r\n const customerForm = this.detailForm.get('customer');\r\n if (!customerForm) {\r\n return;\r\n }\r\n const { title, emailAddress, firstName, lastName, phoneNumber, password } = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n if (!emailAddress || !firstName || !lastName) {\r\n return;\r\n }\r\n const customer: CreateCustomerInput = {\r\n title,\r\n emailAddress,\r\n firstName,\r\n lastName,\r\n phoneNumber,\r\n customFields,\r\n };\r\n this.dataService.customer.createCustomer(customer, password).subscribe(({ createCustomer }) => {\r\n switch (createCustomer.__typename) {\r\n case 'Customer':\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Customer',\r\n });\r\n if (createCustomer.emailAddress && !password) {\r\n this.notificationService.notify({\r\n message: _('customer.email-verification-sent'),\r\n translationVars: { emailAddress },\r\n type: 'info',\r\n duration: 10000,\r\n });\r\n }\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(createCustomer.message);\r\n }\r\n });\r\n }\r\n\r\n save() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n mergeMap(({ id }) => {\r\n const saveOperations: Array<\r\n Observable<\r\n | UpdateCustomerMutation['updateCustomer']\r\n | CreateCustomerAddressMutation['createCustomerAddress']\r\n | UpdateCustomerAddressMutation['updateCustomerAddress']\r\n | DeleteCustomerAddressMutation['deleteCustomerAddress']\r\n >\r\n > = [];\r\n const customerForm = this.detailForm.get('customer');\r\n if (customerForm && customerForm.dirty) {\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: UpdateCustomerInput = {\r\n id,\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomer(customer)\r\n .pipe(map(res => res.updateCustomer)),\r\n );\r\n }\r\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\r\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\r\n for (const addressControl of addressFormArray.controls) {\r\n if (addressControl.dirty || this.addressDefaultsUpdated) {\r\n const address = addressControl.value;\r\n const input: CreateAddressInput = {\r\n fullName: address.fullName,\r\n company: address.company,\r\n streetLine1: address.streetLine1,\r\n streetLine2: address.streetLine2,\r\n city: address.city,\r\n province: address.province,\r\n postalCode: address.postalCode,\r\n countryCode: address.countryCode,\r\n phoneNumber: address.phoneNumber,\r\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\r\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\r\n customFields: address.customFields,\r\n };\r\n if (!address.id) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .createCustomerAddress(id, input)\r\n .pipe(map(res => res.createCustomerAddress)),\r\n );\r\n } else {\r\n if (this.addressesToDeleteIds.has(address.id)) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .deleteCustomerAddress(address.id)\r\n .pipe(map(res => res.deleteCustomerAddress)),\r\n );\r\n } else {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomerAddress({\r\n ...input,\r\n id: address.id,\r\n })\r\n .pipe(map(res => res.updateCustomerAddress)),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(saveOperations);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n let notified = false;\r\n for (const result of data) {\r\n switch (result.__typename) {\r\n case 'Customer':\r\n case 'Address':\r\n case 'Success':\r\n if (!notified) {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Customer',\r\n });\r\n notified = true;\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.fetchHistory.next();\r\n this.refreshCustomer().subscribe();\r\n }\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n\r\n addToGroup() {\r\n this.modalService\r\n .fromComponent(SelectCustomerGroupDialogComponent, {\r\n size: 'md',\r\n })\r\n .pipe(\r\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\r\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\r\n )\r\n .subscribe({\r\n next: res => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: 1,\r\n groupName: res.addCustomersToGroup.name,\r\n });\r\n },\r\n complete: () => {\r\n this.refreshCustomer().subscribe();\r\n this.fetchHistory.next();\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: CustomerWithOrders['groups'][number]) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-remove-customer-from-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\r\n : EMPTY,\r\n ),\r\n switchMap(() => this.refreshCustomer()),\r\n )\r\n .subscribe(result => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: 1,\r\n groupName: group.name,\r\n });\r\n this.fetchHistory.next();\r\n });\r\n }\r\n\r\n addNoteToCustomer({ note }: { note: string }) {\r\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: TimelineHistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: false,\r\n note: entry.data.note,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.customer.updateCustomerNote({\r\n noteId: entry.id,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: TimelineHistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n protected setFormValues(entity: CustomerWithOrders): void {\r\n const customerGroup = this.detailForm.get('customer');\r\n if (customerGroup) {\r\n customerGroup.patchValue({\r\n title: entity.title ?? null,\r\n firstName: entity.firstName,\r\n lastName: entity.lastName,\r\n phoneNumber: entity.phoneNumber ?? null,\r\n emailAddress: entity.emailAddress,\r\n password: '',\r\n customFields: {},\r\n });\r\n }\r\n\r\n if (entity.addresses) {\r\n const addressesArray = new UntypedFormArray([]);\r\n for (const address of entity.addresses) {\r\n const { customFields, ...rest } = address as typeof address & { customFields: any };\r\n const addressGroup = this.formBuilder.group({\r\n ...rest,\r\n countryCode: address.country.code,\r\n customFields: this.formBuilder.group(\r\n this.addressCustomFields.reduce(\r\n (hash, field) => ({\r\n ...hash,\r\n [field.name]: address['customFields'][field.name],\r\n }),\r\n {},\r\n ),\r\n ),\r\n });\r\n addressesArray.push(addressGroup);\r\n if (address.defaultShippingAddress) {\r\n this.defaultShippingAddressId = address.id;\r\n }\r\n if (address.defaultBillingAddress) {\r\n this.defaultBillingAddressId = address.id;\r\n }\r\n }\r\n this.detailForm.setControl('addresses', addressesArray);\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customer', 'customFields']),\r\n entity,\r\n );\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Refetch the customer with the current order list settings.\r\n */\r\n private fetchOrdersList() {\r\n this.dataService\r\n .query(CustomerDetailQueryDocument, {\r\n id: this.id,\r\n orderListOptions: {\r\n take: this.ordersPerPage,\r\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\r\n sort: { orderPlacedAt: SortOrder.DESC },\r\n },\r\n })\r\n .single$.pipe(\r\n map(data => data.customer),\r\n filter(notNullOrUndefined),\r\n )\r\n .subscribe(result => this.orderListUpdates$.next(result));\r\n }\r\n\r\n private refreshCustomer() {\r\n return this.dataService.query(CustomerDetailQueryDocument, {\r\n id: this.id,\r\n orderListOptions: { take: 0 },\r\n }).single$;\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as customer\">\r\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\r\n <vdr-labeled-data\r\n class=\"last-login\"\r\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\r\n [label]=\"'customer.last-login' | translate\"\r\n >\r\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card\r\n [title]=\"'customer.customer-groups' | translate\"\r\n *ngIf=\"(entity$ | async)?.groups as groups\"\r\n >\r\n <div *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </div>\r\n <ng-template #noGroups>\r\n <span class=\"color-weight-400\">\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </span>\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"button-small mt-1\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n [label]=\"'customer.title' | translate\"\r\n for=\"title\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <div><!-- spacer --></div>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.password' | translate\"\r\n for=\"password\"\r\n *ngIf=\"isNew$ | async\"\r\n >\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n </form>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <ng-container *ngIf=\"!(isNew$ | async)\">\r\n <vdr-card [title]=\"'customer.addresses' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"\r\n (['UpdateCustomer'] | hasPermission) &&\r\n !addressesToDeleteIds.has(addressForm.value.id)\r\n \"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n </div>\r\n <button\r\n class=\"btn btn-secondary mt-2\"\r\n (click)=\"addAddress()\"\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\r\n <vdr-data-table-2\r\n id=\"customer-order-list\"\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n {{ order.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\"\r\n id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-order=\"item\">\r\n {{ order.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'order.order-type' | translate\"\r\n id=\"order-type\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-order=\"item\">\r\n <vdr-chip>{{ order.type }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.updatedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of customFields\"\r\n [customField]=\"customField\"\r\n />\r\n </vdr-data-table-2>\r\n </vdr-card>\r\n <vdr-card [title]=\"'customer.customer-history' | translate\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </vdr-card>\r\n </ng-container>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { ResultOf } from '@graphql-typed-document-node/core';\r\nimport {\r\n DataService,\r\n GetCustomerGroupDetailDocument,\r\n getCustomFieldsDefaults,\r\n ModalService,\r\n NotificationService,\r\n TypedBaseDetailComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const CUSTOMER_GROUP_DETAIL_QUERY = gql`\r\n query GetCustomerGroupDetail($id: ID!) {\r\n customerGroup(id: $id) {\r\n ...CustomerGroupDetail\r\n }\r\n }\r\n fragment CustomerGroupDetail on CustomerGroup {\r\n id\r\n createdAt\r\n updatedAt\r\n name\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail',\r\n templateUrl: './customer-group-detail.component.html',\r\n styleUrls: ['./customer-group-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailComponent\r\n extends TypedBaseDetailComponent<typeof GetCustomerGroupDetailDocument, 'customerGroup'>\r\n implements OnInit\r\n{\r\n customFields = this.getCustomFieldConfig('CustomerGroup');\r\n detailForm = this.formBuilder.group({\r\n name: '',\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.init();\r\n }\r\n\r\n create() {\r\n const formvalue = this.detailForm.value;\r\n if (formvalue.name) {\r\n this.dataService.customer\r\n .createCustomerGroup({\r\n name: formvalue.name,\r\n customFields: formvalue.customFields,\r\n customerIds: [],\r\n })\r\n .subscribe(\r\n ({ createCustomerGroup }) => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n this.detailForm.markAsPristine();\r\n this.router.navigate(['../', createCustomerGroup.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n }\r\n\r\n save() {\r\n const formValue = this.detailForm.value;\r\n this.dataService.customer.updateCustomerGroup({ id: this.id, ...formValue }).subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n this.detailForm.markAsPristine();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n protected setFormValues(\r\n entity: NonNullable<ResultOf<typeof GetCustomerGroupDetailDocument>['customerGroup']>,\r\n ) {\r\n this.detailForm.patchValue({\r\n name: entity.name,\r\n });\r\n\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.detailForm.get(['customFields']) as UntypedFormGroup;\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-group-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n CreateCustomerGroupInput,\r\n CustomFieldConfig,\r\n Dialog,\r\n getCustomFieldsDefaults,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail-dialog',\r\n templateUrl: './customer-group-detail-dialog.component.html',\r\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\r\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\r\n resolveWith: (result?: CreateCustomerGroupInput) => void;\r\n customFields: CustomFieldConfig[];\r\n form: UntypedFormGroup;\r\n\r\n constructor(private serverConfigService: ServerConfigService, private formBuilder: UntypedFormBuilder) {\r\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\r\n }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n name: [this.group.name, Validators.required],\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.form.get('customFields') as UntypedFormGroup;\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value = this.group.customFields?.[key];\r\n const control = customFieldsGroup.get(key);\r\n if (control) {\r\n control.patchValue(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.form.value);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"form.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n </button>\r\n</ng-template>\r\n","import { createBulkDeleteAction, GetCustomerGroupsQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const deleteCustomerGroupsBulkAction = createBulkDeleteAction<\r\n ItemOf<GetCustomerGroupsQuery, 'customerGroups'>\r\n>({\r\n location: 'customer-group-list',\r\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomerGroup),\r\n getItemName: item => item.name,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.customer.deleteCustomerGroups(ids).pipe(map(res => res.deleteCustomerGroups)),\r\n});\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CUSTOMER_GROUP_FRAGMENT,\r\n DataService,\r\n GetCustomerGroupListDocument,\r\n GetCustomerGroupsQuery,\r\n GetCustomerGroupWithCustomersQuery,\r\n ItemOf,\r\n ModalService,\r\n NotificationService,\r\n TypedBaseListComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\r\nimport { distinctUntilChanged, map, mapTo, switchMap } from 'rxjs/operators';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\nexport const GET_CUSTOMER_GROUP_LIST = gql`\r\n query GetCustomerGroupList($options: CustomerGroupListOptions) {\r\n customerGroups(options: $options) {\r\n items {\r\n ...CustomerGroup\r\n }\r\n totalItems\r\n }\r\n }\r\n ${CUSTOMER_GROUP_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-list',\r\n templateUrl: './customer-group-list.component.html',\r\n styleUrls: ['./customer-group-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupListComponent\r\n extends TypedBaseListComponent<typeof GetCustomerGroupListDocument, 'customerGroups'>\r\n implements OnInit\r\n{\r\n dataTableListId = 'customer-group-list';\r\n readonly customFields = this.getCustomFieldConfig('CustomerGroup');\r\n activeGroup$: Observable<ItemOf<GetCustomerGroupsQuery, 'customerGroups'> | undefined>;\r\n activeIndex$: Observable<number>;\r\n listIsEmpty$: Observable<boolean>;\r\n members$: Observable<\r\n NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>['customers']['items']\r\n >;\r\n membersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 0,\r\n filterTerm: '',\r\n });\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilter({\r\n name: 'name',\r\n type: { kind: 'text' },\r\n label: _('common.name'),\r\n filterField: 'name',\r\n })\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSort({ name: 'createdAt' })\r\n .addSort({ name: 'updatedAt' })\r\n .addSort({ name: 'name' })\r\n .connectToRoute(this.route);\r\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\r\n\r\n constructor(\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n public route: ActivatedRoute,\r\n protected router: Router,\r\n ) {\r\n super();\r\n super.configure({\r\n document: GetCustomerGroupListDocument,\r\n getItems: data => data.customerGroups,\r\n setVariables: (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n name: { contains: this.searchTermControl.value },\r\n ...this.filters.createFilterInput(),\r\n },\r\n sort: this.sorts.createSortInput(),\r\n },\r\n }),\r\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n const activeGroupId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n );\r\n this.listIsEmpty$ = this.items$.pipe(map(groups => groups.length === 0));\r\n this.activeGroup$ = combineLatest(this.items$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.find(g => g.id === activeGroupId);\r\n }\r\n }),\r\n );\r\n this.activeIndex$ = combineLatest(this.items$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.findIndex(g => g.id === activeGroupId);\r\n } else {\r\n return -1;\r\n }\r\n }),\r\n );\r\n const membersResult$ = combineLatest(\r\n this.activeGroup$,\r\n this.fetchGroupMembers$,\r\n this.refreshActiveGroupMembers$,\r\n ).pipe(\r\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\r\n if (activeGroup) {\r\n return this.dataService.customer\r\n .getCustomerGroupWithCustomers(activeGroup.id, {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: filterTerm,\r\n },\r\n },\r\n })\r\n .mapStream(res => res.customerGroup?.customers);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n );\r\n\r\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\r\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\r\n }\r\n\r\n closeMembers() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n addToGroup(group: NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>) {\r\n this.modalService\r\n .fromComponent(AddCustomerToGroupDialogComponent, {\r\n locals: {\r\n group,\r\n route: this.route,\r\n },\r\n size: 'md',\r\n verticalAlign: 'top',\r\n })\r\n .pipe(\r\n switchMap(customerIds =>\r\n customerIds\r\n ? this.dataService.customer\r\n .addCustomersToGroup(group.id, customerIds)\r\n .pipe(mapTo(customerIds))\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe({\r\n next: result => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: result.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n },\r\n });\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\r\n <ng-template vdrSplitViewLeft>\r\n <vdr-data-table-2\r\n class=\"mt-2\"\r\n [id]=\"dataTableListId\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n [activeIndex]=\"activeIndex$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\r\n >\r\n <vdr-bulk-action-menu\r\n locationId=\"customer-group-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n {{ customerGroup.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.name' | translate\" id=\"name\"\r\n [optional]=\"false\"\r\n [sort]=\"sorts.get('name')\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\r\n ><span>{{ customerGroup.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\r\n <vdr-dt2-column\r\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\r\n [optional]=\"false\"\r\n >\r\n <ng-template let-customerGroup=\"item\">\r\n <a\r\n class=\"button-small bg-weight-150\"\r\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <span>{{ 'customer.view-group-members' | translate }}</span>\r\n <clr-icon shape=\"file-group\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n </ng-template>\r\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{\r\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\r\n }}</span>\r\n </button>\r\n <vdr-customer-group-member-list\r\n locationId=\"customer-group-members-list\"\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [activeGroup]=\"activeGroup$ | async\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n />\r\n </ng-container>\r\n </ng-template>\r\n</vdr-split-view>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BulkAction,\r\n DataService,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n} from '@vendure/admin-ui/core';\r\nimport {\r\n CustomerGroupMember,\r\n CustomerGroupMemberListComponent,\r\n} from './customer-group-member-list.component';\r\n\r\nexport const removeCustomerGroupMembersBulkAction: BulkAction<\r\n CustomerGroupMember,\r\n CustomerGroupMemberListComponent\r\n> = {\r\n location: 'customer-group-members-list',\r\n label: _('customer.remove-from-group'),\r\n icon: 'trash',\r\n iconClass: 'is-danger',\r\n requiresPermission: Permission.UpdateCustomerGroup,\r\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\r\n const modalService = injector.get(ModalService);\r\n const dataService = injector.get(DataService);\r\n const notificationService = injector.get(NotificationService);\r\n\r\n const group = hostComponent.activeGroup;\r\n const customerIds = selection.map(s => s.id);\r\n\r\n dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\r\n complete: () => {\r\n notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: customerIds.length,\r\n groupName: group.name,\r\n });\r\n clearSelection();\r\n hostComponent.refresh();\r\n },\r\n });\r\n },\r\n};\r\n","import { createBulkDeleteAction, GetCustomerListQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const deleteCustomersBulkAction = createBulkDeleteAction<ItemOf<GetCustomerListQuery, 'customers'>>({\r\n location: 'customer-list',\r\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomer),\r\n getItemName: item => item.firstName + ' ' + item.lastName,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.customer.deleteCustomers(ids).pipe(map(res => res.deleteCustomers)),\r\n});\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CustomerListQueryDocument, LogicalOperator, TypedBaseListComponent } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const CUSTOMER_LIST_QUERY = gql`\r\n query CustomerListQuery($options: CustomerListOptions) {\r\n customers(options: $options) {\r\n items {\r\n ...CustomerListItem\r\n }\r\n totalItems\r\n }\r\n }\r\n\r\n fragment CustomerListItem on Customer {\r\n id\r\n createdAt\r\n updatedAt\r\n title\r\n firstName\r\n lastName\r\n emailAddress\r\n user {\r\n id\r\n verified\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-customer-list',\r\n templateUrl: './customer-list.component.html',\r\n styleUrls: ['./customer-list.component.scss'],\r\n})\r\nexport class CustomerListComponent\r\n extends TypedBaseListComponent<typeof CustomerListQueryDocument, 'customers'>\r\n implements OnInit\r\n{\r\n dataTableListId = 'customer-list';\r\n readonly customFields = this.getCustomFieldConfig('Customer');\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilter({\r\n name: 'firstName',\r\n type: { kind: 'text' },\r\n label: _('customer.first-name'),\r\n filterField: 'firstName',\r\n })\r\n .addFilter({\r\n name: 'lastName',\r\n type: { kind: 'text' },\r\n label: _('customer.last-name'),\r\n filterField: 'lastName',\r\n })\r\n .addFilter({\r\n name: 'emailAddress',\r\n type: { kind: 'text' },\r\n label: _('customer.email-address'),\r\n filterField: 'emailAddress',\r\n })\r\n .addCustomFieldFilters(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSort({ name: 'createdAt' })\r\n .addSort({ name: 'updatedAt' })\r\n .addSort({ name: 'lastName' })\r\n .addSort({ name: 'emailAddress' })\r\n .addCustomFieldSorts(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n constructor() {\r\n super();\r\n this.configure({\r\n document: CustomerListQueryDocument,\r\n getItems: data => data.customers,\r\n setVariables: (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n ...(this.searchTermControl.value\r\n ? {\r\n emailAddress: {\r\n contains: this.searchTermControl.value,\r\n },\r\n lastName: {\r\n contains: this.searchTermControl.value,\r\n },\r\n postalCode: {\r\n contains: this.searchTermControl.value,\r\n },\r\n }\r\n : {}),\r\n ...this.filters.createFilterInput(),\r\n },\r\n filterOperator: this.searchTermControl.value ? LogicalOperator.OR : LogicalOperator.AND,\r\n sort: this.sorts.createSortInput(),\r\n },\r\n }),\r\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\r\n });\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left> </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer' | translate }}\r\n </a>\r\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n class=\"mt-2\"\r\n [id]=\"dataTableListId\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"customer-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\r\n ></vdr-dt2-search>\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-customer=\"item\">\r\n {{ customer.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-customer=\"item\">\r\n {{ customer.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\r\n <ng-template let-customer=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\r\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\r\n <ng-template let-customer=\"item\">\r\n <vdr-customer-status-label [customer]=\"customer\" />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\r\n <ng-template let-customer=\"item\">\r\n {{ customer.emailAddress }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CustomerFragment, detailBreadcrumb, PageComponent, PageService } from '@vendure/admin-ui/core';\r\n\r\nexport const createRoutes = (pageService: PageService): Route[] => [\r\n {\r\n path: 'customers',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-list',\r\n breadcrumb: _('breadcrumb.customers'),\r\n },\r\n children: pageService.getPageTabRoutes('customer-list'),\r\n },\r\n {\r\n path: 'customers/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-detail',\r\n breadcrumb: { label: _('breadcrumb.customers'), link: ['../', 'customers'] },\r\n },\r\n children: pageService.getPageTabRoutes('customer-detail'),\r\n },\r\n {\r\n path: 'groups',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-group-list',\r\n breadcrumb: _('breadcrumb.customer-groups'),\r\n },\r\n children: pageService.getPageTabRoutes('customer-group-list'),\r\n },\r\n {\r\n path: 'groups/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'customer-group-detail',\r\n breadcrumb: { label: _('breadcrumb.customer-groups'), link: ['../', 'groups'] },\r\n },\r\n children: pageService.getPageTabRoutes('customer-group-detail'),\r\n },\r\n];\r\n\r\nexport function customerBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<CustomerFragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.customers',\r\n getName: customer => `${customer.firstName} ${customer.lastName}`,\r\n route: 'customers',\r\n });\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, ROUTES } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BulkActionRegistryService,\r\n CustomerDetailQueryDocument,\r\n detailComponentWithResolver,\r\n GetCustomerGroupDetailDocument,\r\n PageService,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { AddressCardComponent } from './components/address-card/address-card.component';\r\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { deleteCustomerGroupsBulkAction } from './components/customer-group-list/customer-group-list-bulk-actions';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { removeCustomerGroupMembersBulkAction } from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\r\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\r\nimport { CustomerHistoryEntryHostComponent } from './components/customer-history/customer-history-entry-host.component';\r\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\r\nimport { deleteCustomersBulkAction } from './components/customer-list/customer-list-bulk-actions';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\r\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\r\nimport { createRoutes } from './customer.routes';\r\nimport { CustomerGroupDetailComponent } from './components/customer-group-detail/customer-group-detail.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild([])],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n useFactory: (pageService: PageService) => createRoutes(pageService),\r\n multi: true,\r\n deps: [PageService],\r\n },\r\n ],\r\n declarations: [\r\n CustomerListComponent,\r\n CustomerDetailComponent,\r\n CustomerStatusLabelComponent,\r\n AddressCardComponent,\r\n CustomerGroupListComponent,\r\n CustomerGroupDetailDialogComponent,\r\n AddCustomerToGroupDialogComponent,\r\n CustomerGroupMemberListComponent,\r\n SelectCustomerGroupDialogComponent,\r\n CustomerHistoryComponent,\r\n AddressDetailDialogComponent,\r\n CustomerHistoryEntryHostComponent,\r\n CustomerGroupDetailComponent,\r\n ],\r\n exports: [AddressCardComponent],\r\n})\r\nexport class CustomerModule {\r\n private static hasRegisteredTabsAndBulkActions = false;\r\n\r\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\r\n if (CustomerModule.hasRegisteredTabsAndBulkActions) {\r\n return;\r\n }\r\n bulkActionRegistryService.registerBulkAction(deleteCustomersBulkAction);\r\n bulkActionRegistryService.registerBulkAction(deleteCustomerGroupsBulkAction);\r\n bulkActionRegistryService.registerBulkAction(removeCustomerGroupMembersBulkAction);\r\n\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-list',\r\n tab: _('customer.customers'),\r\n route: '',\r\n component: CustomerListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-detail',\r\n tab: _('customer.customer'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: CustomerDetailComponent,\r\n query: CustomerDetailQueryDocument,\r\n entityKey: 'customer',\r\n variables: {\r\n orderListOptions: {\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n },\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity\r\n ? `${entity?.firstName} ${entity?.lastName}`\r\n : _('customer.create-new-customer'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-group-list',\r\n tab: _('customer.customer-groups'),\r\n route: '',\r\n component: CustomerGroupListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'customer-group-detail',\r\n tab: _('customer.customer-group'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: CustomerGroupDetailComponent,\r\n query: GetCustomerGroupDetailDocument,\r\n entityKey: 'customerGroup',\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity ? entity.name : _('customer.create-new-customer-group'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n CustomerModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nexport * from './components/address-card/address-card.component';\nexport * from './components/address-detail-dialog/address-detail-dialog.component';\nexport * from './components/customer-detail/customer-detail.component';\nexport * from './components/customer-group-detail/customer-group-detail.component';\nexport * from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list-bulk-actions';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history-entry-host.component';\nexport * from './components/customer-history/customer-history.component';\nexport * from './components/customer-list/customer-list-bulk-actions';\nexport * from './components/customer-list/customer-list.component';\nexport * from './components/customer-status-label/customer-status-label.component';\nexport * from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nexport * from './customer.module';\nexport * from './customer.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4.CustomerStatusLabelComponent","i5","i6","i2.CustomerGroupMemberListComponent","i4","i5.CustomerHistoryEntryHostComponent","_","i6.CustomerStatusLabelComponent","i7.AddressCardComponent","i8.CustomerHistoryComponent","i9","i5.CustomerGroupMemberListComponent","i5.CustomerStatusLabelComponent"],"mappings":"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"}