@vendure/admin-ui 2.1.0-next.1 → 2.1.0-next.3

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 (256) hide show
  1. package/catalog/components/collection-detail/collection-detail.component.d.ts +3 -1
  2. package/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.d.ts +6 -4
  3. package/catalog/components/facet-detail/facet-detail.component.d.ts +3 -1
  4. package/catalog/components/product-detail/product-detail.component.d.ts +3 -1
  5. package/catalog/components/stock-location-detail/stock-location-detail.component.d.ts +3 -1
  6. package/core/common/base-detail.component.d.ts +11 -1
  7. package/core/common/component-registry-types.d.ts +2 -1
  8. package/core/common/utilities/custom-field-default-value.d.ts +6 -0
  9. package/core/common/version.d.ts +1 -1
  10. package/core/components/app-shell/app-shell.component.d.ts +2 -0
  11. package/core/extension/add-action-bar-item.d.ts +28 -0
  12. package/core/extension/add-nav-menu-item.d.ts +60 -0
  13. package/core/extension/components/angular-route.component.d.ts +6 -0
  14. package/core/extension/components/route.component.d.ts +13 -0
  15. package/core/extension/providers/page-metadata.service.d.ts +9 -0
  16. package/core/{providers/bulk-action-registry → extension}/register-bulk-action.d.ts +1 -1
  17. package/core/extension/register-custom-detail-component.d.ts +10 -0
  18. package/core/{providers/dashboard-widget → extension}/register-dashboard-widget.d.ts +5 -1
  19. package/core/extension/register-data-table-component.d.ts +44 -0
  20. package/core/extension/register-form-input-component.d.ts +50 -0
  21. package/core/extension/register-history-entry-component.d.ts +11 -0
  22. package/core/extension/register-route-component.d.ts +59 -0
  23. package/core/extension/types.d.ts +11 -0
  24. package/core/providers/component-registry/component-registry.service.d.ts +6 -3
  25. package/core/providers/custom-detail-component/custom-detail-component-types.d.ts +2 -1
  26. package/core/providers/custom-detail-component/custom-detail-component.service.d.ts +0 -9
  27. package/core/providers/custom-history-entry-component/history-entry-component.service.d.ts +1 -10
  28. package/core/providers/dashboard-widget/dashboard-widget-types.d.ts +17 -1
  29. package/core/providers/modal/modal.service.d.ts +1 -3
  30. package/core/providers/nav-builder/nav-builder.service.d.ts +0 -85
  31. package/core/public_api.d.ts +16 -3
  32. package/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +3 -3
  33. package/core/shared/components/data-table-2/data-table-column.component.d.ts +2 -2
  34. package/core/shared/components/data-table-2/data-table-custom-component.service.d.ts +52 -0
  35. package/core/shared/components/data-table-2/data-table-custom-field-column.component.d.ts +0 -1
  36. package/core/shared/components/data-table-2/data-table2.component.d.ts +9 -2
  37. package/core/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +2 -3
  38. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  39. package/core/shared/components/ui-extension-point/ui-extension-point.component.d.ts +13 -4
  40. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +15 -0
  41. package/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +3 -3
  42. package/core/shared/shared.module.d.ts +25 -25
  43. package/customer/components/customer-detail/customer-detail.component.d.ts +3 -1
  44. package/customer/components/customer-group-detail/customer-group-detail.component.d.ts +3 -1
  45. package/customer/components/customer-history/customer-history-entry-host.component.d.ts +2 -3
  46. package/customer/components/customer-list/customer-list.component.d.ts +1 -0
  47. package/dashboard/components/dashboard-widget/dashboard-widget.component.d.ts +1 -3
  48. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +3 -3
  49. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +3 -3
  50. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +3 -3
  51. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +3 -3
  52. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +3 -3
  53. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +8 -5
  54. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +3 -3
  55. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +3 -3
  56. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +3 -3
  57. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +3 -3
  58. package/esm2022/catalog/components/product-list/product-list.component.mjs +3 -3
  59. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +3 -3
  60. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +3 -3
  61. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +3 -3
  62. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +3 -3
  63. package/esm2022/catalog/components/stock-location-detail/stock-location-detail.component.mjs +3 -3
  64. package/esm2022/catalog/components/stock-location-list/stock-location-list.component.mjs +3 -3
  65. package/esm2022/core/common/base-detail.component.mjs +9 -7
  66. package/esm2022/core/common/component-registry-types.mjs +1 -1
  67. package/esm2022/core/common/utilities/create-updated-translatable.mjs +5 -23
  68. package/esm2022/core/common/utilities/custom-field-default-value.mjs +28 -0
  69. package/esm2022/core/common/version.mjs +2 -2
  70. package/esm2022/core/components/app-shell/app-shell.component.mjs +16 -10
  71. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +3 -3
  72. package/esm2022/core/components/main-nav/main-nav.component.mjs +3 -3
  73. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +1 -1
  74. package/esm2022/core/core.module.mjs +2 -2
  75. package/esm2022/core/extension/add-action-bar-item.mjs +38 -0
  76. package/esm2022/core/extension/add-nav-menu-item.mjs +79 -0
  77. package/esm2022/core/extension/components/angular-route.component.mjs +22 -0
  78. package/esm2022/core/extension/components/route.component.mjs +59 -0
  79. package/esm2022/core/extension/providers/page-metadata.service.mjs +20 -0
  80. package/esm2022/core/extension/register-bulk-action.mjs +63 -0
  81. package/esm2022/core/extension/register-custom-detail-component.mjs +20 -0
  82. package/esm2022/core/extension/register-dashboard-widget.mjs +36 -0
  83. package/esm2022/core/extension/register-data-table-component.mjs +50 -0
  84. package/esm2022/core/extension/register-form-input-component.mjs +60 -0
  85. package/esm2022/core/extension/register-history-entry-component.mjs +21 -0
  86. package/esm2022/core/extension/register-route-component.mjs +44 -0
  87. package/esm2022/core/extension/types.mjs +2 -0
  88. package/esm2022/core/providers/component-registry/component-registry.service.mjs +3 -3
  89. package/esm2022/core/providers/custom-detail-component/custom-detail-component-types.mjs +1 -1
  90. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +2 -19
  91. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +2 -20
  92. package/esm2022/core/providers/dashboard-widget/dashboard-widget-types.mjs +1 -1
  93. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +1 -8
  94. package/esm2022/core/providers/data-table/data-table-filter.mjs +1 -1
  95. package/esm2022/core/providers/modal/modal.service.mjs +5 -7
  96. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +2 -113
  97. package/esm2022/core/public_api.mjs +17 -4
  98. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +3 -3
  99. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +3 -3
  100. package/esm2022/core/shared/components/card/card.component.mjs +3 -3
  101. package/esm2022/core/shared/components/chip/chip.component.mjs +2 -2
  102. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +13 -9
  103. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +5 -6
  104. package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +26 -0
  105. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +2 -4
  106. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +23 -10
  107. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +3 -3
  108. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +2 -2
  109. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +3 -3
  110. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +1 -1
  111. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +3 -3
  112. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +6 -4
  113. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +2 -2
  114. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +6 -8
  115. package/esm2022/core/shared/components/page-title/page-title.component.mjs +3 -3
  116. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +2 -2
  117. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +2 -2
  118. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +97 -5
  119. package/esm2022/core/shared/dynamic-form-inputs/default-form-inputs.mjs +44 -0
  120. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +20 -16
  121. package/esm2022/core/shared/shared.module.mjs +14 -13
  122. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +5 -5
  123. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +3 -3
  124. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +3 -2
  125. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +3 -3
  126. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +3 -3
  127. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +5 -7
  128. package/esm2022/customer/components/customer-list/customer-list.component.mjs +10 -7
  129. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +4 -7
  130. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +3 -3
  131. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
  132. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +3 -3
  133. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +2 -2
  134. package/esm2022/order/components/order-detail/order-detail.component.mjs +3 -3
  135. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +7 -9
  136. package/esm2022/order/components/order-list/order-list.component.mjs +3 -3
  137. package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
  138. package/esm2022/react/components/react-custom-column.component.mjs +25 -0
  139. package/esm2022/react/components/react-custom-detail.component.mjs +23 -0
  140. package/esm2022/react/components/react-form-input.component.mjs +24 -0
  141. package/esm2022/react/components/react-route.component.mjs +26 -0
  142. package/esm2022/react/directives/react-component-host.directive.mjs +54 -0
  143. package/esm2022/react/public_api.mjs +19 -0
  144. package/esm2022/react/react-components/Card.mjs +28 -0
  145. package/esm2022/react/react-components/Link.mjs +30 -0
  146. package/esm2022/react/react-hooks/use-detail-component-data.mjs +48 -0
  147. package/esm2022/react/react-hooks/use-form-control.mjs +66 -0
  148. package/esm2022/react/react-hooks/use-injector.mjs +33 -0
  149. package/esm2022/react/react-hooks/use-page-metadata.mjs +41 -0
  150. package/esm2022/react/react-hooks/use-query.mjs +124 -0
  151. package/esm2022/react/register-react-custom-detail-component.mjs +33 -0
  152. package/esm2022/react/register-react-data-table-component.mjs +62 -0
  153. package/esm2022/react/register-react-form-input-component.mjs +27 -0
  154. package/esm2022/react/register-react-route-component.mjs +25 -0
  155. package/esm2022/react/types.mjs +2 -0
  156. package/esm2022/react/vendure-admin-ui-react.mjs +5 -0
  157. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +3 -3
  158. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +3 -3
  159. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +10 -10
  160. package/esm2022/settings/components/channel-list/channel-list.component.mjs +3 -3
  161. package/esm2022/settings/components/country-detail/country-detail.component.mjs +3 -3
  162. package/esm2022/settings/components/country-list/country-list.component.mjs +3 -3
  163. package/esm2022/settings/components/global-settings/global-settings.component.mjs +3 -3
  164. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +3 -3
  165. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +3 -3
  166. package/esm2022/settings/components/profile/profile.component.mjs +3 -3
  167. package/esm2022/settings/components/role-list/role-list.component.mjs +3 -3
  168. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +3 -3
  169. package/esm2022/settings/components/seller-list/seller-list.component.mjs +3 -3
  170. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +3 -3
  171. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +3 -3
  172. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +3 -3
  173. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +3 -3
  174. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +3 -3
  175. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +3 -3
  176. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +3 -3
  177. package/esm2022/settings/components/zone-list/zone-list.component.mjs +3 -3
  178. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +3 -3
  179. package/esm2022/settings/settings.routes.mjs +1 -1
  180. package/esm2022/system/components/job-list/job-list.component.mjs +3 -3
  181. package/fesm2022/vendure-admin-ui-catalog.mjs +34 -31
  182. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  183. package/fesm2022/vendure-admin-ui-core.mjs +659 -346
  184. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  185. package/fesm2022/vendure-admin-ui-customer.mjs +19 -18
  186. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  187. package/fesm2022/vendure-admin-ui-dashboard.mjs +5 -8
  188. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  189. package/fesm2022/vendure-admin-ui-marketing.mjs +4 -4
  190. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  191. package/fesm2022/vendure-admin-ui-order.mjs +14 -16
  192. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  193. package/fesm2022/vendure-admin-ui-react.mjs +641 -0
  194. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -0
  195. package/fesm2022/vendure-admin-ui-settings.mjs +41 -41
  196. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  197. package/fesm2022/vendure-admin-ui-system.mjs +2 -2
  198. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  199. package/marketing/components/promotion-detail/promotion-detail.component.d.ts +3 -1
  200. package/order/components/order-detail/order-detail.component.d.ts +3 -1
  201. package/order/components/order-history/order-history-entry-host.component.d.ts +2 -3
  202. package/package.json +22 -14
  203. package/react/components/react-custom-column.component.d.ts +17 -0
  204. package/react/components/react-custom-detail.component.d.ts +24 -0
  205. package/react/components/react-form-input.component.d.ts +20 -0
  206. package/react/components/react-route.component.d.ts +10 -0
  207. package/react/directives/react-component-host.directive.d.ts +23 -0
  208. package/react/index.d.ts +5 -0
  209. package/react/public_api.d.ts +17 -0
  210. package/react/react-components/Card.d.ts +24 -0
  211. package/react/react-components/Link.d.ts +22 -0
  212. package/react/react-hooks/use-detail-component-data.d.ts +32 -0
  213. package/react/react-hooks/use-form-control.d.ts +29 -0
  214. package/react/react-hooks/use-injector.d.ts +24 -0
  215. package/react/react-hooks/use-page-metadata.d.ts +30 -0
  216. package/react/react-hooks/use-query.d.ts +92 -0
  217. package/react/register-react-custom-detail-component.d.ts +38 -0
  218. package/react/register-react-data-table-component.d.ts +81 -0
  219. package/react/register-react-form-input-component.d.ts +9 -0
  220. package/react/register-react-route-component.d.ts +26 -0
  221. package/react/types.d.ts +17 -0
  222. package/settings/components/admin-detail/admin-detail.component.d.ts +3 -1
  223. package/settings/components/channel-detail/channel-detail.component.d.ts +5 -3
  224. package/settings/components/country-detail/country-detail.component.d.ts +3 -1
  225. package/settings/components/global-settings/global-settings.component.d.ts +3 -1
  226. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +3 -1
  227. package/settings/components/profile/profile.component.d.ts +3 -1
  228. package/settings/components/seller-detail/seller-detail.component.d.ts +3 -1
  229. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +3 -1
  230. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +3 -1
  231. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +3 -1
  232. package/settings/components/zone-detail/zone-detail.component.d.ts +3 -1
  233. package/static/i18n-messages/cs.json +789 -789
  234. package/static/i18n-messages/de.json +789 -789
  235. package/static/i18n-messages/en.json +789 -789
  236. package/static/i18n-messages/es.json +789 -789
  237. package/static/i18n-messages/fr.json +789 -789
  238. package/static/i18n-messages/he.json +789 -789
  239. package/static/i18n-messages/it.json +789 -789
  240. package/static/i18n-messages/pl.json +789 -789
  241. package/static/i18n-messages/pt_BR.json +789 -789
  242. package/static/i18n-messages/pt_PT.json +789 -789
  243. package/static/i18n-messages/ru.json +789 -789
  244. package/static/i18n-messages/uk.json +789 -789
  245. package/static/i18n-messages/zh_Hans.json +789 -789
  246. package/static/i18n-messages/zh_Hant.json +789 -789
  247. package/static/styles/_mixins.scss +4 -4
  248. package/static/styles/global/_forms.scss +2 -2
  249. package/static/styles/rtl.scss +1 -1
  250. package/static/styles/theme/dark.scss +1 -16
  251. package/static/styles/theme/default.scss +1 -0
  252. package/static/theme.min.css +1 -1
  253. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +0 -64
  254. package/esm2022/core/providers/bulk-action-registry/register-bulk-action.mjs +0 -63
  255. package/esm2022/core/providers/dashboard-widget/register-dashboard-widget.mjs +0 -32
  256. package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +0 -102
