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