@vendure/admin-ui 1.4.7 → 2.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1140) hide show
  1. package/catalog/catalog.module.d.ts +30 -0
  2. package/catalog/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +5 -2
  3. package/catalog/components/asset-detail/asset-detail.component.d.ts +6 -4
  4. package/catalog/components/asset-list/asset-list.component.d.ts +5 -2
  5. package/catalog/components/{product-assets/product-assets.component.d.ts → assets/assets.component.d.ts} +7 -10
  6. package/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +9 -7
  7. package/catalog/components/collection-contents/collection-contents.component.d.ts +5 -3
  8. package/catalog/components/collection-detail/collection-detail.component.d.ts +6 -3
  9. package/catalog/components/collection-list/collection-list.component.d.ts +6 -3
  10. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +7 -3
  11. package/catalog/components/collection-tree/collection-tree.component.d.ts +10 -25
  12. package/catalog/components/collection-tree/collection-tree.service.d.ts +33 -0
  13. package/catalog/components/collection-tree/collection-tree.types.d.ts +7 -0
  14. package/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +5 -2
  15. package/catalog/components/facet-detail/facet-detail.component.d.ts +7 -4
  16. package/catalog/components/facet-list/facet-list.component.d.ts +6 -3
  17. package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +3 -0
  18. package/catalog/components/option-value-input/option-value-input.component.d.ts +3 -0
  19. package/catalog/components/product-detail/product-detail.component.d.ts +17 -37
  20. package/catalog/components/product-detail/product-detail.types.d.ts +26 -0
  21. package/catalog/components/product-list/product-list.component.d.ts +6 -3
  22. package/catalog/components/product-options-editor/product-options-editor.component.d.ts +9 -4
  23. package/catalog/components/product-search-input/product-search-input.component.d.ts +9 -4
  24. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +5 -2
  25. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +24 -17
  26. package/catalog/components/product-variants-table/product-variants-table.component.d.ts +24 -11
  27. package/catalog/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +5 -2
  28. package/catalog/components/variant-price-detail/variant-price-detail.component.d.ts +3 -0
  29. package/catalog/package.json +5 -6
  30. package/catalog/providers/product-detail/product-detail.service.d.ts +214 -93
  31. package/catalog/providers/routing/asset-resolver.d.ts +5 -3
  32. package/catalog/providers/routing/collection-resolver.d.ts +5 -2
  33. package/catalog/providers/routing/facet-resolver.d.ts +5 -4
  34. package/catalog/providers/routing/product-resolver.d.ts +5 -2
  35. package/catalog/providers/routing/product-variants-resolver.d.ts +5 -2
  36. package/catalog/public_api.d.ts +4 -1
  37. package/catalog/vendure-admin-ui-catalog.d.ts +1 -0
  38. package/core/app.component.d.ts +3 -0
  39. package/core/app.component.module.d.ts +7 -0
  40. package/core/common/base-detail.component.d.ts +2 -2
  41. package/core/common/base-entity-resolver.d.ts +1 -1
  42. package/core/common/base-list.component.d.ts +10 -0
  43. package/core/common/generated-types.d.ts +12045 -4197
  44. package/core/common/utilities/flatten-facet-values.d.ts +2 -2
  45. package/core/common/version.d.ts +1 -1
  46. package/core/components/app-shell/app-shell.component.d.ts +3 -0
  47. package/core/components/breadcrumb/breadcrumb.component.d.ts +3 -0
  48. package/core/components/channel-switcher/channel-switcher.component.d.ts +3 -0
  49. package/core/components/main-nav/main-nav.component.d.ts +3 -0
  50. package/core/components/notification/notification.component.d.ts +3 -0
  51. package/core/components/overlay-host/overlay-host.component.d.ts +3 -0
  52. package/core/components/theme-switcher/theme-switcher.component.d.ts +3 -0
  53. package/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +4 -1
  54. package/core/components/user-menu/user-menu.component.d.ts +3 -0
  55. package/core/core.module.d.ts +18 -0
  56. package/core/data/client-state/client-defaults.d.ts +19 -7
  57. package/core/data/data.module.d.ts +6 -0
  58. package/core/data/definitions/administrator-definitions.d.ts +15 -15
  59. package/core/data/definitions/auth-definitions.d.ts +4 -4
  60. package/core/data/definitions/client-definitions.d.ts +16 -16
  61. package/core/data/definitions/collection-definitions.d.ts +9 -9
  62. package/core/data/definitions/customer-definitions.d.ts +22 -21
  63. package/core/data/definitions/facet-definitions.d.ts +10 -10
  64. package/core/data/definitions/order-definitions.d.ts +25 -25
  65. package/core/data/definitions/product-definitions.d.ts +44 -44
  66. package/core/data/definitions/promotion-definitions.d.ts +7 -7
  67. package/core/data/definitions/settings-definitions.d.ts +65 -65
  68. package/core/data/definitions/shared-definitions.d.ts +3 -3
  69. package/core/data/definitions/shipping-definitions.d.ts +9 -9
  70. package/core/data/providers/administrator-data.service.d.ts +15 -15
  71. package/core/data/providers/auth-data.service.d.ts +4 -3
  72. package/core/data/providers/base-data.service.d.ts +3 -0
  73. package/core/data/providers/client-data.service.d.ts +15 -14
  74. package/core/data/providers/collection-data.service.d.ts +11 -11
  75. package/core/data/providers/customer-data.service.d.ts +25 -24
  76. package/core/data/providers/data.service.d.ts +5 -2
  77. package/core/data/providers/facet-data.service.d.ts +12 -12
  78. package/core/data/providers/fetch-adapter.d.ts +3 -0
  79. package/core/data/providers/interceptor.d.ts +3 -0
  80. package/core/data/providers/order-data.service.d.ts +21 -21
  81. package/core/data/providers/product-data.service.d.ts +51 -51
  82. package/core/data/providers/promotion-data.service.d.ts +8 -8
  83. package/core/data/providers/settings-data.service.d.ts +52 -51
  84. package/core/data/providers/shipping-method-data.service.d.ts +12 -12
  85. package/core/data/query-result.d.ts +1 -1
  86. package/core/data/server-config.d.ts +5 -2
  87. package/core/package.json +5 -6
  88. package/core/providers/auth/auth.service.d.ts +5 -2
  89. package/core/providers/component-registry/component-registry.service.d.ts +3 -0
  90. package/core/providers/custom-detail-component/custom-detail-component.service.d.ts +3 -0
  91. package/core/providers/custom-field-component/custom-field-component.service.d.ts +3 -0
  92. package/core/providers/dashboard-widget/dashboard-widget.service.d.ts +3 -0
  93. package/core/providers/guard/auth.guard.d.ts +3 -0
  94. package/core/providers/health-check/health-check.service.d.ts +3 -0
  95. package/core/providers/i18n/custom-message-format-compiler.d.ts +3 -0
  96. package/core/providers/i18n/i18n.service.d.ts +3 -0
  97. package/core/providers/job-queue/job-queue.service.d.ts +3 -0
  98. package/core/providers/local-storage/local-storage.service.d.ts +3 -0
  99. package/core/providers/modal/modal.service.d.ts +4 -67
  100. package/core/providers/modal/modal.types.d.ts +67 -0
  101. package/core/providers/nav-builder/nav-builder.service.d.ts +3 -0
  102. package/core/providers/notification/notification.service.d.ts +3 -0
  103. package/core/providers/overlay-host/overlay-host.service.d.ts +3 -0
  104. package/core/public_api.d.ts +3 -0
  105. package/core/shared/components/action-bar/action-bar.component.d.ts +7 -0
  106. package/core/shared/components/action-bar-items/action-bar-items.component.d.ts +3 -0
  107. package/core/shared/components/address-form/address-form.component.d.ts +5 -2
  108. package/core/shared/components/affixed-input/affixed-input.component.d.ts +3 -0
  109. package/core/shared/components/affixed-input/percentage-suffix-input.component.d.ts +3 -0
  110. package/core/shared/components/asset-file-input/asset-file-input.component.d.ts +3 -0
  111. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +46 -26
  112. package/core/shared/components/asset-gallery/asset-gallery.types.d.ts +3 -0
  113. package/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +7 -3
  114. package/core/shared/components/asset-preview/asset-preview.component.d.ts +5 -3
  115. package/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +7 -5
  116. package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +8 -0
  117. package/core/shared/components/asset-search-input/asset-search-input.component.d.ts +5 -2
  118. package/core/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +3 -0
  119. package/core/shared/components/channel-badge/channel-badge.component.d.ts +3 -0
  120. package/core/shared/components/chip/chip.component.d.ts +3 -0
  121. package/core/shared/components/configurable-input/configurable-input.component.d.ts +3 -0
  122. package/core/shared/components/currency-input/currency-input.component.d.ts +3 -0
  123. package/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +3 -0
  124. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +3 -0
  125. package/core/shared/components/customer-label/customer-label.component.d.ts +5 -2
  126. package/core/shared/components/data-table/data-table-column.component.d.ts +3 -0
  127. package/core/shared/components/data-table/data-table.component.d.ts +3 -0
  128. package/core/shared/components/datetime-picker/datetime-picker.component.d.ts +3 -0
  129. package/core/shared/components/datetime-picker/datetime-picker.service.d.ts +3 -0
  130. package/core/shared/components/dropdown/dropdown-item.directive.d.ts +3 -0
  131. package/core/shared/components/dropdown/dropdown-menu.component.d.ts +3 -0
  132. package/core/shared/components/dropdown/dropdown-trigger.directive.d.ts +3 -0
  133. package/core/shared/components/dropdown/dropdown.component.d.ts +3 -0
  134. package/core/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +4 -1
  135. package/core/shared/components/empty-placeholder/empty-placeholder.component.d.ts +3 -0
  136. package/core/shared/components/entity-info/entity-info.component.d.ts +3 -0
  137. package/core/shared/components/extension-host/extension-host.component.d.ts +3 -0
  138. package/core/shared/components/extension-host/extension-host.service.d.ts +3 -0
  139. package/core/shared/components/facet-value-chip/facet-value-chip.component.d.ts +5 -2
  140. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +8 -5
  141. package/core/shared/components/focal-point-control/focal-point-control.component.d.ts +3 -0
  142. package/core/shared/components/form-field/form-field-control.directive.d.ts +3 -0
  143. package/core/shared/components/form-field/form-field.component.d.ts +3 -0
  144. package/core/shared/components/form-item/form-item.component.d.ts +3 -0
  145. package/core/shared/components/formatted-address/formatted-address.component.d.ts +3 -0
  146. package/core/shared/components/help-tooltip/help-tooltip.component.d.ts +3 -0
  147. package/core/shared/components/history-entry-detail/history-entry-detail.component.d.ts +3 -0
  148. package/core/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +3 -0
  149. package/core/shared/components/labeled-data/labeled-data.component.d.ts +3 -0
  150. package/core/shared/components/language-selector/language-selector.component.d.ts +3 -0
  151. package/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +6 -3
  152. package/core/shared/components/modal-dialog/dialog-buttons.directive.d.ts +3 -0
  153. package/core/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +3 -0
  154. package/core/shared/components/modal-dialog/dialog-title.directive.d.ts +3 -0
  155. package/core/shared/components/modal-dialog/modal-dialog.component.d.ts +4 -1
  156. package/core/shared/components/object-tree/object-tree.component.d.ts +3 -0
  157. package/core/shared/components/order-state-label/order-state-label.component.d.ts +4 -1
  158. package/core/shared/components/pagination-controls/pagination-controls.component.d.ts +3 -0
  159. package/core/shared/components/product-selector/product-selector.component.d.ts +23 -13
  160. package/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +4 -1
  161. package/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +4 -1
  162. package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +3 -0
  163. package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +3 -0
  164. package/core/shared/components/select-toggle/select-toggle.component.d.ts +3 -0
  165. package/core/shared/components/simple-dialog/simple-dialog.component.d.ts +4 -1
  166. package/core/shared/components/status-badge/status-badge.component.d.ts +3 -0
  167. package/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +3 -0
  168. package/core/shared/components/table-row-action/table-row-action.component.d.ts +3 -0
  169. package/core/shared/components/tag-selector/tag-selector.component.d.ts +3 -0
  170. package/core/shared/components/timeline-entry/timeline-entry.component.d.ts +3 -0
  171. package/core/shared/components/title-input/title-input.component.d.ts +3 -0
  172. package/core/shared/components/ui-extension-point/ui-extension-point.component.d.ts +3 -0
  173. package/core/shared/directives/disabled.directive.d.ts +3 -0
  174. package/core/shared/directives/if-default-channel-active.directive.d.ts +3 -0
  175. package/core/shared/directives/if-directive-base.d.ts +3 -0
  176. package/core/shared/directives/if-multichannel.directive.d.ts +3 -0
  177. package/core/shared/directives/if-permissions.directive.d.ts +3 -0
  178. package/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +3 -0
  179. package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +3 -0
  180. package/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +3 -0
  181. package/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +7 -3
  182. package/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +3 -0
  183. package/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +3 -0
  184. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +5 -2
  185. package/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +3 -0
  186. package/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +3 -0
  187. package/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +6 -3
  188. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +1 -1
  189. package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +6 -3
  190. package/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +6 -2
  191. package/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +7 -3
  192. package/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +7 -3
  193. package/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +7 -0
  194. package/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +3 -0
  195. package/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +4 -1
  196. package/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +3 -0
  197. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +3 -0
  198. package/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +3 -0
  199. package/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +3 -0
  200. package/core/shared/pipes/asset-preview.pipe.d.ts +3 -0
  201. package/core/shared/pipes/channel-label.pipe.d.ts +3 -0
  202. package/core/shared/pipes/custom-field-label.pipe.d.ts +3 -0
  203. package/core/shared/pipes/duration.pipe.d.ts +3 -0
  204. package/core/shared/pipes/file-size.pipe.d.ts +3 -0
  205. package/core/shared/pipes/has-permission.pipe.d.ts +3 -0
  206. package/core/shared/pipes/locale-base.pipe.d.ts +3 -0
  207. package/core/shared/pipes/locale-currency-name.pipe.d.ts +3 -0
  208. package/core/shared/pipes/locale-currency.pipe.d.ts +3 -0
  209. package/core/shared/pipes/locale-date.pipe.d.ts +3 -0
  210. package/core/shared/pipes/locale-language-name.pipe.d.ts +3 -0
  211. package/core/shared/pipes/locale-region-name.pipe.d.ts +3 -0
  212. package/core/shared/pipes/sentence-case.pipe.d.ts +3 -0
  213. package/core/shared/pipes/sort.pipe.d.ts +3 -0
  214. package/core/shared/pipes/state-i18n-token.pipe.d.ts +3 -0
  215. package/core/shared/pipes/string-to-color.pipe.d.ts +3 -0
  216. package/core/shared/pipes/time-ago.pipe.d.ts +3 -0
  217. package/core/shared/providers/routing/can-deactivate-detail-guard.d.ts +3 -0
  218. package/core/shared/shared.module.d.ts +118 -0
  219. package/core/vendure-admin-ui-core.d.ts +1 -0
  220. package/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +6 -3
  221. package/customer/components/address-card/address-card.component.d.ts +7 -2
  222. package/customer/components/address-detail-dialog/address-detail-dialog.component.d.ts +5 -2
  223. package/customer/components/customer-detail/customer-detail.component.d.ts +10 -5
  224. package/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +3 -0
  225. package/customer/components/customer-group-list/customer-group-list.component.d.ts +10 -7
  226. package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +3 -0
  227. package/customer/components/customer-history/customer-history.component.d.ts +12 -7
  228. package/customer/components/customer-list/customer-list.component.d.ts +7 -5
  229. package/customer/components/customer-status-label/customer-status-label.component.d.ts +5 -2
  230. package/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +5 -2
  231. package/customer/customer.module.d.ts +17 -0
  232. package/customer/package.json +5 -6
  233. package/customer/providers/routing/customer-resolver.d.ts +5 -4
  234. package/customer/vendure-admin-ui-customer.d.ts +1 -0
  235. package/dashboard/components/dashboard/dashboard.component.d.ts +3 -0
  236. package/dashboard/components/dashboard-widget/dashboard-widget.component.d.ts +3 -0
  237. package/dashboard/dashboard.module.d.ts +8 -0
  238. package/dashboard/package.json +5 -6
  239. package/dashboard/vendure-admin-ui-dashboard.d.ts +1 -0
  240. package/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +9 -2
  241. package/dashboard/widgets/order-summary-widget/order-summary-widget.component.d.ts +7 -0
  242. package/dashboard/widgets/test-widget/test-widget.component.d.ts +6 -0
  243. package/dashboard/widgets/welcome-widget/welcome-widget.component.d.ts +9 -2
  244. package/esm2020/catalog/catalog.module.mjs +116 -0
  245. package/esm2020/catalog/catalog.routes.mjs +174 -0
  246. package/esm2020/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +30 -0
  247. package/esm2020/catalog/components/asset-detail/asset-detail.component.mjs +66 -0
  248. package/esm2020/catalog/components/asset-list/asset-list.component.mjs +120 -0
  249. package/esm2020/catalog/components/assets/assets.component.mjs +100 -0
  250. package/esm2020/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +104 -0
  251. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +76 -0
  252. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +210 -0
  253. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +120 -0
  254. package/esm2020/catalog/components/collection-tree/array-to-tree.mjs +56 -0
  255. package/esm2020/catalog/components/collection-tree/collection-tree-node.component.mjs +99 -0
  256. package/esm2020/catalog/components/collection-tree/collection-tree.component.mjs +44 -0
  257. package/esm2020/catalog/components/collection-tree/collection-tree.service.mjs +68 -0
  258. package/esm2020/catalog/components/collection-tree/collection-tree.types.mjs +2 -0
  259. package/esm2020/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +23 -0
  260. package/esm2020/catalog/components/facet-detail/facet-detail.component.mjs +321 -0
  261. package/esm2020/catalog/components/facet-list/facet-list.component.mjs +104 -0
  262. package/esm2020/catalog/components/generate-product-variants/generate-product-variants.component.mjs +79 -0
  263. package/esm2020/catalog/components/option-value-input/option-value-input.component.mjs +97 -0
  264. package/esm2020/catalog/components/product-detail/product-detail.component.mjs +520 -0
  265. package/esm2020/catalog/components/product-detail/product-detail.types.mjs +2 -0
  266. package/esm2020/catalog/components/product-list/product-list.component.mjs +150 -0
  267. package/esm2020/catalog/components/product-options-editor/product-options-editor.component.mjs +151 -0
  268. package/esm2020/catalog/components/product-search-input/product-search-input.component.mjs +107 -0
  269. package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +313 -0
  270. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +226 -0
  271. package/esm2020/catalog/components/product-variants-table/product-variants-table.component.mjs +72 -0
  272. package/esm2020/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +64 -0
  273. package/esm2020/catalog/components/variant-price-detail/variant-price-detail.component.mjs +61 -0
  274. package/esm2020/catalog/providers/product-detail/product-detail.service.mjs +224 -0
  275. package/{esm2015/catalog/providers/product-detail/replace-last.js → esm2020/catalog/providers/product-detail/replace-last.mjs} +0 -0
  276. package/esm2020/catalog/providers/routing/asset-resolver.mjs +33 -0
  277. package/esm2020/catalog/providers/routing/collection-resolver.mjs +35 -0
  278. package/esm2020/catalog/providers/routing/facet-resolver.mjs +30 -0
  279. package/esm2020/catalog/providers/routing/product-resolver.mjs +39 -0
  280. package/esm2020/catalog/providers/routing/product-variants-resolver.mjs +27 -0
  281. package/esm2020/catalog/public_api.mjs +39 -0
  282. package/{esm2015/catalog/vendure-admin-ui-catalog.js → esm2020/catalog/vendure-admin-ui-catalog.mjs} +0 -0
  283. package/esm2020/core/app.component.mjs +79 -0
  284. package/esm2020/core/app.component.module.mjs +19 -0
  285. package/{esm2015/core/app.config.js → esm2020/core/app.config.mjs} +0 -0
  286. package/esm2020/core/common/base-detail.component.mjs +108 -0
  287. package/{esm2015/core/common/base-entity-resolver.js → esm2020/core/common/base-entity-resolver.mjs} +2 -2
  288. package/esm2020/core/common/base-list.component.mjs +159 -0
  289. package/{esm2015/core/common/component-registry-types.js → esm2020/core/common/component-registry-types.mjs} +0 -0
  290. package/{esm2015/core/common/deactivate-aware.js → esm2020/core/common/deactivate-aware.mjs} +0 -0
  291. package/{esm2015/core/common/detail-breadcrumb.js → esm2020/core/common/detail-breadcrumb.mjs} +0 -0
  292. package/esm2020/core/common/generated-types.mjs +954 -0
  293. package/{esm2015/core/common/introspection-result-wrapper.js → esm2020/core/common/introspection-result-wrapper.mjs} +0 -0
  294. package/esm2020/core/common/introspection-result.mjs +187 -0
  295. package/{esm2015/core/common/single-search-selection-model.js → esm2020/core/common/single-search-selection-model.mjs} +0 -0
  296. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +83 -0
  297. package/esm2020/core/common/utilities/create-updated-translatable.mjs +75 -0
  298. package/esm2020/core/common/utilities/find-translation.mjs +9 -0
  299. package/esm2020/core/common/utilities/flatten-facet-values.mjs +4 -0
  300. package/esm2020/core/common/utilities/get-default-ui-language.mjs +12 -0
  301. package/{esm2015/core/common/utilities/interpolate-description.js → esm2020/core/common/utilities/interpolate-description.mjs} +0 -0
  302. package/{esm2015/core/common/utilities/string-to-color.js → esm2020/core/common/utilities/string-to-color.mjs} +0 -0
  303. package/{esm2015/core/common/version.js → esm2020/core/common/version.mjs} +2 -2
  304. package/esm2020/core/components/app-shell/app-shell.component.mjs +76 -0
  305. package/esm2020/core/components/breadcrumb/breadcrumb.component.mjs +124 -0
  306. package/esm2020/core/components/channel-switcher/channel-switcher.component.mjs +58 -0
  307. package/esm2020/core/components/main-nav/main-nav.component.mjs +270 -0
  308. package/esm2020/core/components/notification/notification.component.mjs +76 -0
  309. package/esm2020/core/components/overlay-host/overlay-host.component.mjs +22 -0
  310. package/esm2020/core/components/theme-switcher/theme-switcher.component.mjs +29 -0
  311. package/esm2020/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +305 -0
  312. package/esm2020/core/components/user-menu/user-menu.component.mjs +37 -0
  313. package/esm2020/core/core.module.mjs +145 -0
  314. package/{esm2015/core/data/check-jobs-link.js → esm2020/core/data/check-jobs-link.mjs} +0 -0
  315. package/{esm2015/core/data/client-state/client-defaults.js → esm2020/core/data/client-state/client-defaults.mjs} +1 -1
  316. package/esm2020/core/data/client-state/client-resolvers.mjs +131 -0
  317. package/esm2020/core/data/data.module.mjs +126 -0
  318. package/{esm2015/core/data/definitions/administrator-definitions.js → esm2020/core/data/definitions/administrator-definitions.mjs} +0 -0
  319. package/{esm2015/core/data/definitions/auth-definitions.js → esm2020/core/data/definitions/auth-definitions.mjs} +0 -0
  320. package/{esm2015/core/data/definitions/client-definitions.js → esm2020/core/data/definitions/client-definitions.mjs} +0 -0
  321. package/{esm2015/core/data/definitions/collection-definitions.js → esm2020/core/data/definitions/collection-definitions.mjs} +0 -0
  322. package/esm2020/core/data/definitions/customer-definitions.mjs +265 -0
  323. package/{esm2015/core/data/definitions/facet-definitions.js → esm2020/core/data/definitions/facet-definitions.mjs} +0 -0
  324. package/{esm2015/core/data/definitions/order-definitions.js → esm2020/core/data/definitions/order-definitions.mjs} +0 -0
  325. package/{esm2015/core/data/definitions/product-definitions.js → esm2020/core/data/definitions/product-definitions.mjs} +0 -0
  326. package/{esm2015/core/data/definitions/promotion-definitions.js → esm2020/core/data/definitions/promotion-definitions.mjs} +0 -0
  327. package/{esm2015/core/data/definitions/settings-definitions.js → esm2020/core/data/definitions/settings-definitions.mjs} +0 -0
  328. package/{esm2015/core/data/definitions/shared-definitions.js → esm2020/core/data/definitions/shared-definitions.mjs} +0 -0
  329. package/{esm2015/core/data/definitions/shipping-definitions.js → esm2020/core/data/definitions/shipping-definitions.mjs} +0 -0
  330. package/{esm2015/core/data/omit-typename-link.js → esm2020/core/data/omit-typename-link.mjs} +0 -0
  331. package/esm2020/core/data/providers/administrator-data.service.mjs +63 -0
  332. package/esm2020/core/data/providers/auth-data.service.mjs +20 -0
  333. package/esm2020/core/data/providers/base-data.service.mjs +69 -0
  334. package/esm2020/core/data/providers/client-data.service.mjs +75 -0
  335. package/esm2020/core/data/providers/collection-data.service.mjs +72 -0
  336. package/esm2020/core/data/providers/customer-data.service.mjs +120 -0
  337. package/esm2020/core/data/providers/data.service.mjs +90 -0
  338. package/esm2020/core/data/providers/facet-data.service.mjs +60 -0
  339. package/esm2020/core/data/providers/fetch-adapter.mjs +36 -0
  340. package/esm2020/core/data/providers/interceptor.mjs +136 -0
  341. package/esm2020/core/data/providers/order-data.service.mjs +100 -0
  342. package/esm2020/core/data/providers/product-data.service.mjs +240 -0
  343. package/esm2020/core/data/providers/promotion-data.service.mjs +36 -0
  344. package/esm2020/core/data/providers/settings-data.service.mjs +235 -0
  345. package/esm2020/core/data/providers/shipping-method-data.service.mjs +66 -0
  346. package/{esm2015/core/data/query-result.js → esm2020/core/data/query-result.mjs} +1 -1
  347. package/esm2020/core/data/server-config.mjs +74 -0
  348. package/esm2020/core/data/utils/add-custom-fields.mjs +84 -0
  349. package/{esm2015/core/data/utils/get-server-location.js → esm2020/core/data/utils/get-server-location.mjs} +0 -0
  350. package/{esm2015/core/data/utils/remove-readonly-custom-fields.js → esm2020/core/data/utils/remove-readonly-custom-fields.mjs} +1 -1
  351. package/esm2020/core/data/utils/transform-relation-custom-field-inputs.mjs +46 -0
  352. package/esm2020/core/providers/auth/auth.service.mjs +104 -0
  353. package/esm2020/core/providers/component-registry/component-registry.service.mjs +25 -0
  354. package/{esm2015/core/providers/custom-detail-component/custom-detail-component-types.js → esm2020/core/providers/custom-detail-component/custom-detail-component-types.mjs} +0 -0
  355. package/esm2020/core/providers/custom-detail-component/custom-detail-component.service.mjs +44 -0
  356. package/esm2020/core/providers/custom-field-component/custom-field-component.service.mjs +45 -0
  357. package/{esm2015/core/providers/dashboard-widget/dashboard-widget-types.js → esm2020/core/providers/dashboard-widget/dashboard-widget-types.mjs} +0 -0
  358. package/esm2020/core/providers/dashboard-widget/dashboard-widget.service.mjs +98 -0
  359. package/{esm2015/core/providers/dashboard-widget/register-dashboard-widget.js → esm2020/core/providers/dashboard-widget/register-dashboard-widget.mjs} +0 -0
  360. package/esm2020/core/providers/guard/auth.guard.mjs +38 -0
  361. package/esm2020/core/providers/health-check/health-check.service.mjs +36 -0
  362. package/{esm2015/core/providers/i18n/custom-http-loader.js → esm2020/core/providers/i18n/custom-http-loader.mjs} +0 -0
  363. package/esm2020/core/providers/i18n/custom-message-format-compiler.mjs +31 -0
  364. package/esm2020/core/providers/i18n/i18n.service.mjs +54 -0
  365. package/esm2020/core/providers/job-queue/job-queue.service.mjs +91 -0
  366. package/esm2020/core/providers/local-storage/local-storage.service.mjs +77 -0
  367. package/esm2020/core/providers/modal/modal.service.mjs +97 -0
  368. package/esm2020/core/providers/modal/modal.types.mjs +2 -0
  369. package/{esm2015/core/providers/nav-builder/nav-builder-types.js → esm2020/core/providers/nav-builder/nav-builder-types.mjs} +0 -0
  370. package/esm2020/core/providers/nav-builder/nav-builder.service.mjs +268 -0
  371. package/esm2020/core/providers/notification/notification.service.mjs +157 -0
  372. package/esm2020/core/providers/overlay-host/overlay-host.service.mjs +48 -0
  373. package/esm2020/core/public_api.mjs +220 -0
  374. package/esm2020/core/shared/components/action-bar/action-bar.component.mjs +57 -0
  375. package/esm2020/core/shared/components/action-bar-items/action-bar-items.component.mjs +78 -0
  376. package/esm2020/core/shared/components/address-form/address-form.component.mjs +23 -0
  377. package/esm2020/core/shared/components/affixed-input/affixed-input.component.mjs +19 -0
  378. package/esm2020/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +97 -0
  379. package/esm2020/core/shared/components/asset-file-input/asset-file-input.component.mjs +97 -0
  380. package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +110 -0
  381. package/esm2020/core/shared/components/asset-gallery/asset-gallery.types.mjs +2 -0
  382. package/esm2020/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +144 -0
  383. package/esm2020/core/shared/components/asset-preview/asset-preview.component.mjs +189 -0
  384. package/esm2020/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +34 -0
  385. package/esm2020/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +26 -0
  386. package/esm2020/core/shared/components/asset-search-input/asset-search-input.component.mjs +106 -0
  387. package/esm2020/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +116 -0
  388. package/esm2020/core/shared/components/channel-badge/channel-badge.component.mjs +19 -0
  389. package/esm2020/core/shared/components/chip/chip.component.mjs +47 -0
  390. package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +144 -0
  391. package/esm2020/core/shared/components/currency-input/currency-input.component.mjs +152 -0
  392. package/esm2020/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +40 -0
  393. package/esm2020/core/shared/components/custom-field-control/custom-field-control.component.mjs +83 -0
  394. package/esm2020/core/shared/components/customer-label/customer-label.component.mjs +17 -0
  395. package/esm2020/core/shared/components/data-table/data-table-column.component.mjs +29 -0
  396. package/esm2020/core/shared/components/data-table/data-table.component.mjs +124 -0
  397. package/{esm2015/core/shared/components/datetime-picker/constants.js → esm2020/core/shared/components/datetime-picker/constants.mjs} +0 -0
  398. package/esm2020/core/shared/components/datetime-picker/datetime-picker.component.mjs +226 -0
  399. package/esm2020/core/shared/components/datetime-picker/datetime-picker.service.mjs +201 -0
  400. package/{esm2015/core/shared/components/datetime-picker/types.js → esm2020/core/shared/components/datetime-picker/types.mjs} +0 -0
  401. package/esm2020/core/shared/components/dropdown/dropdown-item.directive.mjs +25 -0
  402. package/esm2020/core/shared/components/dropdown/dropdown-menu.component.mjs +127 -0
  403. package/esm2020/core/shared/components/dropdown/dropdown-trigger.directive.mjs +25 -0
  404. package/esm2020/core/shared/components/dropdown/dropdown.component.mjs +58 -0
  405. package/esm2020/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +32 -0
  406. package/esm2020/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +16 -0
  407. package/esm2020/core/shared/components/entity-info/entity-info.component.mjs +26 -0
  408. package/{esm2015/core/shared/components/extension-host/extension-host-config.js → esm2020/core/shared/components/extension-host/extension-host-config.mjs} +0 -0
  409. package/esm2020/core/shared/components/extension-host/extension-host.component.mjs +80 -0
  410. package/esm2020/core/shared/components/extension-host/extension-host.service.mjs +99 -0
  411. package/{esm2015/core/shared/components/extension-host/host-external-frame.js → esm2020/core/shared/components/extension-host/host-external-frame.mjs} +0 -0
  412. package/esm2020/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +26 -0
  413. package/esm2020/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +121 -0
  414. package/esm2020/core/shared/components/focal-point-control/focal-point-control.component.mjs +71 -0
  415. package/esm2020/core/shared/components/form-field/form-field-control.directive.mjs +37 -0
  416. package/esm2020/core/shared/components/form-field/form-field.component.mjs +70 -0
  417. package/esm2020/core/shared/components/form-item/form-item.component.mjs +18 -0
  418. package/esm2020/core/shared/components/formatted-address/formatted-address.component.mjs +38 -0
  419. package/esm2020/core/shared/components/help-tooltip/help-tooltip.component.mjs +16 -0
  420. package/esm2020/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +16 -0
  421. package/esm2020/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +25 -0
  422. package/esm2020/core/shared/components/labeled-data/labeled-data.component.mjs +13 -0
  423. package/esm2020/core/shared/components/language-selector/language-selector.component.mjs +31 -0
  424. package/esm2020/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +61 -0
  425. package/esm2020/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +23 -0
  426. package/esm2020/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +31 -0
  427. package/esm2020/core/shared/components/modal-dialog/dialog-title.directive.mjs +23 -0
  428. package/esm2020/core/shared/components/modal-dialog/modal-dialog.component.mjs +60 -0
  429. package/esm2020/core/shared/components/object-tree/object-tree.component.mjs +56 -0
  430. package/esm2020/core/shared/components/order-state-label/order-state-label.component.mjs +46 -0
  431. package/esm2020/core/shared/components/pagination-controls/pagination-controls.component.mjs +26 -0
  432. package/esm2020/core/shared/components/product-selector/product-selector.component.mjs +62 -0
  433. package/esm2020/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +37 -0
  434. package/esm2020/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +34 -0
  435. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/inputrules.js → esm2020/core/shared/components/rich-text-editor/prosemirror/inputrules.mjs} +0 -0
  436. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/keymap.js → esm2020/core/shared/components/rich-text-editor/prosemirror/keymap.mjs} +0 -0
  437. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/images.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/images.mjs} +0 -0
  438. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/links.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs} +0 -0
  439. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs} +0 -0
  440. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs} +0 -0
  441. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.js → esm2020/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.mjs} +0 -0
  442. package/esm2020/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +112 -0
  443. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/types.js → esm2020/core/shared/components/rich-text-editor/prosemirror/types.mjs} +0 -0
  444. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/utils.js → esm2020/core/shared/components/rich-text-editor/prosemirror/utils.mjs} +0 -0
  445. package/esm2020/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +93 -0
  446. package/esm2020/core/shared/components/select-toggle/select-toggle.component.mjs +32 -0
  447. package/esm2020/core/shared/components/simple-dialog/simple-dialog.component.mjs +24 -0
  448. package/esm2020/core/shared/components/status-badge/status-badge.component.mjs +16 -0
  449. package/esm2020/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +54 -0
  450. package/esm2020/core/shared/components/table-row-action/table-row-action.component.mjs +28 -0
  451. package/esm2020/core/shared/components/tag-selector/tag-selector.component.mjs +60 -0
  452. package/esm2020/core/shared/components/timeline-entry/timeline-entry.component.mjs +52 -0
  453. package/esm2020/core/shared/components/title-input/title-input.component.mjs +21 -0
  454. package/esm2020/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +34 -0
  455. package/esm2020/core/shared/directives/disabled.directive.mjs +41 -0
  456. package/esm2020/core/shared/directives/if-default-channel-active.directive.mjs +39 -0
  457. package/esm2020/core/shared/directives/if-directive-base.mjs +73 -0
  458. package/esm2020/core/shared/directives/if-multichannel.directive.mjs +45 -0
  459. package/esm2020/core/shared/directives/if-permissions.directive.mjs +76 -0
  460. package/esm2020/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +23 -0
  461. package/esm2020/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +120 -0
  462. package/esm2020/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +31 -0
  463. package/esm2020/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +42 -0
  464. package/esm2020/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +32 -0
  465. package/esm2020/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +265 -0
  466. package/esm2020/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +35 -0
  467. package/esm2020/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +39 -0
  468. package/esm2020/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +21 -0
  469. package/esm2020/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +61 -0
  470. package/{esm2015/core/shared/dynamic-form-inputs/register-dynamic-input-components.js → esm2020/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs} +0 -0
  471. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +69 -0
  472. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +70 -0
  473. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +89 -0
  474. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +89 -0
  475. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +60 -0
  476. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +28 -0
  477. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +14 -0
  478. package/esm2020/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +21 -0
  479. package/esm2020/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +31 -0
  480. package/esm2020/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +28 -0
  481. package/esm2020/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +24 -0
  482. package/esm2020/core/shared/pipes/asset-preview.pipe.mjs +42 -0
  483. package/esm2020/core/shared/pipes/channel-label.pipe.mjs +23 -0
  484. package/esm2020/core/shared/pipes/custom-field-label.pipe.mjs +47 -0
  485. package/esm2020/core/shared/pipes/duration.pipe.mjs +49 -0
  486. package/esm2020/core/shared/pipes/file-size.pipe.mjs +47 -0
  487. package/esm2020/core/shared/pipes/has-permission.pipe.mjs +65 -0
  488. package/esm2020/core/shared/pipes/locale-base.pipe.mjs +55 -0
  489. package/esm2020/core/shared/pipes/locale-currency-name.pipe.mjs +61 -0
  490. package/esm2020/core/shared/pipes/locale-currency.pipe.mjs +44 -0
  491. package/esm2020/core/shared/pipes/locale-date.pipe.mjs +84 -0
  492. package/esm2020/core/shared/pipes/locale-language-name.pipe.mjs +51 -0
  493. package/esm2020/core/shared/pipes/locale-region-name.pipe.mjs +51 -0
  494. package/esm2020/core/shared/pipes/sentence-case.pipe.mjs +30 -0
  495. package/esm2020/core/shared/pipes/sort.pipe.mjs +34 -0
  496. package/esm2020/core/shared/pipes/state-i18n-token.pipe.mjs +50 -0
  497. package/esm2020/core/shared/pipes/string-to-color.pipe.mjs +18 -0
  498. package/esm2020/core/shared/pipes/time-ago.pipe.mjs +52 -0
  499. package/esm2020/core/shared/providers/routing/can-deactivate-detail-guard.mjs +35 -0
  500. package/esm2020/core/shared/shared.module.mjs +520 -0
  501. package/{esm2015/core/validators/unicode-pattern.validator.js → esm2020/core/validators/unicode-pattern.validator.mjs} +0 -0
  502. package/{esm2015/core/vendure-admin-ui-core.js → esm2020/core/vendure-admin-ui-core.mjs} +0 -0
  503. package/esm2020/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +41 -0
  504. package/esm2020/customer/components/address-card/address-card.component.mjs +97 -0
  505. package/esm2020/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +28 -0
  506. package/esm2020/customer/components/customer-detail/customer-detail.component.mjs +414 -0
  507. package/esm2020/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +45 -0
  508. package/esm2020/customer/components/customer-group-list/customer-group-list.component.mjs +181 -0
  509. package/esm2020/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +103 -0
  510. package/esm2020/customer/components/customer-history/customer-history.component.mjs +83 -0
  511. package/esm2020/customer/components/customer-list/customer-list.component.mjs +80 -0
  512. package/esm2020/customer/components/customer-status-label/customer-status-label.component.mjs +17 -0
  513. package/esm2020/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +31 -0
  514. package/esm2020/customer/customer.module.mjs +53 -0
  515. package/esm2020/customer/customer.routes.mjs +42 -0
  516. package/esm2020/customer/providers/routing/customer-resolver.mjs +31 -0
  517. package/{esm2015/customer/public_api.js → esm2020/customer/public_api.mjs} +0 -0
  518. package/{esm2015/customer/vendure-admin-ui-customer.js → esm2020/customer/vendure-admin-ui-customer.mjs} +0 -0
  519. package/esm2020/dashboard/components/dashboard/dashboard.component.mjs +121 -0
  520. package/esm2020/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +35 -0
  521. package/esm2020/dashboard/dashboard.module.mjs +29 -0
  522. package/{esm2015/dashboard/dashboard.routes.js → esm2020/dashboard/dashboard.routes.mjs} +0 -0
  523. package/esm2020/dashboard/default-widgets.mjs +32 -0
  524. package/{esm2015/dashboard/public_api.js → esm2020/dashboard/public_api.mjs} +0 -0
  525. package/{esm2015/dashboard/vendure-admin-ui-dashboard.js → esm2020/dashboard/vendure-admin-ui-dashboard.mjs} +0 -0
  526. package/esm2020/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +45 -0
  527. package/esm2020/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +59 -0
  528. package/esm2020/dashboard/widgets/test-widget/test-widget.component.mjs +22 -0
  529. package/esm2020/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +39 -0
  530. package/esm2020/login/components/login/login.component.mjs +62 -0
  531. package/esm2020/login/login.module.mjs +21 -0
  532. package/{esm2015/login/login.routes.js → esm2020/login/login.routes.mjs} +0 -0
  533. package/esm2020/login/providers/login.guard.mjs +31 -0
  534. package/{esm2015/login/public_api.js → esm2020/login/public_api.mjs} +0 -0
  535. package/{esm2015/login/vendure-admin-ui-login.js → esm2020/login/vendure-admin-ui-login.mjs} +0 -0
  536. package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +242 -0
  537. package/esm2020/marketing/components/promotion-list/promotion-list.component.mjs +81 -0
  538. package/esm2020/marketing/marketing.module.mjs +21 -0
  539. package/esm2020/marketing/marketing.routes.mjs +33 -0
  540. package/esm2020/marketing/providers/routing/promotion-resolver.mjs +31 -0
  541. package/{esm2015/marketing/public_api.js → esm2020/marketing/public_api.mjs} +0 -0
  542. package/{esm2015/marketing/vendure-admin-ui-marketing.js → esm2020/marketing/vendure-admin-ui-marketing.mjs} +0 -0
  543. package/esm2020/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +39 -0
  544. package/esm2020/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +78 -0
  545. package/esm2020/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +73 -0
  546. package/esm2020/order/components/fulfillment-card/fulfillment-card.component.mjs +48 -0
  547. package/esm2020/order/components/fulfillment-detail/fulfillment-detail.component.mjs +62 -0
  548. package/esm2020/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +28 -0
  549. package/esm2020/order/components/line-fulfillment/line-fulfillment.component.mjs +68 -0
  550. package/esm2020/order/components/line-refunds/line-refunds.component.mjs +37 -0
  551. package/esm2020/order/components/modification-detail/modification-detail.component.mjs +68 -0
  552. package/esm2020/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +40 -0
  553. package/esm2020/order/components/order-detail/order-detail.component.mjs +504 -0
  554. package/esm2020/order/components/order-editor/order-editor.component.mjs +365 -0
  555. package/esm2020/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +55 -0
  556. package/esm2020/order/components/order-history/order-history.component.mjs +166 -0
  557. package/esm2020/order/components/order-list/order-list.component.mjs +192 -0
  558. package/esm2020/order/components/order-payment-card/order-payment-card.component.mjs +43 -0
  559. package/{esm2015/order/components/order-process-graph/constants.js → esm2020/order/components/order-process-graph/constants.mjs} +0 -0
  560. package/esm2020/order/components/order-process-graph/order-process-edge.component.mjs +45 -0
  561. package/esm2020/order/components/order-process-graph/order-process-graph.component.mjs +96 -0
  562. package/esm2020/order/components/order-process-graph/order-process-node.component.mjs +53 -0
  563. package/{esm2015/order/components/order-process-graph/types.js → esm2020/order/components/order-process-graph/types.mjs} +0 -0
  564. package/esm2020/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +21 -0
  565. package/esm2020/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +29 -0
  566. package/esm2020/order/components/order-table/order-table.component.mjs +73 -0
  567. package/esm2020/order/components/payment-detail/payment-detail.component.mjs +18 -0
  568. package/esm2020/order/components/payment-state-label/payment-state-label.component.mjs +28 -0
  569. package/esm2020/order/components/refund-order-dialog/refund-order-dialog.component.mjs +138 -0
  570. package/esm2020/order/components/refund-state-label/refund-state-label.component.mjs +27 -0
  571. package/esm2020/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +24 -0
  572. package/esm2020/order/components/simple-item-list/simple-item-list.component.mjs +15 -0
  573. package/esm2020/order/order.module.mjs +103 -0
  574. package/esm2020/order/order.routes.mjs +52 -0
  575. package/esm2020/order/providers/order-transition.service.mjs +112 -0
  576. package/esm2020/order/providers/routing/order-resolver.mjs +29 -0
  577. package/{esm2015/order/public_api.js → esm2020/order/public_api.mjs} +0 -0
  578. package/{esm2015/order/vendure-admin-ui-order.js → esm2020/order/vendure-admin-ui-order.mjs} +0 -0
  579. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  580. package/esm2020/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +34 -0
  581. package/esm2020/settings/components/admin-detail/admin-detail.component.mjs +192 -0
  582. package/esm2020/settings/components/administrator-list/administrator-list.component.mjs +49 -0
  583. package/esm2020/settings/components/channel-detail/channel-detail.component.mjs +154 -0
  584. package/esm2020/settings/components/channel-list/channel-list.component.mjs +53 -0
  585. package/esm2020/settings/components/country-detail/country-detail.component.mjs +115 -0
  586. package/esm2020/settings/components/country-list/country-list.component.mjs +84 -0
  587. package/esm2020/settings/components/global-settings/global-settings.component.mjs +85 -0
  588. package/esm2020/settings/components/payment-method-detail/payment-method-detail.component.mjs +199 -0
  589. package/esm2020/settings/components/payment-method-list/payment-method-list.component.mjs +62 -0
  590. package/esm2020/settings/components/permission-grid/permission-grid.component.mjs +83 -0
  591. package/esm2020/settings/components/profile/profile.component.mjs +77 -0
  592. package/esm2020/settings/components/role-detail/role-detail.component.mjs +105 -0
  593. package/esm2020/settings/components/role-list/role-list.component.mjs +66 -0
  594. package/esm2020/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +30 -0
  595. package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +240 -0
  596. package/esm2020/settings/components/shipping-method-list/shipping-method-list.component.mjs +92 -0
  597. package/esm2020/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +30 -0
  598. package/esm2020/settings/components/tax-category-detail/tax-category-detail.component.mjs +107 -0
  599. package/esm2020/settings/components/tax-category-list/tax-category-list.component.mjs +56 -0
  600. package/esm2020/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +126 -0
  601. package/esm2020/settings/components/tax-rate-list/tax-rate-list.component.mjs +56 -0
  602. package/esm2020/settings/components/test-address-form/test-address-form.component.mjs +49 -0
  603. package/esm2020/settings/components/test-order-builder/test-order-builder.component.mjs +71 -0
  604. package/esm2020/settings/components/zone-detail-dialog/zone-detail-dialog.component.mjs +44 -0
  605. package/esm2020/settings/components/zone-list/zone-list.component.mjs +158 -0
  606. package/esm2020/settings/components/zone-member-list/zone-member-controls.directive.mjs +16 -0
  607. package/esm2020/settings/components/zone-member-list/zone-member-list-header.directive.mjs +16 -0
  608. package/esm2020/settings/components/zone-member-list/zone-member-list.component.mjs +72 -0
  609. package/esm2020/settings/providers/routing/administrator-resolver.mjs +28 -0
  610. package/esm2020/settings/providers/routing/channel-resolver.mjs +34 -0
  611. package/esm2020/settings/providers/routing/country-resolver.mjs +31 -0
  612. package/esm2020/settings/providers/routing/global-settings-resolver.mjs +24 -0
  613. package/esm2020/settings/providers/routing/payment-method-resolver.mjs +33 -0
  614. package/esm2020/settings/providers/routing/profile-resolver.mjs +30 -0
  615. package/esm2020/settings/providers/routing/role-resolver.mjs +28 -0
  616. package/esm2020/settings/providers/routing/shipping-method-resolver.mjs +34 -0
  617. package/esm2020/settings/providers/routing/tax-category-resolver.mjs +29 -0
  618. package/esm2020/settings/providers/routing/tax-rate-resolver.mjs +33 -0
  619. package/{esm2015/settings/public_api.js → esm2020/settings/public_api.mjs} +0 -0
  620. package/esm2020/settings/settings.module.mjs +106 -0
  621. package/esm2020/settings/settings.routes.mjs +253 -0
  622. package/{esm2015/settings/vendure-admin-ui-settings.js → esm2020/settings/vendure-admin-ui-settings.mjs} +0 -0
  623. package/esm2020/system/components/health-check/health-check.component.mjs +18 -0
  624. package/esm2020/system/components/job-list/job-list.component.mjs +76 -0
  625. package/esm2020/system/components/job-state-label/job-state-label.component.mjs +46 -0
  626. package/{esm2015/system/public_api.js → esm2020/system/public_api.mjs} +0 -0
  627. package/esm2020/system/system.module.mjs +22 -0
  628. package/esm2020/system/system.routes.mjs +20 -0
  629. package/{esm2015/system/vendure-admin-ui-system.js → esm2020/system/vendure-admin-ui-system.mjs} +0 -0
  630. package/{esm2015/vendure-admin-ui.js → esm2020/vendure-admin-ui.mjs} +0 -0
  631. package/fesm2015/vendure-admin-ui-catalog.mjs +3732 -0
  632. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -0
  633. package/fesm2015/vendure-admin-ui-core.mjs +15998 -0
  634. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -0
  635. package/fesm2015/vendure-admin-ui-customer.mjs +1134 -0
  636. package/fesm2015/vendure-admin-ui-customer.mjs.map +1 -0
  637. package/fesm2015/vendure-admin-ui-dashboard.mjs +365 -0
  638. package/fesm2015/vendure-admin-ui-dashboard.mjs.map +1 -0
  639. package/fesm2015/vendure-admin-ui-login.mjs +122 -0
  640. package/fesm2015/vendure-admin-ui-login.mjs.map +1 -0
  641. package/fesm2015/vendure-admin-ui-marketing.mjs +388 -0
  642. package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -0
  643. package/fesm2015/vendure-admin-ui-order.mjs +2448 -0
  644. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -0
  645. package/fesm2015/vendure-admin-ui-settings.mjs +2784 -0
  646. package/fesm2015/vendure-admin-ui-settings.mjs.map +1 -0
  647. package/fesm2015/vendure-admin-ui-system.mjs +165 -0
  648. package/fesm2015/vendure-admin-ui-system.mjs.map +1 -0
  649. package/fesm2015/{vendure-admin-ui.js → vendure-admin-ui.mjs} +1 -1
  650. package/fesm2015/vendure-admin-ui.mjs.map +1 -0
  651. package/fesm2020/vendure-admin-ui-catalog.mjs +3747 -0
  652. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -0
  653. package/fesm2020/vendure-admin-ui-core.mjs +15994 -0
  654. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -0
  655. package/fesm2020/vendure-admin-ui-customer.mjs +1135 -0
  656. package/fesm2020/vendure-admin-ui-customer.mjs.map +1 -0
  657. package/fesm2020/vendure-admin-ui-dashboard.mjs +361 -0
  658. package/fesm2020/vendure-admin-ui-dashboard.mjs.map +1 -0
  659. package/fesm2020/vendure-admin-ui-login.mjs +122 -0
  660. package/fesm2020/vendure-admin-ui-login.mjs.map +1 -0
  661. package/fesm2020/vendure-admin-ui-marketing.mjs +388 -0
  662. package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -0
  663. package/fesm2020/vendure-admin-ui-order.mjs +2462 -0
  664. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -0
  665. package/fesm2020/vendure-admin-ui-settings.mjs +2791 -0
  666. package/fesm2020/vendure-admin-ui-settings.mjs.map +1 -0
  667. package/fesm2020/vendure-admin-ui-system.mjs +168 -0
  668. package/fesm2020/vendure-admin-ui-system.mjs.map +1 -0
  669. package/fesm2020/vendure-admin-ui.mjs +11 -0
  670. package/fesm2020/vendure-admin-ui.mjs.map +1 -0
  671. package/login/components/login/login.component.d.ts +3 -0
  672. package/login/login.module.d.ts +7 -0
  673. package/login/package.json +5 -6
  674. package/login/providers/login.guard.d.ts +3 -0
  675. package/login/vendure-admin-ui-login.d.ts +1 -0
  676. package/marketing/components/promotion-detail/promotion-detail.component.d.ts +7 -4
  677. package/marketing/components/promotion-list/promotion-list.component.d.ts +5 -6
  678. package/marketing/marketing.module.d.ts +8 -0
  679. package/marketing/package.json +5 -6
  680. package/marketing/providers/routing/promotion-resolver.d.ts +5 -2
  681. package/marketing/vendure-admin-ui-marketing.d.ts +1 -0
  682. package/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +5 -2
  683. package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +6 -0
  684. package/order/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +6 -3
  685. package/order/components/fulfillment-card/fulfillment-card.component.d.ts +6 -3
  686. package/order/components/fulfillment-detail/fulfillment-detail.component.d.ts +6 -3
  687. package/order/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +3 -0
  688. package/order/components/line-fulfillment/line-fulfillment.component.d.ts +8 -3
  689. package/order/components/line-refunds/line-refunds.component.d.ts +6 -3
  690. package/order/components/modification-detail/modification-detail.component.d.ts +13 -4
  691. package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +3 -0
  692. package/order/components/order-detail/order-detail.component.d.ts +15 -10
  693. package/order/components/order-editor/order-editor.component.d.ts +16 -12
  694. package/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +6 -3
  695. package/order/components/order-history/order-history.component.d.ts +36 -20
  696. package/order/components/order-list/order-list.component.d.ts +5 -2
  697. package/order/components/order-payment-card/order-payment-card.component.d.ts +48 -14
  698. package/order/components/order-process-graph/order-process-edge.component.d.ts +3 -0
  699. package/order/components/order-process-graph/order-process-graph.component.d.ts +3 -0
  700. package/order/components/order-process-graph/order-process-node.component.d.ts +3 -0
  701. package/order/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +3 -0
  702. package/order/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +3 -0
  703. package/order/components/order-table/order-table.component.d.ts +14 -8
  704. package/order/components/payment-detail/payment-detail.component.d.ts +5 -2
  705. package/order/components/payment-state-label/payment-state-label.component.d.ts +3 -0
  706. package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +8 -4
  707. package/order/components/refund-state-label/refund-state-label.component.d.ts +3 -0
  708. package/order/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +5 -3
  709. package/order/components/simple-item-list/simple-item-list.component.d.ts +3 -0
  710. package/order/order.module.d.ts +34 -0
  711. package/order/package.json +5 -6
  712. package/order/providers/order-transition.service.d.ts +3 -0
  713. package/order/providers/routing/order-resolver.d.ts +5 -4
  714. package/order/vendure-admin-ui-order.d.ts +1 -0
  715. package/package.json +120 -36
  716. package/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +6 -3
  717. package/settings/components/admin-detail/admin-detail.component.d.ts +9 -10
  718. package/settings/components/administrator-list/administrator-list.component.d.ts +6 -3
  719. package/settings/components/channel-detail/channel-detail.component.d.ts +7 -8
  720. package/settings/components/channel-list/channel-list.component.d.ts +5 -5
  721. package/settings/components/country-detail/country-detail.component.d.ts +7 -4
  722. package/settings/components/country-list/country-list.component.d.ts +7 -4
  723. package/settings/components/global-settings/global-settings.component.d.ts +3 -0
  724. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +6 -3
  725. package/settings/components/payment-method-list/payment-method-list.component.d.ts +5 -2
  726. package/settings/components/permission-grid/permission-grid.component.d.ts +3 -0
  727. package/settings/components/profile/profile.component.d.ts +5 -2
  728. package/settings/components/role-detail/role-detail.component.d.ts +3 -0
  729. package/settings/components/role-list/role-list.component.d.ts +8 -5
  730. package/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +3 -0
  731. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +7 -4
  732. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +6 -3
  733. package/settings/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +3 -0
  734. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +7 -8
  735. package/settings/components/tax-category-list/tax-category-list.component.d.ts +6 -6
  736. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +8 -5
  737. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +6 -7
  738. package/settings/components/test-address-form/test-address-form.component.d.ts +5 -2
  739. package/settings/components/test-order-builder/test-order-builder.component.d.ts +7 -2
  740. package/settings/components/zone-detail-dialog/zone-detail-dialog.component.d.ts +3 -0
  741. package/settings/components/zone-list/zone-list.component.d.ts +10 -7
  742. package/settings/components/zone-member-list/zone-member-controls.directive.d.ts +3 -0
  743. package/settings/components/zone-member-list/zone-member-list-header.directive.d.ts +3 -0
  744. package/settings/components/zone-member-list/zone-member-list.component.d.ts +3 -0
  745. package/settings/package.json +5 -6
  746. package/settings/providers/routing/administrator-resolver.d.ts +5 -4
  747. package/settings/providers/routing/channel-resolver.d.ts +5 -4
  748. package/settings/providers/routing/country-resolver.d.ts +5 -4
  749. package/settings/providers/routing/global-settings-resolver.d.ts +5 -4
  750. package/settings/providers/routing/payment-method-resolver.d.ts +5 -4
  751. package/settings/providers/routing/profile-resolver.d.ts +5 -4
  752. package/settings/providers/routing/role-resolver.d.ts +5 -4
  753. package/settings/providers/routing/shipping-method-resolver.d.ts +5 -4
  754. package/settings/providers/routing/tax-category-resolver.d.ts +5 -2
  755. package/settings/providers/routing/tax-rate-resolver.d.ts +5 -2
  756. package/settings/settings.module.d.ts +35 -0
  757. package/settings/vendure-admin-ui-settings.d.ts +1 -0
  758. package/static/i18n-messages/cs.json +5 -1
  759. package/static/i18n-messages/de.json +5 -1
  760. package/static/i18n-messages/en.json +6 -2
  761. package/static/i18n-messages/es.json +5 -1
  762. package/static/i18n-messages/fr.json +5 -1
  763. package/static/i18n-messages/it.json +5 -1
  764. package/static/i18n-messages/pl.json +5 -1
  765. package/static/i18n-messages/pt_BR.json +5 -1
  766. package/static/i18n-messages/pt_PT.json +5 -1
  767. package/static/i18n-messages/ru.json +5 -1
  768. package/static/i18n-messages/uk.json +5 -1
  769. package/static/i18n-messages/zh_Hans.json +5 -1
  770. package/static/i18n-messages/zh_Hant.json +5 -1
  771. package/static/polyfills.ts +0 -10
  772. package/static/styles/styles.scss +1 -1
  773. package/static/theme.min.css +1 -1
  774. package/system/components/health-check/health-check.component.d.ts +3 -0
  775. package/system/components/job-list/job-list.component.d.ts +7 -4
  776. package/system/components/job-state-label/job-state-label.component.d.ts +3 -0
  777. package/system/package.json +5 -6
  778. package/system/system.module.d.ts +9 -0
  779. package/system/vendure-admin-ui-system.d.ts +1 -0
  780. package/vendure-admin-ui.d.ts +1 -0
  781. package/bundles/vendure-admin-ui-catalog.umd.js +0 -4638
  782. package/bundles/vendure-admin-ui-catalog.umd.js.map +0 -1
  783. package/bundles/vendure-admin-ui-core.umd.js +0 -14759
  784. package/bundles/vendure-admin-ui-core.umd.js.map +0 -1
  785. package/bundles/vendure-admin-ui-customer.umd.js +0 -1626
  786. package/bundles/vendure-admin-ui-customer.umd.js.map +0 -1
  787. package/bundles/vendure-admin-ui-dashboard.umd.js +0 -757
  788. package/bundles/vendure-admin-ui-dashboard.umd.js.map +0 -1
  789. package/bundles/vendure-admin-ui-login.umd.js +0 -157
  790. package/bundles/vendure-admin-ui-login.umd.js.map +0 -1
  791. package/bundles/vendure-admin-ui-marketing.umd.js +0 -783
  792. package/bundles/vendure-admin-ui-marketing.umd.js.map +0 -1
  793. package/bundles/vendure-admin-ui-order.umd.js +0 -3287
  794. package/bundles/vendure-admin-ui-order.umd.js.map +0 -1
  795. package/bundles/vendure-admin-ui-settings.umd.js +0 -3697
  796. package/bundles/vendure-admin-ui-settings.umd.js.map +0 -1
  797. package/bundles/vendure-admin-ui-system.umd.js +0 -524
  798. package/bundles/vendure-admin-ui-system.umd.js.map +0 -1
  799. package/bundles/vendure-admin-ui.umd.js +0 -21
  800. package/bundles/vendure-admin-ui.umd.js.map +0 -1
  801. package/catalog/vendure-admin-ui-catalog.metadata.json +0 -1
  802. package/core/vendure-admin-ui-core.metadata.json +0 -1
  803. package/customer/vendure-admin-ui-customer.metadata.json +0 -1
  804. package/dashboard/vendure-admin-ui-dashboard.metadata.json +0 -1
  805. package/esm2015/catalog/catalog.module.js +0 -64
  806. package/esm2015/catalog/catalog.routes.js +0 -176
  807. package/esm2015/catalog/components/apply-facet-dialog/apply-facet-dialog.component.js +0 -32
  808. package/esm2015/catalog/components/asset-detail/asset-detail.component.js +0 -74
  809. package/esm2015/catalog/components/asset-list/asset-list.component.js +0 -119
  810. package/esm2015/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.js +0 -109
  811. package/esm2015/catalog/components/collection-contents/collection-contents.component.js +0 -78
  812. package/esm2015/catalog/components/collection-detail/collection-detail.component.js +0 -206
  813. package/esm2015/catalog/components/collection-list/collection-list.component.js +0 -119
  814. package/esm2015/catalog/components/collection-tree/array-to-tree.js +0 -57
  815. package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +0 -94
  816. package/esm2015/catalog/components/collection-tree/collection-tree.component.js +0 -74
  817. package/esm2015/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.js +0 -21
  818. package/esm2015/catalog/components/facet-detail/facet-detail.component.js +0 -326
  819. package/esm2015/catalog/components/facet-list/facet-list.component.js +0 -107
  820. package/esm2015/catalog/components/generate-product-variants/generate-product-variants.component.js +0 -78
  821. package/esm2015/catalog/components/option-value-input/option-value-input.component.js +0 -98
  822. package/esm2015/catalog/components/product-assets/product-assets.component.js +0 -108
  823. package/esm2015/catalog/components/product-detail/product-detail.component.js +0 -514
  824. package/esm2015/catalog/components/product-list/product-list.component.js +0 -153
  825. package/esm2015/catalog/components/product-options-editor/product-options-editor.component.js +0 -157
  826. package/esm2015/catalog/components/product-search-input/product-search-input.component.js +0 -104
  827. package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +0 -316
  828. package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +0 -207
  829. package/esm2015/catalog/components/product-variants-table/product-variants-table.component.js +0 -66
  830. package/esm2015/catalog/components/update-product-option-dialog/update-product-option-dialog.component.js +0 -61
  831. package/esm2015/catalog/components/variant-price-detail/variant-price-detail.component.js +0 -60
  832. package/esm2015/catalog/providers/product-detail/product-detail.service.js +0 -224
  833. package/esm2015/catalog/providers/routing/asset-resolver.js +0 -37
  834. package/esm2015/catalog/providers/routing/collection-resolver.js +0 -38
  835. package/esm2015/catalog/providers/routing/facet-resolver.js +0 -35
  836. package/esm2015/catalog/providers/routing/product-resolver.js +0 -42
  837. package/esm2015/catalog/providers/routing/product-variants-resolver.js +0 -31
  838. package/esm2015/catalog/public_api.js +0 -36
  839. package/esm2015/core/app.component.js +0 -80
  840. package/esm2015/core/app.component.module.js +0 -14
  841. package/esm2015/core/common/base-detail.component.js +0 -106
  842. package/esm2015/core/common/base-list.component.js +0 -156
  843. package/esm2015/core/common/generated-types.js +0 -953
  844. package/esm2015/core/common/introspection-result.js +0 -253
  845. package/esm2015/core/common/utilities/configurable-operation-utils.js +0 -78
  846. package/esm2015/core/common/utilities/create-updated-translatable.js +0 -72
  847. package/esm2015/core/common/utilities/find-translation.js +0 -9
  848. package/esm2015/core/common/utilities/flatten-facet-values.js +0 -4
  849. package/esm2015/core/common/utilities/get-default-ui-language.js +0 -13
  850. package/esm2015/core/components/app-shell/app-shell.component.js +0 -78
  851. package/esm2015/core/components/breadcrumb/breadcrumb.component.js +0 -126
  852. package/esm2015/core/components/channel-switcher/channel-switcher.component.js +0 -52
  853. package/esm2015/core/components/main-nav/main-nav.component.js +0 -272
  854. package/esm2015/core/components/notification/notification.component.js +0 -71
  855. package/esm2015/core/components/overlay-host/overlay-host.component.js +0 -22
  856. package/esm2015/core/components/theme-switcher/theme-switcher.component.js +0 -31
  857. package/esm2015/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.js +0 -294
  858. package/esm2015/core/components/user-menu/user-menu.component.js +0 -24
  859. package/esm2015/core/core.module.js +0 -115
  860. package/esm2015/core/data/client-state/client-resolvers.js +0 -123
  861. package/esm2015/core/data/data.module.js +0 -106
  862. package/esm2015/core/data/definitions/customer-definitions.js +0 -258
  863. package/esm2015/core/data/providers/administrator-data.service.js +0 -55
  864. package/esm2015/core/data/providers/auth-data.service.js +0 -20
  865. package/esm2015/core/data/providers/base-data.service.js +0 -72
  866. package/esm2015/core/data/providers/client-data.service.js +0 -75
  867. package/esm2015/core/data/providers/collection-data.service.js +0 -72
  868. package/esm2015/core/data/providers/customer-data.service.js +0 -114
  869. package/esm2015/core/data/providers/data.service.js +0 -90
  870. package/esm2015/core/data/providers/facet-data.service.js +0 -60
  871. package/esm2015/core/data/providers/fetch-adapter.js +0 -38
  872. package/esm2015/core/data/providers/interceptor.js +0 -142
  873. package/esm2015/core/data/providers/order-data.service.js +0 -98
  874. package/esm2015/core/data/providers/product-data.service.js +0 -232
  875. package/esm2015/core/data/providers/promotion-data.service.js +0 -36
  876. package/esm2015/core/data/providers/settings-data.service.js +0 -231
  877. package/esm2015/core/data/providers/shipping-method-data.service.js +0 -66
  878. package/esm2015/core/data/server-config.js +0 -76
  879. package/esm2015/core/data/utils/add-custom-fields.js +0 -78
  880. package/esm2015/core/data/utils/transform-relation-custom-field-inputs.js +0 -46
  881. package/esm2015/core/providers/auth/auth.service.js +0 -110
  882. package/esm2015/core/providers/component-registry/component-registry.service.js +0 -23
  883. package/esm2015/core/providers/custom-detail-component/custom-detail-component.service.js +0 -44
  884. package/esm2015/core/providers/custom-field-component/custom-field-component.service.js +0 -47
  885. package/esm2015/core/providers/dashboard-widget/dashboard-widget.service.js +0 -97
  886. package/esm2015/core/providers/guard/auth.guard.js +0 -42
  887. package/esm2015/core/providers/health-check/health-check.service.js +0 -38
  888. package/esm2015/core/providers/i18n/custom-message-format-compiler.js +0 -30
  889. package/esm2015/core/providers/i18n/i18n.service.js +0 -56
  890. package/esm2015/core/providers/job-queue/job-queue.service.js +0 -93
  891. package/esm2015/core/providers/local-storage/local-storage.service.js +0 -79
  892. package/esm2015/core/providers/modal/modal.service.js +0 -100
  893. package/esm2015/core/providers/nav-builder/nav-builder.service.js +0 -264
  894. package/esm2015/core/providers/notification/notification.service.js +0 -165
  895. package/esm2015/core/providers/overlay-host/overlay-host.service.js +0 -46
  896. package/esm2015/core/public_api.js +0 -217
  897. package/esm2015/core/shared/components/action-bar/action-bar.component.js +0 -47
  898. package/esm2015/core/shared/components/action-bar-items/action-bar-items.component.js +0 -78
  899. package/esm2015/core/shared/components/address-form/address-form.component.js +0 -17
  900. package/esm2015/core/shared/components/affixed-input/affixed-input.component.js +0 -19
  901. package/esm2015/core/shared/components/affixed-input/percentage-suffix-input.component.js +0 -70
  902. package/esm2015/core/shared/components/asset-file-input/asset-file-input.component.js +0 -92
  903. package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +0 -102
  904. package/esm2015/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.js +0 -138
  905. package/esm2015/core/shared/components/asset-preview/asset-preview.component.js +0 -176
  906. package/esm2015/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.js +0 -35
  907. package/esm2015/core/shared/components/asset-search-input/asset-search-input.component.js +0 -102
  908. package/esm2015/core/shared/components/channel-assignment-control/channel-assignment-control.component.js +0 -109
  909. package/esm2015/core/shared/components/channel-badge/channel-badge.component.js +0 -19
  910. package/esm2015/core/shared/components/chip/chip.component.js +0 -42
  911. package/esm2015/core/shared/components/configurable-input/configurable-input.component.js +0 -128
  912. package/esm2015/core/shared/components/currency-input/currency-input.component.js +0 -145
  913. package/esm2015/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.js +0 -44
  914. package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +0 -55
  915. package/esm2015/core/shared/components/customer-label/customer-label.component.js +0 -15
  916. package/esm2015/core/shared/components/data-table/data-table-column.component.js +0 -22
  917. package/esm2015/core/shared/components/data-table/data-table.component.js +0 -106
  918. package/esm2015/core/shared/components/datetime-picker/datetime-picker.component.js +0 -205
  919. package/esm2015/core/shared/components/datetime-picker/datetime-picker.service.js +0 -199
  920. package/esm2015/core/shared/components/dropdown/dropdown-item.directive.js +0 -24
  921. package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +0 -121
  922. package/esm2015/core/shared/components/dropdown/dropdown-trigger.directive.js +0 -25
  923. package/esm2015/core/shared/components/dropdown/dropdown.component.js +0 -60
  924. package/esm2015/core/shared/components/edit-note-dialog/edit-note-dialog.component.js +0 -26
  925. package/esm2015/core/shared/components/empty-placeholder/empty-placeholder.component.js +0 -15
  926. package/esm2015/core/shared/components/entity-info/entity-info.component.js +0 -19
  927. package/esm2015/core/shared/components/extension-host/extension-host.component.js +0 -83
  928. package/esm2015/core/shared/components/extension-host/extension-host.service.js +0 -100
  929. package/esm2015/core/shared/components/facet-value-chip/facet-value-chip.component.js +0 -23
  930. package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +0 -114
  931. package/esm2015/core/shared/components/focal-point-control/focal-point-control.component.js +0 -56
  932. package/esm2015/core/shared/components/form-field/form-field-control.directive.js +0 -35
  933. package/esm2015/core/shared/components/form-field/form-field.component.js +0 -61
  934. package/esm2015/core/shared/components/form-item/form-item.component.js +0 -19
  935. package/esm2015/core/shared/components/formatted-address/formatted-address.component.js +0 -37
  936. package/esm2015/core/shared/components/help-tooltip/help-tooltip.component.js +0 -16
  937. package/esm2015/core/shared/components/history-entry-detail/history-entry-detail.component.js +0 -12
  938. package/esm2015/core/shared/components/items-per-page-controls/items-per-page-controls.component.js +0 -23
  939. package/esm2015/core/shared/components/labeled-data/labeled-data.component.js +0 -15
  940. package/esm2015/core/shared/components/language-selector/language-selector.component.js +0 -21
  941. package/esm2015/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.js +0 -58
  942. package/esm2015/core/shared/components/modal-dialog/dialog-buttons.directive.js +0 -23
  943. package/esm2015/core/shared/components/modal-dialog/dialog-component-outlet.component.js +0 -31
  944. package/esm2015/core/shared/components/modal-dialog/dialog-title.directive.js +0 -23
  945. package/esm2015/core/shared/components/modal-dialog/modal-dialog.component.js +0 -57
  946. package/esm2015/core/shared/components/object-tree/object-tree.component.js +0 -53
  947. package/esm2015/core/shared/components/order-state-label/order-state-label.component.js +0 -43
  948. package/esm2015/core/shared/components/pagination-controls/pagination-controls.component.js +0 -22
  949. package/esm2015/core/shared/components/product-selector/product-selector.component.js +0 -61
  950. package/esm2015/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.js +0 -32
  951. package/esm2015/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.js +0 -28
  952. package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +0 -112
  953. package/esm2015/core/shared/components/rich-text-editor/rich-text-editor.component.js +0 -86
  954. package/esm2015/core/shared/components/select-toggle/select-toggle.component.js +0 -28
  955. package/esm2015/core/shared/components/simple-dialog/simple-dialog.component.js +0 -21
  956. package/esm2015/core/shared/components/status-badge/status-badge.component.js +0 -18
  957. package/esm2015/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.js +0 -49
  958. package/esm2015/core/shared/components/table-row-action/table-row-action.component.js +0 -23
  959. package/esm2015/core/shared/components/tag-selector/tag-selector.component.js +0 -55
  960. package/esm2015/core/shared/components/timeline-entry/timeline-entry.component.js +0 -40
  961. package/esm2015/core/shared/components/title-input/title-input.component.js +0 -18
  962. package/esm2015/core/shared/components/ui-extension-point/ui-extension-point.component.js +0 -31
  963. package/esm2015/core/shared/directives/disabled.directive.js +0 -38
  964. package/esm2015/core/shared/directives/if-default-channel-active.directive.js +0 -42
  965. package/esm2015/core/shared/directives/if-directive-base.js +0 -75
  966. package/esm2015/core/shared/directives/if-multichannel.directive.js +0 -47
  967. package/esm2015/core/shared/directives/if-permissions.directive.js +0 -78
  968. package/esm2015/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.js +0 -20
  969. package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.js +0 -125
  970. package/esm2015/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.js +0 -33
  971. package/esm2015/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.js +0 -43
  972. package/esm2015/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.js +0 -35
  973. package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +0 -266
  974. package/esm2015/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.js +0 -36
  975. package/esm2015/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.js +0 -43
  976. package/esm2015/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.js +0 -20
  977. package/esm2015/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.js +0 -60
  978. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.js +0 -69
  979. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.js +0 -66
  980. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.js +0 -81
  981. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.js +0 -81
  982. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.js +0 -43
  983. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.js +0 -25
  984. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.js +0 -12
  985. package/esm2015/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.js +0 -20
  986. package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +0 -28
  987. package/esm2015/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.js +0 -28
  988. package/esm2015/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.js +0 -23
  989. package/esm2015/core/shared/pipes/asset-preview.pipe.js +0 -38
  990. package/esm2015/core/shared/pipes/channel-label.pipe.js +0 -19
  991. package/esm2015/core/shared/pipes/custom-field-label.pipe.js +0 -46
  992. package/esm2015/core/shared/pipes/duration.pipe.js +0 -48
  993. package/esm2015/core/shared/pipes/file-size.pipe.js +0 -43
  994. package/esm2015/core/shared/pipes/has-permission.pipe.js +0 -65
  995. package/esm2015/core/shared/pipes/locale-base.pipe.js +0 -57
  996. package/esm2015/core/shared/pipes/locale-currency-name.pipe.js +0 -58
  997. package/esm2015/core/shared/pipes/locale-currency.pipe.js +0 -40
  998. package/esm2015/core/shared/pipes/locale-date.pipe.js +0 -80
  999. package/esm2015/core/shared/pipes/locale-language-name.pipe.js +0 -47
  1000. package/esm2015/core/shared/pipes/locale-region-name.pipe.js +0 -47
  1001. package/esm2015/core/shared/pipes/sentence-case.pipe.js +0 -26
  1002. package/esm2015/core/shared/pipes/sort.pipe.js +0 -30
  1003. package/esm2015/core/shared/pipes/state-i18n-token.pipe.js +0 -46
  1004. package/esm2015/core/shared/pipes/string-to-color.pipe.js +0 -14
  1005. package/esm2015/core/shared/pipes/time-ago.pipe.js +0 -51
  1006. package/esm2015/core/shared/providers/routing/can-deactivate-detail-guard.js +0 -36
  1007. package/esm2015/core/shared/shared.module.js +0 -263
  1008. package/esm2015/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.js +0 -42
  1009. package/esm2015/customer/components/address-card/address-card.component.js +0 -86
  1010. package/esm2015/customer/components/address-detail-dialog/address-detail-dialog.component.js +0 -28
  1011. package/esm2015/customer/components/customer-detail/customer-detail.component.js +0 -393
  1012. package/esm2015/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.js +0 -47
  1013. package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +0 -184
  1014. package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +0 -101
  1015. package/esm2015/customer/components/customer-history/customer-history.component.js +0 -76
  1016. package/esm2015/customer/components/customer-list/customer-list.component.js +0 -78
  1017. package/esm2015/customer/components/customer-status-label/customer-status-label.component.js +0 -15
  1018. package/esm2015/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.js +0 -31
  1019. package/esm2015/customer/customer.module.js +0 -37
  1020. package/esm2015/customer/customer.routes.js +0 -44
  1021. package/esm2015/customer/providers/routing/customer-resolver.js +0 -35
  1022. package/esm2015/dashboard/components/dashboard/dashboard.component.js +0 -124
  1023. package/esm2015/dashboard/components/dashboard-widget/dashboard-widget.component.js +0 -39
  1024. package/esm2015/dashboard/dashboard.module.js +0 -25
  1025. package/esm2015/dashboard/default-widgets.js +0 -34
  1026. package/esm2015/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.js +0 -42
  1027. package/esm2015/dashboard/widgets/order-summary-widget/order-summary-widget.component.js +0 -56
  1028. package/esm2015/dashboard/widgets/test-widget/test-widget.component.js +0 -19
  1029. package/esm2015/dashboard/widgets/welcome-widget/welcome-widget.component.js +0 -36
  1030. package/esm2015/login/components/login/login.component.js +0 -61
  1031. package/esm2015/login/login.module.js +0 -15
  1032. package/esm2015/login/providers/login.guard.js +0 -35
  1033. package/esm2015/marketing/components/promotion-detail/promotion-detail.component.js +0 -247
  1034. package/esm2015/marketing/components/promotion-list/promotion-list.component.js +0 -87
  1035. package/esm2015/marketing/marketing.module.js +0 -15
  1036. package/esm2015/marketing/marketing.routes.js +0 -35
  1037. package/esm2015/marketing/providers/routing/promotion-resolver.js +0 -34
  1038. package/esm2015/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.js +0 -39
  1039. package/esm2015/order/components/cancel-order-dialog/cancel-order-dialog.component.js +0 -52
  1040. package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +0 -71
  1041. package/esm2015/order/components/fulfillment-card/fulfillment-card.component.js +0 -43
  1042. package/esm2015/order/components/fulfillment-detail/fulfillment-detail.component.js +0 -64
  1043. package/esm2015/order/components/fulfillment-state-label/fulfillment-state-label.component.js +0 -26
  1044. package/esm2015/order/components/line-fulfillment/line-fulfillment.component.js +0 -65
  1045. package/esm2015/order/components/line-refunds/line-refunds.component.js +0 -35
  1046. package/esm2015/order/components/modification-detail/modification-detail.component.js +0 -66
  1047. package/esm2015/order/components/order-custom-fields-card/order-custom-fields-card.component.js +0 -39
  1048. package/esm2015/order/components/order-detail/order-detail.component.js +0 -509
  1049. package/esm2015/order/components/order-editor/order-editor.component.js +0 -362
  1050. package/esm2015/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.js +0 -50
  1051. package/esm2015/order/components/order-history/order-history.component.js +0 -154
  1052. package/esm2015/order/components/order-list/order-list.component.js +0 -188
  1053. package/esm2015/order/components/order-payment-card/order-payment-card.component.js +0 -33
  1054. package/esm2015/order/components/order-process-graph/order-process-edge.component.js +0 -37
  1055. package/esm2015/order/components/order-process-graph/order-process-graph.component.js +0 -94
  1056. package/esm2015/order/components/order-process-graph/order-process-node.component.js +0 -53
  1057. package/esm2015/order/components/order-process-graph-dialog/order-process-graph-dialog.component.js +0 -23
  1058. package/esm2015/order/components/order-state-select-dialog/order-state-select-dialog.component.js +0 -25
  1059. package/esm2015/order/components/order-table/order-table.component.js +0 -68
  1060. package/esm2015/order/components/payment-detail/payment-detail.component.js +0 -16
  1061. package/esm2015/order/components/payment-state-label/payment-state-label.component.js +0 -26
  1062. package/esm2015/order/components/refund-order-dialog/refund-order-dialog.component.js +0 -133
  1063. package/esm2015/order/components/refund-state-label/refund-state-label.component.js +0 -25
  1064. package/esm2015/order/components/settle-refund-dialog/settle-refund-dialog.component.js +0 -21
  1065. package/esm2015/order/components/simple-item-list/simple-item-list.component.js +0 -15
  1066. package/esm2015/order/order.module.js +0 -70
  1067. package/esm2015/order/order.routes.js +0 -54
  1068. package/esm2015/order/providers/order-transition.service.js +0 -116
  1069. package/esm2015/order/providers/routing/order-resolver.js +0 -33
  1070. package/esm2015/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.js +0 -35
  1071. package/esm2015/settings/components/admin-detail/admin-detail.component.js +0 -199
  1072. package/esm2015/settings/components/administrator-list/administrator-list.component.js +0 -52
  1073. package/esm2015/settings/components/channel-detail/channel-detail.component.js +0 -163
  1074. package/esm2015/settings/components/channel-list/channel-list.component.js +0 -57
  1075. package/esm2015/settings/components/country-detail/country-detail.component.js +0 -120
  1076. package/esm2015/settings/components/country-list/country-list.component.js +0 -82
  1077. package/esm2015/settings/components/global-settings/global-settings.component.js +0 -89
  1078. package/esm2015/settings/components/payment-method-detail/payment-method-detail.component.js +0 -204
  1079. package/esm2015/settings/components/payment-method-list/payment-method-list.component.js +0 -66
  1080. package/esm2015/settings/components/permission-grid/permission-grid.component.js +0 -80
  1081. package/esm2015/settings/components/profile/profile.component.js +0 -82
  1082. package/esm2015/settings/components/role-detail/role-detail.component.js +0 -109
  1083. package/esm2015/settings/components/role-list/role-list.component.js +0 -73
  1084. package/esm2015/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.js +0 -24
  1085. package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +0 -235
  1086. package/esm2015/settings/components/shipping-method-list/shipping-method-list.component.js +0 -94
  1087. package/esm2015/settings/components/shipping-method-test-result/shipping-method-test-result.component.js +0 -24
  1088. package/esm2015/settings/components/tax-category-detail/tax-category-detail.component.js +0 -115
  1089. package/esm2015/settings/components/tax-category-list/tax-category-list.component.js +0 -60
  1090. package/esm2015/settings/components/tax-rate-detail/tax-rate-detail.component.js +0 -131
  1091. package/esm2015/settings/components/tax-rate-list/tax-rate-list.component.js +0 -64
  1092. package/esm2015/settings/components/test-address-form/test-address-form.component.js +0 -53
  1093. package/esm2015/settings/components/test-order-builder/test-order-builder.component.js +0 -73
  1094. package/esm2015/settings/components/zone-detail-dialog/zone-detail-dialog.component.js +0 -47
  1095. package/esm2015/settings/components/zone-list/zone-list.component.js +0 -160
  1096. package/esm2015/settings/components/zone-member-list/zone-member-controls.directive.js +0 -15
  1097. package/esm2015/settings/components/zone-member-list/zone-member-list-header.directive.js +0 -15
  1098. package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +0 -63
  1099. package/esm2015/settings/providers/routing/administrator-resolver.js +0 -32
  1100. package/esm2015/settings/providers/routing/channel-resolver.js +0 -40
  1101. package/esm2015/settings/providers/routing/country-resolver.js +0 -35
  1102. package/esm2015/settings/providers/routing/global-settings-resolver.js +0 -28
  1103. package/esm2015/settings/providers/routing/payment-method-resolver.js +0 -37
  1104. package/esm2015/settings/providers/routing/profile-resolver.js +0 -34
  1105. package/esm2015/settings/providers/routing/role-resolver.js +0 -32
  1106. package/esm2015/settings/providers/routing/shipping-method-resolver.js +0 -38
  1107. package/esm2015/settings/providers/routing/tax-category-resolver.js +0 -32
  1108. package/esm2015/settings/providers/routing/tax-rate-resolver.js +0 -36
  1109. package/esm2015/settings/settings.module.js +0 -72
  1110. package/esm2015/settings/settings.routes.js +0 -255
  1111. package/esm2015/system/components/health-check/health-check.component.js +0 -19
  1112. package/esm2015/system/components/job-list/job-list.component.js +0 -74
  1113. package/esm2015/system/components/job-state-label/job-state-label.component.js +0 -45
  1114. package/esm2015/system/system.module.js +0 -16
  1115. package/esm2015/system/system.routes.js +0 -22
  1116. package/fesm2015/vendure-admin-ui-catalog.js +0 -3800
  1117. package/fesm2015/vendure-admin-ui-catalog.js.map +0 -1
  1118. package/fesm2015/vendure-admin-ui-core.js +0 -15757
  1119. package/fesm2015/vendure-admin-ui-core.js.map +0 -1
  1120. package/fesm2015/vendure-admin-ui-customer.js +0 -1140
  1121. package/fesm2015/vendure-admin-ui-customer.js.map +0 -1
  1122. package/fesm2015/vendure-admin-ui-dashboard.js +0 -371
  1123. package/fesm2015/vendure-admin-ui-dashboard.js.map +0 -1
  1124. package/fesm2015/vendure-admin-ui-login.js +0 -121
  1125. package/fesm2015/vendure-admin-ui-login.js.map +0 -1
  1126. package/fesm2015/vendure-admin-ui-marketing.js +0 -403
  1127. package/fesm2015/vendure-admin-ui-marketing.js.map +0 -1
  1128. package/fesm2015/vendure-admin-ui-order.js +0 -2492
  1129. package/fesm2015/vendure-admin-ui-order.js.map +0 -1
  1130. package/fesm2015/vendure-admin-ui-settings.js +0 -2975
  1131. package/fesm2015/vendure-admin-ui-settings.js.map +0 -1
  1132. package/fesm2015/vendure-admin-ui-system.js +0 -171
  1133. package/fesm2015/vendure-admin-ui-system.js.map +0 -1
  1134. package/fesm2015/vendure-admin-ui.js.map +0 -1
  1135. package/login/vendure-admin-ui-login.metadata.json +0 -1
  1136. package/marketing/vendure-admin-ui-marketing.metadata.json +0 -1
  1137. package/order/vendure-admin-ui-order.metadata.json +0 -1
  1138. package/settings/vendure-admin-ui-settings.metadata.json +0 -1
  1139. package/system/vendure-admin-ui-system.metadata.json +0 -1
  1140. package/vendure-admin-ui.metadata.json +0 -1