@@ -3,7 +3,7 @@ import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, ViewCo
3
3
  import { BehaviorSubject, Subject, combineLatest, forkJoin, from, EMPTY, of } from 'rxjs';
4
4
  import { map, startWith, distinctUntilChanged, debounceTime, tap, takeUntil, switchMap, filter, take, shareReplay, merge, mergeMap, concatMap, mapTo } from 'rxjs/operators';
5
5
  import * as i1 from '@vendure/admin-ui/core';
6
- import { SelectionManager, HistoryEntryType, CUSTOMER_FRAGMENT, TypedBaseDetailComponent, SortOrder, EditNoteDialogComponent, CustomerDetailQueryDocument, createBulkDeleteAction, Permission, CUSTOMER_GROUP_FRAGMENT, TypedBaseListComponent, GetCustomerGroupListDocument, ModalService, DataService, NotificationService, CustomerListQueryDocument, LogicalOperator, PageComponent, detailBreadcrumb, detailComponentWithResolver, GetCustomerGroupDetailDocument, SharedModule, PageService } from '@vendure/admin-ui/core';
6
+ import { SelectionManager, HistoryEntryType, CUSTOMER_FRAGMENT, TypedBaseDetailComponent, getCustomFieldsDefaults, SortOrder, EditNoteDialogComponent, CustomerDetailQueryDocument, createBulkDeleteAction, Permission, CUSTOMER_GROUP_FRAGMENT, TypedBaseListComponent, GetCustomerGroupListDocument, ModalService, DataService, NotificationService, CustomerListQueryDocument, LogicalOperator, PageComponent, detailBreadcrumb, detailComponentWithResolver, GetCustomerGroupDetailDocument, SharedModule, PageService } from '@vendure/admin-ui/core';
7
7
  import * as i1$1 from '@angular/forms';