@@ -1,2975 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, ChangeDetectorRef, EventEmitter, Input, Output, Directive, TemplateRef, ContentChild, Injectable, NgModule } from '@angular/core';
3
- import * as i2 from '@vendure/admin-ui/core';
4
- import { DataService, BaseDetailComponent, Permission, ServerConfigService, NotificationService, BaseListComponent, ModalService, CurrencyCode, createUpdatedTranslatable, findTranslation, DeletionResult, LanguageCode, configurableDefinitionToInstance, toConfigurableOperationInput, getConfigArgValue, LocalStorageService, BaseEntityResolver, getDefaultUiLanguage, createResolveData, CanDeactivateDetailGuard, detailBreadcrumb, SharedModule } from '@vendure/admin-ui/core';
5
- import { map, take, mergeMap, switchMap, startWith, tap, withLatestFrom, takeUntil, distinctUntilChanged, mapTo } from 'rxjs/operators';
6
- import { Validators, FormBuilder, FormControl } from '@angular/forms';
7
- import * as i1 from '@angular/router';
8
- import { Router, ActivatedRoute, RouterModule } from '@angular/router';
9
- import { marker } from '@biesbjerg/ngx-translate-extract-marker';
10
- import { CUSTOMER_ROLE_CODE, DEFAULT_CHANNEL_CODE, SUPER_ADMIN_ROLE_CODE } from '@vendure/common/lib/shared-constants';
11
- import { EMPTY, Subject, combineLatest, of, merge } from 'rxjs';
12
- import { normalizeString } from '@vendure/common/lib/normalize-string';
13
- import { unique } from '@vendure/common/lib/unique';
14
-
15
- class AddCountryToZoneDialogComponent {
16
- constructor(dataService) {
17
- this.dataService = dataService;
18
- this.currentMembers = [];
19
- this.selectedMemberIds = [];
20
- }
21
- ngOnInit() {
22
- const currentMemberIds = this.currentMembers.map(m => m.id);
23
- this.availableCountries$ = this.dataService.settings
24
- .getCountries(999)
25
- .mapStream(data => data.countries.items)
26
- .pipe(map(countries => countries.filter(c => !currentMemberIds.includes(c.id))));
27
- }
28
- cancel() {
29
- this.resolveWith();
30
- }
31
- add() {
32
- this.resolveWith(this.selectedMemberIds);
33
- }
34
- }
35
- AddCountryToZoneDialogComponent.decorators = [
36
- { type: Component, args: [{
37
- selector: 'vdr-add-country-to-zone-dialog',
38
- template: "<ng-template vdrDialogTitle>{{ 'settings.add-countries-to-zone' | translate: { zoneName: zoneName } }}</ng-template>\r\n\r\n<vdr-zone-member-list\r\n [members]=\"availableCountries$ | async\"\r\n [selectedMemberIds]=\"selectedMemberIds\"\r\n (selectionChange)=\"selectedMemberIds = $event\"\r\n>\r\n</vdr-zone-member-list>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedMemberIds.length\" class=\"btn btn-primary\">\r\n {{ 'settings.add-countries-to-zone' | translate: { zoneName: zoneName } }}\r\n </button>\r\n</ng-template>\r\n",
39
- changeDetection: ChangeDetectionStrategy.OnPush,
40
- styles: [""]
41
- },] }
42
- ];
43
- AddCountryToZoneDialogComponent.ctorParameters = () => [
44
- { type: DataService }
45
- ];
46
-
47
- class AdminDetailComponent extends BaseDetailComponent {
48
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
49
- super(route, router, serverConfigService, dataService);
50
- this.changeDetector = changeDetector;
51
- this.dataService = dataService;
52
- this.formBuilder = formBuilder;
53
- this.notificationService = notificationService;
54
- this.selectedRoles = [];
55
- this.selectedRolePermissions = {};
56
- this.selectedChannelId = null;
57
- this.customFields = this.getCustomFieldConfig('Administrator');
58
- this.detailForm = this.formBuilder.group({
59
- emailAddress: ['', Validators.required],
60
- firstName: ['', Validators.required],
61
- lastName: ['', Validators.required],
62
- password: [''],
63
- roles: [[]],
64
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
65
- });
66
- }
67
- getAvailableChannels() {
68
- return Object.values(this.selectedRolePermissions);
69
- }
70
- ngOnInit() {
71
- this.init();
72
- this.administrator$ = this.entity$;
73
- this.allRoles$ = this.dataService.administrator
74
- .getRoles(999)
75
- .mapStream(item => item.roles.items.filter(i => i.code !== CUSTOMER_ROLE_CODE));
76
- this.dataService.client.userStatus().single$.subscribe(({ userStatus }) => {
77
- if (!userStatus.permissions.includes(Permission.UpdateAdministrator)) {
78
- const rolesSelect = this.detailForm.get('roles');
79
- if (rolesSelect) {
80
- rolesSelect.disable();
81
- }
82
- }
83
- });
84
- this.permissionDefinitions = this.serverConfigService.getPermissionDefinitions();
85
- }
86
- ngOnDestroy() {
87
- this.destroy();
88
- }
89
- rolesChanged(roles) {
90
- this.buildPermissionsMap();
91
- }
92
- getPermissionsForSelectedChannel() {
93
- function getActivePermissions(input) {
94
- return Object.entries(input)
95
- .filter(([permission, active]) => active)
96
- .map(([permission, active]) => permission);
97
- }
98
- if (this.selectedChannelId) {
99
- const selectedChannel = this.selectedRolePermissions[this.selectedChannelId];
100
- if (selectedChannel) {
101
- const permissionMap = this.selectedRolePermissions[this.selectedChannelId].permissions;
102
- return getActivePermissions(permissionMap);
103
- }
104
- }
105
- const channels = Object.values(this.selectedRolePermissions);
106
- if (0 < channels.length) {
107
- this.selectedChannelId = channels[0].channelId;
108
- return getActivePermissions(channels[0].permissions);
109
- }
110
- return [];
111
- }
112
- create() {
113
- const formValue = this.detailForm.value;
114
- const administrator = {
115
- emailAddress: formValue.emailAddress,
116
- firstName: formValue.firstName,
117
- lastName: formValue.lastName,
118
- password: formValue.password,
119
- customFields: formValue.customFields,
120
- roleIds: formValue.roles.map(role => role.id),
121
- };
122
- this.dataService.administrator.createAdministrator(administrator).subscribe(data => {
123
- this.notificationService.success(marker('common.notify-create-success'), {
124
- entity: 'Administrator',
125
- });
126
- this.detailForm.markAsPristine();
127
- this.changeDetector.markForCheck();
128
- this.router.navigate(['../', data.createAdministrator.id], { relativeTo: this.route });
129
- }, err => {
130
- this.notificationService.error(marker('common.notify-create-error'), {
131
- entity: 'Administrator',
132
- });
133
- });
134
- }
135
- save() {
136
- this.administrator$
137
- .pipe(take(1), mergeMap(({ id }) => {
138
- const formValue = this.detailForm.value;
139
- const administrator = {
140
- id,
141
- emailAddress: formValue.emailAddress,
142
- firstName: formValue.firstName,
143
- lastName: formValue.lastName,
144
- password: formValue.password,
145
- customFields: formValue.customFields,
146
- roleIds: formValue.roles.map(role => role.id),
147
- };
148
- return this.dataService.administrator.updateAdministrator(administrator);
149
- }))
150
- .subscribe(data => {
151
- this.notificationService.success(marker('common.notify-update-success'), {
152
- entity: 'Administrator',
153
- });
154
- this.detailForm.markAsPristine();
155
- this.changeDetector.markForCheck();
156
- }, err => {
157
- this.notificationService.error(marker('common.notify-update-error'), {
158
- entity: 'Administrator',
159
- });
160
- });
161
- }
162
- setFormValues(administrator, languageCode) {
163
- this.detailForm.patchValue({
164
- emailAddress: administrator.emailAddress,
165
- firstName: administrator.firstName,
166
- lastName: administrator.lastName,
167
- roles: administrator.user.roles,
168
- });
169
- if (this.customFields.length) {
170
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), administrator);
171
- }
172
- const passwordControl = this.detailForm.get('password');
173
- if (passwordControl) {
174
- if (!administrator.id) {
175
- passwordControl.setValidators([Validators.required]);
176
- }
177
- else {
178
- passwordControl.setValidators([]);
179
- }
180
- }
181
- this.buildPermissionsMap();
182
- }
183
- buildPermissionsMap() {
184
- const permissionsControl = this.detailForm.get('roles');
185
- if (permissionsControl) {
186
- const roles = permissionsControl.value;
187
- const channelIdPermissionsMap = new Map();
188
- const channelIdCodeMap = new Map();
189
- for (const role of roles) {
190
- for (const channel of role.channels) {
191
- const channelPermissions = channelIdPermissionsMap.get(channel.id);
192
- const permissionSet = channelPermissions || new Set();
193
- role.permissions.forEach(p => permissionSet.add(p));
194
- channelIdPermissionsMap.set(channel.id, permissionSet);
195
- channelIdCodeMap.set(channel.id, channel.code);
196
- }
197
- }
198
- this.selectedRolePermissions = {};
199
- for (const channelId of Array.from(channelIdPermissionsMap.keys())) {
200
- // tslint:disable-next-line:no-non-null-assertion
201
- const permissionSet = channelIdPermissionsMap.get(channelId);
202
- const permissionsHash = {};
203
- for (const def of this.serverConfigService.getPermissionDefinitions()) {
204
- permissionsHash[def.name] = permissionSet.has(def.name);
205
- }
206
- this.selectedRolePermissions[channelId] = {
207
- // tslint:disable:no-non-null-assertion
208
- channelId,
209
- channelCode: channelIdCodeMap.get(channelId),
210
- permissions: permissionsHash,
211
- // tslint:enable:no-non-null-assertion
212
- };
213
- }
214
- }
215
- }
216
- }
217
- AdminDetailComponent.decorators = [
218
- { type: Component, args: [{
219
- selector: 'vdr-admin-detail',
220
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdateAdministrator'\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'settings.email-address' | translate\" for=\"emailAddress\">\r\n <input\r\n id=\"emailAddress\"\r\n type=\"text\"\r\n formControlName=\"emailAddress\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.first-name' | translate\" for=\"firstName\">\r\n <input\r\n id=\"firstName\"\r\n type=\"text\"\r\n formControlName=\"firstName\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.last-name' | translate\" for=\"lastName\">\r\n <input\r\n id=\"lastName\"\r\n type=\"text\"\r\n formControlName=\"lastName\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field *ngIf=\"isNew$ | async\" [label]=\"'settings.password' | translate\" for=\"password\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n *ngIf=\"!(isNew$ | async) && ('UpdateAdministrator' | hasPermission)\"\r\n [label]=\"'settings.password' | translate\"\r\n for=\"password\"\r\n [readOnlyToggle]=\"true\"\r\n >\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Administrator\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"administrator-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <label class=\"clr-control-label\">{{ 'settings.roles' | translate }}</label>\r\n <ng-select\r\n [items]=\"allRoles$ | async\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n formControlName=\"roles\"\r\n (change)=\"rolesChanged($event)\"\r\n bindLabel=\"description\"\r\n ></ng-select>\r\n\r\n <ul class=\"nav\" role=\"tablist\">\r\n <li role=\"presentation\" class=\"nav-item\" *ngFor=\"let channel of getAvailableChannels()\">\r\n <button\r\n [id]=\"channel.channelId\"\r\n (click)=\"selectedChannelId = channel.channelId\"\r\n class=\"btn btn-link nav-link\"\r\n [class.active]=\"selectedChannelId === channel.channelId\"\r\n [attr.aria-selected]=\"selectedChannelId === channel.channelId\"\r\n type=\"button\"\r\n >\r\n {{ channel.channelCode | channelCodeToLabel | translate }}\r\n </button>\r\n </li>\r\n </ul>\r\n <vdr-permission-grid\r\n [activePermissions]=\"getPermissionsForSelectedChannel()\"\r\n [permissionDefinitions]=\"permissionDefinitions\"\r\n [readonly]=\"true\"\r\n ></vdr-permission-grid>\r\n</form>\r\n",
221
- changeDetection: ChangeDetectionStrategy.OnPush,
222
- styles: [""]
223
- },] }
224
- ];
225
- AdminDetailComponent.ctorParameters = () => [
226
- { type: Router },
227
- { type: ActivatedRoute },
228
- { type: ServerConfigService },
229
- { type: ChangeDetectorRef },
230
- { type: DataService },
231
- { type: FormBuilder },
232
- { type: NotificationService }
233
- ];
234
-
235
- class AdministratorListComponent extends BaseListComponent {
236
- constructor(dataService, router, route, modalService, notificationService) {
237
- super(router, route);
238
- this.dataService = dataService;
239
- this.modalService = modalService;
240
- this.notificationService = notificationService;
241
- super.setQueryFn((...args) => this.dataService.administrator.getAdministrators(...args), (data) => data.administrators);
242
- }
243
- deleteAdministrator(administrator) {
244
- return this.modalService
245
- .dialog({
246
- title: marker('catalog.confirm-delete-administrator'),
247
- body: `${administrator.firstName} ${administrator.lastName}`,
248
- buttons: [
249
- { type: 'secondary', label: marker('common.cancel') },
250
- { type: 'danger', label: marker('common.delete'), returnValue: true },
251
- ],
252
- })
253
- .pipe(switchMap((res) => res ? this.dataService.administrator.deleteAdministrator(administrator.id) : EMPTY))
254
- .subscribe(() => {
255
- this.notificationService.success(marker('common.notify-delete-success'), {
256
- entity: 'Administrator',
257
- });
258
- this.refresh();
259
- }, (err) => {
260
- this.notificationService.error(marker('common.notify-delete-error'), {
261
- entity: 'Administrator',
262
- });
263
- });
264
- }
265
- }
266
- AdministratorListComponent.decorators = [
267
- { type: Component, args: [{
268
- selector: 'vdr-administrator-list',
269
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateAdministrator'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'admin.create-new-administrator' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'settings.first-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.last-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-administrator=\"item\">\r\n <td class=\"left align-middle\">{{ administrator.firstName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.lastName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.emailAddress }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', administrator.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteAdministrator(administrator)\"\r\n [disabled]=\"!('DeleteAdministrator' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
270
- styles: [""]
271
- },] }
272
- ];
273
- AdministratorListComponent.ctorParameters = () => [
274
- { type: DataService },
275
- { type: Router },
276
- { type: ActivatedRoute },
277
- { type: ModalService },
278
- { type: NotificationService }
279
- ];
280
-
281
- class ChannelDetailComponent extends BaseDetailComponent {
282
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
283
- super(route, router, serverConfigService, dataService);
284
- this.serverConfigService = serverConfigService;
285
- this.changeDetector = changeDetector;
286
- this.dataService = dataService;
287
- this.formBuilder = formBuilder;
288
- this.notificationService = notificationService;
289
- this.currencyCodes = Object.values(CurrencyCode);
290
- this.updatePermission = [Permission.SuperAdmin, Permission.UpdateChannel, Permission.CreateChannel];
291
- this.customFields = this.getCustomFieldConfig('Channel');
292
- this.detailForm = this.formBuilder.group({
293
- code: ['', Validators.required],
294
- token: ['', Validators.required],
295
- pricesIncludeTax: [false],
296
- currencyCode: [''],
297
- defaultShippingZoneId: ['', Validators.required],
298
- defaultLanguageCode: [],
299
- defaultTaxZoneId: ['', Validators.required],
300
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
301
- });
302
- }
303
- ngOnInit() {
304
- this.init();
305
- this.zones$ = this.dataService.settings.getZones().mapSingle(data => data.zones);
306
- this.availableLanguageCodes$ = this.serverConfigService.getAvailableLanguages();
307
- }
308
- ngOnDestroy() {
309
- this.destroy();
310
- }
311
- saveButtonEnabled() {
312
- return this.detailForm.dirty && this.detailForm.valid;
313
- }
314
- create() {
315
- if (!this.detailForm.dirty) {
316
- return;
317
- }
318
- const formValue = this.detailForm.value;
319
- const input = {
320
- code: formValue.code,
321
- token: formValue.token,
322
- defaultLanguageCode: formValue.defaultLanguageCode,
323
- pricesIncludeTax: formValue.pricesIncludeTax,
324
- currencyCode: formValue.currencyCode,
325
- defaultShippingZoneId: formValue.defaultShippingZoneId,
326
- defaultTaxZoneId: formValue.defaultTaxZoneId,
327
- customFields: formValue.customFields,
328
- };
329
- this.dataService.settings
330
- .createChannel(input)
331
- .pipe(mergeMap(({ createChannel }) => this.dataService.auth.currentUser().single$.pipe(map(({ me }) => ({
332
- me,
333
- createChannel,
334
- })))), mergeMap(({ me, createChannel }) =>
335
- // tslint:disable-next-line:no-non-null-assertion
336
- this.dataService.client.updateUserChannels(me.channels).pipe(map(() => createChannel))))
337
- .subscribe(data => {
338
- switch (data.__typename) {
339
- case 'Channel':
340
- this.notificationService.success(marker('common.notify-create-success'), {
341
- entity: 'Channel',
342
- });
343
- this.detailForm.markAsPristine();
344
- this.changeDetector.markForCheck();
345
- this.router.navigate(['../', data.id], { relativeTo: this.route });
346
- break;
347
- case 'LanguageNotAvailableError':
348
- this.notificationService.error(data.message);
349
- break;
350
- }
351
- });
352
- }
353
- save() {
354
- if (!this.detailForm.dirty) {
355
- return;
356
- }
357
- const formValue = this.detailForm.value;
358
- this.entity$
359
- .pipe(take(1), mergeMap(channel => {
360
- const input = {
361
- id: channel.id,
362
- code: formValue.code,
363
- token: formValue.token,
364
- pricesIncludeTax: formValue.pricesIncludeTax,
365
- currencyCode: formValue.currencyCode,
366
- defaultShippingZoneId: formValue.defaultShippingZoneId,
367
- defaultLanguageCode: formValue.defaultLanguageCode,
368
- defaultTaxZoneId: formValue.defaultTaxZoneId,
369
- customFields: formValue.customFields,
370
- };
371
- return this.dataService.settings.updateChannel(input);
372
- }))
373
- .subscribe(({ updateChannel }) => {
374
- switch (updateChannel.__typename) {
375
- case 'Channel':
376
- this.notificationService.success(marker('common.notify-update-success'), {
377
- entity: 'Channel',
378
- });
379
- this.detailForm.markAsPristine();
380
- this.changeDetector.markForCheck();
381
- break;
382
- case 'LanguageNotAvailableError':
383
- this.notificationService.error(updateChannel.message);
384
- }
385
- });
386
- }
387
- /**
388
- * Update the form values when the entity changes.
389
- */
390
- setFormValues(entity, languageCode) {
391
- this.detailForm.patchValue({
392
- code: entity.code,
393
- token: entity.token || this.generateToken(),
394
- pricesIncludeTax: entity.pricesIncludeTax,
395
- currencyCode: entity.currencyCode,
396
- defaultShippingZoneId: entity.defaultShippingZone ? entity.defaultShippingZone.id : '',
397
- defaultLanguageCode: entity.defaultLanguageCode,
398
- defaultTaxZoneId: entity.defaultTaxZone ? entity.defaultTaxZone.id : '',
399
- });
400
- if (this.customFields.length) {
401
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);
402
- }
403
- if (entity.code === DEFAULT_CHANNEL_CODE) {
404
- const codeControl = this.detailForm.get('code');
405
- if (codeControl) {
406
- codeControl.disable();
407
- }
408
- }
409
- }
410
- generateToken() {
411
- const randomString = () => Math.random().toString(36).substr(3, 10);
412
- return `${randomString()}${randomString()}`;
413
- }
414
- }
415
- ChannelDetailComponent.decorators = [
416
- { type: Component, args: [{
417
- selector: 'vdr-channel-detail',
418
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-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]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"['SuperAdmin', 'UpdateChannel']\"\r\n [disabled]=\"!saveButtonEnabled()\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.channel-token' | translate\" for=\"token\">\r\n <input\r\n id=\"token\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"token\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.currency' | translate\" for=\"defaultTaxZoneId\">\r\n <select\r\n clrSelect\r\n name=\"currencyCode\"\r\n formControlName=\"currencyCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let code of currencyCodes\" [value]=\"code\">{{ code | localeCurrencyName }}</option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.default-language' | translate\" for=\"defaultLanguage\">\r\n <select\r\n clrSelect\r\n name=\"defaultLanguageCode\"\r\n formControlName=\"defaultLanguageCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let languageCode of availableLanguageCodes$ | async\" [value]=\"languageCode\">\r\n {{ languageCode | localeLanguageName }} ({{ languageCode | uppercase }})\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.prices-include-tax' | translate\" for=\"pricesIncludeTax\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"pricesIncludeTax\"\r\n formControlName=\"pricesIncludeTax\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.default-tax-zone' | translate\" for=\"defaultTaxZoneId\">\r\n <select\r\n clrSelect\r\n name=\"defaultTaxZoneId\"\r\n formControlName=\"defaultTaxZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let zone of zones$ | async\" [value]=\"zone.id\">{{ zone.name }}</option>\r\n </select>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultTaxZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-tax-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n\r\n <vdr-form-field [label]=\"'settings.default-shipping-zone' | translate\" for=\"defaultShippingZoneId\">\r\n <select\r\n clrSelect\r\n name=\"defaultShippingZoneId\"\r\n formControlName=\"defaultShippingZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let zone of zones$ | async\" [value]=\"zone.id\">{{ zone.name }}</option>\r\n </select>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultShippingZoneId\"\r\n clrAlertType=\"warning\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-shipping-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Channel\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"channel-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n",
419
- changeDetection: ChangeDetectionStrategy.OnPush,
420
- styles: ["clr-alert{max-width:30rem;margin-bottom:12px}\n"]
421
- },] }
422
- ];
423
- ChannelDetailComponent.ctorParameters = () => [
424
- { type: Router },
425
- { type: ActivatedRoute },
426
- { type: ServerConfigService },
427
- { type: ChangeDetectorRef },
428
- { type: DataService },
429
- { type: FormBuilder },
430
- { type: NotificationService }
431
- ];
432
-
433
- class ChannelListComponent {
434
- constructor(dataService, modalService, notificationService) {
435
- this.dataService = dataService;
436
- this.modalService = modalService;
437
- this.notificationService = notificationService;
438
- this.refresh$ = new Subject();
439
- this.channels$ = this.refresh$.pipe(startWith(1), switchMap(() => this.dataService.settings.getChannels().mapStream(data => data.channels)));
440
- }
441
- isDefaultChannel(channelCode) {
442
- return channelCode === DEFAULT_CHANNEL_CODE;
443
- }
444
- deleteChannel(id) {
445
- this.modalService
446
- .dialog({
447
- title: marker('catalog.confirm-delete-channel'),
448
- buttons: [
449
- { type: 'secondary', label: marker('common.cancel') },
450
- { type: 'danger', label: marker('common.delete'), returnValue: true },
451
- ],
452
- })
453
- .pipe(switchMap(response => (response ? this.dataService.settings.deleteChannel(id) : EMPTY)), mergeMap(() => this.dataService.auth.currentUser().single$),
454
- // tslint:disable-next-line:no-non-null-assertion
455
- mergeMap(data => this.dataService.client.updateUserChannels(data.me.channels)))
456
- .subscribe(() => {
457
- this.notificationService.success(marker('common.notify-delete-success'), {
458
- entity: 'Channel',
459
- });
460
- this.refresh$.next(1);
461
- }, err => {
462
- this.notificationService.error(marker('common.notify-delete-error'), {
463
- entity: 'Channel',
464
- });
465
- });
466
- }
467
- }
468
- ChannelListComponent.decorators = [
469
- { type: Component, args: [{
470
- selector: 'vdr-channel-list',
471
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"['SuperAdmin', 'CreateChannel']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-channel' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table [items]=\"channels$ | async\">\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-channel=\"item\">\r\n <td class=\"left align-middle\">\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel | translate }}\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', channel.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger [disabled]=\"isDefaultChannel(channel.code)\">\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteChannel(channel.id)\"\r\n [disabled]=\"!(['SuperAdmin', 'DeleteChannel'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
472
- changeDetection: ChangeDetectionStrategy.OnPush,
473
- styles: [""]
474
- },] }
475
- ];
476
- ChannelListComponent.ctorParameters = () => [
477
- { type: DataService },
478
- { type: ModalService },
479
- { type: NotificationService }
480
- ];
481
-
482
- class CountryDetailComponent extends BaseDetailComponent {
483
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
484
- super(route, router, serverConfigService, dataService);
485
- this.changeDetector = changeDetector;
486
- this.dataService = dataService;
487
- this.formBuilder = formBuilder;
488
- this.notificationService = notificationService;
489
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdateCountry];
490
- this.customFields = this.getCustomFieldConfig('Country');
491
- this.detailForm = this.formBuilder.group({
492
- code: ['', Validators.required],
493
- name: ['', Validators.required],
494
- enabled: [true],
495
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
496
- });
497
- }
498
- ngOnInit() {
499
- this.init();
500
- this.country$ = this.entity$;
501
- }
502
- ngOnDestroy() {
503
- this.destroy();
504
- }
505
- create() {
506
- if (!this.detailForm.dirty) {
507
- return;
508
- }
509
- combineLatest(this.country$, this.languageCode$)
510
- .pipe(take(1), mergeMap(([country, languageCode]) => {
511
- const formValue = this.detailForm.value;
512
- const input = createUpdatedTranslatable({
513
- translatable: country,
514
- updatedFields: formValue,
515
- customFieldConfig: this.customFields,
516
- languageCode,
517
- defaultTranslation: {
518
- name: formValue.name,
519
- languageCode,
520
- },
521
- });
522
- return this.dataService.settings.createCountry(input);
523
- }))
524
- .subscribe(data => {
525
- this.notificationService.success(marker('common.notify-create-success'), {
526
- entity: 'Country',
527
- });
528
- this.detailForm.markAsPristine();
529
- this.changeDetector.markForCheck();
530
- this.router.navigate(['../', data.createCountry.id], { relativeTo: this.route });
531
- }, err => {
532
- this.notificationService.error(marker('common.notify-create-error'), {
533
- entity: 'Country',
534
- });
535
- });
536
- }
537
- save() {
538
- combineLatest(this.country$, this.languageCode$)
539
- .pipe(take(1), mergeMap(([country, languageCode]) => {
540
- const formValue = this.detailForm.value;
541
- const input = createUpdatedTranslatable({
542
- translatable: country,
543
- updatedFields: formValue,
544
- customFieldConfig: this.customFields,
545
- languageCode,
546
- defaultTranslation: {
547
- name: formValue.name,
548
- languageCode,
549
- },
550
- });
551
- return this.dataService.settings.updateCountry(input);
552
- }))
553
- .subscribe(data => {
554
- this.notificationService.success(marker('common.notify-update-success'), {
555
- entity: 'Country',
556
- });
557
- this.detailForm.markAsPristine();
558
- this.changeDetector.markForCheck();
559
- }, err => {
560
- this.notificationService.error(marker('common.notify-update-error'), {
561
- entity: 'Country',
562
- });
563
- });
564
- }
565
- setFormValues(country, languageCode) {
566
- const currentTranslation = findTranslation(country, languageCode);
567
- this.detailForm.patchValue({
568
- code: country.code,
569
- name: currentTranslation ? currentTranslation.name : '',
570
- enabled: country.enabled,
571
- });
572
- if (this.customFields.length) {
573
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), country, currentTranslation);
574
- }
575
- }
576
- }
577
- CountryDetailComponent.decorators = [
578
- { type: Component, args: [{
579
- selector: 'vdr-country-detail',
580
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"country-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.enabled' | translate\" for=\"enabled\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"enabled\"\r\n formControlName=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Country\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"country-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n",
581
- changeDetection: ChangeDetectionStrategy.OnPush,
582
- styles: [""]
583
- },] }
584
- ];
585
- CountryDetailComponent.ctorParameters = () => [
586
- { type: Router },
587
- { type: ActivatedRoute },
588
- { type: ServerConfigService },
589
- { type: ChangeDetectorRef },
590
- { type: DataService },
591
- { type: FormBuilder },
592
- { type: NotificationService }
593
- ];
594
-
595
- class CountryListComponent {
596
- constructor(dataService, notificationService, modalService, serverConfigService) {
597
- this.dataService = dataService;
598
- this.notificationService = notificationService;
599
- this.modalService = modalService;
600
- this.serverConfigService = serverConfigService;
601
- this.searchTerm = new FormControl('');
602
- this.countries = [];
603
- this.destroy$ = new Subject();
604
- this.refresh$ = new Subject();
605
- }
606
- ngOnInit() {
607
- this.contentLanguage$ = this.dataService.client
608
- .uiState()
609
- .mapStream(({ uiState }) => uiState.contentLanguage);
610
- const countries$ = combineLatest(this.contentLanguage$, this.searchTerm.valueChanges.pipe(startWith(null))).pipe(map(([__, term]) => term), switchMap(term => this.dataService.settings.getCountries(999, 0, term).single$), tap(data => {
611
- this.countries = data.countries.items;
612
- }), map(data => data.countries.items));
613
- this.zones$ = this.dataService.settings.getZones().mapStream(data => data.zones);
614
- this.countriesWithZones$ = combineLatest(countries$, this.zones$).pipe(map(([countries, zones]) => {
615
- return countries.map(country => (Object.assign(Object.assign({}, country), { zones: zones.filter(z => !!z.members.find(c => c.id === country.id)) })));
616
- }));
617
- this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();
618
- }
619
- ngOnDestroy() {
620
- this.destroy$.next(undefined);
621
- this.destroy$.complete();
622
- }
623
- setLanguage(code) {
624
- this.dataService.client.setContentLanguage(code).subscribe();
625
- }
626
- deleteCountry(countryId) {
627
- this.modalService
628
- .dialog({
629
- title: marker('catalog.confirm-delete-country'),
630
- buttons: [
631
- { type: 'secondary', label: marker('common.cancel') },
632
- { type: 'danger', label: marker('common.delete'), returnValue: true },
633
- ],
634
- })
635
- .pipe(switchMap(response => response ? this.dataService.settings.deleteCountry(countryId) : EMPTY))
636
- .subscribe(response => {
637
- if (response.deleteCountry.result === DeletionResult.DELETED) {
638
- this.notificationService.success(marker('common.notify-delete-success'), {
639
- entity: 'Country',
640
- });
641
- this.dataService.settings.getCountries(999, 0).single$.subscribe();
642
- }
643
- else {
644
- this.notificationService.error(response.deleteCountry.message || '');
645
- }
646
- }, err => {
647
- this.notificationService.error(marker('common.notify-delete-error'), {
648
- entity: 'Country',
649
- });
650
- });
651
- }
652
- isZone(input) {
653
- return input.hasOwnProperty('id');
654
- }
655
- }
656
- CountryListComponent.decorators = [
657
- { type: Component, args: [{
658
- selector: 'vdr-country-list',
659
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'settings.search-country-by-name' | translate\"\r\n class=\"search-input\"\r\n />\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"country-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"['CreateSettings', 'CreateCountry']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-country' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"countriesWithZones$ | async\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column [expand]=\"true\">{{ 'common.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.zone' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.enabled' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-country=\"item\">\r\n <td class=\"left align-middle\">{{ country.code }}</td>\r\n <td class=\"left align-middle\">{{ country.name }}</td>\r\n <td class=\"left align-middle\">\r\n <a [routerLink]=\"['/settings', 'zones', { contents: zone.id }]\" *ngFor=\"let zone of country.zones\">\r\n <vdr-chip [colorFrom]=\"zone.name\">{{ zone.name }}</vdr-chip>\r\n </a>\r\n </td>\r\n <td class=\"left align-middle\">\r\n <clr-icon\r\n [class.is-success]=\"country.enabled\"\r\n [attr.shape]=\"country.enabled ? 'check' : 'times'\"\r\n ></clr-icon>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', country.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteCountry(country.id)\"\r\n vdrDropdownItem\r\n [disabled]=\"!(['DeleteSettings', 'DeleteCountry'] | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
660
- changeDetection: ChangeDetectionStrategy.OnPush,
661
- styles: [".search-input{margin-top:6px;min-width:300px}\n"]
662
- },] }
663
- ];
664
- CountryListComponent.ctorParameters = () => [
665
- { type: DataService },
666
- { type: NotificationService },
667
- { type: ModalService },
668
- { type: ServerConfigService }
669
- ];
670
-
671
- class GlobalSettingsComponent extends BaseDetailComponent {
672
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
673
- super(route, router, serverConfigService, dataService);
674
- this.changeDetector = changeDetector;
675
- this.dataService = dataService;
676
- this.formBuilder = formBuilder;
677
- this.notificationService = notificationService;
678
- this.languageCodes = Object.values(LanguageCode);
679
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdateGlobalSettings];
680
- this.customFields = this.getCustomFieldConfig('GlobalSettings');
681
- this.detailForm = this.formBuilder.group({
682
- availableLanguages: [''],
683
- trackInventory: false,
684
- outOfStockThreshold: [0, Validators.required],
685
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
686
- });
687
- }
688
- ngOnInit() {
689
- this.init();
690
- this.dataService.client.userStatus().single$.subscribe(({ userStatus }) => {
691
- if (!userStatus.permissions.includes(Permission.UpdateSettings)) {
692
- const languagesSelect = this.detailForm.get('availableLanguages');
693
- if (languagesSelect) {
694
- languagesSelect.disable();
695
- }
696
- }
697
- });
698
- }
699
- save() {
700
- if (!this.detailForm.dirty) {
701
- return;
702
- }
703
- this.dataService.settings
704
- .updateGlobalSettings(this.detailForm.value)
705
- .pipe(tap(({ updateGlobalSettings }) => {
706
- switch (updateGlobalSettings.__typename) {
707
- case 'GlobalSettings':
708
- this.detailForm.markAsPristine();
709
- this.changeDetector.markForCheck();
710
- this.notificationService.success(marker('common.notify-update-success'), {
711
- entity: 'Settings',
712
- });
713
- break;
714
- case 'ChannelDefaultLanguageError':
715
- this.notificationService.error(updateGlobalSettings.message);
716
- }
717
- }), switchMap(() => this.serverConfigService.refreshGlobalSettings()), withLatestFrom(this.dataService.client.uiState().single$))
718
- .subscribe(([{ globalSettings }, { uiState }]) => {
719
- const availableLangs = globalSettings.availableLanguages;
720
- if (availableLangs.length && !availableLangs.includes(uiState.contentLanguage)) {
721
- this.dataService.client.setContentLanguage(availableLangs[0]).subscribe();
722
- }
723
- });
724
- }
725
- setFormValues(entity, languageCode) {
726
- this.detailForm.patchValue({
727
- availableLanguages: entity.availableLanguages,
728
- trackInventory: entity.trackInventory,
729
- outOfStockThreshold: entity.outOfStockThreshold,
730
- });
731
- if (this.customFields.length) {
732
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);
733
- }
734
- }
735
- }
736
- GlobalSettingsComponent.decorators = [
737
- { type: Component, args: [{
738
- selector: 'vdr-global-settings',
739
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"global-settings-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.available-languages' | translate\" for=\"availableLanguages\">\r\n <ng-select\r\n [items]=\"languageCodes\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n formControlName=\"availableLanguages\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-icon left\" (click)=\"clear.call(null, item)\" aria-hidden=\"true\">\r\n \u00D7\r\n </span>\r\n <span class=\"ng-value-label\">{{ item | localeLanguageName }} ({{ item }})</span>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n {{ item | localeLanguageName }} ({{ item }})\r\n </ng-template>\r\n </ng-select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'settings.global-out-of-stock-threshold' | translate\"\r\n for=\"outOfStockThreshold\"\r\n [tooltip]=\"'settings.global-out-of-stock-threshold-tooltip' | translate\"\r\n >\r\n <input\r\n id=\"outOfStockThreshold\"\r\n type=\"number\"\r\n formControlName=\"outOfStockThreshold\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'settings.track-inventory-default' | translate\"\r\n for=\"enabled\"\r\n [tooltip]=\"'catalog.track-inventory-tooltip' | translate\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"enabled\"\r\n formControlName=\"trackInventory\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"GlobalSettings\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"global-settings-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n",
740
- changeDetection: ChangeDetectionStrategy.OnPush,
741
- styles: ["::ng-deep ng-select .ng-value>span{margin:0!important}::ng-deep ng-select .ng-arrow-wrapper .ng-arrow{margin:0!important}::ng-deep ng-select .ng-select-container>span{margin:0!important}\n"]
742
- },] }
743
- ];
744
- GlobalSettingsComponent.ctorParameters = () => [
745
- { type: Router },
746
- { type: ActivatedRoute },
747
- { type: ServerConfigService },
748
- { type: ChangeDetectorRef },
749
- { type: DataService },
750
- { type: FormBuilder },
751
- { type: NotificationService }
752
- ];
753
-
754
- class PaymentMethodDetailComponent extends BaseDetailComponent {
755
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
756
- super(route, router, serverConfigService, dataService);
757
- this.changeDetector = changeDetector;
758
- this.dataService = dataService;
759
- this.formBuilder = formBuilder;
760
- this.notificationService = notificationService;
761
- this.checkers = [];
762
- this.handlers = [];
763
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdatePaymentMethod];
764
- this.customFields = this.getCustomFieldConfig('PaymentMethod');
765
- this.detailForm = this.formBuilder.group({
766
- code: ['', Validators.required],
767
- name: ['', Validators.required],
768
- description: '',
769
- enabled: [true, Validators.required],
770
- checker: {},
771
- handler: {},
772
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
773
- });
774
- }
775
- ngOnInit() {
776
- this.init();
777
- combineLatest([
778
- this.dataService.settings.getPaymentMethodOperations().single$,
779
- this.entity$.pipe(take(1)),
780
- ]).subscribe(([data, entity]) => {
781
- this.checkers = data.paymentMethodEligibilityCheckers;
782
- this.handlers = data.paymentMethodHandlers;
783
- this.changeDetector.markForCheck();
784
- this.selectedCheckerDefinition = data.paymentMethodEligibilityCheckers.find(c => c.code === (entity.checker && entity.checker.code));
785
- this.selectedHandlerDefinition = data.paymentMethodHandlers.find(c => c.code === (entity.handler && entity.handler.code));
786
- });
787
- }
788
- ngOnDestroy() {
789
- this.destroy();
790
- }
791
- updateCode(currentCode, nameValue) {
792
- if (!currentCode) {
793
- const codeControl = this.detailForm.get(['code']);
794
- if (codeControl && codeControl.pristine) {
795
- codeControl.setValue(normalizeString(nameValue, '-'));
796
- }
797
- }
798
- }
799
- configArgsIsPopulated() {
800
- const configArgsGroup = this.detailForm.get('configArgs');
801
- if (!configArgsGroup) {
802
- return false;
803
- }
804
- return 0 < Object.keys(configArgsGroup.controls).length;
805
- }
806
- selectChecker(checker) {
807
- this.selectedCheckerDefinition = checker;
808
- this.selectedChecker = configurableDefinitionToInstance(checker);
809
- const formControl = this.detailForm.get('checker');
810
- if (formControl) {
811
- formControl.clearValidators();
812
- formControl.updateValueAndValidity({ onlySelf: true });
813
- formControl.patchValue(this.selectedChecker);
814
- }
815
- this.detailForm.markAsDirty();
816
- }
817
- selectHandler(handler) {
818
- this.selectedHandlerDefinition = handler;
819
- this.selectedHandler = configurableDefinitionToInstance(handler);
820
- const formControl = this.detailForm.get('handler');
821
- if (formControl) {
822
- formControl.clearValidators();
823
- formControl.updateValueAndValidity({ onlySelf: true });
824
- formControl.patchValue(this.selectedHandler);
825
- }
826
- this.detailForm.markAsDirty();
827
- }
828
- removeChecker() {
829
- this.selectedChecker = null;
830
- this.detailForm.markAsDirty();
831
- }
832
- removeHandler() {
833
- this.selectedHandler = null;
834
- this.detailForm.markAsDirty();
835
- }
836
- create() {
837
- const selectedChecker = this.selectedChecker;
838
- const selectedHandler = this.selectedHandler;
839
- if (!selectedHandler) {
840
- return;
841
- }
842
- this.entity$
843
- .pipe(take(1), mergeMap(({ id }) => {
844
- const formValue = this.detailForm.value;
845
- const input = {
846
- name: formValue.name,
847
- code: formValue.code,
848
- description: formValue.description,
849
- enabled: formValue.enabled,
850
- checker: selectedChecker
851
- ? toConfigurableOperationInput(selectedChecker, formValue.checker)
852
- : null,
853
- handler: toConfigurableOperationInput(selectedHandler, formValue.handler),
854
- customFields: formValue.customFields,
855
- };
856
- return this.dataService.settings.createPaymentMethod(input);
857
- }))
858
- .subscribe(data => {
859
- this.notificationService.success(marker('common.notify-create-success'), {
860
- entity: 'PaymentMethod',
861
- });
862
- this.detailForm.markAsPristine();
863
- this.changeDetector.markForCheck();
864
- this.router.navigate(['../', data.createPaymentMethod.id], { relativeTo: this.route });
865
- }, err => {
866
- this.notificationService.error(marker('common.notify-create-error'), {
867
- entity: 'PaymentMethod',
868
- });
869
- });
870
- }
871
- save() {
872
- const selectedChecker = this.selectedChecker;
873
- const selectedHandler = this.selectedHandler;
874
- if (!selectedHandler) {
875
- return;
876
- }
877
- this.entity$
878
- .pipe(take(1), mergeMap(({ id }) => {
879
- const formValue = this.detailForm.value;
880
- const input = {
881
- id,
882
- name: formValue.name,
883
- code: formValue.code,
884
- description: formValue.description,
885
- enabled: formValue.enabled,
886
- checker: selectedChecker
887
- ? toConfigurableOperationInput(selectedChecker, formValue.checker)
888
- : null,
889
- handler: toConfigurableOperationInput(selectedHandler, formValue.handler),
890
- customFields: formValue.customFields,
891
- };
892
- return this.dataService.settings.updatePaymentMethod(input);
893
- }))
894
- .subscribe(data => {
895
- this.notificationService.success(marker('common.notify-update-success'), {
896
- entity: 'PaymentMethod',
897
- });
898
- this.detailForm.markAsPristine();
899
- this.changeDetector.markForCheck();
900
- }, err => {
901
- this.notificationService.error(marker('common.notify-update-error'), {
902
- entity: 'PaymentMethod',
903
- });
904
- });
905
- }
906
- setFormValues(paymentMethod) {
907
- this.detailForm.patchValue({
908
- name: paymentMethod.name,
909
- code: paymentMethod.code,
910
- description: paymentMethod.description,
911
- enabled: paymentMethod.enabled,
912
- checker: paymentMethod.checker || {},
913
- handler: paymentMethod.handler || {},
914
- });
915
- if (!this.selectedChecker) {
916
- this.selectedChecker = paymentMethod.checker && {
917
- code: paymentMethod.checker.code,
918
- args: paymentMethod.checker.args.map(a => (Object.assign(Object.assign({}, a), { value: getConfigArgValue(a.value) }))),
919
- };
920
- }
921
- if (!this.selectedHandler) {
922
- this.selectedHandler = paymentMethod.handler && {
923
- code: paymentMethod.handler.code,
924
- args: paymentMethod.handler.args.map(a => (Object.assign(Object.assign({}, a), { value: getConfigArgValue(a.value) }))),
925
- };
926
- }
927
- if (this.customFields.length) {
928
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), paymentMethod);
929
- }
930
- }
931
- }
932
- PaymentMethodDetailComponent.decorators = [
933
- { type: Component, args: [{
934
- selector: 'vdr-payment-method-detail',
935
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"payment-method-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid\"\r\n (click)=\"create()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid || !selectedHandler\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"entity$ | async as paymentMethod\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(paymentMethod.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field [label]=\"'common.enabled' | translate\" for=\"description\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"enabled\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"PaymentMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"payment-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <div class=\"clr-row mt4\">\r\n <div class=\"clr-col\">\r\n <label class=\"clr-control-label\">{{ 'settings.payment-eligibility-checker' | translate }}</label>\r\n <vdr-configurable-input\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"removeChecker()\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"clr-col\">\r\n <label class=\"clr-control-label\">{{ 'settings.payment-handler' | translate }}</label>\r\n <vdr-configurable-input\r\n *ngIf=\"selectedHandler && selectedHandlerDefinition\"\r\n [operation]=\"selectedHandler\"\r\n [operationDefinition]=\"selectedHandlerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"removeHandler()\"\r\n formControlName=\"handler\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedHandler || !selectedHandlerDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let handler of handlers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectHandler(handler)\"\r\n >\r\n {{ handler.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n",
936
- changeDetection: ChangeDetectionStrategy.OnPush,
937
- styles: [""]
938
- },] }
939
- ];
940
- PaymentMethodDetailComponent.ctorParameters = () => [
941
- { type: Router },
942
- { type: ActivatedRoute },
943
- { type: ServerConfigService },
944
- { type: ChangeDetectorRef },
945
- { type: DataService },
946
- { type: FormBuilder },
947
- { type: NotificationService }
948
- ];
949
-
950
- class PaymentMethodListComponent extends BaseListComponent {
951
- constructor(dataService, router, route, modalService, notificationService) {
952
- super(router, route);
953
- this.dataService = dataService;
954
- this.modalService = modalService;
955
- this.notificationService = notificationService;
956
- super.setQueryFn((...args) => this.dataService.settings.getPaymentMethods(...args).refetchOnChannelChange(), data => data.paymentMethods);
957
- }
958
- deletePaymentMethod(paymentMethodId) {
959
- this.showModalAndDelete(paymentMethodId)
960
- .pipe(switchMap(response => {
961
- if (response.result === DeletionResult.DELETED) {
962
- return [true];
963
- }
964
- else {
965
- return this.showModalAndDelete(paymentMethodId, response.message || '').pipe(map(r => r.result === DeletionResult.DELETED));
966
- }
967
- }),
968
- // Refresh the cached facets to reflect the changes
969
- switchMap(() => this.dataService.settings.getPaymentMethods(100).single$))
970
- .subscribe(() => {
971
- this.notificationService.success(marker('common.notify-delete-success'), {
972
- entity: 'PaymentMethod',
973
- });
974
- this.refresh();
975
- }, err => {
976
- this.notificationService.error(marker('common.notify-delete-error'), {
977
- entity: 'PaymentMethod',
978
- });
979
- });
980
- }
981
- showModalAndDelete(paymentMethodId, message) {
982
- return this.modalService
983
- .dialog({
984
- title: marker('settings.confirm-delete-payment-method'),
985
- body: message,
986
- buttons: [
987
- { type: 'secondary', label: marker('common.cancel') },
988
- { type: 'danger', label: marker('common.delete'), returnValue: true },
989
- ],
990
- })
991
- .pipe(switchMap(res => res ? this.dataService.settings.deletePaymentMethod(paymentMethodId, !!message) : EMPTY), map(res => res.deletePaymentMethod));
992
- }
993
- }
994
- PaymentMethodListComponent.decorators = [
995
- { type: Component, args: [{
996
- selector: 'vdr-payment-method-list',
997
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"payment-method-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"['CreateSettings', 'CreatePaymentMethod']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-payment-method' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.enabled' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-paymentMethod=\"item\">\r\n <td class=\"left align-middle\">{{ paymentMethod.code }}</td>\r\n <td class=\"left align-middle\">{{ paymentMethod.enabled }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', paymentMethod.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deletePaymentMethod(paymentMethod.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeletePaymentMethod'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
998
- changeDetection: ChangeDetectionStrategy.OnPush,
999
- styles: [""]
1000
- },] }
1001
- ];
1002
- PaymentMethodListComponent.ctorParameters = () => [
1003
- { type: DataService },
1004
- { type: Router },
1005
- { type: ActivatedRoute },
1006
- { type: ModalService },
1007
- { type: NotificationService }
1008
- ];
1009
-
1010
- /**
1011
- * A table showing and allowing the setting of all possible CRUD permissions.
1012
- */
1013
- class PermissionGridComponent {
1014
- constructor() {
1015
- this.readonly = false;
1016
- this.permissionChange = new EventEmitter();
1017
- }
1018
- ngOnInit() {
1019
- this.buildGrid();
1020
- }
1021
- setPermission(permission, value) {
1022
- if (!this.readonly) {
1023
- this.permissionChange.emit({ permission, value });
1024
- }
1025
- }
1026
- toggleAll(defs) {
1027
- const value = defs.some(d => !this.activePermissions.includes(d.name));
1028
- for (const def of defs) {
1029
- this.permissionChange.emit({ permission: def.name, value });
1030
- }
1031
- }
1032
- buildGrid() {
1033
- var _a;
1034
- const crudGroups = new Map();
1035
- const nonCrud = [];
1036
- const crudRe = /^(Create|Read|Update|Delete)([a-zA-Z]+)$/;
1037
- for (const def of this.permissionDefinitions) {
1038
- const isCrud = crudRe.test(def.name);
1039
- if (isCrud) {
1040
- const groupName = (_a = def.name.match(crudRe)) === null || _a === void 0 ? void 0 : _a[2];
1041
- if (groupName) {
1042
- const existing = crudGroups.get(groupName);
1043
- if (existing) {
1044
- existing.push(def);
1045
- }
1046
- else {
1047
- crudGroups.set(groupName, [def]);
1048
- }
1049
- }
1050
- }
1051
- else if (def.assignable) {
1052
- nonCrud.push(def);
1053
- }
1054
- }
1055
- this.gridData = [
1056
- ...nonCrud.map(d => ({
1057
- label: d.name,
1058
- description: d.description,
1059
- permissions: [d],
1060
- })),
1061
- ...Array.from(crudGroups.entries()).map(([label, defs]) => {
1062
- return {
1063
- label,
1064
- description: this.extractCrudDescription(defs[0]),
1065
- permissions: defs,
1066
- };
1067
- }),
1068
- ];
1069
- }
1070
- extractCrudDescription(def) {
1071
- return def.description.replace(/Grants permission to [\w]+/, 'Grants permissions on');
1072
- }
1073
- }
1074
- PermissionGridComponent.decorators = [
1075
- { type: Component, args: [{
1076
- selector: 'vdr-permission-grid',
1077
- template: "<table class=\"table\">\r\n <tbody>\r\n <tr *ngFor=\"let section of gridData\">\r\n <td class=\"permission-group left\">\r\n <div><strong>{{ section.label | translate }}</strong></div>\r\n <small>{{ section.description | translate }}</small><br>\r\n <button *ngIf=\"1 < section.permissions.length && !readonly\" class=\"btn btn-sm btn-link\" (click)=\"toggleAll(section.permissions)\">\r\n {{ 'common.toggle-all' | translate }}\r\n </button>\r\n </td>\r\n <td *ngFor=\"let permission of section.permissions\" [attr.colspan]=\"section.permissions.length === 1 ? 4 : 1\">\r\n <vdr-select-toggle\r\n size=\"small\"\r\n [title]=\"permission.description\"\r\n [label]=\"permission.name\"\r\n [disabled]=\"readonly\"\r\n [selected]=\"activePermissions?.includes(permission.name)\"\r\n (selectedChange)=\"setPermission(permission.name, $event)\"\r\n ></vdr-select-toggle>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n",
1078
- changeDetection: ChangeDetectionStrategy.OnPush,
1079
- styles: ["td.permission-group{max-width:300px;background-color:var(--color-component-bg-200)}\n"]
1080
- },] }
1081
- ];
1082
- PermissionGridComponent.propDecorators = {
1083
- permissionDefinitions: [{ type: Input }],
1084
- activePermissions: [{ type: Input }],
1085
- readonly: [{ type: Input }],
1086
- permissionChange: [{ type: Output }]
1087
- };
1088
-
1089
- class ProfileComponent extends BaseDetailComponent {
1090
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
1091
- super(route, router, serverConfigService, dataService);
1092
- this.changeDetector = changeDetector;
1093
- this.dataService = dataService;
1094
- this.formBuilder = formBuilder;
1095
- this.notificationService = notificationService;
1096
- this.customFields = this.getCustomFieldConfig('Administrator');
1097
- this.detailForm = this.formBuilder.group({
1098
- emailAddress: ['', Validators.required],
1099
- firstName: ['', Validators.required],
1100
- lastName: ['', Validators.required],
1101
- password: [''],
1102
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
1103
- });
1104
- }
1105
- ngOnInit() {
1106
- this.init();
1107
- }
1108
- ngOnDestroy() {
1109
- this.destroy();
1110
- }
1111
- save() {
1112
- this.entity$
1113
- .pipe(take(1), mergeMap(({ id }) => {
1114
- const formValue = this.detailForm.value;
1115
- const administrator = {
1116
- emailAddress: formValue.emailAddress,
1117
- firstName: formValue.firstName,
1118
- lastName: formValue.lastName,
1119
- password: formValue.password,
1120
- customFields: formValue.customFields,
1121
- };
1122
- return this.dataService.administrator.updateActiveAdministrator(administrator);
1123
- }))
1124
- .subscribe(data => {
1125
- this.notificationService.success(marker('common.notify-update-success'), {
1126
- entity: 'Administrator',
1127
- });
1128
- this.detailForm.markAsPristine();
1129
- this.changeDetector.markForCheck();
1130
- }, err => {
1131
- this.notificationService.error(marker('common.notify-update-error'), {
1132
- entity: 'Administrator',
1133
- });
1134
- });
1135
- }
1136
- setFormValues(administrator, languageCode) {
1137
- this.detailForm.patchValue({
1138
- emailAddress: administrator.emailAddress,
1139
- firstName: administrator.firstName,
1140
- lastName: administrator.lastName,
1141
- });
1142
- if (this.customFields.length) {
1143
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), administrator);
1144
- }
1145
- }
1146
- }
1147
- ProfileComponent.decorators = [
1148
- { type: Component, args: [{
1149
- selector: 'vdr-profile',
1150
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'settings.email-address' | translate\" for=\"emailAddress\">\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.first-name' | translate\" for=\"firstName\">\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.last-name' | translate\" for=\"lastName\">\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field *ngIf=\"isNew$ | async\" [label]=\"'settings.password' | translate\" for=\"password\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.password' | translate\" for=\"password\" [readOnlyToggle]=\"true\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Administrator\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n",
1151
- changeDetection: ChangeDetectionStrategy.OnPush,
1152
- styles: [""]
1153
- },] }
1154
- ];
1155
- ProfileComponent.ctorParameters = () => [
1156
- { type: Router },
1157
- { type: ActivatedRoute },
1158
- { type: ServerConfigService },
1159
- { type: ChangeDetectorRef },
1160
- { type: DataService },
1161
- { type: FormBuilder },
1162
- { type: NotificationService }
1163
- ];
1164
-
1165
- class RoleDetailComponent extends BaseDetailComponent {
1166
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
1167
- super(route, router, serverConfigService, dataService);
1168
- this.changeDetector = changeDetector;
1169
- this.dataService = dataService;
1170
- this.formBuilder = formBuilder;
1171
- this.notificationService = notificationService;
1172
- this.detailForm = this.formBuilder.group({
1173
- code: ['', Validators.required],
1174
- description: ['', Validators.required],
1175
- channelIds: [],
1176
- permissions: [],
1177
- });
1178
- }
1179
- ngOnInit() {
1180
- this.init();
1181
- this.role$ = this.entity$;
1182
- this.permissionDefinitions = this.serverConfigService.getPermissionDefinitions();
1183
- }
1184
- ngOnDestroy() {
1185
- this.destroy();
1186
- }
1187
- updateCode(nameValue) {
1188
- const codeControl = this.detailForm.get(['code']);
1189
- if (codeControl && codeControl.pristine) {
1190
- codeControl.setValue(normalizeString(nameValue, '-'));
1191
- }
1192
- }
1193
- setPermission(change) {
1194
- const permissionsControl = this.detailForm.get('permissions');
1195
- if (permissionsControl) {
1196
- const currentPermissions = permissionsControl.value;
1197
- const newValue = change.value === true
1198
- ? unique([...currentPermissions, change.permission])
1199
- : currentPermissions.filter(p => p !== change.permission);
1200
- permissionsControl.setValue(newValue);
1201
- permissionsControl.markAsDirty();
1202
- }
1203
- }
1204
- create() {
1205
- const formValue = this.detailForm.value;
1206
- const role = formValue;
1207
- this.dataService.administrator.createRole(role).subscribe(data => {
1208
- this.notificationService.success(marker('common.notify-create-success'), { entity: 'Role' });
1209
- this.detailForm.markAsPristine();
1210
- this.changeDetector.markForCheck();
1211
- this.router.navigate(['../', data.createRole.id], { relativeTo: this.route });
1212
- }, err => {
1213
- this.notificationService.error(marker('common.notify-create-error'), {
1214
- entity: 'Role',
1215
- });
1216
- });
1217
- }
1218
- save() {
1219
- this.role$
1220
- .pipe(take(1), mergeMap(({ id }) => {
1221
- const formValue = this.detailForm.value;
1222
- const role = Object.assign({ id }, formValue);
1223
- return this.dataService.administrator.updateRole(role);
1224
- }))
1225
- .subscribe(data => {
1226
- this.notificationService.success(marker('common.notify-update-success'), { entity: 'Role' });
1227
- this.detailForm.markAsPristine();
1228
- this.changeDetector.markForCheck();
1229
- }, err => {
1230
- this.notificationService.error(marker('common.notify-update-error'), {
1231
- entity: 'Role',
1232
- });
1233
- });
1234
- }
1235
- setFormValues(role, languageCode) {
1236
- this.detailForm.patchValue({
1237
- description: role.description,
1238
- code: role.code,
1239
- channelIds: role.channels.map(c => c.id),
1240
- permissions: role.permissions,
1241
- });
1242
- // This was required to get the channel selector component to
1243
- // correctly display its contents. A while spent debugging the root
1244
- // cause did not yield a solution, therefore this next line.
1245
- this.changeDetector.detectChanges();
1246
- }
1247
- }
1248
- RoleDetailComponent.decorators = [
1249
- { type: Component, args: [{
1250
- selector: 'vdr-role-detail',
1251
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"role-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdateAdministrator'\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\">\r\n <input\r\n id=\"description\"\r\n type=\"text\"\r\n formControlName=\"description\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n (input)=\"updateCode($event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"'UpdateAdministrator' | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.channel' | translate\">\r\n <vdr-channel-assignment-control\r\n formControlName=\"channelIds\"\r\n [vdrDisabled]=\"!('UpdateAdministrator' | hasPermission)\"\r\n ></vdr-channel-assignment-control>\r\n </vdr-form-field>\r\n <label>{{ 'settings.permissions' | translate }}</label>\r\n <vdr-permission-grid\r\n [permissionDefinitions]=\"permissionDefinitions\"\r\n [activePermissions]=\"detailForm.get('permissions')?.value\"\r\n (permissionChange)=\"setPermission($event)\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n ></vdr-permission-grid>\r\n</form>\r\n",
1252
- changeDetection: ChangeDetectionStrategy.OnPush,
1253
- styles: [""]
1254
- },] }
1255
- ];
1256
- RoleDetailComponent.ctorParameters = () => [
1257
- { type: Router },
1258
- { type: ActivatedRoute },
1259
- { type: ServerConfigService },
1260
- { type: ChangeDetectorRef },
1261
- { type: DataService },
1262
- { type: FormBuilder },
1263
- { type: NotificationService }
1264
- ];
1265
-
1266
- class RoleListComponent extends BaseListComponent {
1267
- constructor(modalService, notificationService, dataService, router, route) {
1268
- super(router, route);
1269
- this.modalService = modalService;
1270
- this.notificationService = notificationService;
1271
- this.dataService = dataService;
1272
- this.initialLimit = 3;
1273
- this.displayLimit = {};
1274
- super.setQueryFn((...args) => this.dataService.administrator.getRoles(...args), data => data.roles);
1275
- }
1276
- ngOnInit() {
1277
- super.ngOnInit();
1278
- this.visibleRoles$ = this.items$.pipe(map(roles => roles.filter(role => role.code !== CUSTOMER_ROLE_CODE)));
1279
- }
1280
- toggleDisplayLimit(role) {
1281
- if (this.displayLimit[role.id] === role.permissions.length) {
1282
- this.displayLimit[role.id] = this.initialLimit;
1283
- }
1284
- else {
1285
- this.displayLimit[role.id] = role.permissions.length;
1286
- }
1287
- }
1288
- isDefaultRole(role) {
1289
- return role.code === SUPER_ADMIN_ROLE_CODE || role.code === CUSTOMER_ROLE_CODE;
1290
- }
1291
- deleteRole(id) {
1292
- this.modalService
1293
- .dialog({
1294
- title: marker('settings.confirm-delete-role'),
1295
- buttons: [
1296
- { type: 'secondary', label: marker('common.cancel') },
1297
- { type: 'danger', label: marker('common.delete'), returnValue: true },
1298
- ],
1299
- })
1300
- .pipe(switchMap(response => (response ? this.dataService.administrator.deleteRole(id) : EMPTY)))
1301
- .subscribe(() => {
1302
- this.notificationService.success(marker('common.notify-delete-success'), {
1303
- entity: 'Role',
1304
- });
1305
- this.refresh();
1306
- }, err => {
1307
- this.notificationService.error(marker('common.notify-delete-error'), {
1308
- entity: 'Role',
1309
- });
1310
- });
1311
- }
1312
- }
1313
- RoleListComponent.decorators = [
1314
- { type: Component, args: [{
1315
- selector: 'vdr-role-list',
1316
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"role-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateAdministrator'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-role' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"visibleRoles$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.description' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.channel' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.permissions' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-role=\"item\">\r\n <td class=\"left align-middle\">{{ role.description }}</td>\r\n <td class=\"left align-middle\"><span *ngIf=\"!isDefaultRole(role)\">{{ role.code }}</span></td>\r\n <td class=\"left align-middle\">\r\n <ng-container *ngIf=\"!isDefaultRole(role)\">\r\n <vdr-chip *ngFor=\"let channel of role.channels\">\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel | translate }}\r\n </vdr-chip>\r\n </ng-container>\r\n </td>\r\n <td class=\"left align-middle\">\r\n <ng-container *ngIf=\"!isDefaultRole(role); else defaultRole\">\r\n <vdr-chip *ngFor=\"let permission of role.permissions | slice: 0:displayLimit[role.id] || 3\">{{ permission }}</vdr-chip>\r\n <button\r\n class=\"btn btn-sm btn-secondary btn-icon\"\r\n *ngIf=\"role.permissions.length > initialLimit\"\r\n (click)=\"toggleDisplayLimit(role)\"\r\n >\r\n <ng-container *ngIf=\"(displayLimit[role.id] || 0) < role.permissions.length; else collapse\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ role.permissions.length - initialLimit }}\r\n </ng-container>\r\n <ng-template #collapse>\r\n <clr-icon shape=\"minus\"></clr-icon>\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n <ng-template #defaultRole>\r\n <span class=\"default-role-label\">{{ 'settings.default-role-label' | translate }}</span>\r\n </ng-template>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n *ngIf=\"!isDefaultRole(role)\"\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', role.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger [disabled]=\"isDefaultRole(role)\">\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteRole(role.id)\"\r\n [disabled]=\"!('SuperAdmin' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
1317
- changeDetection: ChangeDetectionStrategy.OnPush,
1318
- styles: [".default-role-label{color:var(--color-grey-400)}\n"]
1319
- },] }
1320
- ];
1321
- RoleListComponent.ctorParameters = () => [
1322
- { type: ModalService },
1323
- { type: NotificationService },
1324
- { type: DataService },
1325
- { type: Router },
1326
- { type: ActivatedRoute }
1327
- ];
1328
-
1329
- class ShippingEligibilityTestResultComponent {
1330
- constructor() {
1331
- this.okToRun = false;
1332
- this.testDataUpdated = false;
1333
- this.runTest = new EventEmitter();
1334
- }
1335
- }
1336
- ShippingEligibilityTestResultComponent.decorators = [
1337
- { type: Component, args: [{
1338
- selector: 'vdr-shipping-eligibility-test-result',
1339
- template: "<div class=\"test-result card\">\r\n <div class=\"card-header\">\r\n {{ 'settings.test-result' | translate }}\r\n </div>\r\n <div class=\"card-block\" *ngFor=\"let quote of testResult\">\r\n <div class=\"result-details\" [class.stale]=\"testDataUpdated\">\r\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\r\n {{ quote.name }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ quote.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\r\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\r\n </div>\r\n </div>\r\n <div class=\"card-block\" *ngIf=\"testResult?.length === 0\">\r\n <clr-icon shape=\"ban\" class=\"is-solid error\"></clr-icon>\r\n {{ 'settings.no-eligible-shipping-methods' | translate }}\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-secondary\" (click)=\"runTest.emit()\" [disabled]=\"!okToRun\">\r\n {{ 'settings.test-shipping-methods' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n",
1340
- changeDetection: ChangeDetectionStrategy.OnPush,
1341
- styles: [".result-details{transition:opacity .2s}.result-details.stale{opacity:.5}.price-row{display:flex}.price-row>*:not(:first-child){margin-left:24px}clr-icon.error{color:var(--color-error-500)}\n"]
1342
- },] }
1343
- ];
1344
- ShippingEligibilityTestResultComponent.propDecorators = {
1345
- testResult: [{ type: Input }],
1346
- okToRun: [{ type: Input }],
1347
- testDataUpdated: [{ type: Input }],
1348
- currencyCode: [{ type: Input }],
1349
- runTest: [{ type: Output }]
1350
- };
1351
-
1352
- class ShippingMethodDetailComponent extends BaseDetailComponent {
1353
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
1354
- super(route, router, serverConfigService, dataService);
1355
- this.changeDetector = changeDetector;
1356
- this.dataService = dataService;
1357
- this.formBuilder = formBuilder;
1358
- this.notificationService = notificationService;
1359
- this.checkers = [];
1360
- this.calculators = [];
1361
- this.fulfillmentHandlers = [];
1362
- this.testDataUpdated = false;
1363
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdateShippingMethod];
1364
- this.fetchTestResult$ = new Subject();
1365
- this.customFields = this.getCustomFieldConfig('ShippingMethod');
1366
- this.detailForm = this.formBuilder.group({
1367
- code: ['', Validators.required],
1368
- name: ['', Validators.required],
1369
- description: '',
1370
- fulfillmentHandler: ['', Validators.required],
1371
- checker: {},
1372
- calculator: {},
1373
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
1374
- });
1375
- }
1376
- ngOnInit() {
1377
- this.init();
1378
- combineLatest([
1379
- this.dataService.shippingMethod.getShippingMethodOperations().single$,
1380
- this.entity$.pipe(take(1)),
1381
- ]).subscribe(([data, entity]) => {
1382
- this.checkers = data.shippingEligibilityCheckers;
1383
- this.calculators = data.shippingCalculators;
1384
- this.fulfillmentHandlers = data.fulfillmentHandlers;
1385
- this.changeDetector.markForCheck();
1386
- this.selectedCheckerDefinition = data.shippingEligibilityCheckers.find(c => c.code === (entity.checker && entity.checker.code));
1387
- this.selectedCalculatorDefinition = data.shippingCalculators.find(c => c.code === (entity.calculator && entity.calculator.code));
1388
- });
1389
- this.activeChannel$ = this.dataService.settings
1390
- .getActiveChannel()
1391
- .mapStream(data => data.activeChannel);
1392
- this.testResult$ = this.fetchTestResult$.pipe(switchMap(([address, lines]) => {
1393
- if (!this.selectedChecker || !this.selectedCalculator) {
1394
- return of(undefined);
1395
- }
1396
- const formValue = this.detailForm.value;
1397
- const input = {
1398
- shippingAddress: Object.assign(Object.assign({}, address), { streetLine1: 'test' }),
1399
- lines: lines.map(l => ({ productVariantId: l.id, quantity: l.quantity })),
1400
- checker: toConfigurableOperationInput(this.selectedChecker, formValue.checker),
1401
- calculator: toConfigurableOperationInput(this.selectedCalculator, formValue.calculator),
1402
- };
1403
- return this.dataService.shippingMethod
1404
- .testShippingMethod(input)
1405
- .mapSingle(result => result.testShippingMethod);
1406
- }));
1407
- // tslint:disable:no-non-null-assertion
1408
- merge(this.detailForm.get(['checker']).valueChanges, this.detailForm.get(['calculator']).valueChanges)
1409
- .pipe(takeUntil(this.destroy$))
1410
- .subscribe(() => (this.testDataUpdated = true));
1411
- // tslint:enable:no-non-null-assertion
1412
- }
1413
- ngOnDestroy() {
1414
- this.destroy();
1415
- }
1416
- updateCode(currentCode, nameValue) {
1417
- if (!currentCode) {
1418
- const codeControl = this.detailForm.get(['code']);
1419
- if (codeControl && codeControl.pristine) {
1420
- codeControl.setValue(normalizeString(nameValue, '-'));
1421
- }
1422
- }
1423
- }
1424
- selectChecker(checker) {
1425
- this.selectedCheckerDefinition = checker;
1426
- this.selectedChecker = configurableDefinitionToInstance(checker);
1427
- const formControl = this.detailForm.get('checker');
1428
- if (formControl) {
1429
- formControl.clearValidators();
1430
- formControl.updateValueAndValidity({ onlySelf: true });
1431
- formControl.patchValue(this.selectedChecker);
1432
- }
1433
- this.detailForm.markAsDirty();
1434
- }
1435
- selectCalculator(calculator) {
1436
- this.selectedCalculatorDefinition = calculator;
1437
- this.selectedCalculator = configurableDefinitionToInstance(calculator);
1438
- const formControl = this.detailForm.get('calculator');
1439
- if (formControl) {
1440
- formControl.clearValidators();
1441
- formControl.updateValueAndValidity({ onlySelf: true });
1442
- formControl.patchValue(this.selectedCalculator);
1443
- }
1444
- this.detailForm.markAsDirty();
1445
- }
1446
- create() {
1447
- const selectedChecker = this.selectedChecker;
1448
- const selectedCalculator = this.selectedCalculator;
1449
- if (!selectedChecker || !selectedCalculator) {
1450
- return;
1451
- }
1452
- combineLatest([this.entity$, this.languageCode$])
1453
- .pipe(take(1), mergeMap(([shippingMethod, languageCode]) => {
1454
- const formValue = this.detailForm.value;
1455
- const input = Object.assign(Object.assign({}, this.getUpdatedShippingMethod(shippingMethod, this.detailForm, languageCode)), { checker: toConfigurableOperationInput(selectedChecker, formValue.checker), calculator: toConfigurableOperationInput(selectedCalculator, formValue.calculator) });
1456
- return this.dataService.shippingMethod.createShippingMethod(input);
1457
- }))
1458
- .subscribe(data => {
1459
- this.notificationService.success(marker('common.notify-create-success'), {
1460
- entity: 'ShippingMethod',
1461
- });
1462
- this.detailForm.markAsPristine();
1463
- this.changeDetector.markForCheck();
1464
- this.router.navigate(['../', data.createShippingMethod.id], { relativeTo: this.route });
1465
- }, err => {
1466
- this.notificationService.error(marker('common.notify-create-error'), {
1467
- entity: 'ShippingMethod',
1468
- });
1469
- });
1470
- }
1471
- save() {
1472
- const selectedChecker = this.selectedChecker;
1473
- const selectedCalculator = this.selectedCalculator;
1474
- if (!selectedChecker || !selectedCalculator) {
1475
- return;
1476
- }
1477
- combineLatest([this.entity$, this.languageCode$])
1478
- .pipe(take(1), mergeMap(([shippingMethod, languageCode]) => {
1479
- const formValue = this.detailForm.value;
1480
- const input = Object.assign(Object.assign({}, this.getUpdatedShippingMethod(shippingMethod, this.detailForm, languageCode)), { checker: toConfigurableOperationInput(selectedChecker, formValue.checker), calculator: toConfigurableOperationInput(selectedCalculator, formValue.calculator) });
1481
- return this.dataService.shippingMethod.updateShippingMethod(input);
1482
- }))
1483
- .subscribe(data => {
1484
- this.notificationService.success(marker('common.notify-update-success'), {
1485
- entity: 'ShippingMethod',
1486
- });
1487
- this.detailForm.markAsPristine();
1488
- this.changeDetector.markForCheck();
1489
- }, err => {
1490
- this.notificationService.error(marker('common.notify-update-error'), {
1491
- entity: 'ShippingMethod',
1492
- });
1493
- });
1494
- }
1495
- setTestOrderLines(event) {
1496
- this.testOrderLines = event;
1497
- this.testDataUpdated = true;
1498
- }
1499
- setTestAddress(event) {
1500
- this.testAddress = event;
1501
- this.testDataUpdated = true;
1502
- }
1503
- allTestDataPresent() {
1504
- return !!(this.testAddress &&
1505
- this.testOrderLines &&
1506
- this.testOrderLines.length &&
1507
- this.selectedChecker &&
1508
- this.selectedCalculator);
1509
- }
1510
- runTest() {
1511
- this.fetchTestResult$.next([this.testAddress, this.testOrderLines]);
1512
- this.testDataUpdated = false;
1513
- }
1514
- /**
1515
- * Given a ShippingMethod and the value of the detailForm, this method creates an updated copy which
1516
- * can then be persisted to the API.
1517
- */
1518
- getUpdatedShippingMethod(shippingMethod, formGroup, languageCode) {
1519
- const formValue = formGroup.value;
1520
- const input = createUpdatedTranslatable({
1521
- translatable: shippingMethod,
1522
- updatedFields: formValue,
1523
- customFieldConfig: this.customFields,
1524
- languageCode,
1525
- defaultTranslation: {
1526
- languageCode,
1527
- name: shippingMethod.name || '',
1528
- description: shippingMethod.description || '',
1529
- },
1530
- });
1531
- return Object.assign(Object.assign({}, input), { fulfillmentHandler: formValue.fulfillmentHandler });
1532
- }
1533
- setFormValues(shippingMethod, languageCode) {
1534
- var _a, _b, _c, _d;
1535
- const currentTranslation = findTranslation(shippingMethod, languageCode);
1536
- this.detailForm.patchValue({
1537
- name: (_a = currentTranslation === null || currentTranslation === void 0 ? void 0 : currentTranslation.name) !== null && _a !== void 0 ? _a : '',
1538
- description: (_b = currentTranslation === null || currentTranslation === void 0 ? void 0 : currentTranslation.description) !== null && _b !== void 0 ? _b : '',
1539
- code: shippingMethod.code,
1540
- fulfillmentHandler: shippingMethod.fulfillmentHandlerCode,
1541
- checker: shippingMethod.checker || {},
1542
- calculator: shippingMethod.calculator || {},
1543
- });
1544
- if (!this.selectedChecker) {
1545
- this.selectedChecker = shippingMethod.checker && {
1546
- code: shippingMethod.checker.code,
1547
- args: shippingMethod.checker.args.map(a => (Object.assign(Object.assign({}, a), { value: getConfigArgValue(a.value) }))),
1548
- };
1549
- }
1550
- if (!this.selectedCalculator) {
1551
- this.selectedCalculator = shippingMethod.calculator && {
1552
- code: (_c = shippingMethod.calculator) === null || _c === void 0 ? void 0 : _c.code,
1553
- args: (_d = shippingMethod.calculator) === null || _d === void 0 ? void 0 : _d.args.map(a => (Object.assign(Object.assign({}, a), { value: getConfigArgValue(a.value) }))),
1554
- };
1555
- }
1556
- if (this.customFields.length) {
1557
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), shippingMethod, currentTranslation);
1558
- }
1559
- }
1560
- }
1561
- ShippingMethodDetailComponent.decorators = [
1562
- { type: Component, args: [{
1563
- selector: 'vdr-shipping-method-detail',
1564
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"shipping-method-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"updatePermission\"\r\n [disabled]=\"\r\n detailForm.pristine || detailForm.invalid || !selectedChecker || !selectedCalculator\r\n \"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"entity$ | async as shippingMethod\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(shippingMethod.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field [label]=\"'settings.fulfillment-handler' | translate\" for=\"fulfillmentHandler\" class=\"mb2\">\r\n <select\r\n name=\"fulfillmentHandler\"\r\n formControlName=\"fulfillmentHandler\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let handler of fulfillmentHandlers\" [value]=\"handler.code\">\r\n {{ handler.code }}: {{ handler.description }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ShippingMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"shipping-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <div class=\"clr-row mt4\">\r\n <div class=\"clr-col\">\r\n <label class=\"clr-control-label\">{{ 'settings.shipping-eligibility-checker' | translate }}</label>\r\n <vdr-configurable-input\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedChecker = null\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"clr-col\">\r\n <label class=\"clr-control-label\">{{ 'settings.shipping-calculator' | translate }}</label>\r\n <vdr-configurable-input\r\n *ngIf=\"selectedCalculator && selectedCalculatorDefinition\"\r\n [operation]=\"selectedCalculator\"\r\n [operationDefinition]=\"selectedCalculatorDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"selectedCalculator = null\"\r\n formControlName=\"calculator\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedCalculator || !selectedCalculatorDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let calculator of calculators\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectCalculator(calculator)\"\r\n >\r\n {{ calculator.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n<div class=\"testing-tool\">\r\n <clr-accordion>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'settings.test-shipping-method' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col\">\r\n <vdr-test-order-builder\r\n (orderLinesChange)=\"setTestOrderLines($event)\"\r\n ></vdr-test-order-builder>\r\n </div>\r\n <div class=\"clr-col\">\r\n <vdr-test-address-form\r\n (addressChange)=\"setTestAddress($event)\"\r\n ></vdr-test-address-form>\r\n <vdr-shipping-method-test-result\r\n [currencyCode]=\"(activeChannel$ | async)?.currencyCode\"\r\n [okToRun]=\"allTestDataPresent() && testDataUpdated && detailForm.valid\"\r\n [testDataUpdated]=\"testDataUpdated\"\r\n [testResult]=\"testResult$ | async\"\r\n (runTest)=\"runTest()\"\r\n ></vdr-shipping-method-test-result>\r\n </div>\r\n </div>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n </clr-accordion>\r\n</div>\r\n",
1565
- changeDetection: ChangeDetectionStrategy.OnPush,
1566
- styles: [".testing-tool{margin-top:48px;margin-bottom:128px}.testing-tool h4{margin-bottom:12px}\n"]
1567
- },] }
1568
- ];
1569
- ShippingMethodDetailComponent.ctorParameters = () => [
1570
- { type: Router },
1571
- { type: ActivatedRoute },
1572
- { type: ServerConfigService },
1573
- { type: ChangeDetectorRef },
1574
- { type: DataService },
1575
- { type: FormBuilder },
1576
- { type: NotificationService }
1577
- ];
1578
-
1579
- class ShippingMethodListComponent extends BaseListComponent {
1580
- constructor(modalService, notificationService, dataService, serverConfigService, router, route) {
1581
- super(router, route);
1582
- this.modalService = modalService;
1583
- this.notificationService = notificationService;
1584
- this.dataService = dataService;
1585
- this.serverConfigService = serverConfigService;
1586
- this.testDataUpdated = false;
1587
- this.fetchTestResult$ = new Subject();
1588
- super.setQueryFn((...args) => this.dataService.shippingMethod.getShippingMethods(...args).refetchOnChannelChange(), data => data.shippingMethods);
1589
- }
1590
- ngOnInit() {
1591
- super.ngOnInit();
1592
- this.testResult$ = this.fetchTestResult$.pipe(switchMap(([address, lines]) => {
1593
- const input = {
1594
- shippingAddress: Object.assign(Object.assign({}, address), { streetLine1: 'test' }),
1595
- lines: lines.map(l => ({ productVariantId: l.id, quantity: l.quantity })),
1596
- };
1597
- return this.dataService.shippingMethod
1598
- .testEligibleShippingMethods(input)
1599
- .mapSingle(result => result.testEligibleShippingMethods);
1600
- }));
1601
- this.activeChannel$ = this.dataService.settings
1602
- .getActiveChannel()
1603
- .mapStream(data => data.activeChannel);
1604
- this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();
1605
- this.contentLanguage$ = this.dataService.client
1606
- .uiState()
1607
- .mapStream(({ uiState }) => uiState.contentLanguage)
1608
- .pipe(tap(() => this.refresh()));
1609
- }
1610
- deleteShippingMethod(id) {
1611
- this.modalService
1612
- .dialog({
1613
- title: marker('catalog.confirm-delete-shipping-method'),
1614
- buttons: [
1615
- { type: 'secondary', label: marker('common.cancel') },
1616
- { type: 'danger', label: marker('common.delete'), returnValue: true },
1617
- ],
1618
- })
1619
- .pipe(switchMap(response => response ? this.dataService.shippingMethod.deleteShippingMethod(id) : EMPTY))
1620
- .subscribe(() => {
1621
- this.notificationService.success(marker('common.notify-delete-success'), {
1622
- entity: 'ShippingMethod',
1623
- });
1624
- this.refresh();
1625
- }, err => {
1626
- this.notificationService.error(marker('common.notify-delete-error'), {
1627
- entity: 'ShippingMethod',
1628
- });
1629
- });
1630
- }
1631
- setTestOrderLines(event) {
1632
- this.testOrderLines = event;
1633
- this.testDataUpdated = true;
1634
- }
1635
- setTestAddress(event) {
1636
- this.testAddress = event;
1637
- this.testDataUpdated = true;
1638
- }
1639
- allTestDataPresent() {
1640
- return !!(this.testAddress && this.testOrderLines && this.testOrderLines.length);
1641
- }
1642
- runTest() {
1643
- this.fetchTestResult$.next([this.testAddress, this.testOrderLines]);
1644
- this.testDataUpdated = false;
1645
- }
1646
- setLanguage(code) {
1647
- this.dataService.client.setContentLanguage(code).subscribe();
1648
- }
1649
- }
1650
- ShippingMethodListComponent.decorators = [
1651
- { type: Component, args: [{
1652
- selector: 'vdr-shipping-method-list',
1653
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"shipping-method-list\"></vdr-action-bar-items>\r\n <a\r\n class=\"btn btn-primary\"\r\n [routerLink]=\"['./create']\"\r\n *vdrIfPermissions=\"['CreateSettings', 'CreateShippingMethod']\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-shipping-method' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-shippingMethod=\"item\">\r\n <td class=\"left align-middle\">{{ shippingMethod.code }}</td>\r\n <td class=\"left align-middle\">{{ shippingMethod.name }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', shippingMethod.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteShippingMethod(shippingMethod.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteShippingMethod'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n\r\n<div class=\"testing-tool\">\r\n <clr-accordion>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'settings.test-shipping-methods' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col\">\r\n <vdr-test-order-builder\r\n (orderLinesChange)=\"setTestOrderLines($event)\"\r\n ></vdr-test-order-builder>\r\n </div>\r\n <div class=\"clr-col\">\r\n <vdr-test-address-form\r\n (addressChange)=\"setTestAddress($event)\"\r\n ></vdr-test-address-form>\r\n <vdr-shipping-eligibility-test-result\r\n [currencyCode]=\"(activeChannel$ | async)?.currencyCode\"\r\n [okToRun]=\"allTestDataPresent()\"\r\n [testDataUpdated]=\"testDataUpdated\"\r\n [testResult]=\"testResult$ | async\"\r\n (runTest)=\"runTest()\"\r\n ></vdr-shipping-eligibility-test-result>\r\n </div>\r\n </div>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n </clr-accordion>\r\n</div>\r\n",
1654
- changeDetection: ChangeDetectionStrategy.OnPush,
1655
- styles: [".testing-tool{margin-top:48px}\n"]
1656
- },] }
1657
- ];
1658
- ShippingMethodListComponent.ctorParameters = () => [
1659
- { type: ModalService },
1660
- { type: NotificationService },
1661
- { type: DataService },
1662
- { type: ServerConfigService },
1663
- { type: Router },
1664
- { type: ActivatedRoute }
1665
- ];
1666
-
1667
- class ShippingMethodTestResultComponent {
1668
- constructor() {
1669
- this.okToRun = false;
1670
- this.testDataUpdated = false;
1671
- this.runTest = new EventEmitter();
1672
- }
1673
- }
1674
- ShippingMethodTestResultComponent.decorators = [
1675
- { type: Component, args: [{
1676
- selector: 'vdr-shipping-method-test-result',
1677
- template: "<div\r\n class=\"test-result card\"\r\n [ngClass]=\"{\r\n success: testResult?.eligible === true,\r\n error: testResult?.eligible === false,\r\n unknown: !testResult\r\n }\"\r\n>\r\n <div class=\"card-header\">\r\n {{ 'settings.test-result' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"result-details\" [class.stale]=\"testDataUpdated\">\r\n <vdr-labeled-data [label]=\"'settings.eligible' | translate\">\r\n <div class=\"eligible-icon\">\r\n <clr-icon\r\n shape=\"success-standard\"\r\n class=\"is-solid success\"\r\n *ngIf=\"testResult?.eligible\"\r\n ></clr-icon>\r\n <clr-icon\r\n shape=\"ban\"\r\n class=\"is-solid error\"\r\n *ngIf=\"testResult?.eligible === false\"\r\n ></clr-icon>\r\n <clr-icon shape=\"unknown-status\" *ngIf=\"!testResult\"></clr-icon>\r\n </div>\r\n {{ testResult?.eligible }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data\r\n [label]=\"'common.price' | translate\"\r\n *ngIf=\"testResult?.quote?.price != null\"\r\n >\r\n {{ testResult.quote?.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n [label]=\"'common.price-with-tax' | translate\"\r\n *ngIf=\"testResult?.quote?.priceWithTax != null\"\r\n >\r\n {{ testResult.quote?.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree\r\n *ngIf=\"testResult?.quote?.metadata\"\r\n [value]=\"testResult?.quote?.metadata\"\r\n ></vdr-object-tree>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-secondary\" (click)=\"runTest.emit()\" [disabled]=\"!okToRun\">\r\n {{ 'settings.test-shipping-method' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n",
1678
- changeDetection: ChangeDetectionStrategy.OnPush,
1679
- styles: [".test-result.success .card-block{background-color:var(--color-success-100)}.test-result.error .card-block{background-color:var(--color-error-100)}.test-result.unknown .card-block{background-color:var(--color-component-bg-100)}.result-details{transition:opacity .2s}.result-details.stale{opacity:.5}.eligible-icon{display:inline-block}.eligible-icon .success{color:var(--color-success-500)}.eligible-icon .error{color:var(--color-error-500)}.price-row{display:flex}.price-row>*:not(:first-child){margin-left:24px}\n"]
1680
- },] }
1681
- ];
1682
- ShippingMethodTestResultComponent.propDecorators = {
1683
- testResult: [{ type: Input }],
1684
- okToRun: [{ type: Input }],
1685
- testDataUpdated: [{ type: Input }],
1686
- currencyCode: [{ type: Input }],
1687
- runTest: [{ type: Output }]
1688
- };
1689
-
1690
- class TaxCategoryDetailComponent extends BaseDetailComponent {
1691
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
1692
- super(route, router, serverConfigService, dataService);
1693
- this.changeDetector = changeDetector;
1694
- this.dataService = dataService;
1695
- this.formBuilder = formBuilder;
1696
- this.notificationService = notificationService;
1697
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdateTaxCategory];
1698
- this.customFields = this.getCustomFieldConfig('TaxCategory');
1699
- this.detailForm = this.formBuilder.group({
1700
- name: ['', Validators.required],
1701
- isDefault: false,
1702
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
1703
- });
1704
- }
1705
- ngOnInit() {
1706
- this.init();
1707
- this.taxCategory$ = this.entity$;
1708
- }
1709
- ngOnDestroy() {
1710
- this.destroy();
1711
- }
1712
- saveButtonEnabled() {
1713
- return this.detailForm.dirty && this.detailForm.valid;
1714
- }
1715
- create() {
1716
- if (!this.detailForm.dirty) {
1717
- return;
1718
- }
1719
- const formValue = this.detailForm.value;
1720
- const input = {
1721
- name: formValue.name,
1722
- isDefault: formValue.isDefault,
1723
- customFields: formValue.customFields,
1724
- };
1725
- this.dataService.settings.createTaxCategory(input).subscribe(data => {
1726
- this.notificationService.success(marker('common.notify-create-success'), {
1727
- entity: 'TaxCategory',
1728
- });
1729
- this.detailForm.markAsPristine();
1730
- this.changeDetector.markForCheck();
1731
- this.router.navigate(['../', data.createTaxCategory.id], { relativeTo: this.route });
1732
- }, err => {
1733
- this.notificationService.error(marker('common.notify-create-error'), {
1734
- entity: 'TaxCategory',
1735
- });
1736
- });
1737
- }
1738
- save() {
1739
- if (!this.detailForm.dirty) {
1740
- return;
1741
- }
1742
- const formValue = this.detailForm.value;
1743
- this.taxCategory$
1744
- .pipe(take(1), mergeMap(taxCategory => {
1745
- const input = {
1746
- id: taxCategory.id,
1747
- name: formValue.name,
1748
- isDefault: formValue.isDefault,
1749
- customFields: formValue.customFields,
1750
- };
1751
- return this.dataService.settings.updateTaxCategory(input);
1752
- }))
1753
- .subscribe(data => {
1754
- this.notificationService.success(marker('common.notify-update-success'), {
1755
- entity: 'TaxCategory',
1756
- });
1757
- this.detailForm.markAsPristine();
1758
- this.changeDetector.markForCheck();
1759
- }, err => {
1760
- this.notificationService.error(marker('common.notify-update-error'), {
1761
- entity: 'TaxCategory',
1762
- });
1763
- });
1764
- }
1765
- /**
1766
- * Update the form values when the entity changes.
1767
- */
1768
- setFormValues(entity, languageCode) {
1769
- this.detailForm.patchValue({
1770
- name: entity.name,
1771
- isDefault: entity.isDefault,
1772
- });
1773
- if (this.customFields.length) {
1774
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);
1775
- }
1776
- }
1777
- }
1778
- TaxCategoryDetailComponent.decorators = [
1779
- { type: Component, args: [{
1780
- selector: 'vdr-tax-detail',
1781
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"tax-category-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]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n *vdrIfPermissions=\"updatePermission\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.default-tax-category' | translate\" for=\"isDefault\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"isDefault\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"isDefault\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"TaxCategory\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"tax-category-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n",
1782
- changeDetection: ChangeDetectionStrategy.OnPush,
1783
- styles: [""]
1784
- },] }
1785
- ];
1786
- TaxCategoryDetailComponent.ctorParameters = () => [
1787
- { type: Router },
1788
- { type: ActivatedRoute },
1789
- { type: ServerConfigService },
1790
- { type: ChangeDetectorRef },
1791
- { type: DataService },
1792
- { type: FormBuilder },
1793
- { type: NotificationService }
1794
- ];
1795
-
1796
- class TaxCategoryListComponent {
1797
- constructor(dataService, notificationService, modalService) {
1798
- this.dataService = dataService;
1799
- this.notificationService = notificationService;
1800
- this.modalService = modalService;
1801
- this.queryResult = this.dataService.settings.getTaxCategories();
1802
- this.taxCategories$ = this.queryResult.mapStream(data => data.taxCategories);
1803
- }
1804
- deleteTaxCategory(taxCategory) {
1805
- return this.modalService
1806
- .dialog({
1807
- title: marker('settings.confirm-delete-tax-category'),
1808
- body: taxCategory.name,
1809
- buttons: [
1810
- { type: 'secondary', label: marker('common.cancel') },
1811
- { type: 'danger', label: marker('common.delete'), returnValue: true },
1812
- ],
1813
- })
1814
- .pipe(switchMap(res => (res ? this.dataService.settings.deleteTaxCategory(taxCategory.id) : EMPTY)), map(res => res.deleteTaxCategory))
1815
- .subscribe(res => {
1816
- if (res.result === DeletionResult.DELETED) {
1817
- this.notificationService.success(marker('common.notify-delete-success'), {
1818
- entity: 'TaxRate',
1819
- });
1820
- this.queryResult.ref.refetch();
1821
- }
1822
- else {
1823
- this.notificationService.error(res.message || marker('common.notify-delete-error'), {
1824
- entity: 'TaxRate',
1825
- });
1826
- }
1827
- }, err => {
1828
- this.notificationService.error(marker('common.notify-delete-error'), {
1829
- entity: 'TaxRate',
1830
- });
1831
- });
1832
- }
1833
- }
1834
- TaxCategoryListComponent.decorators = [
1835
- { type: Component, args: [{
1836
- selector: 'vdr-tax-list',
1837
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"tax-category-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"['CreateSettings', 'CreateTaxCategory']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-tax-category' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table [items]=\"taxCategories$ | async\">\r\n <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-taxCategory=\"item\">\r\n <td class=\"left align-middle\">{{ taxCategory.name }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-chip *ngIf=\"taxCategory.isDefault\">{{ 'common.default-tax-category' | translate }}</vdr-chip>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', taxCategory.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteTaxCategory(taxCategory)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteTaxCategory'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
1838
- changeDetection: ChangeDetectionStrategy.OnPush,
1839
- styles: [""]
1840
- },] }
1841
- ];
1842
- TaxCategoryListComponent.ctorParameters = () => [
1843
- { type: DataService },
1844
- { type: NotificationService },
1845
- { type: ModalService }
1846
- ];
1847
-
1848
- class TaxRateDetailComponent extends BaseDetailComponent {
1849
- constructor(router, route, serverConfigService, changeDetector, dataService, formBuilder, notificationService) {
1850
- super(route, router, serverConfigService, dataService);
1851
- this.changeDetector = changeDetector;
1852
- this.dataService = dataService;
1853
- this.formBuilder = formBuilder;
1854
- this.notificationService = notificationService;
1855
- this.updatePermission = [Permission.UpdateSettings, Permission.UpdateTaxRate];
1856
- this.customFields = this.getCustomFieldConfig('TaxRate');
1857
- this.detailForm = this.formBuilder.group({
1858
- name: ['', Validators.required],
1859
- enabled: [true],
1860
- value: [0, Validators.required],
1861
- taxCategoryId: [''],
1862
- zoneId: [''],
1863
- customerGroupId: [''],
1864
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
1865
- });
1866
- }
1867
- ngOnInit() {
1868
- this.init();
1869
- this.taxCategories$ = this.dataService.settings
1870
- .getTaxCategories()
1871
- .mapSingle(data => data.taxCategories);
1872
- this.zones$ = this.dataService.settings.getZones().mapSingle(data => data.zones);
1873
- }
1874
- ngOnDestroy() {
1875
- this.destroy();
1876
- }
1877
- saveButtonEnabled() {
1878
- return this.detailForm.dirty && this.detailForm.valid;
1879
- }
1880
- create() {
1881
- if (!this.detailForm.dirty) {
1882
- return;
1883
- }
1884
- const formValue = this.detailForm.value;
1885
- const input = {
1886
- name: formValue.name,
1887
- enabled: formValue.enabled,
1888
- value: formValue.value,
1889
- categoryId: formValue.taxCategoryId,
1890
- zoneId: formValue.zoneId,
1891
- customerGroupId: formValue.customerGroupId,
1892
- customFields: formValue.customFields,
1893
- };
1894
- this.dataService.settings.createTaxRate(input).subscribe(data => {
1895
- this.notificationService.success(marker('common.notify-create-success'), {
1896
- entity: 'TaxRate',
1897
- });
1898
- this.detailForm.markAsPristine();
1899
- this.changeDetector.markForCheck();
1900
- this.router.navigate(['../', data.createTaxRate.id], { relativeTo: this.route });
1901
- }, err => {
1902
- this.notificationService.error(marker('common.notify-create-error'), {
1903
- entity: 'TaxRate',
1904
- });
1905
- });
1906
- }
1907
- save() {
1908
- if (!this.detailForm.dirty) {
1909
- return;
1910
- }
1911
- const formValue = this.detailForm.value;
1912
- this.entity$
1913
- .pipe(take(1), mergeMap(taxRate => {
1914
- const input = {
1915
- id: taxRate.id,
1916
- name: formValue.name,
1917
- enabled: formValue.enabled,
1918
- value: formValue.value,
1919
- categoryId: formValue.taxCategoryId,
1920
- zoneId: formValue.zoneId,
1921
- customerGroupId: formValue.customerGroupId,
1922
- customFields: formValue.customFields,
1923
- };
1924
- return this.dataService.settings.updateTaxRate(input);
1925
- }))
1926
- .subscribe(data => {
1927
- this.notificationService.success(marker('common.notify-update-success'), {
1928
- entity: 'TaxRate',
1929
- });
1930
- this.detailForm.markAsPristine();
1931
- this.changeDetector.markForCheck();
1932
- }, err => {
1933
- this.notificationService.error(marker('common.notify-update-error'), {
1934
- entity: 'TaxRate',
1935
- });
1936
- });
1937
- }
1938
- /**
1939
- * Update the form values when the entity changes.
1940
- */
1941
- setFormValues(entity, languageCode) {
1942
- this.detailForm.patchValue({
1943
- name: entity.name,
1944
- enabled: entity.enabled,
1945
- value: entity.value,
1946
- taxCategoryId: entity.category ? entity.category.id : '',
1947
- zoneId: entity.zone ? entity.zone.id : '',
1948
- customerGroupId: entity.customerGroup ? entity.customerGroup.id : '',
1949
- });
1950
- if (this.customFields.length) {
1951
- this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);
1952
- }
1953
- }
1954
- }
1955
- TaxRateDetailComponent.decorators = [
1956
- { type: Component, args: [{
1957
- selector: 'vdr-tax-rate-detail',
1958
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"tax-rate-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]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n *vdrIfPermissions=\"updatePermission\"\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\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.enabled' | translate\" for=\"enabled\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"enabled\"\r\n formControlName=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.rate' | translate\" for=\"value\">\r\n <vdr-affixed-input suffix=\"%\">\r\n <input\r\n id=\"value\"\r\n type=\"number\"\r\n step=\"0.1\"\r\n formControlName=\"value\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.tax-category' | translate\" for=\"taxCategoryId\">\r\n <select\r\n clrSelect\r\n name=\"taxCategoryId\"\r\n formControlName=\"taxCategoryId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let taxCategory of taxCategories$ | async\" [value]=\"taxCategory.id\">\r\n {{ taxCategory.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.zone' | translate\" for=\"zoneId\">\r\n <select\r\n clrSelect\r\n name=\"zoneId\"\r\n formControlName=\"zoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option *ngFor=\"let zone of zones$ | async\" [value]=\"zone.id\">{{ zone.name }}</option>\r\n </select>\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"TaxRate\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"tax-rate-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n",
1959
- changeDetection: ChangeDetectionStrategy.OnPush,
1960
- styles: [""]
1961
- },] }
1962
- ];
1963
- TaxRateDetailComponent.ctorParameters = () => [
1964
- { type: Router },
1965
- { type: ActivatedRoute },
1966
- { type: ServerConfigService },
1967
- { type: ChangeDetectorRef },
1968
- { type: DataService },
1969
- { type: FormBuilder },
1970
- { type: NotificationService }
1971
- ];
1972
-
1973
- class TaxRateListComponent extends BaseListComponent {
1974
- constructor(modalService, notificationService, dataService, router, route) {
1975
- super(router, route);
1976
- this.modalService = modalService;
1977
- this.notificationService = notificationService;
1978
- this.dataService = dataService;
1979
- super.setQueryFn((...args) => this.dataService.settings.getTaxRates(...args), data => data.taxRates);
1980
- }
1981
- deleteTaxRate(taxRate) {
1982
- return this.modalService
1983
- .dialog({
1984
- title: marker('settings.confirm-delete-tax-rate'),
1985
- body: taxRate.name,
1986
- buttons: [
1987
- { type: 'secondary', label: marker('common.cancel') },
1988
- { type: 'danger', label: marker('common.delete'), returnValue: true },
1989
- ],
1990
- })
1991
- .pipe(switchMap(res => (res ? this.dataService.settings.deleteTaxRate(taxRate.id) : EMPTY)), map(res => res.deleteTaxRate))
1992
- .subscribe(res => {
1993
- if (res.result === DeletionResult.DELETED) {
1994
- this.notificationService.success(marker('common.notify-delete-success'), {
1995
- entity: 'TaxRate',
1996
- });
1997
- this.refresh();
1998
- }
1999
- else {
2000
- this.notificationService.error(res.message || marker('common.notify-delete-error'), {
2001
- entity: 'TaxRate',
2002
- });
2003
- }
2004
- }, err => {
2005
- this.notificationService.error(marker('common.notify-delete-error'), {
2006
- entity: 'TaxRate',
2007
- });
2008
- });
2009
- }
2010
- }
2011
- TaxRateListComponent.decorators = [
2012
- { type: Component, args: [{
2013
- selector: 'vdr-tax-rate-list',
2014
- template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"tax-rate-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"['CreateSettings', 'CreateTaxRate']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-tax-rate' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.tax-category' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.zone' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.tax-rate' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-taxRate=\"item\">\r\n <td class=\"left align-middle\">{{ taxRate.name }}</td>\r\n <td class=\"left align-middle\">{{ taxRate.category.name }}</td>\r\n <td class=\"left align-middle\">{{ taxRate.zone.name }}</td>\r\n <td class=\"left align-middle\">{{ taxRate.value }}%</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', taxRate.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteTaxRate(taxRate)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteTaxRate'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
2015
- changeDetection: ChangeDetectionStrategy.OnPush,
2016
- styles: [""]
2017
- },] }
2018
- ];
2019
- TaxRateListComponent.ctorParameters = () => [
2020
- { type: ModalService },
2021
- { type: NotificationService },
2022
- { type: DataService },
2023
- { type: Router },
2024
- { type: ActivatedRoute }
2025
- ];
2026
-
2027
- class TestAddressFormComponent {
2028
- constructor(formBuilder, dataService, localStorageService) {
2029
- this.formBuilder = formBuilder;
2030
- this.dataService = dataService;
2031
- this.localStorageService = localStorageService;
2032
- this.addressChange = new EventEmitter();
2033
- }
2034
- ngOnInit() {
2035
- this.availableCountries$ = this.dataService.settings
2036
- .getAvailableCountries()
2037
- .mapSingle(result => result.countries.items);
2038
- const storedValue = this.localStorageService.getForCurrentLocation('shippingTestAddress');
2039
- const initialValue = storedValue
2040
- ? storedValue
2041
- : {
2042
- city: '',
2043
- countryCode: '',
2044
- postalCode: '',
2045
- province: '',
2046
- };
2047
- this.addressChange.emit(initialValue);
2048
- this.form = this.formBuilder.group(initialValue);
2049
- this.subscription = this.form.valueChanges.subscribe(value => {
2050
- this.localStorageService.setForCurrentLocation('shippingTestAddress', value);
2051
- this.addressChange.emit(value);
2052
- });
2053
- }
2054
- ngOnDestroy() {
2055
- if (this.subscription) {
2056
- this.subscription.unsubscribe();
2057
- }
2058
- }
2059
- }
2060
- TestAddressFormComponent.decorators = [
2061
- { type: Component, args: [{
2062
- selector: 'vdr-test-address-form',
2063
- template: "<div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'settings.test-address' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container>\r\n <label>{{ 'customer.city' | translate }}</label>\r\n <input formControlName=\"city\" type=\"text\" clrInput />\r\n </clr-input-container>\r\n <clr-input-container>\r\n <label>{{ 'customer.province' | translate }}</label>\r\n <input formControlName=\"province\" type=\"text\" clrInput />\r\n </clr-input-container>\r\n <clr-input-container>\r\n <label>{{ 'customer.postal-code' | translate }}</label>\r\n <input formControlName=\"postalCode\" type=\"text\" clrInput />\r\n </clr-input-container>\r\n <clr-input-container>\r\n <label>{{ 'customer.country' | translate }}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" clrInput clrSelect>\r\n <option *ngFor=\"let country of availableCountries$ | async\" [value]=\"country.code\">\r\n {{ country.name }}\r\n </option>\r\n </select>\r\n </clr-input-container>\r\n </form>\r\n </div>\r\n</div>\r\n",
2064
- changeDetection: ChangeDetectionStrategy.OnPush,
2065
- styles: ["clr-input-container{margin-bottom:12px}\n"]
2066
- },] }
2067
- ];
2068
- TestAddressFormComponent.ctorParameters = () => [
2069
- { type: FormBuilder },
2070
- { type: DataService },
2071
- { type: LocalStorageService }
2072
- ];
2073
- TestAddressFormComponent.propDecorators = {
2074
- addressChange: [{ type: Output }]
2075
- };
2076
-
2077
- class TestOrderBuilderComponent {
2078
- constructor(dataService, localStorageService) {
2079
- this.dataService = dataService;
2080
- this.localStorageService = localStorageService;
2081
- this.orderLinesChange = new EventEmitter();
2082
- this.lines = [];
2083
- }
2084
- get subTotal() {
2085
- return this.lines.reduce((sum, l) => sum + l.unitPriceWithTax * l.quantity, 0);
2086
- }
2087
- ngOnInit() {
2088
- this.lines = this.loadFromLocalStorage();
2089
- if (this.lines) {
2090
- this.orderLinesChange.emit(this.lines);
2091
- }
2092
- this.dataService.settings.getActiveChannel('cache-first').single$.subscribe(result => {
2093
- this.currencyCode = result.activeChannel.currencyCode;
2094
- });
2095
- }
2096
- selectResult(result) {
2097
- if (result) {
2098
- this.addToLines(result);
2099
- }
2100
- }
2101
- addToLines(result) {
2102
- var _a, _b;
2103
- if (!this.lines.find(l => l.id === result.productVariantId)) {
2104
- this.lines.push({
2105
- id: result.productVariantId,
2106
- name: result.productVariantName,
2107
- preview: (_b = (_a = result.productAsset) === null || _a === void 0 ? void 0 : _a.preview) !== null && _b !== void 0 ? _b : '',
2108
- quantity: 1,
2109
- sku: result.sku,
2110
- unitPriceWithTax: (result.priceWithTax.__typename === 'SinglePrice' && result.priceWithTax.value) || 0,
2111
- });
2112
- this.persistToLocalStorage();
2113
- this.orderLinesChange.emit(this.lines);
2114
- }
2115
- }
2116
- updateQuantity() {
2117
- this.persistToLocalStorage();
2118
- this.orderLinesChange.emit(this.lines);
2119
- }
2120
- removeLine(line) {
2121
- this.lines = this.lines.filter(l => l.id !== line.id);
2122
- this.persistToLocalStorage();
2123
- this.orderLinesChange.emit(this.lines);
2124
- }
2125
- persistToLocalStorage() {
2126
- this.localStorageService.setForCurrentLocation('shippingTestOrder', this.lines);
2127
- }
2128
- loadFromLocalStorage() {
2129
- return this.localStorageService.getForCurrentLocation('shippingTestOrder') || [];
2130
- }
2131
- }
2132
- TestOrderBuilderComponent.decorators = [
2133
- { type: Component, args: [{
2134
- selector: 'vdr-test-order-builder',
2135
- template: "<div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'settings.test-order' | translate }}\r\n </div>\r\n <table class=\"order-table table\" *ngIf=\"lines.length; else emptyPlaceholder\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'order.product-name' | translate }}</th>\r\n <th>{{ 'order.product-sku' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr *ngFor=\"let line of lines\" class=\"order-line\">\r\n <td class=\"align-middle thumb\">\r\n <img [src]=\"line.preview + '?preset=tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency: currencyCode }}\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n [(ngModel)]=\"line.quantity\"\r\n (change)=\"updateQuantity()\"\r\n type=\"number\"\r\n max=\"9999\"\r\n min=\"1\"\r\n />\r\n <button class=\"icon-button\" (click)=\"removeLine(line)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{ (line.unitPriceWithTax * line.quantity) | localeCurrency: currencyCode }}\r\n </td>\r\n </tr>\r\n <tr class=\"sub-total\">\r\n <td class=\"left\">{{ 'order.sub-total' | translate }}</td>\r\n <td></td>\r\n <td></td>\r\n <td></td>\r\n <td></td>\r\n <td>{{ subTotal | localeCurrency: currencyCode }}</td>\r\n </tr>\r\n </table>\r\n\r\n <ng-template #emptyPlaceholder>\r\n <div class=\"card-block empty-placeholder\">\r\n <div class=\"empty-text\">{{ 'settings.add-products-to-test-order' | translate }}</div>\r\n <clr-icon shape=\"arrow\" dir=\"down\" size=\"96\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <div class=\"card-block\">\r\n <vdr-product-selector (productSelected)=\"selectResult($event)\"> </vdr-product-selector>\r\n </div>\r\n</div>\r\n",
2136
- changeDetection: ChangeDetectionStrategy.OnPush,
2137
- styles: [".empty-placeholder{color:var(--color-grey-400);text-align:center}.empty-text{font-size:22px}\n"]
2138
- },] }
2139
- ];
2140
- TestOrderBuilderComponent.ctorParameters = () => [
2141
- { type: DataService },
2142
- { type: LocalStorageService }
2143
- ];
2144
- TestOrderBuilderComponent.propDecorators = {
2145
- orderLinesChange: [{ type: Output }]
2146
- };
2147
-
2148
- class ZoneDetailDialogComponent {
2149
- constructor(serverConfigService, formBuilder) {
2150
- this.serverConfigService = serverConfigService;
2151
- this.formBuilder = formBuilder;
2152
- this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');
2153
- }
2154
- ngOnInit() {
2155
- var _a;
2156
- this.form = this.formBuilder.group({
2157
- name: [this.zone.name, Validators.required],
2158
- customFields: this.formBuilder.group(this.customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {})),
2159
- });
2160
- if (this.customFields.length) {
2161
- const customFieldsGroup = this.form.get('customFields');
2162
- for (const fieldDef of this.customFields) {
2163
- const key = fieldDef.name;
2164
- const value = (_a = this.zone.customFields) === null || _a === void 0 ? void 0 : _a[key];
2165
- const control = customFieldsGroup.get(key);
2166
- if (control) {
2167
- control.patchValue(value);
2168
- }
2169
- }
2170
- }
2171
- }
2172
- cancel() {
2173
- this.resolveWith();
2174
- }
2175
- save() {
2176
- this.resolveWith(this.form.value);
2177
- }
2178
- }
2179
- ZoneDetailDialogComponent.decorators = [
2180
- { type: Component, args: [{
2181
- selector: 'vdr-zone-detail-dialog',
2182
- template: "<ng-template vdrDialogTitle>\r\n <span *ngIf=\"zone.id\">{{ 'settings.update-zone' | translate }}</span>\r\n <span *ngIf=\"!zone.id\">{{ 'settings.create-zone' | translate }}</span>\r\n</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateSettings', 'UpdateZone'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Zone\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"form.get('customFields')\"\r\n [readonly]=\"!(['UpdateSettings', 'UpdateZone'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n</form>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"form.invalid\" class=\"btn btn-primary\">\r\n <span *ngIf=\"zone.id\">{{ 'settings.update-zone' | translate }}</span>\r\n <span *ngIf=\"!zone.id\">{{ 'settings.create-zone' | translate }}</span>\r\n </button>\r\n</ng-template>\r\n",
2183
- changeDetection: ChangeDetectionStrategy.OnPush,
2184
- styles: [""]
2185
- },] }
2186
- ];
2187
- ZoneDetailDialogComponent.ctorParameters = () => [
2188
- { type: ServerConfigService },
2189
- { type: FormBuilder }
2190
- ];
2191
-
2192
- class ZoneListComponent {
2193
- constructor(dataService, notificationService, modalService, route, router, serverConfigService) {
2194
- this.dataService = dataService;
2195
- this.notificationService = notificationService;
2196
- this.modalService = modalService;
2197
- this.route = route;
2198
- this.router = router;
2199
- this.serverConfigService = serverConfigService;
2200
- this.selectedMemberIds = [];
2201
- }
2202
- ngOnInit() {
2203
- const zonesQueryRef = this.dataService.settings.getZones().ref;
2204
- this.zones$ = zonesQueryRef.valueChanges.pipe(map(data => data.data.zones));
2205
- const activeZoneId$ = this.route.paramMap.pipe(map(pm => pm.get('contents')), distinctUntilChanged(), tap(() => (this.selectedMemberIds = [])));
2206
- this.activeZone$ = combineLatest(this.zones$, activeZoneId$).pipe(map(([zones, activeZoneId]) => {
2207
- if (activeZoneId) {
2208
- return zones.find(z => z.id === activeZoneId);
2209
- }
2210
- }));
2211
- this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();
2212
- this.contentLanguage$ = this.dataService.client
2213
- .uiState()
2214
- .mapStream(({ uiState }) => uiState.contentLanguage)
2215
- .pipe(tap(() => zonesQueryRef.refetch()));
2216
- }
2217
- setLanguage(code) {
2218
- this.dataService.client.setContentLanguage(code).subscribe();
2219
- }
2220
- create() {
2221
- this.modalService
2222
- .fromComponent(ZoneDetailDialogComponent, { locals: { zone: { name: '' } } })
2223
- .pipe(switchMap(result => result ? this.dataService.settings.createZone(Object.assign(Object.assign({}, result), { memberIds: [] })) : EMPTY),
2224
- // refresh list
2225
- switchMap(() => this.dataService.settings.getZones().single$))
2226
- .subscribe(() => {
2227
- this.notificationService.success(marker('common.notify-create-success'), {
2228
- entity: 'Zone',
2229
- });
2230
- }, err => {
2231
- this.notificationService.error(marker('common.notify-create-error'), {
2232
- entity: 'Zone',
2233
- });
2234
- });
2235
- }
2236
- delete(zoneId) {
2237
- this.modalService
2238
- .dialog({
2239
- title: marker('catalog.confirm-delete-zone'),
2240
- buttons: [
2241
- { type: 'secondary', label: marker('common.cancel') },
2242
- { type: 'danger', label: marker('common.delete'), returnValue: true },
2243
- ],
2244
- })
2245
- .pipe(switchMap(response => (response ? this.dataService.settings.deleteZone(zoneId) : EMPTY)), switchMap(result => {
2246
- if (result.deleteZone.result === DeletionResult.DELETED) {
2247
- // refresh list
2248
- return this.dataService.settings
2249
- .getZones()
2250
- .mapSingle(() => ({ errorMessage: false }));
2251
- }
2252
- else {
2253
- return of({ errorMessage: result.deleteZone.message });
2254
- }
2255
- }))
2256
- .subscribe(result => {
2257
- if (typeof result.errorMessage === 'string') {
2258
- this.notificationService.error(result.errorMessage);
2259
- }
2260
- else {
2261
- this.notificationService.success(marker('common.notify-delete-success'), {
2262
- entity: 'Zone',
2263
- });
2264
- }
2265
- }, err => {
2266
- this.notificationService.error(marker('common.notify-delete-error'), {
2267
- entity: 'Zone',
2268
- });
2269
- });
2270
- }
2271
- update(zone) {
2272
- this.modalService
2273
- .fromComponent(ZoneDetailDialogComponent, { locals: { zone } })
2274
- .pipe(switchMap(result => result ? this.dataService.settings.updateZone(Object.assign({ id: zone.id }, result)) : EMPTY))
2275
- .subscribe(() => {
2276
- this.notificationService.success(marker('common.notify-update-success'), {
2277
- entity: 'Zone',
2278
- });
2279
- }, err => {
2280
- this.notificationService.error(marker('common.notify-update-error'), {
2281
- entity: 'Zone',
2282
- });
2283
- });
2284
- }
2285
- closeMembers() {
2286
- const params = Object.assign({}, this.route.snapshot.params);
2287
- delete params.contents;
2288
- this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });
2289
- }
2290
- addToZone(zone) {
2291
- this.modalService
2292
- .fromComponent(AddCountryToZoneDialogComponent, {
2293
- locals: {
2294
- zoneName: zone.name,
2295
- currentMembers: zone.members,
2296
- },
2297
- size: 'md',
2298
- })
2299
- .pipe(switchMap(memberIds => memberIds
2300
- ? this.dataService.settings
2301
- .addMembersToZone(zone.id, memberIds)
2302
- .pipe(mapTo(memberIds))
2303
- : EMPTY))
2304
- .subscribe({
2305
- next: result => {
2306
- this.notificationService.success(marker(`settings.add-countries-to-zone-success`), {
2307
- countryCount: result.length,
2308
- zoneName: zone.name,
2309
- });
2310
- },
2311
- error: err => {
2312
- this.notificationService.error(err);
2313
- },
2314
- });
2315
- }
2316
- removeFromZone(zone, memberIds) {
2317
- this.dataService.settings.removeMembersFromZone(zone.id, memberIds).subscribe({
2318
- complete: () => {
2319
- this.notificationService.success(marker(`settings.remove-countries-from-zone-success`), {
2320
- countryCount: memberIds.length,
2321
- zoneName: zone.name,
2322
- });
2323
- },
2324
- });
2325
- }
2326
- }
2327
- ZoneListComponent.decorators = [
2328
- { type: Component, args: [{
2329
- selector: 'vdr-zone-list',
2330
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"zone-list\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *vdrIfPermissions=\"['CreateSettings', 'CreateZone']\"\r\n (click)=\"create()\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'settings.create-new-zone' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"zone-wrapper\">\r\n <div class=\"zone-list\">\r\n <table class=\"table mt0\">\r\n <tbody>\r\n <tr\r\n *ngFor=\"let zone of zones$ | async\"\r\n [class.active]=\"zone.id === (activeZone$ | async)?.id\"\r\n >\r\n <td class=\"left align-middle\"><vdr-entity-info [entity]=\"zone\"></vdr-entity-info></td>\r\n <td class=\"left align-middle\">\r\n <vdr-chip [colorFrom]=\"zone.name\">{{ zone.name }}</vdr-chip>\r\n </td>\r\n <td class=\"text-right align-middle\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: zone.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'settings.view-zone-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"align-middle\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(zone)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(zone.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteZone'] | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"zone-members\" [class.expanded]=\"activeZone$ | async\">\r\n <ng-container *ngIf=\"activeZone$ | async as activeZone\">\r\n <vdr-zone-member-list\r\n [members]=\"activeZone.members\"\r\n [selectedMemberIds]=\"selectedMemberIds\"\r\n (selectionChange)=\"selectedMemberIds = $event\"\r\n >\r\n <div *vdrZoneMemberListHeader>\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">\r\n {{ activeZone.name }} ({{ activeZone.members.length }})\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedMemberIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromZone(activeZone, selectedMemberIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!(['UpdateSettings', 'UpdateZone'] | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'settings.remove-from-zone' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToZone(activeZone)\">\r\n {{ 'settings.add-countries-to-zone' | translate: { zoneName: activeZone.name } }}\r\n </button>\r\n </div>\r\n </div>\r\n <div *vdrZoneMemberControls=\"let member = member\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <a\r\n type=\"button\"\r\n [routerLink]=\"['/settings', 'countries', member.id]\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </a>\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromZone(activeZone, [member.id])\"\r\n vdrDropdownItem\r\n [disabled]=\"!(['UpdateSettings', 'UpdateZone'] | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'settings.remove-from-zone' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-zone-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
2331
- changeDetection: ChangeDetectionStrategy.OnPush,
2332
- styles: [".zone-wrapper{display:flex;height:calc(100% - 50px)}.zone-wrapper .zone-list{flex:1;overflow:auto;margin-top:0}.zone-wrapper .zone-list tr.active{background-color:var(--color-component-bg-200)}.zone-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.zone-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.zone-members .close-button{margin:0;background:none;border:none;cursor:pointer}.zone-members ::ng-deep table.table{margin-top:0}.zone-members ::ng-deep table.table th{top:0}.zone-members .controls{display:flex;justify-content:space-between}\n"]
2333
- },] }
2334
- ];
2335
- ZoneListComponent.ctorParameters = () => [
2336
- { type: DataService },
2337
- { type: NotificationService },
2338
- { type: ModalService },
2339
- { type: ActivatedRoute },
2340
- { type: Router },
2341
- { type: ServerConfigService }
2342
- ];
2343
-
2344
- class ZoneMemberControlsDirective {
2345
- constructor(templateRef) {
2346
- this.templateRef = templateRef;
2347
- }
2348
- }
2349
- ZoneMemberControlsDirective.decorators = [
2350
- { type: Directive, args: [{
2351
- selector: '[vdrZoneMemberControls]',
2352
- },] }
2353
- ];
2354
- ZoneMemberControlsDirective.ctorParameters = () => [
2355
- { type: TemplateRef }
2356
- ];
2357
-
2358
- class ZoneMemberListHeaderDirective {
2359
- constructor(templateRef) {
2360
- this.templateRef = templateRef;
2361
- }
2362
- }
2363
- ZoneMemberListHeaderDirective.decorators = [
2364
- { type: Directive, args: [{
2365
- selector: '[vdrZoneMemberListHeader]',
2366
- },] }
2367
- ];
2368
- ZoneMemberListHeaderDirective.ctorParameters = () => [
2369
- { type: TemplateRef }
2370
- ];
2371
-
2372
- class ZoneMemberListComponent {
2373
- constructor() {
2374
- this.members = [];
2375
- this.selectedMemberIds = [];
2376
- this.selectionChange = new EventEmitter();
2377
- this.filterTerm = '';
2378
- this.isMemberSelected = (member) => {
2379
- return -1 < this.selectedMemberIds.indexOf(member.id);
2380
- };
2381
- }
2382
- filteredMembers() {
2383
- if (this.filterTerm !== '') {
2384
- const term = this.filterTerm.toLocaleLowerCase();
2385
- return this.members.filter(m => m.name.toLocaleLowerCase().includes(term) || m.code.toLocaleLowerCase().includes(term));
2386
- }
2387
- else {
2388
- return this.members;
2389
- }
2390
- }
2391
- areAllSelected() {
2392
- if (this.members) {
2393
- return this.selectedMemberIds.length === this.members.length;
2394
- }
2395
- else {
2396
- return false;
2397
- }
2398
- }
2399
- toggleSelectAll() {
2400
- if (this.areAllSelected()) {
2401
- this.selectionChange.emit([]);
2402
- }
2403
- else {
2404
- this.selectionChange.emit(this.members.map(v => v.id));
2405
- }
2406
- }
2407
- toggleSelectMember(member) {
2408
- if (this.selectedMemberIds.includes(member.id)) {
2409
- this.selectionChange.emit(this.selectedMemberIds.filter(id => id !== member.id));
2410
- }
2411
- else {
2412
- this.selectionChange.emit([...this.selectedMemberIds, member.id]);
2413
- }
2414
- }
2415
- }
2416
- ZoneMemberListComponent.decorators = [
2417
- { type: Component, args: [{
2418
- selector: 'vdr-zone-member-list',
2419
- template: "<div class=\"members-header\">\r\n <ng-container *ngIf=\"headerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate.templateRef\"></ng-container>\r\n </ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"'settings.filter-by-member-name' | translate\"\r\n [(ngModel)]=\"filterTerm\"\r\n />\r\n</div>\r\n<vdr-data-table\r\n [items]=\"filteredMembers()\"\r\n [allSelected]=\"areAllSelected()\"\r\n [isRowSelectedFn]=\"(['UpdateSettings', 'UpdateZone'] | hasPermission) && isMemberSelected\"\r\n (rowSelectChange)=\"toggleSelectMember($event)\"\r\n (allSelectChange)=\"toggleSelectAll()\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.enabled' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-member=\"item\">\r\n <td class=\"left align-middle\">{{ member.code }}</td>\r\n <td class=\"left align-middle\">{{ member.name }}</td>\r\n <td class=\"left align-middle\">\r\n <clr-icon\r\n [class.is-success]=\"member.enabled\"\r\n [attr.shape]=\"member.enabled ? 'check' : 'times'\"\r\n ></clr-icon>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <ng-container *ngIf=\"controlsTemplate\">\r\n <ng-container\r\n *ngTemplateOutlet=\"controlsTemplate.templateRef; context: { member: member }\"\r\n ></ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
2420
- changeDetection: ChangeDetectionStrategy.OnPush,
2421
- styles: [".members-header{background-color:var(--color-component-bg-100);position:sticky;top:0;padding:6px;z-index:5;border-bottom:1px solid var(--color-component-border-200)}.members-header .header-title-row{display:flex;justify-content:space-between;align-items:center}.members-header .clr-input{width:100%}\n"]
2422
- },] }
2423
- ];
2424
- ZoneMemberListComponent.propDecorators = {
2425
- members: [{ type: Input }],
2426
- selectedMemberIds: [{ type: Input }],
2427
- selectionChange: [{ type: Output }],
2428
- headerTemplate: [{ type: ContentChild, args: [ZoneMemberListHeaderDirective,] }],
2429
- controlsTemplate: [{ type: ContentChild, args: [ZoneMemberControlsDirective,] }]
2430
- };
2431
-
2432
- class AdministratorResolver extends BaseEntityResolver {
2433
- constructor(router, dataService) {
2434
- super(router, {
2435
- __typename: 'Administrator',
2436
- id: '',
2437
- createdAt: '',
2438
- updatedAt: '',
2439
- emailAddress: '',
2440
- firstName: '',
2441
- lastName: '',
2442
- user: { roles: [] },
2443
- }, id => dataService.administrator.getAdministrator(id).mapStream(data => data.administrator));
2444
- }
2445
- }
2446
- AdministratorResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function AdministratorResolver_Factory() { return new AdministratorResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: AdministratorResolver, providedIn: "root" });
2447
- AdministratorResolver.decorators = [
2448
- { type: Injectable, args: [{
2449
- providedIn: 'root',
2450
- },] }
2451
- ];
2452
- AdministratorResolver.ctorParameters = () => [
2453
- { type: Router },
2454
- { type: DataService }
2455
- ];
2456
-
2457
- /**
2458
- * Resolves the id from the path into a Customer entity.
2459
- */
2460
- class ChannelResolver extends BaseEntityResolver {
2461
- constructor(router, dataService) {
2462
- super(router, {
2463
- __typename: 'Channel',
2464
- id: '',
2465
- createdAt: '',
2466
- updatedAt: '',
2467
- code: '',
2468
- token: '',
2469
- pricesIncludeTax: false,
2470
- currencyCode: CurrencyCode.USD,
2471
- defaultLanguageCode: getDefaultUiLanguage(),
2472
- defaultShippingZone: {},
2473
- defaultTaxZone: {},
2474
- }, (id) => dataService.settings.getChannel(id).mapStream((data) => data.channel));
2475
- }
2476
- }
2477
- ChannelResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function ChannelResolver_Factory() { return new ChannelResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: ChannelResolver, providedIn: "root" });
2478
- ChannelResolver.decorators = [
2479
- { type: Injectable, args: [{
2480
- providedIn: 'root',
2481
- },] }
2482
- ];
2483
- ChannelResolver.ctorParameters = () => [
2484
- { type: Router },
2485
- { type: DataService }
2486
- ];
2487
-
2488
- /**
2489
- * Resolves the id from the path into a Customer entity.
2490
- */
2491
- class CountryResolver extends BaseEntityResolver {
2492
- constructor(router, dataService) {
2493
- super(router, {
2494
- __typename: 'Country',
2495
- id: '',
2496
- createdAt: '',
2497
- updatedAt: '',
2498
- code: '',
2499
- name: '',
2500
- enabled: false,
2501
- translations: [],
2502
- }, id => dataService.settings.getCountry(id).mapStream(data => data.country));
2503
- }
2504
- }
2505
- CountryResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function CountryResolver_Factory() { return new CountryResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: CountryResolver, providedIn: "root" });
2506
- CountryResolver.decorators = [
2507
- { type: Injectable, args: [{
2508
- providedIn: 'root',
2509
- },] }
2510
- ];
2511
- CountryResolver.ctorParameters = () => [
2512
- { type: Router },
2513
- { type: DataService }
2514
- ];
2515
-
2516
- /**
2517
- * Resolves the global settings.
2518
- */
2519
- class GlobalSettingsResolver extends BaseEntityResolver {
2520
- constructor(router, dataService) {
2521
- super(router,
2522
- // we will never be creating a new GlobalSettings entity, so this part is not used.
2523
- {}, () => dataService.settings.getGlobalSettings().mapStream(data => data.globalSettings));
2524
- }
2525
- }
2526
- GlobalSettingsResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function GlobalSettingsResolver_Factory() { return new GlobalSettingsResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: GlobalSettingsResolver, providedIn: "root" });
2527
- GlobalSettingsResolver.decorators = [
2528
- { type: Injectable, args: [{
2529
- providedIn: 'root',
2530
- },] }
2531
- ];
2532
- GlobalSettingsResolver.ctorParameters = () => [
2533
- { type: Router },
2534
- { type: DataService }
2535
- ];
2536
-
2537
- /**
2538
- * Resolves the id from the path into a Customer entity.
2539
- */
2540
- class PaymentMethodResolver extends BaseEntityResolver {
2541
- constructor(router, dataService) {
2542
- super(router, {
2543
- __typename: 'PaymentMethod',
2544
- id: '',
2545
- createdAt: '',
2546
- updatedAt: '',
2547
- name: '',
2548
- code: '',
2549
- description: '',
2550
- enabled: true,
2551
- checker: undefined,
2552
- handler: undefined,
2553
- }, id => dataService.settings.getPaymentMethod(id).mapStream(data => data.paymentMethod));
2554
- }
2555
- }
2556
- PaymentMethodResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function PaymentMethodResolver_Factory() { return new PaymentMethodResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: PaymentMethodResolver, providedIn: "root" });
2557
- PaymentMethodResolver.decorators = [
2558
- { type: Injectable, args: [{
2559
- providedIn: 'root',
2560
- },] }
2561
- ];
2562
- PaymentMethodResolver.ctorParameters = () => [
2563
- { type: Router },
2564
- { type: DataService }
2565
- ];
2566
-
2567
- class ProfileResolver extends BaseEntityResolver {
2568
- constructor(router, dataService) {
2569
- super(router, {
2570
- __typename: 'Administrator',
2571
- id: '',
2572
- createdAt: '',
2573
- updatedAt: '',
2574
- emailAddress: '',
2575
- firstName: '',
2576
- lastName: '',
2577
- user: { roles: [] },
2578
- }, id => dataService.administrator
2579
- .getActiveAdministrator()
2580
- .mapStream(data => data.activeAdministrator));
2581
- }
2582
- }
2583
- ProfileResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileResolver_Factory() { return new ProfileResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: ProfileResolver, providedIn: "root" });
2584
- ProfileResolver.decorators = [
2585
- { type: Injectable, args: [{
2586
- providedIn: 'root',
2587
- },] }
2588
- ];
2589
- ProfileResolver.ctorParameters = () => [
2590
- { type: Router },
2591
- { type: DataService }
2592
- ];
2593
-
2594
- class RoleResolver extends BaseEntityResolver {
2595
- constructor(router, dataService) {
2596
- super(router, {
2597
- __typename: 'Role',
2598
- id: '',
2599
- createdAt: '',
2600
- updatedAt: '',
2601
- code: '',
2602
- description: '',
2603
- permissions: [],
2604
- channels: [],
2605
- }, id => dataService.administrator.getRole(id).mapStream(data => data.role));
2606
- }
2607
- }
2608
- RoleResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function RoleResolver_Factory() { return new RoleResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: RoleResolver, providedIn: "root" });
2609
- RoleResolver.decorators = [
2610
- { type: Injectable, args: [{
2611
- providedIn: 'root',
2612
- },] }
2613
- ];
2614
- RoleResolver.ctorParameters = () => [
2615
- { type: Router },
2616
- { type: DataService }
2617
- ];
2618
-
2619
- /**
2620
- * Resolves the id from the path into a Customer entity.
2621
- */
2622
- class ShippingMethodResolver extends BaseEntityResolver {
2623
- constructor(router, dataService) {
2624
- super(router, {
2625
- __typename: 'ShippingMethod',
2626
- createdAt: '',
2627
- updatedAt: '',
2628
- id: '',
2629
- code: '',
2630
- name: '',
2631
- description: '',
2632
- fulfillmentHandlerCode: undefined,
2633
- checker: undefined,
2634
- calculator: undefined,
2635
- translations: [],
2636
- }, id => dataService.shippingMethod.getShippingMethod(id).mapStream(data => data.shippingMethod));
2637
- }
2638
- }
2639
- ShippingMethodResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function ShippingMethodResolver_Factory() { return new ShippingMethodResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: ShippingMethodResolver, providedIn: "root" });
2640
- ShippingMethodResolver.decorators = [
2641
- { type: Injectable, args: [{
2642
- providedIn: 'root',
2643
- },] }
2644
- ];
2645
- ShippingMethodResolver.ctorParameters = () => [
2646
- { type: Router },
2647
- { type: DataService }
2648
- ];
2649
-
2650
- /**
2651
- * Resolves the id from the path into a Customer entity.
2652
- */
2653
- class TaxCategoryResolver extends BaseEntityResolver {
2654
- constructor(router, dataService) {
2655
- super(router, {
2656
- __typename: 'TaxCategory',
2657
- id: '',
2658
- createdAt: '',
2659
- updatedAt: '',
2660
- name: '',
2661
- isDefault: false,
2662
- }, id => dataService.settings.getTaxCategory(id).mapStream(data => data.taxCategory));
2663
- }
2664
- }
2665
- TaxCategoryResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function TaxCategoryResolver_Factory() { return new TaxCategoryResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: TaxCategoryResolver, providedIn: "root" });
2666
- TaxCategoryResolver.decorators = [
2667
- { type: Injectable, args: [{
2668
- providedIn: 'root',
2669
- },] }
2670
- ];
2671
- TaxCategoryResolver.ctorParameters = () => [
2672
- { type: Router },
2673
- { type: DataService }
2674
- ];
2675
-
2676
- /**
2677
- * Resolves the id from the path into a Customer entity.
2678
- */
2679
- class TaxRateResolver extends BaseEntityResolver {
2680
- constructor(router, dataService) {
2681
- super(router, {
2682
- __typename: 'TaxRate',
2683
- id: '',
2684
- createdAt: '',
2685
- updatedAt: '',
2686
- name: '',
2687
- value: 0,
2688
- enabled: true,
2689
- category: {},
2690
- zone: {},
2691
- customerGroup: null,
2692
- }, id => dataService.settings.getTaxRate(id).mapStream(data => data.taxRate));
2693
- }
2694
- }
2695
- TaxRateResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function TaxRateResolver_Factory() { return new TaxRateResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: TaxRateResolver, providedIn: "root" });
2696
- TaxRateResolver.decorators = [
2697
- { type: Injectable, args: [{
2698
- providedIn: 'root',
2699
- },] }
2700
- ];
2701
- TaxRateResolver.ctorParameters = () => [
2702
- { type: Router },
2703
- { type: DataService }
2704
- ];
2705
-
2706
- const ɵ0 = {
2707
- breadcrumb: marker('breadcrumb.profile'),
2708
- }, ɵ1 = {
2709
- breadcrumb: marker('breadcrumb.administrators'),
2710
- }, ɵ2 = { breadcrumb: administratorBreadcrumb }, ɵ3 = {
2711
- breadcrumb: marker('breadcrumb.channels'),
2712
- }, ɵ4 = { breadcrumb: channelBreadcrumb }, ɵ5 = {
2713
- breadcrumb: marker('breadcrumb.roles'),
2714
- }, ɵ6 = { breadcrumb: roleBreadcrumb }, ɵ7 = {
2715
- breadcrumb: marker('breadcrumb.tax-categories'),
2716
- }, ɵ8 = {
2717
- breadcrumb: taxCategoryBreadcrumb,
2718
- }, ɵ9 = {
2719
- breadcrumb: marker('breadcrumb.tax-rates'),
2720
- }, ɵ10 = {
2721
- breadcrumb: taxRateBreadcrumb,
2722
- }, ɵ11 = {
2723
- breadcrumb: marker('breadcrumb.countries'),
2724
- }, ɵ12 = {
2725
- breadcrumb: countryBreadcrumb,
2726
- }, ɵ13 = {
2727
- breadcrumb: marker('breadcrumb.zones'),
2728
- }, ɵ14 = {
2729
- breadcrumb: marker('breadcrumb.shipping-methods'),
2730
- }, ɵ15 = {
2731
- breadcrumb: shippingMethodBreadcrumb,
2732
- }, ɵ16 = {
2733
- breadcrumb: marker('breadcrumb.payment-methods'),
2734
- }, ɵ17 = {
2735
- breadcrumb: paymentMethodBreadcrumb,
2736
- }, ɵ18 = {
2737
- breadcrumb: marker('breadcrumb.global-settings'),
2738
- };
2739
- const settingsRoutes = [
2740
- {
2741
- path: 'profile',
2742
- component: ProfileComponent,
2743
- resolve: createResolveData(ProfileResolver),
2744
- canDeactivate: [CanDeactivateDetailGuard],
2745
- data: ɵ0,
2746
- },
2747
- {
2748
- path: 'administrators',
2749
- component: AdministratorListComponent,
2750
- data: ɵ1,
2751
- },
2752
- {
2753
- path: 'administrators/:id',
2754
- component: AdminDetailComponent,
2755
- resolve: createResolveData(AdministratorResolver),
2756
- canDeactivate: [CanDeactivateDetailGuard],
2757
- data: ɵ2,
2758
- },
2759
- {
2760
- path: 'channels',
2761
- component: ChannelListComponent,
2762
- data: ɵ3,
2763
- },
2764
- {
2765
- path: 'channels/:id',
2766
- component: ChannelDetailComponent,
2767
- resolve: createResolveData(ChannelResolver),
2768
- canDeactivate: [CanDeactivateDetailGuard],
2769
- data: ɵ4,
2770
- },
2771
- {
2772
- path: 'roles',
2773
- component: RoleListComponent,
2774
- data: ɵ5,
2775
- },
2776
- {
2777
- path: 'roles/:id',
2778
- component: RoleDetailComponent,
2779
- resolve: createResolveData(RoleResolver),
2780
- canDeactivate: [CanDeactivateDetailGuard],
2781
- data: ɵ6,
2782
- },
2783
- {
2784
- path: 'tax-categories',
2785
- component: TaxCategoryListComponent,
2786
- data: ɵ7,
2787
- },
2788
- {
2789
- path: 'tax-categories/:id',
2790
- component: TaxCategoryDetailComponent,
2791
- resolve: createResolveData(TaxCategoryResolver),
2792
- canDeactivate: [CanDeactivateDetailGuard],
2793
- data: ɵ8,
2794
- },
2795
- {
2796
- path: 'tax-rates',
2797
- component: TaxRateListComponent,
2798
- data: ɵ9,
2799
- },
2800
- {
2801
- path: 'tax-rates/:id',
2802
- component: TaxRateDetailComponent,
2803
- resolve: createResolveData(TaxRateResolver),
2804
- canDeactivate: [CanDeactivateDetailGuard],
2805
- data: ɵ10,
2806
- },
2807
- {
2808
- path: 'countries',
2809
- component: CountryListComponent,
2810
- data: ɵ11,
2811
- },
2812
- {
2813
- path: 'countries/:id',
2814
- component: CountryDetailComponent,
2815
- resolve: createResolveData(CountryResolver),
2816
- canDeactivate: [CanDeactivateDetailGuard],
2817
- data: ɵ12,
2818
- },
2819
- {
2820
- path: 'zones',
2821
- component: ZoneListComponent,
2822
- data: ɵ13,
2823
- },
2824
- {
2825
- path: 'shipping-methods',
2826
- component: ShippingMethodListComponent,
2827
- data: ɵ14,
2828
- },
2829
- {
2830
- path: 'shipping-methods/:id',
2831
- component: ShippingMethodDetailComponent,
2832
- resolve: createResolveData(ShippingMethodResolver),
2833
- canDeactivate: [CanDeactivateDetailGuard],
2834
- data: ɵ15,
2835
- },
2836
- {
2837
- path: 'payment-methods',
2838
- component: PaymentMethodListComponent,
2839
- data: ɵ16,
2840
- },
2841
- {
2842
- path: 'payment-methods/:id',
2843
- component: PaymentMethodDetailComponent,
2844
- resolve: createResolveData(PaymentMethodResolver),
2845
- canDeactivate: [CanDeactivateDetailGuard],
2846
- data: ɵ17,
2847
- },
2848
- {
2849
- path: 'global-settings',
2850
- component: GlobalSettingsComponent,
2851
- resolve: createResolveData(GlobalSettingsResolver),
2852
- canDeactivate: [CanDeactivateDetailGuard],
2853
- data: ɵ18,
2854
- },
2855
- ];
2856
- function administratorBreadcrumb(data, params) {
2857
- return detailBreadcrumb({
2858
- entity: data.entity,
2859
- id: params.id,
2860
- breadcrumbKey: 'breadcrumb.administrators',
2861
- getName: admin => `${admin.firstName} ${admin.lastName}`,
2862
- route: 'administrators',
2863
- });
2864
- }
2865
- function channelBreadcrumb(data, params) {
2866
- return detailBreadcrumb({
2867
- entity: data.entity,
2868
- id: params.id,
2869
- breadcrumbKey: 'breadcrumb.channels',
2870
- getName: channel => channel.code,
2871
- route: 'channels',
2872
- });
2873
- }
2874
- function roleBreadcrumb(data, params) {
2875
- return detailBreadcrumb({
2876
- entity: data.entity,
2877
- id: params.id,
2878
- breadcrumbKey: 'breadcrumb.roles',
2879
- getName: role => role.description,
2880
- route: 'roles',
2881
- });
2882
- }
2883
- function taxCategoryBreadcrumb(data, params) {
2884
- return detailBreadcrumb({
2885
- entity: data.entity,
2886
- id: params.id,
2887
- breadcrumbKey: 'breadcrumb.tax-categories',
2888
- getName: category => category.name,
2889
- route: 'tax-categories',
2890
- });
2891
- }
2892
- function taxRateBreadcrumb(data, params) {
2893
- return detailBreadcrumb({
2894
- entity: data.entity,
2895
- id: params.id,
2896
- breadcrumbKey: 'breadcrumb.tax-rates',
2897
- getName: category => category.name,
2898
- route: 'tax-rates',
2899
- });
2900
- }
2901
- function countryBreadcrumb(data, params) {
2902
- return detailBreadcrumb({
2903
- entity: data.entity,
2904
- id: params.id,
2905
- breadcrumbKey: 'breadcrumb.countries',
2906
- getName: promotion => promotion.name,
2907
- route: 'countries',
2908
- });
2909
- }
2910
- function shippingMethodBreadcrumb(data, params) {
2911
- return detailBreadcrumb({
2912
- entity: data.entity,
2913
- id: params.id,
2914
- breadcrumbKey: 'breadcrumb.shipping-methods',
2915
- getName: method => method.name,
2916
- route: 'shipping-methods',
2917
- });
2918
- }
2919
- function paymentMethodBreadcrumb(data, params) {
2920
- return detailBreadcrumb({
2921
- entity: data.entity,
2922
- id: params.id,
2923
- breadcrumbKey: 'breadcrumb.payment-methods',
2924
- getName: method => method.code,
2925
- route: 'payment-methods',
2926
- });
2927
- }
2928
-
2929
- class SettingsModule {
2930
- }
2931
- SettingsModule.decorators = [
2932
- { type: NgModule, args: [{
2933
- imports: [SharedModule, RouterModule.forChild(settingsRoutes)],
2934
- declarations: [
2935
- TaxCategoryListComponent,
2936
- TaxCategoryDetailComponent,
2937
- AdministratorListComponent,
2938
- RoleListComponent,
2939
- RoleDetailComponent,
2940
- AdminDetailComponent,
2941
- PermissionGridComponent,
2942
- CountryListComponent,
2943
- CountryDetailComponent,
2944
- TaxRateListComponent,
2945
- TaxRateDetailComponent,
2946
- ChannelListComponent,
2947
- ChannelDetailComponent,
2948
- ShippingMethodListComponent,
2949
- ShippingMethodDetailComponent,
2950
- PaymentMethodListComponent,
2951
- PaymentMethodDetailComponent,
2952
- GlobalSettingsComponent,
2953
- TestOrderBuilderComponent,
2954
- TestAddressFormComponent,
2955
- ShippingMethodTestResultComponent,
2956
- ShippingEligibilityTestResultComponent,
2957
- ZoneListComponent,
2958
- AddCountryToZoneDialogComponent,
2959
- ZoneMemberListComponent,
2960
- ZoneMemberListHeaderDirective,
2961
- ZoneMemberControlsDirective,
2962
- ZoneDetailDialogComponent,
2963
- ProfileComponent,
2964
- ],
2965
- },] }
2966
- ];
2967
-
2968
- // This file was generated by the build-public-api.ts script
2969
-
2970
- /**
2971
- * Generated bundle index. Do not edit.
2972
- */
2973
-
2974
- export { AddCountryToZoneDialogComponent, AdminDetailComponent, AdministratorListComponent, AdministratorResolver, ChannelDetailComponent, ChannelListComponent, ChannelResolver, CountryDetailComponent, CountryListComponent, CountryResolver, GlobalSettingsComponent, GlobalSettingsResolver, PaymentMethodDetailComponent, PaymentMethodListComponent, PaymentMethodResolver, PermissionGridComponent, ProfileComponent, ProfileResolver, RoleDetailComponent, RoleListComponent, RoleResolver, SettingsModule, ShippingEligibilityTestResultComponent, ShippingMethodDetailComponent, ShippingMethodListComponent, ShippingMethodResolver, ShippingMethodTestResultComponent, TaxCategoryDetailComponent, TaxCategoryListComponent, TaxCategoryResolver, TaxRateDetailComponent, TaxRateListComponent, TaxRateResolver, TestAddressFormComponent, TestOrderBuilderComponent, ZoneDetailDialogComponent, ZoneListComponent, ZoneMemberControlsDirective, ZoneMemberListComponent, ZoneMemberListHeaderDirective, administratorBreadcrumb, channelBreadcrumb, countryBreadcrumb, paymentMethodBreadcrumb, roleBreadcrumb, settingsRoutes, shippingMethodBreadcrumb, taxCategoryBreadcrumb, taxRateBreadcrumb, ɵ0, ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ15, ɵ16, ɵ17, ɵ18, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9 };
2975
- //# sourceMappingURL=vendure-admin-ui-settings.js.map