8
8
  import { FormControl, Validators, UntypedFormArray } from '@angular/forms';
9
9
  import * as i2 from '@angular/router';
@@ -83,11 +83,11 @@ class CustomerGroupMemberListComponent {
83
83
  });
84
84
  }
85
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerGroupMemberListComponent, deps: [{ token: i2.Router }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: { locationId: "locationId", members: "members", totalItems: "totalItems", route: "route", selectedMemberIds: "selectedMemberIds", activeGroup: "activeGroup" }, outputs: { selectionChange: "selectionChange", fetchParamsChange: "fetchParamsChange" }, ngImport: i0, template: "<vdr-data-table-2\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\" [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\" [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\" [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\" [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\" [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\">\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", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: { locationId: "locationId", members: "members", totalItems: "totalItems", route: "route", selectedMemberIds: "selectedMemberIds", activeGroup: "activeGroup" }, outputs: { selectionChange: "selectionChange", fetchParamsChange: "fetchParamsChange" }, ngImport: i0, template: "<vdr-data-table-2\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", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
87
87
  }
88
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerGroupMemberListComponent, decorators: [{
89
89
  type: Component,
90
- args: [{ selector: 'vdr-customer-group-member-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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\" [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\" [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\" [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\" [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\" [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\">\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" }]
90
+ args: [{ selector: 'vdr-customer-group-member-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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" }]
91
91
  }], ctorParameters: function () { return [{ type: i2.Router }, { type: i1.DataService }]; }, propDecorators: { locationId: [{
92
92
  type: Input
93
93
  }], members: [{
@@ -272,15 +272,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
272
272
  }], ctorParameters: function () { return [{ type: i1.DataService }]; } });
273
273
 
274
274
  class CustomerHistoryEntryHostComponent {
275
- constructor(componentFactoryResolver, historyEntryComponentService) {
276
- this.componentFactoryResolver = componentFactoryResolver;
275
+ constructor(historyEntryComponentService) {
277
276
  this.historyEntryComponentService = historyEntryComponentService;
278
277
  this.expandClick = new EventEmitter();
279
278
  }
280
279
  ngOnInit() {
281
280
  const componentType = this.historyEntryComponentService.getComponent(this.entry.type);
282
- const factory = this.componentFactoryResolver.resolveComponentFactory(componentType);
283
- const componentRef = this.portalRef.createComponent(factory);
281
+ const componentRef = this.portalRef.createComponent(componentType);
284
282
  componentRef.instance.entry = this.entry;
285
283
  componentRef.instance.customer = this.customer;
286
284
  this.instance = componentRef.instance;
@@ -289,7 +287,7 @@ class CustomerHistoryEntryHostComponent {
289
287
  ngOnDestroy() {
290
288
  this.componentRef?.destroy();
291
289
  }
292
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerHistoryEntryHostComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.HistoryEntryComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerHistoryEntryHostComponent, deps: [{ token: i1.HistoryEntryComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
293
291
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerHistoryEntryHostComponent, selector: "vdr-customer-history-entry-host", inputs: { entry: "entry", customer: "customer", expanded: "expanded" }, outputs: { expandClick: "expandClick" }, viewQueries: [{ propertyName: "portalRef", first: true, predicate: ["portal"], descendants: true, read: ViewContainerRef, static: true }], exportAs: ["historyEntry"], ngImport: i0, template: ` <vdr-timeline-entry
294
292
  [displayType]="instance.getDisplayType(entry)"
295
293
  [iconShape]="instance.getIconShape && instance.getIconShape(entry)"
@@ -319,7 +317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
319
317
  </vdr-timeline-entry>`,
320
318
  exportAs: 'historyEntry',
321
319
  }]
322
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.HistoryEntryComponentService }]; }, propDecorators: { entry: [{
320
+ }], ctorParameters: function () { return [{ type: i1.HistoryEntryComponentService }]; }, propDecorators: { entry: [{
323
321
  type: Input
324
322
  }], customer: [{
325
323
  type: Input
@@ -457,7 +455,7 @@ class CustomerDetailComponent extends TypedBaseDetailComponent {
457
455
  phoneNumber: '',
458
456
  emailAddress: ['', [Validators.required, Validators.email]],
459
457
  password: '',
460
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {})),
458
+ customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
461
459
  }),
462
460
  addresses: new UntypedFormArray([]),
463
461
  });
@@ -827,11 +825,11 @@ class CustomerDetailComponent extends TypedBaseDetailComponent {
827
825
  }).single$;
828
826
  }
829
827
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.FormBuilder }, { token: i1.DataService }, { token: i1.ModalService }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
830
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerDetailComponent, selector: "vdr-customer-detail", usesInheritance: true, ngImport: i0, template: "<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-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 <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 <button class=\"btn btn-secondary mt-2\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\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\" [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 [heading]=\"'common.created-at' | translate\" [hiddenByDefault]=\"true\">\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\" [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 [heading]=\"'order.order-type' | translate\" [hiddenByDefault]=\"true\">\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\">\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\">\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\">\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\">\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", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i1.OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: ["state"] }, { kind: "component", type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "component", type: AddressCardComponent, selector: "vdr-address-card", inputs: ["addressForm", "customFields", "availableCountries", "isDefaultBilling", "isDefaultShipping", "editable"], outputs: ["setAsDefaultShipping", "setAsDefaultBilling", "deleteAddress"] }, { kind: "component", type: CustomerHistoryComponent, selector: "vdr-customer-history", inputs: ["customer", "history"], outputs: ["addNote", "updateNote", "deleteNote"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
828
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerDetailComponent, selector: "vdr-customer-detail", usesInheritance: true, ngImport: i0, template: "<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-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 <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 <button class=\"btn btn-secondary mt-2\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\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 [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\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 [heading]=\"'order.order-type' | translate\" id=\"order-type\" [hiddenByDefault]=\"true\">\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", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i1.OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: ["state"] }, { kind: "component", type: i1.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "component", type: AddressCardComponent, selector: "vdr-address-card", inputs: ["addressForm", "customFields", "availableCountries", "isDefaultBilling", "isDefaultShipping", "editable"], outputs: ["setAsDefaultShipping", "setAsDefaultBilling", "deleteAddress"] }, { kind: "component", type: CustomerHistoryComponent, selector: "vdr-customer-history", inputs: ["customer", "history"], outputs: ["addNote", "updateNote", "deleteNote"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
831
829
  }
832
830
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerDetailComponent, decorators: [{
833
831
  type: Component,
834
- args: [{ selector: 'vdr-customer-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-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 <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 <button class=\"btn btn-secondary mt-2\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\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\" [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 [heading]=\"'common.created-at' | translate\" [hiddenByDefault]=\"true\">\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\" [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 [heading]=\"'order.order-type' | translate\" [hiddenByDefault]=\"true\">\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\">\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\">\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\">\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\">\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", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"] }]
832
+ args: [{ selector: 'vdr-customer-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-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 <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 <button class=\"btn btn-secondary mt-2\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\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 [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\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 [heading]=\"'order.order-type' | translate\" id=\"order-type\" [hiddenByDefault]=\"true\">\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", styles: [".last-login{margin-inline-start:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"] }]
835
833
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.FormBuilder }, { type: i1.DataService }, { type: i1.ModalService }, { type: i1.NotificationService }]; } });
836
834
 
837
835
  const CUSTOMER_GROUP_DETAIL_QUERY = gql `
@@ -857,7 +855,7 @@ class CustomerGroupDetailComponent extends TypedBaseDetailComponent {
857
855
  this.customFields = this.getCustomFieldConfig('CustomerGroup');
858
856
  this.detailForm = this.formBuilder.group({
859
857
  name: '',
860
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {})),
858
+ customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
861
859
  });
862
860
  }
863
861
  ngOnInit() {
@@ -924,7 +922,7 @@ class CustomerGroupDetailDialogComponent {
924
922
  ngOnInit() {
925
923
  this.form = this.formBuilder.group({
926
924
  name: [this.group.name, Validators.required],
927
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {})),
925
+ customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
928
926
  });
929
927
  if (this.customFields.length) {
930
928
  const customFieldsGroup = this.form.get('customFields');
@@ -1086,11 +1084,11 @@ class CustomerGroupListComponent extends TypedBaseListComponent {
1086
1084
  });
1087
1085
  }
1088
1086
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerGroupListComponent, deps: [{ token: i1.DataService }, { token: i1.NotificationService }, { token: i1.ModalService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1089
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerGroupListComponent, selector: "vdr-customer-group-list", usesInheritance: true, ngImport: i0, template: "<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-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\" [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\"\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\"\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\"\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\"\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", styles: ["vdr-empty-placeholder{flex:1}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.SplitViewComponent, selector: "vdr-split-view", inputs: ["rightPanelOpen"], outputs: ["closeClicked"] }, { kind: "directive", type: i1.SplitViewLeftDirective, selector: "[vdrSplitViewLeft]" }, { kind: "directive", type: i1.SplitViewRightDirective, selector: "[vdrSplitViewRight]", inputs: ["splitViewTitle"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["locationId", "members", "totalItems", "route", "selectedMemberIds", "activeGroup"], outputs: ["selectionChange", "fetchParamsChange"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1087
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerGroupListComponent, selector: "vdr-customer-group-list", usesInheritance: true, ngImport: i0, template: "<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-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", styles: ["vdr-empty-placeholder{flex:1}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.SplitViewComponent, selector: "vdr-split-view", inputs: ["rightPanelOpen"], outputs: ["closeClicked"] }, { kind: "directive", type: i1.SplitViewLeftDirective, selector: "[vdrSplitViewLeft]" }, { kind: "directive", type: i1.SplitViewRightDirective, selector: "[vdrSplitViewRight]", inputs: ["splitViewTitle"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: CustomerGroupMemberListComponent, selector: "vdr-customer-group-member-list", inputs: ["locationId", "members", "totalItems", "route", "selectedMemberIds", "activeGroup"], outputs: ["selectionChange", "fetchParamsChange"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1090
1088
  }
1091
1089
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerGroupListComponent, decorators: [{
1092
1090
  type: Component,
1093
- args: [{ selector: 'vdr-customer-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-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\" [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\"\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\"\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\"\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\"\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", styles: ["vdr-empty-placeholder{flex:1}\n"] }]
1091
+ args: [{ selector: 'vdr-customer-group-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-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", styles: ["vdr-empty-placeholder{flex:1}\n"] }]
1094
1092
  }], ctorParameters: function () { return [{ type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.ActivatedRoute }, { type: i2.Router }]; } });
1095
1093
 
1096
1094
  const removeCustomerGroupMembersBulkAction = {
@@ -1152,6 +1150,7 @@ const CUSTOMER_LIST_QUERY = gql `
1152
1150
  class CustomerListComponent extends TypedBaseListComponent {
1153
1151
  constructor() {
1154
1152
  super();
1153
+ this.customFields = this.getCustomFieldConfig('Customer');
1155
1154
  this.filters = this.createFilterCollection()
1156
1155
  .addIdFilter()
1157
1156
  .addDateFilters()
@@ -1173,6 +1172,7 @@ class CustomerListComponent extends TypedBaseListComponent {
1173
1172
  label: marker('customer.email-address'),
1174
1173
  filterField: 'emailAddress',
1175
1174
  })
1175
+ .addCustomFieldFilters(this.customFields)
1176
1176
  .connectToRoute(this.route);
1177
1177
  this.sorts = this.createSortCollection()
1178
1178
  .defaultSort('createdAt', 'DESC')
@@ -1180,6 +1180,7 @@ class CustomerListComponent extends TypedBaseListComponent {
1180
1180
  .addSort({ name: 'updatedAt' })
1181
1181
  .addSort({ name: 'lastName' })
1182
1182
  .addSort({ name: 'emailAddress' })
1183
+ .addCustomFieldSorts(this.customFields)
1183
1184
  .connectToRoute(this.route);
1184
1185
  this.configure({
1185
1186
  document: CustomerListQueryDocument,
@@ -1212,11 +1213,11 @@ class CustomerListComponent extends TypedBaseListComponent {
1212
1213
  });
1213
1214
  }
1214
1215
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1215
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerListComponent, selector: "vdr-customer-list", usesInheritance: true, ngImport: i0, template: "<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-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\" [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\"\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\"\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\" [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\">\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\" [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-data-table-2>\r\n", styles: [".search-input{margin-top:6px;min-width:300px}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }] }); }
1216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CustomerListComponent, selector: "vdr-customer-list", usesInheritance: true, ngImport: i0, template: "<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-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", styles: [".search-input{margin-top:6px;min-width:300px}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: CustomerStatusLabelComponent, selector: "vdr-customer-status-label", inputs: ["customer"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }] }); }
1216
1217
  }
1217
1218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CustomerListComponent, decorators: [{
1218
1219
  type: Component,
1219
- args: [{ selector: 'vdr-customer-list', template: "<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-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\" [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\"\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\"\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\" [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\">\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\" [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-data-table-2>\r\n", styles: [".search-input{margin-top:6px;min-width:300px}\n"] }]
1220
+ args: [{ selector: 'vdr-customer-list', template: "<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-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", styles: [".search-input{margin-top:6px;min-width:300px}\n"] }]
1220
1221
  }], ctorParameters: function () { return []; } });
1221
1222
 
1222
1223
  const createRoutes = (pageService) => [