@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,3155 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, EventEmitter, Input, Output, Injectable, ChangeDetectorRef, ElementRef, ViewChildren, HostBinding, NgModule } from '@angular/core';
3
+ import { FormGroup, FormControl, Validators, FormBuilder, FormArray } from '@angular/forms';
4
+ import * as i1 from '@vendure/admin-ui/core';
5
+ import { DataService, getAppConfig, I18nService, HistoryEntryType, SortOrder, ModalService, NotificationService, ADDRESS_FRAGMENT, BaseDetailComponent, DeletionResult, ServerConfigService, configurableDefinitionToInstance, GlobalFlag, configurableOperationValueIsValid, toConfigurableOperationInput, EditNoteDialogComponent, transformRelationCustomFieldInputs, BaseListComponent, LogicalOperator, LocalStorageService, AdjustmentType, CanDeactivateDetailGuard, detailBreadcrumb, SharedModule } from '@vendure/admin-ui/core';
6
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
7
+ import { Subject, concat, EMPTY, of, combineLatest, merge, BehaviorSubject } from 'rxjs';
8
+ import { distinctUntilChanged, switchMap, map, startWith, catchError, retryWhen, delay, take, tap, debounceTime, mapTo, takeUntil, shareReplay, filter } from 'rxjs/operators';
9
+ import * as i1$1 from '@angular/router';
10
+ import { Router, ActivatedRoute, ActivationStart, RouterModule } from '@angular/router';
11
+ import { pick } from '@vendure/common/lib/pick';
12
+ import { gql } from 'apollo-angular';
13
+ import { isObject, summate, assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';
14
+ import { simpleDeepClone } from '@vendure/common/lib/simple-deep-clone';
15
+
16
+ class AddManualPaymentDialogComponent {
17
+ constructor(dataService) {
18
+ this.dataService = dataService;
19
+ this.form = new FormGroup({
20
+ method: new FormControl('', Validators.required),
21
+ transactionId: new FormControl('', Validators.required),
22
+ });
23
+ }
24
+ ngOnInit() {
25
+ this.paymentMethods$ = this.dataService.settings
26
+ .getPaymentMethods(999)
27
+ .mapSingle(data => data.paymentMethods.items);
28
+ }
29
+ submit() {
30
+ const formValue = this.form.value;
31
+ this.resolveWith({
32
+ method: formValue.method,
33
+ transactionId: formValue.transactionId,
34
+ });
35
+ }
36
+ cancel() {
37
+ this.resolveWith();
38
+ }
39
+ }
40
+ AddManualPaymentDialogComponent.decorators = [
41
+ { type: Component, args: [{
42
+ selector: 'vdr-add-manual-payment-dialog',
43
+ template: "<ng-template vdrDialogTitle>{{ 'order.add-payment-to-order' | translate }}</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'order.payment-method' | translate\" for=\"method\">\r\n <ng-select\r\n [items]=\"paymentMethods$ | async\"\r\n bindLabel=\"code\"\r\n autofocus\r\n bindValue=\"code\"\r\n [addTag]=\"true\"\r\n formControlName=\"method\"\r\n ></ng-select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'order.transaction-id' | translate\" for=\"transactionId\">\r\n <input id=\"transactionId\" type=\"text\" formControlName=\"transactionId\" />\r\n </vdr-form-field>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"submit()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || form.pristine\">\r\n {{ 'order.add-payment' | translate }} ({{ outstandingAmount | localeCurrency: currencyCode }})\r\n </button>\r\n</ng-template>\r\n",
44
+ changeDetection: ChangeDetectionStrategy.OnPush,
45
+ styles: [".ng-select{min-width:100%}\n"]
46
+ },] }
47
+ ];
48
+ AddManualPaymentDialogComponent.ctorParameters = () => [
49
+ { type: DataService }
50
+ ];
51
+
52
+ class CancelOrderDialogComponent {
53
+ constructor(i18nService) {
54
+ var _a;
55
+ this.i18nService = i18nService;
56
+ this.cancelAll = true;
57
+ this.lineQuantities = {};
58
+ this.reasons = (_a = getAppConfig().cancellationReasons) !== null && _a !== void 0 ? _a : [
59
+ marker('order.cancel-reason-customer-request'),
60
+ marker('order.cancel-reason-not-available'),
61
+ ];
62
+ this.reasons = this.reasons.map(r => this.i18nService.translate(r));
63
+ }
64
+ get selectionCount() {
65
+ return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);
66
+ }
67
+ ngOnInit() {
68
+ this.lineQuantities = this.order.lines.reduce((result, line) => {
69
+ return Object.assign(Object.assign({}, result), { [line.id]: line.quantity });
70
+ }, {});
71
+ }
72
+ radioChanged() {
73
+ if (this.cancelAll) {
74
+ for (const line of this.order.lines) {
75
+ this.lineQuantities[line.id] = line.quantity;
76
+ }
77
+ }
78
+ else {
79
+ for (const line of this.order.lines) {
80
+ this.lineQuantities[line.id] = 0;
81
+ }
82
+ }
83
+ }
84
+ checkIfAllSelected() {
85
+ var _a;
86
+ for (const [lineId, quantity] of Object.entries(this.lineQuantities)) {
87
+ const quantityInOrder = (_a = this.order.lines.find(line => line.id === lineId)) === null || _a === void 0 ? void 0 : _a.quantity;
88
+ if (quantityInOrder && quantity < quantityInOrder) {
89
+ return;
90
+ }
91
+ }
92
+ // If we got here, all of the selected quantities are equal to the order
93
+ // line quantities, i.e. everything is selected.
94
+ this.cancelAll = true;
95
+ }
96
+ select() {
97
+ this.resolveWith({
98
+ orderId: this.order.id,
99
+ lines: this.getLineInputs(),
100
+ reason: this.reason,
101
+ cancelShipping: this.cancelAll,
102
+ });
103
+ }
104
+ cancel() {
105
+ this.resolveWith();
106
+ }
107
+ getLineInputs() {
108
+ if (this.order.active) {
109
+ return;
110
+ }
111
+ return Object.entries(this.lineQuantities)
112
+ .map(([orderLineId, quantity]) => ({
113
+ orderLineId,
114
+ quantity,
115
+ }))
116
+ .filter(l => 0 < l.quantity);
117
+ }
118
+ }
119
+ CancelOrderDialogComponent.decorators = [
120
+ { type: Component, args: [{
121
+ selector: 'vdr-cancel-order-dialog',
122
+ template: "<ng-template vdrDialogTitle>{{ 'order.cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"fulfillment-wrapper\">\r\n <div class=\"order-lines\">\r\n <table class=\"table\">\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.quantity' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.cancel' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr\r\n *ngFor=\"let line of order.lines\"\r\n class=\"order-line\"\r\n [class.is-disabled]=\"cancelAll\"\r\n [class.is-cancelled]=\"line.quantity === 0\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle quantity\">{{ line.quantity }}</td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n </td>\r\n <td class=\"align-middle fulfil\">\r\n <input\r\n *ngIf=\"line.quantity > 0 && !order.active; else nonEditable\"\r\n [(ngModel)]=\"lineQuantities[line.id]\"\r\n (input)=\"checkIfAllSelected()\"\r\n [disabled]=\"cancelAll\"\r\n type=\"number\"\r\n [max]=\"line.quantity\"\r\n min=\"0\"\r\n />\r\n <ng-template #nonEditable>{{ line.quantity }}</ng-template>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"cancellation-details\">\r\n <ng-container *ngIf=\"order.active !== true\">\r\n <clr-radio-wrapper>\r\n <input\r\n type=\"radio\"\r\n clrRadio\r\n [value]=\"true\"\r\n [(ngModel)]=\"cancelAll\"\r\n name=\"options\"\r\n (ngModelChange)=\"radioChanged()\"\r\n />\r\n <label>{{ 'order.cancel-entire-order' | translate }}</label>\r\n </clr-radio-wrapper>\r\n <clr-radio-wrapper>\r\n <input\r\n type=\"radio\"\r\n clrRadio\r\n [value]=\"false\"\r\n [(ngModel)]=\"cancelAll\"\r\n name=\"options\"\r\n (ngModelChange)=\"radioChanged()\"\r\n />\r\n <label>{{ 'order.cancel-specified-items' | translate }}</label>\r\n </clr-radio-wrapper>\r\n </ng-container>\r\n <label class=\"clr-control-label\">{{ 'order.cancellation-reason' | translate }}</label>\r\n <ng-select\r\n [items]=\"reasons\"\r\n bindLabel=\"name\"\r\n autofocus\r\n bindValue=\"id\"\r\n [addTag]=\"true\"\r\n [(ngModel)]=\"reason\"\r\n ></ng-select>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"!reason || (!order.active && selectionCount === 0)\"\r\n class=\"btn btn-primary\"\r\n >\r\n <ng-container *ngIf=\"!order.active\">\r\n {{ 'order.cancel-selected-items' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"order.active\">\r\n {{ 'order.cancel-order' | translate }}\r\n </ng-container>\r\n </button>\r\n</ng-template>\r\n",
123
+ changeDetection: ChangeDetectionStrategy.OnPush,
124
+ styles: [":host{height:100%;display:flex;min-height:64vh}.fulfillment-wrapper{flex:1}@media screen and (min-width: 768px){.fulfillment-wrapper{display:flex;flex-direction:row}}@media screen and (min-width: 768px){.fulfillment-wrapper .cancellation-details{margin-top:0;margin-left:24px;width:250px}}.fulfillment-wrapper .order-lines{flex:1;overflow-y:auto}.fulfillment-wrapper .order-lines table{margin-top:0}.fulfillment-wrapper tr.ignore{color:var(--color-grey-300)}.fulfillment-wrapper .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.fulfillment-wrapper .is-disabled td,.fulfillment-wrapper .is-disabled td input{background-color:var(--color-component-bg-200)}\n"]
125
+ },] }
126
+ ];
127
+ CancelOrderDialogComponent.ctorParameters = () => [
128
+ { type: I18nService }
129
+ ];
130
+
131
+ class CouponCodeSelectorComponent {
132
+ constructor(dataService) {
133
+ this.dataService = dataService;
134
+ this.addCouponCode = new EventEmitter();
135
+ this.removeCouponCode = new EventEmitter();
136
+ this.couponCodeInput$ = new Subject();
137
+ }
138
+ ngOnInit() {
139
+ var _a;
140
+ this.availableCouponCodes$ = concat(this.couponCodeInput$.pipe(distinctUntilChanged(), switchMap(term => this.dataService.promotion.getPromotions(10, 0, {
141
+ couponCode: { contains: term },
142
+ }).single$), map(({ promotions }) =>
143
+ // tslint:disable-next-line:no-non-null-assertion
144
+ promotions.items.map(p => ({ code: p.couponCode, promotionName: p.name }))), startWith([])));
145
+ if (!this.control) {
146
+ this.control = new FormControl((_a = this.couponCodes) !== null && _a !== void 0 ? _a : []);
147
+ }
148
+ }
149
+ }
150
+ CouponCodeSelectorComponent.decorators = [
151
+ { type: Component, args: [{
152
+ selector: 'vdr-coupon-code-selector',
153
+ template: "<ng-select\r\n [items]=\"availableCouponCodes$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"code\"\r\n bindValue=\"code\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [minTermLength]=\"2\"\r\n typeToSearchText=\"\"\r\n [typeahead]=\"couponCodeInput$\"\r\n [formControl]=\"control\"\r\n (add)=\"addCouponCode.emit($event.code)\"\r\n (remove)=\"removeCouponCode.emit($event.value?.code)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip>{{ item.code }}</vdr-chip>\r\n {{ item.promotionName }}\r\n </ng-template>\r\n</ng-select>\r\n",
154
+ changeDetection: ChangeDetectionStrategy.OnPush,
155
+ styles: [""]
156
+ },] }
157
+ ];
158
+ CouponCodeSelectorComponent.ctorParameters = () => [
159
+ { type: DataService }
160
+ ];
161
+ CouponCodeSelectorComponent.propDecorators = {
162
+ couponCodes: [{ type: Input }],
163
+ control: [{ type: Input }],
164
+ addCouponCode: [{ type: Output }],
165
+ removeCouponCode: [{ type: Output }]
166
+ };
167
+
168
+ class OrderStateSelectDialogComponent {
169
+ constructor() {
170
+ this.nextStates = [];
171
+ this.message = '';
172
+ this.selectedState = '';
173
+ }
174
+ select() {
175
+ if (this.selectedState) {
176
+ this.resolveWith(this.selectedState);
177
+ }
178
+ }
179
+ cancel() {
180
+ this.resolveWith();
181
+ }
182
+ }
183
+ OrderStateSelectDialogComponent.decorators = [
184
+ { type: Component, args: [{
185
+ selector: 'vdr-order-state-select-dialog',
186
+ template: "<ng-template vdrDialogTitle>{{ 'order.select-state' | translate }}</ng-template>\r\n<p>{{ message | translate }}</p>\r\n<clr-select-container>\r\n <select clrSelect name=\"state\" [(ngModel)]=\"selectedState\">\r\n <option *ngFor=\"let state of nextStates\" [value]=\"state\">\r\n {{ state | stateI18nToken | translate }}\r\n </option>\r\n </select>\r\n</clr-select-container>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" *ngIf=\"cancellable\" (click)=\"cancel()\" class=\"btn btn-secondary\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"!selectedState\">\r\n {{ 'order.transition-to-state' | translate: { state: (selectedState | stateI18nToken | translate) } }}\r\n </button>\r\n</ng-template>\r\n",
187
+ changeDetection: ChangeDetectionStrategy.OnPush,
188
+ styles: [""]
189
+ },] }
190
+ ];
191
+
192
+ class OrderTransitionService {
193
+ constructor(dataService, modalService, notificationService, i18nService) {
194
+ this.dataService = dataService;
195
+ this.modalService = modalService;
196
+ this.notificationService = notificationService;
197
+ this.i18nService = i18nService;
198
+ }
199
+ /**
200
+ * Attempts to transition the Order to the last state it was in before it was transitioned
201
+ * to the "Modifying" state. If this fails, a manual prompt is used.
202
+ */
203
+ transitionToPreModifyingState(orderId, nextStates) {
204
+ return this.getPreModifyingState(orderId).pipe(switchMap(state => {
205
+ const manualTransitionOptions = {
206
+ orderId,
207
+ nextStates,
208
+ message: this.i18nService.translate(marker('order.unable-to-transition-to-state-try-another'), { state }),
209
+ cancellable: false,
210
+ retry: 10,
211
+ };
212
+ if (state) {
213
+ return this.transitionToStateOrThrow(orderId, state).pipe(catchError(err => this.manuallyTransitionToState(manualTransitionOptions)));
214
+ }
215
+ else {
216
+ return this.manuallyTransitionToState(manualTransitionOptions);
217
+ }
218
+ }));
219
+ }
220
+ /**
221
+ * Displays a modal for manually selecting the next state.
222
+ */
223
+ manuallyTransitionToState(options) {
224
+ return this.modalService
225
+ .fromComponent(OrderStateSelectDialogComponent, {
226
+ locals: {
227
+ nextStates: options.nextStates,
228
+ cancellable: options.cancellable,
229
+ message: options.message,
230
+ },
231
+ closable: false,
232
+ size: 'md',
233
+ })
234
+ .pipe(switchMap(result => {
235
+ if (result) {
236
+ return this.transitionToStateOrThrow(options.orderId, result);
237
+ }
238
+ else {
239
+ if (!options.cancellable) {
240
+ throw new Error(`An order state must be selected`);
241
+ }
242
+ else {
243
+ return EMPTY;
244
+ }
245
+ }
246
+ }), retryWhen(errors => errors.pipe(delay(2000), take(options.retry))));
247
+ }
248
+ /**
249
+ * Attempts to get the last state the Order was in before it was transitioned
250
+ * to the "Modifying" state.
251
+ */
252
+ getPreModifyingState(orderId) {
253
+ return this.dataService.order
254
+ .getOrderHistory(orderId, {
255
+ filter: {
256
+ type: {
257
+ eq: HistoryEntryType.ORDER_STATE_TRANSITION,
258
+ },
259
+ },
260
+ sort: {
261
+ createdAt: SortOrder.DESC,
262
+ },
263
+ })
264
+ .mapSingle(result => result.order)
265
+ .pipe(map(result => {
266
+ const item = result === null || result === void 0 ? void 0 : result.history.items.find(i => i.data.to === 'Modifying');
267
+ if (item) {
268
+ return item.data.from;
269
+ }
270
+ else {
271
+ return;
272
+ }
273
+ }));
274
+ }
275
+ transitionToStateOrThrow(orderId, state) {
276
+ return this.dataService.order.transitionToState(orderId, state).pipe(map(({ transitionOrderToState }) => {
277
+ switch (transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.__typename) {
278
+ case 'Order':
279
+ return transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.state;
280
+ case 'OrderStateTransitionError':
281
+ this.notificationService.error(transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.transitionError);
282
+ throw new Error(transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.transitionError);
283
+ }
284
+ }));
285
+ }
286
+ }
287
+ OrderTransitionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function OrderTransitionService_Factory() { return new OrderTransitionService(i0.ɵɵinject(i1.DataService), i0.ɵɵinject(i1.ModalService), i0.ɵɵinject(i1.NotificationService), i0.ɵɵinject(i1.I18nService)); }, token: OrderTransitionService, providedIn: "root" });
288
+ OrderTransitionService.decorators = [
289
+ { type: Injectable, args: [{
290
+ providedIn: 'root',
291
+ },] }
292
+ ];
293
+ OrderTransitionService.ctorParameters = () => [
294
+ { type: DataService },
295
+ { type: ModalService },
296
+ { type: NotificationService },
297
+ { type: I18nService }
298
+ ];
299
+
300
+ const GET_CUSTOMER_ADDRESSES = gql `
301
+ query GetCustomerAddresses($customerId: ID!) {
302
+ customer(id: $customerId) {
303
+ id
304
+ addresses {
305
+ ...Address
306
+ }
307
+ }
308
+ }
309
+ ${ADDRESS_FRAGMENT}
310
+ `;
311
+
312
+ class SelectAddressDialogComponent {
313
+ constructor(dataService, formBuilder) {
314
+ this.dataService = dataService;
315
+ this.formBuilder = formBuilder;
316
+ this.useExisting = true;
317
+ this.createNew = false;
318
+ }
319
+ ngOnInit() {
320
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
321
+ this.addressForm = this.formBuilder.group({
322
+ fullName: [(_b = (_a = this.currentAddress) === null || _a === void 0 ? void 0 : _a.fullName) !== null && _b !== void 0 ? _b : ''],
323
+ company: [(_d = (_c = this.currentAddress) === null || _c === void 0 ? void 0 : _c.company) !== null && _d !== void 0 ? _d : ''],
324
+ streetLine1: [(_f = (_e = this.currentAddress) === null || _e === void 0 ? void 0 : _e.streetLine1) !== null && _f !== void 0 ? _f : '', Validators.required],
325
+ streetLine2: [(_h = (_g = this.currentAddress) === null || _g === void 0 ? void 0 : _g.streetLine2) !== null && _h !== void 0 ? _h : ''],
326
+ city: [(_k = (_j = this.currentAddress) === null || _j === void 0 ? void 0 : _j.city) !== null && _k !== void 0 ? _k : '', Validators.required],
327
+ province: [(_m = (_l = this.currentAddress) === null || _l === void 0 ? void 0 : _l.province) !== null && _m !== void 0 ? _m : ''],
328
+ postalCode: [(_p = (_o = this.currentAddress) === null || _o === void 0 ? void 0 : _o.postalCode) !== null && _p !== void 0 ? _p : '', Validators.required],
329
+ countryCode: [(_r = (_q = this.currentAddress) === null || _q === void 0 ? void 0 : _q.countryCode) !== null && _r !== void 0 ? _r : '', Validators.required],
330
+ phoneNumber: [(_t = (_s = this.currentAddress) === null || _s === void 0 ? void 0 : _s.phoneNumber) !== null && _t !== void 0 ? _t : ''],
331
+ });
332
+ this.useExisting = !!this.customerId;
333
+ this.addresses$ = this.customerId
334
+ ? this.dataService
335
+ .query(GET_CUSTOMER_ADDRESSES, { customerId: this.customerId })
336
+ .mapSingle(({ customer }) => { var _a; return (_a = customer === null || customer === void 0 ? void 0 : customer.addresses) !== null && _a !== void 0 ? _a : []; })
337
+ .pipe(tap(addresses => {
338
+ if (this.currentAddress) {
339
+ this.selectedAddress = addresses.find(a => {
340
+ var _a, _b;
341
+ return a.streetLine1 === ((_a = this.currentAddress) === null || _a === void 0 ? void 0 : _a.streetLine1) &&
342
+ a.postalCode === ((_b = this.currentAddress) === null || _b === void 0 ? void 0 : _b.postalCode);
343
+ });
344
+ }
345
+ if (addresses.length === 0) {
346
+ this.createNew = true;
347
+ this.useExisting = false;
348
+ }
349
+ }))
350
+ : of([]);
351
+ this.availableCountries$ = this.dataService.settings
352
+ .getAvailableCountries()
353
+ .mapSingle(({ countries }) => countries.items);
354
+ }
355
+ trackByFn(item) {
356
+ return item.id;
357
+ }
358
+ addressIdFn(item) {
359
+ return item.streetLine1 + item.postalCode;
360
+ }
361
+ cancel() {
362
+ this.resolveWith();
363
+ }
364
+ select() {
365
+ if (this.useExisting && this.selectedAddress) {
366
+ this.resolveWith(Object.assign(Object.assign({}, pick(this.selectedAddress, [
367
+ 'fullName',
368
+ 'company',
369
+ 'streetLine1',
370
+ 'streetLine2',
371
+ 'city',
372
+ 'province',
373
+ 'phoneNumber',
374
+ 'postalCode',
375
+ ])), { countryCode: this.selectedAddress.country.code }));
376
+ }
377
+ if (this.createNew && this.addressForm.valid) {
378
+ const formValue = this.addressForm.value;
379
+ this.resolveWith(formValue);
380
+ }
381
+ }
382
+ }
383
+ SelectAddressDialogComponent.decorators = [
384
+ { type: Component, args: [{
385
+ selector: 'vdr-select-address-dialog',
386
+ template: "<ng-template vdrDialogTitle>{{ 'order.select-address' | translate }}</ng-template>\r\n\r\n<clr-tabs *ngIf=\"addresses$ | async as addresses\">\r\n <clr-tab *ngIf=\"customerId && addresses.length\">\r\n <button clrTabLink>{{ 'order.existing-address' | translate }}</button>\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <vdr-radio-card-fieldset\r\n class=\"block mt4\"\r\n [idFn]=\"addressIdFn\"\r\n [selectedItemId]=\"selectedAddress && addressIdFn(selectedAddress)\"\r\n (selectItem)=\"selectedAddress = $event\"\r\n >\r\n <vdr-radio-card *ngFor=\"let address of addresses\" [item]=\"address\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </vdr-radio-card>\r\n </vdr-radio-card-fieldset>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'customer.create-new-address' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n ></vdr-address-form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && !selectedAddress) || (createNew && addressForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n",
387
+ changeDetection: ChangeDetectionStrategy.OnPush,
388
+ styles: [""]
389
+ },] }
390
+ ];
391
+ SelectAddressDialogComponent.ctorParameters = () => [
392
+ { type: DataService },
393
+ { type: FormBuilder }
394
+ ];
395
+
396
+ class SelectCustomerDialogComponent {
397
+ constructor(dataService, formBuilder) {
398
+ this.dataService = dataService;
399
+ this.formBuilder = formBuilder;
400
+ this.isLoading = false;
401
+ this.input$ = new Subject();
402
+ this.selectedCustomer = [];
403
+ this.useExisting = true;
404
+ this.createNew = false;
405
+ this.customerForm = this.formBuilder.group({
406
+ title: '',
407
+ firstName: ['', Validators.required],
408
+ lastName: ['', Validators.required],
409
+ phoneNumber: '',
410
+ emailAddress: ['', [Validators.required, Validators.email]],
411
+ });
412
+ }
413
+ ngOnInit() {
414
+ this.customers$ = concat(of([]), // default items
415
+ this.input$.pipe(debounceTime(200), distinctUntilChanged(), tap(() => (this.isLoading = true)), switchMap(term => this.dataService.customer
416
+ .getCustomerList(10, 0, term)
417
+ .mapStream(({ customers }) => customers.items)
418
+ .pipe(catchError(() => of([])), // empty list on error
419
+ tap(() => (this.isLoading = false))))));
420
+ }
421
+ trackByFn(item) {
422
+ return item.id;
423
+ }
424
+ cancel() {
425
+ this.resolveWith();
426
+ }
427
+ select() {
428
+ if (this.useExisting && this.selectedCustomer.length === 1) {
429
+ this.resolveWith(this.selectedCustomer[0]);
430
+ }
431
+ if (this.createNew && this.customerForm.valid) {
432
+ const formValue = this.customerForm.value;
433
+ this.resolveWith(formValue);
434
+ }
435
+ }
436
+ }
437
+ SelectCustomerDialogComponent.decorators = [
438
+ { type: Component, args: [{
439
+ selector: 'vdr-select-customer-dialog',
440
+ template: "<ng-template vdrDialogTitle>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <ng-select\r\n [items]=\"customers$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"2\"\r\n [loading]=\"isLoading\"\r\n [typeahead]=\"input$\"\r\n [(ngModel)]=\"selectedCustomer\"\r\n class=\"mt4\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n </ng-select>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <form [formGroup]=\"customerForm\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.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]=\"'customer.last-name' | translate\" for=\"lastName\">\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.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]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n </form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n",
441
+ changeDetection: ChangeDetectionStrategy.OnPush,
442
+ styles: [""]
443
+ },] }
444
+ ];
445
+ SelectCustomerDialogComponent.ctorParameters = () => [
446
+ { type: DataService },
447
+ { type: FormBuilder }
448
+ ];
449
+
450
+ class SelectShippingMethodDialogComponent {
451
+ constructor() { }
452
+ ngOnInit() {
453
+ if (this.currentSelectionId) {
454
+ this.selectedMethod = this.eligibleShippingMethods.find(m => m.id === this.currentSelectionId);
455
+ }
456
+ }
457
+ methodIdFn(item) {
458
+ return item.id;
459
+ }
460
+ cancel() {
461
+ this.resolveWith();
462
+ }
463
+ select() {
464
+ if (this.selectedMethod) {
465
+ this.resolveWith(this.selectedMethod.id);
466
+ }
467
+ }
468
+ }
469
+ SelectShippingMethodDialogComponent.decorators = [
470
+ { type: Component, args: [{
471
+ selector: 'vdr-select-shipping-method-dialog',
472
+ template: "<ng-template vdrDialogTitle>{{ 'order.select-shipping-method' | translate }}</ng-template>\r\n<vdr-radio-card-fieldset\r\n [idFn]=\"methodIdFn\"\r\n [selectedItemId]=\"selectedMethod?.id\"\r\n (selectItem)=\"selectedMethod = $event\"\r\n>\r\n <vdr-radio-card *ngFor=\"let quote of eligibleShippingMethods\" [item]=\"quote\">\r\n <div class=\"result-details\">\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 </vdr-radio-card>\r\n</vdr-radio-card-fieldset>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"!selectedMethod\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n",
473
+ changeDetection: ChangeDetectionStrategy.OnPush,
474
+ styles: [""]
475
+ },] }
476
+ ];
477
+ SelectShippingMethodDialogComponent.ctorParameters = () => [];
478
+
479
+ class DraftOrderDetailComponent extends BaseDetailComponent {
480
+ constructor(router, route, serverConfigService, changeDetector, dataService, notificationService, modalService, orderTransitionService) {
481
+ super(route, router, serverConfigService, dataService);
482
+ this.changeDetector = changeDetector;
483
+ this.dataService = dataService;
484
+ this.notificationService = notificationService;
485
+ this.modalService = modalService;
486
+ this.orderTransitionService = orderTransitionService;
487
+ this.detailForm = new FormGroup({});
488
+ this.fetchHistory = new Subject();
489
+ this.displayCouponCodeInput = false;
490
+ }
491
+ ngOnInit() {
492
+ this.init();
493
+ this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');
494
+ this.eligibleShippingMethods$ = this.entity$.pipe(switchMap(order => this.dataService.order
495
+ .getDraftOrderEligibleShippingMethods(order.id)
496
+ .mapSingle(({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder)));
497
+ this.customFields = this.getCustomFieldConfig('Order');
498
+ this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');
499
+ }
500
+ ngOnDestroy() {
501
+ this.destroy();
502
+ }
503
+ addItemToOrder(event) {
504
+ this.dataService.order.addItemToDraftOrder(this.id, event).subscribe(result => {
505
+ if (result.addItemToDraftOrder.__typename !== 'Order') {
506
+ this.notificationService.error(result.addItemToDraftOrder.message);
507
+ }
508
+ });
509
+ }
510
+ adjustOrderLine(event) {
511
+ this.dataService.order
512
+ .adjustDraftOrderLine(this.id, { orderLineId: event.lineId, quantity: event.quantity })
513
+ .subscribe(result => {
514
+ if (result.adjustDraftOrderLine.__typename !== 'Order') {
515
+ this.notificationService.error(result.adjustDraftOrderLine.message);
516
+ }
517
+ });
518
+ }
519
+ removeOrderLine(event) {
520
+ this.dataService.order.removeDraftOrderLine(this.id, event.lineId).subscribe(result => {
521
+ if (result.removeDraftOrderLine.__typename !== 'Order') {
522
+ this.notificationService.error(result.removeDraftOrderLine.message);
523
+ }
524
+ });
525
+ }
526
+ getOrderAddressLines(orderAddress) {
527
+ if (!orderAddress) {
528
+ return [];
529
+ }
530
+ return Object.values(orderAddress)
531
+ .filter(val => val !== 'OrderAddress')
532
+ .filter(line => !!line);
533
+ }
534
+ setCustomer() {
535
+ this.modalService.fromComponent(SelectCustomerDialogComponent).subscribe(result => {
536
+ if (this.hasId(result)) {
537
+ this.dataService.order
538
+ .setCustomerForDraftOrder(this.id, { customerId: result.id })
539
+ .subscribe();
540
+ }
541
+ else if (result) {
542
+ this.dataService.order.setCustomerForDraftOrder(this.id, { input: result }).subscribe();
543
+ }
544
+ });
545
+ }
546
+ setShippingAddress() {
547
+ this.entity$
548
+ .pipe(take(1), switchMap(order => {
549
+ var _a, _b;
550
+ return this.modalService.fromComponent(SelectAddressDialogComponent, {
551
+ locals: {
552
+ customerId: (_a = order.customer) === null || _a === void 0 ? void 0 : _a.id,
553
+ currentAddress: (_b = order.shippingAddress) !== null && _b !== void 0 ? _b : undefined,
554
+ },
555
+ });
556
+ }))
557
+ .subscribe(result => {
558
+ if (result) {
559
+ this.dataService.order.setDraftOrderShippingAddress(this.id, result).subscribe();
560
+ }
561
+ });
562
+ }
563
+ setBillingAddress() {
564
+ this.entity$
565
+ .pipe(take(1), switchMap(order => {
566
+ var _a, _b;
567
+ return this.modalService.fromComponent(SelectAddressDialogComponent, {
568
+ locals: {
569
+ customerId: (_a = order.customer) === null || _a === void 0 ? void 0 : _a.id,
570
+ currentAddress: (_b = order.billingAddress) !== null && _b !== void 0 ? _b : undefined,
571
+ },
572
+ });
573
+ }))
574
+ .subscribe(result => {
575
+ if (result) {
576
+ this.dataService.order.setDraftOrderBillingAddress(this.id, result).subscribe();
577
+ }
578
+ });
579
+ }
580
+ applyCouponCode(couponCode) {
581
+ this.dataService.order.applyCouponCodeToDraftOrder(this.id, couponCode).subscribe();
582
+ }
583
+ removeCouponCode(couponCode) {
584
+ this.dataService.order.removeCouponCodeFromDraftOrder(this.id, couponCode).subscribe();
585
+ }
586
+ setShippingMethod() {
587
+ combineLatest(this.entity$, this.eligibleShippingMethods$)
588
+ .pipe(take(1), switchMap(([order, methods]) => {
589
+ var _a, _b;
590
+ return this.modalService.fromComponent(SelectShippingMethodDialogComponent, {
591
+ locals: {
592
+ eligibleShippingMethods: methods,
593
+ currencyCode: order.currencyCode,
594
+ currentSelectionId: (_b = (_a = order.shippingLines) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.shippingMethod.id,
595
+ },
596
+ });
597
+ }))
598
+ .subscribe(result => {
599
+ if (result) {
600
+ this.dataService.order.setDraftOrderShippingMethod(this.id, result).subscribe();
601
+ }
602
+ });
603
+ }
604
+ updateCustomFields(customFieldsValue) {
605
+ this.dataService.order
606
+ .updateOrderCustomFields({
607
+ id: this.id,
608
+ customFields: customFieldsValue,
609
+ })
610
+ .subscribe();
611
+ }
612
+ deleteOrder() {
613
+ this.dataService.order.deleteDraftOrder(this.id).subscribe(({ deleteDraftOrder }) => {
614
+ if (deleteDraftOrder.result === DeletionResult.DELETED) {
615
+ this.notificationService.success(marker('common.notify-delete-success'), {
616
+ entity: 'Order',
617
+ });
618
+ this.router.navigate(['/orders']);
619
+ }
620
+ else if (deleteDraftOrder.message) {
621
+ this.notificationService.error(deleteDraftOrder.message);
622
+ }
623
+ });
624
+ }
625
+ completeOrder() {
626
+ this.dataService.order
627
+ .transitionToState(this.id, 'ArrangingPayment')
628
+ .subscribe(({ transitionOrderToState }) => {
629
+ if ((transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.__typename) === 'Order') {
630
+ this.router.navigate(['/orders', this.id]);
631
+ }
632
+ else if ((transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.__typename) === 'OrderStateTransitionError') {
633
+ this.notificationService.error(transitionOrderToState.transitionError);
634
+ }
635
+ });
636
+ }
637
+ hasId(input) {
638
+ return typeof input === 'object' && !!input.id;
639
+ }
640
+ setFormValues(entity) {
641
+ // empty
642
+ }
643
+ }
644
+ DraftOrderDetailComponent.decorators = [
645
+ { type: Component, args: [{
646
+ selector: 'vdr-draft-order-detail',
647
+ template: "<vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"completeOrder()\"\r\n [disabled]=\"!order.customer || !order.lines.length || !order.shippingLines.length\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'order.complete-draft-order' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button type=\"button\" class=\"btn\" vdrDropdownItem (click)=\"deleteOrder()\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'order.delete-draft-order' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<div *ngIf=\"entity$ | async as order\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-lg-8\">\r\n <vdr-draft-order-variant-selector\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n [currencyCode]=\"order.currencyCode\"\r\n (addItem)=\"addItemToOrder($event)\"\r\n ></vdr-draft-order-variant-selector>\r\n <vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n [isDraft]=\"true\"\r\n (adjust)=\"adjustOrderLine($event)\"\r\n (remove)=\"removeOrderLine($event)\"\r\n ></vdr-order-table>\r\n <div class=\"flex\">\r\n <button\r\n *ngIf=\"order.couponCodes.length === 0 && !displayCouponCodeInput\"\r\n class=\"btn btn-link btn-sm mr2\"\r\n (click)=\"displayCouponCodeInput = !displayCouponCodeInput\"\r\n >\r\n {{ 'order.set-coupon-codes' | translate }}\r\n </button>\r\n <div *ngIf=\"order.couponCodes.length || displayCouponCodeInput\">\r\n <label>{{ 'order.set-coupon-codes' | translate }}</label>\r\n <vdr-coupon-code-selector\r\n [couponCodes]=\"order.couponCodes\"\r\n (addCouponCode)=\"applyCouponCode($event)\"\r\n (removeCouponCode)=\"removeCouponCode($event)\"\r\n ></vdr-coupon-code-selector>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"order.taxSummary.length\">\r\n <h4>{{ 'order.tax-summary' | translate }}</h4>\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'common.description' | translate }}</th>\r\n <th>{{ 'order.tax-rate' | translate }}</th>\r\n <th>{{ 'order.tax-base' | translate }}</th>\r\n <th>{{ 'order.tax-total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of order.taxSummary\">\r\n <td>{{ row.description }}</td>\r\n <td>{{ row.taxRate / 100 | percent }}</td>\r\n <td>{{ row.taxBase | localeCurrency: order.currencyCode }}</td>\r\n <td>{{ row.taxTotal | localeCurrency: order.currencyCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </div>\r\n <div class=\"clr-col-lg-4 order-cards\">\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <clr-icon *ngIf=\"!order.customer\" shape=\"unknown-status\" class=\"is-warning\"></clr-icon>\r\n <clr-icon *ngIf=\"order.customer\" shape=\"check\" class=\"is-success\"></clr-icon>\r\n {{ 'order.customer' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-customer-label\r\n class=\"block mb2\"\r\n *ngIf=\"order.customer\"\r\n [customer]=\"order.customer\"\r\n ></vdr-customer-label>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"setCustomer()\">\r\n {{ 'order.set-customer-for-order' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <h4 class=\"card-title\">\r\n <clr-icon\r\n *ngIf=\"!order.billingAddress.streetLine1\"\r\n shape=\"unknown-status\"\r\n class=\"is-warning\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"order.billingAddress.streetLine1\"\r\n shape=\"check\"\r\n class=\"is-success\"\r\n ></clr-icon>\r\n {{ 'order.billing-address' | translate }}\r\n </h4>\r\n <div class=\"card-text\">\r\n <vdr-formatted-address\r\n class=\"block mb2\"\r\n *ngIf=\"order.billingAddress\"\r\n [address]=\"order.billingAddress\"\r\n ></vdr-formatted-address>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"setBillingAddress()\">\r\n {{ 'order.set-billing-address' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <clr-icon\r\n *ngIf=\"!order.shippingAddress.streetLine1 || !order.shippingLines.length\"\r\n shape=\"unknown-status\"\r\n class=\"is-warning\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"order.shippingAddress.streetLine1 && order.shippingLines.length\"\r\n shape=\"check\"\r\n class=\"is-success\"\r\n ></clr-icon>\r\n {{ 'order.shipping' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-formatted-address\r\n class=\"block mb2\"\r\n *ngIf=\"order.shippingAddress\"\r\n [address]=\"order.shippingAddress\"\r\n ></vdr-formatted-address>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"setShippingAddress()\">\r\n {{ 'order.set-shipping-address' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <div *ngFor=\"let shippingLine of order.shippingLines\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </div>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"setShippingMethod()\">\r\n {{ 'order.set-shipping-method' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <vdr-order-custom-fields-card\r\n [customFieldsConfig]=\"customFields\"\r\n [customFieldValues]=\"order.customFields\"\r\n (updateClick)=\"updateCustomFields($event)\"\r\n ></vdr-order-custom-fields-card>\r\n </div>\r\n </div>\r\n</div>\r\n",
648
+ changeDetection: ChangeDetectionStrategy.OnPush,
649
+ styles: [""]
650
+ },] }
651
+ ];
652
+ DraftOrderDetailComponent.ctorParameters = () => [
653
+ { type: Router },
654
+ { type: ActivatedRoute },
655
+ { type: ServerConfigService },
656
+ { type: ChangeDetectorRef },
657
+ { type: DataService },
658
+ { type: NotificationService },
659
+ { type: ModalService },
660
+ { type: OrderTransitionService }
661
+ ];
662
+
663
+ class DraftOrderVariantSelectorComponent {
664
+ constructor(dataService) {
665
+ this.dataService = dataService;
666
+ this.addItem = new EventEmitter();
667
+ this.customFieldsFormGroup = new FormGroup({});
668
+ this.selectedVariantId$ = new Subject();
669
+ this.quantity = 1;
670
+ }
671
+ ngOnInit() {
672
+ this.selectedVariant$ = this.selectedVariantId$.pipe(switchMap(id => {
673
+ if (id) {
674
+ return this.dataService.product
675
+ .getProductVariant(id)
676
+ .mapSingle(({ productVariant }) => productVariant);
677
+ }
678
+ else {
679
+ return [undefined];
680
+ }
681
+ }));
682
+ for (const customField of this.orderLineCustomFields) {
683
+ this.customFieldsFormGroup.addControl(customField.name, new FormControl(''));
684
+ }
685
+ }
686
+ addItemClick(selectedVariant) {
687
+ if (selectedVariant) {
688
+ this.addItem.emit({
689
+ productVariantId: selectedVariant.id,
690
+ quantity: this.quantity,
691
+ customFields: this.orderLineCustomFields.length
692
+ ? this.customFieldsFormGroup.value
693
+ : undefined,
694
+ });
695
+ this.selectedVariantId$.next(undefined);
696
+ this.customFieldsFormGroup.reset();
697
+ }
698
+ }
699
+ }
700
+ DraftOrderVariantSelectorComponent.decorators = [
701
+ { type: Component, args: [{
702
+ selector: 'vdr-draft-order-variant-selector',
703
+ template: "<div class=\"card\">\r\n <div class=\"card-block\">\r\n <h4 class=\"card-title\">{{ 'order.add-item-to-order' | translate }}</h4>\r\n <vdr-product-selector\r\n (productSelected)=\"selectedVariantId$.next($event.productVariantId)\"\r\n ></vdr-product-selector>\r\n </div>\r\n <div class=\"card-block\" *ngIf=\"selectedVariant$ | async as selectedVariant\">\r\n <div class=\"variant-details\">\r\n <img class=\"mr2\" [src]=\"selectedVariant.featuredAsset || selectedVariant.product.featuredAsset | assetPreview: 32\">\r\n <div class=\"details\">\r\n <div>{{ selectedVariant?.name }}</div>\r\n <div class=\"small\">{{ selectedVariant?.sku }}</div>\r\n </div>\r\n <div class=\"details ml4\">\r\n <div class=\"small\">\r\n {{ 'catalog.stock-on-hand' | translate }}: {{ selectedVariant.stockOnHand }}\r\n </div>\r\n <div class=\"small\">\r\n {{ 'catalog.stock-allocated' | translate }}: {{ selectedVariant.stockAllocated }}\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"details\">\r\n <div>{{ selectedVariant?.priceWithTax | localeCurrency: currencyCode }}</div>\r\n <div class=\"small\" [title]=\"'order.net-price' | translate\">\r\n {{ selectedVariant?.price | localeCurrency: currencyCode }}\r\n </div>\r\n </div>\r\n <div>\r\n <input [disabled]=\"!selectedVariant\" type=\"number\" min=\"0\" [(ngModel)]=\"quantity\" />\r\n </div>\r\n <button\r\n [disabled]=\"!selectedVariant\"\r\n class=\"btn btn-small btn-primary\"\r\n (click)=\"addItemClick(selectedVariant)\"\r\n >\r\n {{ 'order.add-item-to-order' | translate }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"orderLineCustomFields.length\">\r\n <div class=\"custom-field\" *ngFor=\"let field of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [readonly]=\"false\"\r\n [customField]=\"field\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n ></vdr-custom-field-control>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
704
+ changeDetection: ChangeDetectionStrategy.OnPush,
705
+ styles: [".variant-details{display:flex;align-items:center}.variant-details img{border-radius:var(--border-radius-img);width:32px;height:32px}.variant-details .details{font-size:.65rem;line-height:.7rem}.variant-details input{width:48px;margin:0 6px}.variant-details .small{font-size:11px;color:var(--color-text-300)}\n"]
706
+ },] }
707
+ ];
708
+ DraftOrderVariantSelectorComponent.ctorParameters = () => [
709
+ { type: DataService }
710
+ ];
711
+ DraftOrderVariantSelectorComponent.propDecorators = {
712
+ currencyCode: [{ type: Input }],
713
+ orderLineCustomFields: [{ type: Input }],
714
+ addItem: [{ type: Output }]
715
+ };
716
+
717
+ class FulfillOrderDialogComponent {
718
+ constructor(dataService, changeDetector) {
719
+ this.dataService = dataService;
720
+ this.changeDetector = changeDetector;
721
+ this.fulfillmentHandlerControl = new FormControl();
722
+ this.fulfillmentQuantities = {};
723
+ }
724
+ ngOnInit() {
725
+ this.dataService.settings.getGlobalSettings().single$.subscribe(({ globalSettings }) => {
726
+ this.fulfillmentQuantities = this.order.lines.reduce((result, line) => {
727
+ const fulfillCount = this.getFulfillableCount(line, globalSettings.trackInventory);
728
+ return Object.assign(Object.assign({}, result), { [line.id]: { fulfillCount, max: fulfillCount } });
729
+ }, {});
730
+ this.changeDetector.markForCheck();
731
+ });
732
+ this.dataService.shippingMethod
733
+ .getShippingMethodOperations()
734
+ .mapSingle(data => data.fulfillmentHandlers)
735
+ .subscribe(handlers => {
736
+ this.fulfillmentHandlerDef =
737
+ handlers.find(h => { var _a, _b; return h.code === ((_b = (_a = this.order.shippingLines[0]) === null || _a === void 0 ? void 0 : _a.shippingMethod) === null || _b === void 0 ? void 0 : _b.fulfillmentHandlerCode); }) || handlers[0];
738
+ this.fulfillmentHandler = configurableDefinitionToInstance(this.fulfillmentHandlerDef);
739
+ this.fulfillmentHandlerControl.patchValue(this.fulfillmentHandler);
740
+ this.changeDetector.markForCheck();
741
+ });
742
+ }
743
+ getFulfillableCount(line, globalTrackInventory) {
744
+ const { trackInventory, stockOnHand } = line.productVariant;
745
+ const effectiveTracInventory = trackInventory === GlobalFlag.INHERIT ? globalTrackInventory : trackInventory === GlobalFlag.TRUE;
746
+ const unfulfilledCount = this.getUnfulfilledCount(line);
747
+ return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;
748
+ }
749
+ getUnfulfilledCount(line) {
750
+ var _a, _b;
751
+ const fulfilled = (_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(f => f.summary).flat().filter(row => row.orderLine.id === line.id).reduce((sum, row) => sum + row.quantity, 0)) !== null && _b !== void 0 ? _b : 0;
752
+ return line.quantity - fulfilled;
753
+ }
754
+ canSubmit() {
755
+ const totalCount = Object.values(this.fulfillmentQuantities).reduce((total, { fulfillCount }) => total + fulfillCount, 0);
756
+ const formIsValid = configurableOperationValueIsValid(this.fulfillmentHandlerDef, this.fulfillmentHandlerControl.value) && this.fulfillmentHandlerControl.valid;
757
+ return formIsValid && 0 < totalCount;
758
+ }
759
+ select() {
760
+ const lines = Object.entries(this.fulfillmentQuantities).map(([orderLineId, { fulfillCount }]) => ({
761
+ orderLineId,
762
+ quantity: fulfillCount,
763
+ }));
764
+ this.resolveWith({
765
+ lines,
766
+ handler: toConfigurableOperationInput(this.fulfillmentHandler, this.fulfillmentHandlerControl.value),
767
+ });
768
+ }
769
+ cancel() {
770
+ this.resolveWith();
771
+ }
772
+ }
773
+ FulfillOrderDialogComponent.decorators = [
774
+ { type: Component, args: [{
775
+ selector: 'vdr-fulfill-order-dialog',
776
+ template: "<ng-template vdrDialogTitle>{{ 'order.fulfill-order' | translate }}</ng-template>\r\n\r\n<div class=\"fulfillment-wrapper\">\r\n <div class=\"order-table\">\r\n <table class=\"table\">\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.unfulfilled' | translate }}</th>\r\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\r\n <th>{{ 'order.fulfill' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr\r\n *ngFor=\"let line of order.lines\"\r\n class=\"order-line\"\r\n [class.ignore]=\"getUnfulfilledCount(line) === 0\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle quantity\">{{ getUnfulfilledCount(line) }}</td>\r\n <td class=\"align-middle quantity\">{{ line.productVariant.stockOnHand }}</td>\r\n <td class=\"align-middle fulfil\">\r\n <input\r\n *ngIf=\"fulfillmentQuantities[line.id]\"\r\n [disabled]=\"getUnfulfilledCount(line) === 0\"\r\n [(ngModel)]=\"fulfillmentQuantities[line.id].fulfillCount\"\r\n type=\"number\"\r\n [max]=\"fulfillmentQuantities[line.id].max\"\r\n min=\"0\"\r\n />\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"shipping-details\">\r\n <vdr-formatted-address [address]=\"order.shippingAddress\"></vdr-formatted-address>\r\n <h6>{{ 'order.shipping-method' | translate }}</h6>\r\n {{ order.shippingLines[0]?.shippingMethod?.name }}\r\n <strong>{{ order.shipping | localeCurrency: order.currencyCode }}</strong>\r\n <vdr-configurable-input\r\n [operationDefinition]=\"fulfillmentHandlerDef\"\r\n [operation]=\"fulfillmentHandler\"\r\n [formControl]=\"fulfillmentHandlerControl\"\r\n [removable]=\"false\"\r\n ></vdr-configurable-input>\r\n </div>\r\n</div>\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)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\r\n {{ 'order.create-fulfillment' | translate }}\r\n </button>\r\n</ng-template>\r\n",
777
+ changeDetection: ChangeDetectionStrategy.OnPush,
778
+ styles: [":host{height:100%;display:flex;min-height:64vh}.fulfillment-wrapper{flex:1}@media screen and (min-width: 768px){.fulfillment-wrapper{display:flex;flex-direction:row}}.fulfillment-wrapper .shipping-details{margin-top:24px}@media screen and (min-width: 768px){.fulfillment-wrapper .shipping-details{margin-top:0;margin-left:24px;width:250px}}.fulfillment-wrapper .shipping-details clr-input-container{margin-top:24px}.fulfillment-wrapper .order-table{flex:1;overflow-y:auto}.fulfillment-wrapper .order-table table{margin-top:0}.fulfillment-wrapper tr.ignore{color:var(--color-grey-300)}\n"]
779
+ },] }
780
+ ];
781
+ FulfillOrderDialogComponent.ctorParameters = () => [
782
+ { type: DataService },
783
+ { type: ChangeDetectorRef }
784
+ ];
785
+
786
+ class FulfillmentCardComponent {
787
+ constructor() {
788
+ this.transitionState = new EventEmitter();
789
+ }
790
+ nextSuggestedState() {
791
+ var _a;
792
+ if (!this.fulfillment) {
793
+ return;
794
+ }
795
+ const { nextStates } = this.fulfillment;
796
+ const namedStateOrDefault = (targetState) => nextStates.includes(targetState) ? targetState : nextStates[0];
797
+ switch ((_a = this.fulfillment) === null || _a === void 0 ? void 0 : _a.state) {
798
+ case 'Pending':
799
+ return namedStateOrDefault('Shipped');
800
+ case 'Shipped':
801
+ return namedStateOrDefault('Delivered');
802
+ default:
803
+ return nextStates.find(s => s !== 'Cancelled');
804
+ }
805
+ }
806
+ nextOtherStates() {
807
+ if (!this.fulfillment) {
808
+ return [];
809
+ }
810
+ const suggested = this.nextSuggestedState();
811
+ return this.fulfillment.nextStates.filter(s => s !== suggested);
812
+ }
813
+ }
814
+ FulfillmentCardComponent.decorators = [
815
+ { type: Component, args: [{
816
+ selector: 'vdr-fulfillment-card',
817
+ template: "<div class=\"card\">\r\n <div class=\"card-header fulfillment-header\">\r\n <div>{{ 'order.fulfillment' | translate }}</div>\r\n <div class=\"fulfillment-state\">\r\n <vdr-fulfillment-state-label [state]=\"fulfillment?.state\"></vdr-fulfillment-state-label>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-fulfillment-detail\r\n *ngIf=\"!!fulfillment\"\r\n [fulfillmentId]=\"fulfillment?.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"fulfillment?.nextStates.length\">\r\n <ng-container *ngIf=\"nextSuggestedState() as suggestedState\">\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"transitionState.emit(suggestedState)\">\r\n {{ 'order.set-fulfillment-state' | translate: { state: (suggestedState | stateI18nToken | translate) } }}\r\n </button>\r\n </ng-container>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n vdrDropdownItem\r\n (click)=\"transitionState.emit(nextState)\"\r\n >\r\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{ 'order.transition-to-state' | translate: { state: (nextState | stateI18nToken | translate) } }}\r\n </ng-container>\r\n <ng-template #cancel>\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n {{ 'order.cancel-fulfillment' | translate }}\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n</div>\r\n",
818
+ changeDetection: ChangeDetectionStrategy.OnPush,
819
+ styles: [".fulfillment-header{display:flex;justify-content:space-between;align-items:center}.card-footer{display:flex;align-items:center;justify-content:flex-end}\n"]
820
+ },] }
821
+ ];
822
+ FulfillmentCardComponent.propDecorators = {
823
+ fulfillment: [{ type: Input }],
824
+ order: [{ type: Input }],
825
+ transitionState: [{ type: Output }]
826
+ };
827
+
828
+ class FulfillmentDetailComponent {
829
+ constructor(serverConfigService) {
830
+ this.serverConfigService = serverConfigService;
831
+ this.customFieldConfig = [];
832
+ this.customFieldFormGroup = new FormGroup({});
833
+ }
834
+ ngOnInit() {
835
+ this.customFieldConfig = this.serverConfigService.getCustomFieldsFor('Fulfillment');
836
+ }
837
+ ngOnChanges(changes) {
838
+ this.buildCustomFieldsFormGroup();
839
+ }
840
+ get fulfillment() {
841
+ return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);
842
+ }
843
+ get items() {
844
+ var _a, _b;
845
+ return ((_b = (_a = this.fulfillment) === null || _a === void 0 ? void 0 : _a.summary.map(row => {
846
+ var _a, _b;
847
+ return {
848
+ name: (_b = (_a = this.order.lines.find(line => line.id === row.orderLine.id)) === null || _a === void 0 ? void 0 : _a.productVariant.name) !== null && _b !== void 0 ? _b : '',
849
+ quantity: row.quantity,
850
+ };
851
+ })) !== null && _b !== void 0 ? _b : []);
852
+ }
853
+ buildCustomFieldsFormGroup() {
854
+ const customFields = this.fulfillment.customFields;
855
+ for (const fieldDef of this.serverConfigService.getCustomFieldsFor('Fulfillment')) {
856
+ this.customFieldFormGroup.addControl(fieldDef.name, new FormControl(customFields[fieldDef.name]));
857
+ }
858
+ }
859
+ customFieldIsObject(customField) {
860
+ return Array.isArray(customField) || isObject(customField);
861
+ }
862
+ }
863
+ FulfillmentDetailComponent.decorators = [
864
+ { type: Component, args: [{
865
+ selector: 'vdr-fulfillment-detail',
866
+ template: "<vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ fulfillment?.createdAt | localeDate: 'medium' }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\r\n {{ fulfillment?.method }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"fulfillment?.trackingCode\" [label]=\"'order.tracking-code' | translate\">\r\n {{ fulfillment?.trackingCode }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.contents' | translate\">\r\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n<ng-container *ngFor=\"let customField of customFieldConfig\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldFormGroup.get(customField.name)\"\r\n [readonly]=\"true\"\r\n [compact]=\"true\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"customFieldFormGroup\"\r\n ></vdr-custom-field-control>\r\n</ng-container>\r\n",
867
+ changeDetection: ChangeDetectionStrategy.OnPush,
868
+ styles: [""]
869
+ },] }
870
+ ];
871
+ FulfillmentDetailComponent.ctorParameters = () => [
872
+ { type: ServerConfigService }
873
+ ];
874
+ FulfillmentDetailComponent.propDecorators = {
875
+ fulfillmentId: [{ type: Input }],
876
+ order: [{ type: Input }]
877
+ };
878
+
879
+ class FulfillmentStateLabelComponent {
880
+ get chipColorType() {
881
+ switch (this.state) {
882
+ case 'Pending':
883
+ case 'Shipped':
884
+ return 'warning';
885
+ case 'Delivered':
886
+ return 'success';
887
+ case 'Cancelled':
888
+ return 'error';
889
+ }
890
+ }
891
+ }
892
+ FulfillmentStateLabelComponent.decorators = [
893
+ { type: Component, args: [{
894
+ selector: 'vdr-fulfillment-state-label',
895
+ template: "<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Delivered'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n",
896
+ changeDetection: ChangeDetectionStrategy.OnPush,
897
+ styles: [":host{font-size:14px}\n"]
898
+ },] }
899
+ ];
900
+ FulfillmentStateLabelComponent.propDecorators = {
901
+ state: [{ type: Input }]
902
+ };
903
+
904
+ class LineFulfillmentComponent {
905
+ constructor() {
906
+ this.fulfilledCount = 0;
907
+ this.fulfillments = [];
908
+ }
909
+ ngOnChanges(changes) {
910
+ if (this.line) {
911
+ this.fulfilledCount = this.getDeliveredCount(this.line);
912
+ this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.items.length);
913
+ this.fulfillments = this.getFulfillments(this.line);
914
+ }
915
+ }
916
+ /**
917
+ * Returns the number of items in an OrderLine which are fulfilled.
918
+ */
919
+ getDeliveredCount(line) {
920
+ var _a, _b;
921
+ return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.reduce((sum, fulfillment) => { var _a, _b; return sum + ((_b = (_a = fulfillment.summary.find(s => s.orderLine.id === line.id)) === null || _a === void 0 ? void 0 : _a.quantity) !== null && _b !== void 0 ? _b : 0); }, 0)) !== null && _b !== void 0 ? _b : 0);
922
+ }
923
+ getFulfillmentStatus(fulfilledCount, lineQuantity) {
924
+ if (fulfilledCount === lineQuantity) {
925
+ return 'full';
926
+ }
927
+ if (0 < fulfilledCount && fulfilledCount < lineQuantity) {
928
+ return 'partial';
929
+ }
930
+ return 'none';
931
+ }
932
+ getFulfillments(line) {
933
+ var _a, _b;
934
+ return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(fulfillment => {
935
+ var _a;
936
+ const summaryLine = fulfillment.summary.find(s => s.orderLine.id === line.id);
937
+ return {
938
+ count: (_a = summaryLine === null || summaryLine === void 0 ? void 0 : summaryLine.quantity) !== null && _a !== void 0 ? _a : 0,
939
+ fulfillment,
940
+ };
941
+ })) !== null && _b !== void 0 ? _b : []);
942
+ }
943
+ }
944
+ LineFulfillmentComponent.decorators = [
945
+ { type: Component, args: [{
946
+ selector: 'vdr-line-fulfillment',
947
+ template: "<vdr-dropdown class=\"search-settings-menu\" *ngIf=\"fulfilledCount || orderState === 'PartiallyDelivered'\">\r\n <button type=\"button\" class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon *ngIf=\"fulfillmentStatus === 'full'\" class=\"item-fulfilled\" shape=\"check-circle\"></clr-icon>\r\n <clr-icon\r\n *ngIf=\"fulfillmentStatus === 'partial'\"\r\n class=\"item-partially-fulfilled\"\r\n shape=\"check-circle\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"fulfillmentStatus === 'none'\"\r\n class=\"item-not-fulfilled\"\r\n shape=\"exclamation-circle\"\r\n ></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'full'\">\r\n {{ 'order.line-fulfillment-all' | translate }}\r\n </label>\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'partial'\">\r\n {{\r\n 'order.line-fulfillment-partial' | translate: { total: line.quantity, count: fulfilledCount }\r\n }}\r\n </label>\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'none'\">\r\n {{ 'order.line-fulfillment-none' | translate }}\r\n </label>\r\n <div class=\"fulfillment-detail\" *ngFor=\"let item of fulfillments\">\r\n <div class=\"fulfillment-title\">\r\n {{ 'order.fulfillment' | translate }} #{{ item.fulfillment.id }} ({{\r\n 'order.item-count' | translate: { count: item.count }\r\n }})\r\n </div>\r\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ item.fulfillment.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\r\n {{ item.fulfillment.method }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n *ngIf=\"item.fulfillment.trackingCode\"\r\n [label]=\"'order.tracking-code' | translate\"\r\n >\r\n {{ item.fulfillment.trackingCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n",
948
+ changeDetection: ChangeDetectionStrategy.OnPush,
949
+ styles: [".item-fulfilled{color:var(--color-success-500)}.item-partially-fulfilled{color:var(--color-warning-500)}.item-not-fulfilled{color:var(--color-error-500)}.fulfillment-detail{margin:6px 12px}.fulfillment-detail:not(:last-of-type){border-bottom:1px dashed var(--color-component-border-200)}\n"]
950
+ },] }
951
+ ];
952
+ LineFulfillmentComponent.propDecorators = {
953
+ line: [{ type: Input }],
954
+ orderState: [{ type: Input }]
955
+ };
956
+
957
+ class LineRefundsComponent {
958
+ getRefundedCount() {
959
+ var _a, _b;
960
+ const refunds = (_b = (_a = this.payments) === null || _a === void 0 ? void 0 : _a.reduce((all, payment) => [...all, ...payment.refunds], [])) !== null && _b !== void 0 ? _b : [];
961
+ return this.line.items.filter(i => {
962
+ if (i.refundId === null && !i.cancelled) {
963
+ return false;
964
+ }
965
+ if (i.refundId) {
966
+ const refund = refunds.find(r => r.id === i.refundId);
967
+ if ((refund === null || refund === void 0 ? void 0 : refund.state) === 'Failed') {
968
+ return false;
969
+ }
970
+ else {
971
+ return true;
972
+ }
973
+ }
974
+ return false;
975
+ }).length;
976
+ }
977
+ }
978
+ LineRefundsComponent.decorators = [
979
+ { type: Component, args: [{
980
+ selector: 'vdr-line-refunds',
981
+ template: "<span *ngIf=\"getRefundedCount()\" [title]=\"'order.refunded-count' | translate: { count: getRefundedCount() }\">\r\n <clr-icon shape=\"redo\" class=\"is-solid\" dir=\"down\"></clr-icon>\r\n</span>\r\n",
982
+ changeDetection: ChangeDetectionStrategy.OnPush,
983
+ styles: [":host{color:var(--color-error-500)}\n"]
984
+ },] }
985
+ ];
986
+ LineRefundsComponent.propDecorators = {
987
+ line: [{ type: Input }],
988
+ payments: [{ type: Input }]
989
+ };
990
+
991
+ class ModificationDetailComponent {
992
+ constructor() {
993
+ this.addedItems = new Map();
994
+ this.removedItems = new Map();
995
+ }
996
+ ngOnChanges() {
997
+ const { added, removed } = this.getModifiedLines();
998
+ this.addedItems = added;
999
+ this.removedItems = removed;
1000
+ }
1001
+ getSurcharge(id) {
1002
+ return this.order.surcharges.find(m => m.id === id);
1003
+ }
1004
+ getAddedItems() {
1005
+ return [...this.addedItems.entries()].map(([line, count]) => {
1006
+ return { name: line.productVariant.name, quantity: count };
1007
+ });
1008
+ }
1009
+ getRemovedItems() {
1010
+ return [...this.removedItems.entries()].map(([line, count]) => {
1011
+ return { name: line.productVariant.name, quantity: count };
1012
+ });
1013
+ }
1014
+ getModifiedLines() {
1015
+ var _a, _b;
1016
+ const added = new Map();
1017
+ const removed = new Map();
1018
+ for (const _item of this.modification.orderItems || []) {
1019
+ const result = this.getOrderLineAndItem(_item.id);
1020
+ if (result) {
1021
+ const { line, item } = result;
1022
+ if (item.cancelled) {
1023
+ const count = (_a = removed.get(line)) !== null && _a !== void 0 ? _a : 0;
1024
+ removed.set(line, count + 1);
1025
+ }
1026
+ else {
1027
+ const count = (_b = added.get(line)) !== null && _b !== void 0 ? _b : 0;
1028
+ added.set(line, count + 1);
1029
+ }
1030
+ }
1031
+ }
1032
+ return { added, removed };
1033
+ }
1034
+ getOrderLineAndItem(itemId) {
1035
+ for (const line of this.order.lines) {
1036
+ const item = line.items.find(i => i.id === itemId);
1037
+ if (item) {
1038
+ return { line, item };
1039
+ }
1040
+ }
1041
+ }
1042
+ }
1043
+ ModificationDetailComponent.decorators = [
1044
+ { type: Component, args: [{
1045
+ selector: 'vdr-modification-detail',
1046
+ template: "<vdr-labeled-data [label]=\"'common.ID' | translate\">{{ modification.id }}</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"modification.note\" [label]=\"'order.note' | translate\">{{\r\n modification.note\r\n}}</vdr-labeled-data>\r\n<vdr-labeled-data *ngFor=\"let surcharge of modification.surcharges\" [label]=\"'order.surcharges' | translate\">\r\n {{ getSurcharge(surcharge.id)?.description }}\r\n {{ getSurcharge(surcharge.id)?.priceWithTax | localeCurrency: order.currencyCode }}</vdr-labeled-data\r\n>\r\n<vdr-labeled-data *ngIf=\"getAddedItems().length\" [label]=\"'order.added-items' | translate\">\r\n <vdr-simple-item-list [items]=\"getAddedItems()\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"getRemovedItems().length\" [label]=\"'order.removed-items' | translate\">\r\n <vdr-simple-item-list [items]=\"getRemovedItems()\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n",
1047
+ changeDetection: ChangeDetectionStrategy.OnPush,
1048
+ styles: [""]
1049
+ },] }
1050
+ ];
1051
+ ModificationDetailComponent.propDecorators = {
1052
+ order: [{ type: Input }],
1053
+ modification: [{ type: Input }]
1054
+ };
1055
+
1056
+ class OrderCustomFieldsCardComponent {
1057
+ constructor(formBuilder, modalService) {
1058
+ this.formBuilder = formBuilder;
1059
+ this.modalService = modalService;
1060
+ this.customFieldsConfig = [];
1061
+ this.customFieldValues = {};
1062
+ this.updateClick = new EventEmitter();
1063
+ this.editable = false;
1064
+ }
1065
+ ngOnInit() {
1066
+ this.customFieldForm = this.formBuilder.group({});
1067
+ for (const field of this.customFieldsConfig) {
1068
+ this.customFieldForm.addControl(field.name, this.formBuilder.control(this.customFieldValues[field.name]));
1069
+ }
1070
+ }
1071
+ onUpdateClick() {
1072
+ this.updateClick.emit(this.customFieldForm.value);
1073
+ this.customFieldForm.markAsPristine();
1074
+ this.editable = false;
1075
+ }
1076
+ onCancelClick() {
1077
+ if (this.customFieldForm.dirty) {
1078
+ this.modalService
1079
+ .dialog({
1080
+ title: marker('catalog.confirm-cancel'),
1081
+ buttons: [
1082
+ { type: 'secondary', label: marker('common.keep-editing') },
1083
+ { type: 'danger', label: marker('common.discard-changes'), returnValue: true },
1084
+ ],
1085
+ })
1086
+ .subscribe(result => {
1087
+ if (result) {
1088
+ this.customFieldForm.reset();
1089
+ this.customFieldForm.markAsPristine();
1090
+ this.editable = false;
1091
+ }
1092
+ });
1093
+ }
1094
+ else {
1095
+ this.editable = false;
1096
+ }
1097
+ }
1098
+ }
1099
+ OrderCustomFieldsCardComponent.decorators = [
1100
+ { type: Component, args: [{
1101
+ selector: 'vdr-order-custom-fields-card',
1102
+ template: "<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\r\n <div class=\"card-header\">\r\n {{ 'common.custom-fields' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Order\"\r\n [customFields]=\"customFieldsConfig\"\r\n [customFieldsFormGroup]=\"customFieldForm\"\r\n [readonly]=\"!editable\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n (click)=\"onUpdateClick()\"\r\n *ngIf=\"editable\"\r\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'common.update' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"onCancelClick()\"\r\n *ngIf=\"editable\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n",
1103
+ changeDetection: ChangeDetectionStrategy.OnPush,
1104
+ styles: ["vdr-custom-field-control{margin-bottom:6px;display:block}.custom-field-form ::ng-deep .clr-control-label{color:var(--color-grey-400)}.custom-field-form.editable ::ng-deep .clr-control-label{color:inherit}\n"]
1105
+ },] }
1106
+ ];
1107
+ OrderCustomFieldsCardComponent.ctorParameters = () => [
1108
+ { type: FormBuilder },
1109
+ { type: ModalService }
1110
+ ];
1111
+ OrderCustomFieldsCardComponent.propDecorators = {
1112
+ customFieldsConfig: [{ type: Input }],
1113
+ customFieldValues: [{ type: Input }],
1114
+ updateClick: [{ type: Output }]
1115
+ };
1116
+
1117
+ class OrderProcessGraphDialogComponent {
1118
+ constructor(serverConfigService) {
1119
+ this.serverConfigService = serverConfigService;
1120
+ this.states = [];
1121
+ }
1122
+ ngOnInit() {
1123
+ this.states = this.serverConfigService.getOrderProcessStates();
1124
+ }
1125
+ }
1126
+ OrderProcessGraphDialogComponent.decorators = [
1127
+ { type: Component, args: [{
1128
+ selector: 'vdr-order-process-graph-dialog',
1129
+ template: "<ng-template vdrDialogTitle>{{ 'order.order-state-diagram' | translate }}</ng-template>\r\n\r\n<vdr-order-process-graph [states]=\"states\" [initialState]=\"activeState\"></vdr-order-process-graph>\r\n",
1130
+ changeDetection: ChangeDetectionStrategy.OnPush,
1131
+ styles: [""]
1132
+ },] }
1133
+ ];
1134
+ OrderProcessGraphDialogComponent.ctorParameters = () => [
1135
+ { type: ServerConfigService }
1136
+ ];
1137
+
1138
+ class RefundOrderDialogComponent {
1139
+ constructor(i18nService) {
1140
+ var _a;
1141
+ this.i18nService = i18nService;
1142
+ this.lineQuantities = {};
1143
+ this.refundShipping = false;
1144
+ this.adjustment = 0;
1145
+ this.reasons = (_a = getAppConfig().cancellationReasons) !== null && _a !== void 0 ? _a : [
1146
+ marker('order.refund-reason-customer-request'),
1147
+ marker('order.refund-reason-not-available'),
1148
+ ];
1149
+ this.reasons = this.reasons.map(r => this.i18nService.translate(r));
1150
+ }
1151
+ get refundTotal() {
1152
+ const itemTotal = this.order.lines.reduce((total, line) => {
1153
+ const lineRef = this.lineQuantities[line.id];
1154
+ const refundCount = (lineRef.refund && lineRef.quantity) || 0;
1155
+ return total + line.proratedUnitPriceWithTax * refundCount;
1156
+ }, 0);
1157
+ return itemTotal + (this.refundShipping ? this.order.shippingWithTax : 0) + this.adjustment;
1158
+ }
1159
+ get settledPaymentsTotal() {
1160
+ return this.settledPayments
1161
+ .map(payment => {
1162
+ const paymentTotal = payment.amount;
1163
+ const alreadyRefundedTotal = summate(payment.refunds.filter(r => r.state !== 'Failed'), 'total');
1164
+ return paymentTotal - alreadyRefundedTotal;
1165
+ })
1166
+ .reduce((sum, amount) => sum + amount, 0);
1167
+ }
1168
+ lineCanBeRefundedOrCancelled(line) {
1169
+ var _a, _b;
1170
+ const refunds = (_b = (_a = this.order.payments) === null || _a === void 0 ? void 0 : _a.reduce((all, payment) => [...all, ...payment.refunds], [])) !== null && _b !== void 0 ? _b : [];
1171
+ const refundable = line.items.filter(i => {
1172
+ if (i.cancelled) {
1173
+ return false;
1174
+ }
1175
+ if (i.refundId == null) {
1176
+ return true;
1177
+ }
1178
+ const refund = refunds.find(r => r.id === i.refundId);
1179
+ return (refund === null || refund === void 0 ? void 0 : refund.state) === 'Failed';
1180
+ });
1181
+ return 0 < refundable.length;
1182
+ }
1183
+ ngOnInit() {
1184
+ this.lineQuantities = this.order.lines.reduce((result, line) => {
1185
+ return Object.assign(Object.assign({}, result), { [line.id]: {
1186
+ quantity: 0,
1187
+ refund: false,
1188
+ cancel: false,
1189
+ } });
1190
+ }, {});
1191
+ this.settledPayments = (this.order.payments || []).filter(p => p.state === 'Settled');
1192
+ if (this.settledPayments.length) {
1193
+ this.selectedPayment = this.settledPayments[0];
1194
+ }
1195
+ }
1196
+ handleZeroQuantity(line) {
1197
+ if ((line === null || line === void 0 ? void 0 : line.quantity) === 0) {
1198
+ line.cancel = false;
1199
+ line.refund = false;
1200
+ }
1201
+ }
1202
+ isRefunding() {
1203
+ const result = Object.values(this.lineQuantities).reduce((isRefunding, line) => {
1204
+ return isRefunding || (0 < line.quantity && line.refund);
1205
+ }, false);
1206
+ return result;
1207
+ }
1208
+ isCancelling() {
1209
+ const result = Object.values(this.lineQuantities).reduce((isCancelling, line) => {
1210
+ return isCancelling || (0 < line.quantity && line.cancel);
1211
+ }, false);
1212
+ return result;
1213
+ }
1214
+ canSubmit() {
1215
+ if (this.isRefunding()) {
1216
+ return !!(this.selectedPayment &&
1217
+ this.reason &&
1218
+ 0 < this.refundTotal &&
1219
+ this.refundTotal <= this.settledPaymentsTotal);
1220
+ }
1221
+ else if (this.isCancelling()) {
1222
+ return !!this.reason;
1223
+ }
1224
+ return false;
1225
+ }
1226
+ select() {
1227
+ const payment = this.selectedPayment;
1228
+ if (payment) {
1229
+ const refundLines = this.getOrderLineInput(line => line.refund);
1230
+ const cancelLines = this.getOrderLineInput(line => line.cancel);
1231
+ this.resolveWith({
1232
+ refund: {
1233
+ lines: refundLines,
1234
+ reason: this.reason,
1235
+ shipping: this.refundShipping ? this.order.shippingWithTax : 0,
1236
+ adjustment: this.adjustment,
1237
+ paymentId: payment.id,
1238
+ },
1239
+ cancel: {
1240
+ lines: cancelLines,
1241
+ orderId: this.order.id,
1242
+ reason: this.reason,
1243
+ cancelShipping: this.refundShipping,
1244
+ },
1245
+ });
1246
+ }
1247
+ }
1248
+ cancel() {
1249
+ this.resolveWith();
1250
+ }
1251
+ getOrderLineInput(filterFn) {
1252
+ return Object.entries(this.lineQuantities)
1253
+ .filter(([orderLineId, line]) => 0 < line.quantity && filterFn(line))
1254
+ .map(([orderLineId, line]) => ({
1255
+ orderLineId,
1256
+ quantity: line.quantity,
1257
+ }));
1258
+ }
1259
+ }
1260
+ RefundOrderDialogComponent.decorators = [
1261
+ { type: Component, args: [{
1262
+ selector: 'vdr-refund-order-dialog',
1263
+ template: "<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"refund-wrapper\">\r\n <div class=\"order-table\">\r\n <table class=\"table\">\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.quantity' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.prorated-unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.refund' | translate }}</th>\r\n <th>{{ 'order.cancel' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr *ngFor=\"let line of order.lines\" class=\"order-line\">\r\n <td class=\"align-middle thumb\">\r\n <img [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <div class=\"prorated-wrapper\">\r\n {{ line.proratedUnitPriceWithTax | localeCurrency: order.currencyCode }}\r\n <ng-container *ngIf=\"line.discounts as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n <button class=\"icon-button\"><clr-icon shape=\"info\"></clr-icon></button>\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n {{ discount.description }}\r\n <div class=\"promotion-amount\">\r\n {{\r\n discount.amount / 100 / line.quantity\r\n | number: '1.0-2'\r\n | currency: order.currencyCode\r\n }}\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity-col\">\r\n <input\r\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\r\n [(ngModel)]=\"lineQuantities[line.id].quantity\"\r\n type=\"number\"\r\n [max]=\"line.quantity\"\r\n min=\"0\"\r\n (input)=\"handleZeroQuantity(lineQuantities[line.id])\"\r\n />\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\r\n clrCheckbox\r\n [disabled]=\"0 === lineQuantities[line.id].quantity\"\r\n [(ngModel)]=\"lineQuantities[line.id].refund\"\r\n />\r\n </div>\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\r\n clrCheckbox\r\n [disabled]=\"0 === lineQuantities[line.id].quantity\"\r\n [(ngModel)]=\"lineQuantities[line.id].cancel\"\r\n />\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"refund-details mt4\" [class.faded]=\"!isRefunding() && !isCancelling()\">\r\n <div>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <ng-select\r\n [disabled]=\"!isRefunding() && !isCancelling()\"\r\n [items]=\"reasons\"\r\n bindLabel=\"name\"\r\n autofocus\r\n [placeholder]=\"'order.refund-cancellation-reason-required' | translate\"\r\n bindValue=\"id\"\r\n [addTag]=\"true\"\r\n [(ngModel)]=\"reason\"\r\n ></ng-select>\r\n </div>\r\n\r\n <div>\r\n <clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\" [disabled]=\"!isRefunding()\">\r\n <option\r\n *ngFor=\"let payment of settledPayments\"\r\n [ngValue]=\"payment\"\r\n [disabled]=\"payment.state !== 'Settled'\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"refundShipping\" [disabled]=\"!isRefunding()\" />\r\n <label>\r\n {{ 'order.refund-shipping' | translate }} ({{\r\n order.shippingWithTax | localeCurrency: order.currencyCode\r\n }})\r\n </label>\r\n </clr-checkbox-wrapper>\r\n <clr-input-container>\r\n <label>{{ 'order.refund-adjustment' | translate }}</label>\r\n <vdr-currency-input\r\n clrInput\r\n [disabled]=\"!isRefunding()\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [(ngModel)]=\"adjustment\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n <div class=\"totals\" [class.disabled]=\"!isRefunding()\">\r\n <div class=\"order-total\">\r\n {{ 'order.payment-amount' | translate }}:\r\n {{ selectedPayment.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total\">\r\n {{ 'order.refund-total' | translate }}:\r\n {{ refundTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total-error\" *ngIf=\"refundTotal < 0 || settledPaymentsTotal < refundTotal\">\r\n {{\r\n 'order.refund-total-error'\r\n | translate\r\n : {\r\n min: 0 | currency: order.currencyCode,\r\n max: settledPaymentsTotal | localeCurrency: order.currencyCode\r\n }\r\n }}\r\n </div>\r\n <div class=\"refund-total-warning\" *ngIf=\"selectedPayment.amount < refundTotal\">\r\n {{ 'order.refund-total-warning' | translate }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\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)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\r\n <ng-container *ngIf=\"isRefunding(); else cancelling\">\r\n {{\r\n 'order.refund-with-amount'\r\n | translate: { amount: refundTotal | localeCurrency: order.currencyCode }\r\n }}\r\n </ng-container>\r\n <ng-template #cancelling>\r\n {{ 'order.cancel-selected-items' | translate }}\r\n </ng-template>\r\n </button>\r\n</ng-template>\r\n",
1264
+ changeDetection: ChangeDetectionStrategy.OnPush,
1265
+ styles: [":host{height:100%;display:flex;min-height:64vh}.refund-wrapper{flex:1;flex-direction:column}.refund-wrapper .order-table{flex:1;overflow-y:auto}.refund-wrapper .order-table table{margin-top:0}.refund-wrapper tr.ignore{color:var(--color-grey-300)}.quantity-col{background-color:var(--color-warning-100)}.cancel-checkbox-wrapper{display:flex;align-items:center;justify-content:center}clr-checkbox-wrapper{margin-top:12px;margin-bottom:12px;display:block}.refund-details{display:flex;justify-content:space-between}.refund-details.faded{opacity:.5}.totals{margin-top:48px}.totals .refund-total{font-size:18px}.totals .refund-total-error{color:var(--color-error-500)}.totals .refund-total-warning{color:var(--color-warning-600);max-width:250px}.totals.disabled{color:var(--color-grey-300)}.prorated-wrapper{display:flex;justify-content:center}.line-promotion{display:flex;justify-content:space-between;font-size:12px;padding:3px 6px}.line-promotion .promotion-amount{margin-left:12px}\n"]
1266
+ },] }
1267
+ ];
1268
+ RefundOrderDialogComponent.ctorParameters = () => [
1269
+ { type: I18nService }
1270
+ ];
1271
+
1272
+ class SettleRefundDialogComponent {
1273
+ constructor() {
1274
+ this.transactionId = '';
1275
+ }
1276
+ submit() {
1277
+ this.resolveWith(this.transactionId);
1278
+ }
1279
+ cancel() {
1280
+ this.resolveWith();
1281
+ }
1282
+ }
1283
+ SettleRefundDialogComponent.decorators = [
1284
+ { type: Component, args: [{
1285
+ selector: 'vdr-settle-refund-dialog',
1286
+ template: "<ng-template vdrDialogTitle>{{ 'order.settle-refund' | translate }}</ng-template>\r\n<p class=\"instruction\">\r\n {{ 'order.settle-refund-manual-instructions' | translate: { method: refund.method } }}\r\n</p>\r\n<clr-input-container>\r\n <label>{{ 'order.transaction-id' | translate }}</label>\r\n <input clrInput name=\"transactionId\" [(ngModel)]=\"transactionId\" />\r\n</clr-input-container>\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)=\"submit()\" [disabled]=\"!transactionId\" class=\"btn btn-primary\">\r\n {{ 'order.settle-refund' | translate }}\r\n </button>\r\n</ng-template>\r\n",
1287
+ changeDetection: ChangeDetectionStrategy.OnPush,
1288
+ styles: [":host{padding-bottom:32px}.instruction{margin-top:0;margin-bottom:24px}\n"]
1289
+ },] }
1290
+ ];
1291
+
1292
+ class OrderDetailComponent extends BaseDetailComponent {
1293
+ constructor(router, route, serverConfigService, changeDetector, dataService, notificationService, modalService, orderTransitionService) {
1294
+ super(route, router, serverConfigService, dataService);
1295
+ this.changeDetector = changeDetector;
1296
+ this.dataService = dataService;
1297
+ this.notificationService = notificationService;
1298
+ this.modalService = modalService;
1299
+ this.orderTransitionService = orderTransitionService;
1300
+ this.detailForm = new FormGroup({});
1301
+ this.fetchHistory = new Subject();
1302
+ this.defaultStates = [
1303
+ 'AddingItems',
1304
+ 'ArrangingPayment',
1305
+ 'PaymentAuthorized',
1306
+ 'PaymentSettled',
1307
+ 'PartiallyShipped',
1308
+ 'Shipped',
1309
+ 'PartiallyDelivered',
1310
+ 'Delivered',
1311
+ 'Cancelled',
1312
+ 'Modifying',
1313
+ 'ArrangingAdditionalPayment',
1314
+ ];
1315
+ }
1316
+ ngOnInit() {
1317
+ this.init();
1318
+ this.entity$.pipe(take(1)).subscribe(order => {
1319
+ if (order.state === 'Modifying') {
1320
+ this.router.navigate(['./', 'modify'], { relativeTo: this.route });
1321
+ }
1322
+ });
1323
+ this.customFields = this.getCustomFieldConfig('Order');
1324
+ this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');
1325
+ this.history$ = this.fetchHistory.pipe(startWith(null), switchMap(() => {
1326
+ return this.dataService.order
1327
+ .getOrderHistory(this.id, {
1328
+ sort: {
1329
+ createdAt: SortOrder.DESC,
1330
+ },
1331
+ })
1332
+ .mapStream(data => { var _a; return (_a = data.order) === null || _a === void 0 ? void 0 : _a.history.items; });
1333
+ }));
1334
+ this.nextStates$ = this.entity$.pipe(map(order => {
1335
+ const isInCustomState = !this.defaultStates.includes(order.state);
1336
+ return isInCustomState
1337
+ ? order.nextStates
1338
+ : order.nextStates.filter(s => !this.defaultStates.includes(s));
1339
+ }));
1340
+ }
1341
+ ngOnDestroy() {
1342
+ this.destroy();
1343
+ }
1344
+ openStateDiagram() {
1345
+ this.entity$
1346
+ .pipe(take(1), switchMap(order => this.modalService.fromComponent(OrderProcessGraphDialogComponent, {
1347
+ closable: true,
1348
+ locals: {
1349
+ activeState: order.state,
1350
+ },
1351
+ })))
1352
+ .subscribe();
1353
+ }
1354
+ transitionToState(state) {
1355
+ this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {
1356
+ switch (transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.__typename) {
1357
+ case 'Order':
1358
+ this.notificationService.success(marker('order.transitioned-to-state-success'), { state });
1359
+ this.fetchHistory.next();
1360
+ break;
1361
+ case 'OrderStateTransitionError':
1362
+ this.notificationService.error(transitionOrderToState.transitionError);
1363
+ }
1364
+ });
1365
+ }
1366
+ manuallyTransitionToState(order) {
1367
+ this.orderTransitionService
1368
+ .manuallyTransitionToState({
1369
+ orderId: order.id,
1370
+ nextStates: order.nextStates,
1371
+ cancellable: true,
1372
+ message: marker('order.manually-transition-to-state-message'),
1373
+ retry: 0,
1374
+ })
1375
+ .subscribe();
1376
+ }
1377
+ transitionToModifying() {
1378
+ this.dataService.order
1379
+ .transitionToState(this.id, 'Modifying')
1380
+ .subscribe(({ transitionOrderToState }) => {
1381
+ switch (transitionOrderToState === null || transitionOrderToState === void 0 ? void 0 : transitionOrderToState.__typename) {
1382
+ case 'Order':
1383
+ this.router.navigate(['./modify'], { relativeTo: this.route });
1384
+ break;
1385
+ case 'OrderStateTransitionError':
1386
+ this.notificationService.error(transitionOrderToState.transitionError);
1387
+ }
1388
+ });
1389
+ }
1390
+ updateCustomFields(customFieldsValue) {
1391
+ this.dataService.order
1392
+ .updateOrderCustomFields({
1393
+ id: this.id,
1394
+ customFields: customFieldsValue,
1395
+ })
1396
+ .subscribe(() => {
1397
+ this.notificationService.success(marker('common.notify-update-success'), { entity: 'Order' });
1398
+ });
1399
+ }
1400
+ getOrderAddressLines(orderAddress) {
1401
+ if (!orderAddress) {
1402
+ return [];
1403
+ }
1404
+ return Object.values(orderAddress)
1405
+ .filter(val => val !== 'OrderAddress')
1406
+ .filter(line => !!line);
1407
+ }
1408
+ settlePayment(payment) {
1409
+ this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {
1410
+ switch (settlePayment.__typename) {
1411
+ case 'Payment':
1412
+ if (settlePayment.state === 'Settled') {
1413
+ this.notificationService.success(marker('order.settle-payment-success'));
1414
+ }
1415
+ else {
1416
+ this.notificationService.error(marker('order.settle-payment-error'));
1417
+ }
1418
+ this.dataService.order.getOrder(this.id).single$.subscribe();
1419
+ this.fetchHistory.next();
1420
+ break;
1421
+ case 'OrderStateTransitionError':
1422
+ case 'PaymentStateTransitionError':
1423
+ case 'SettlePaymentError':
1424
+ this.notificationService.error(settlePayment.message);
1425
+ }
1426
+ });
1427
+ }
1428
+ transitionPaymentState({ payment, state }) {
1429
+ if (state === 'Cancelled') {
1430
+ this.dataService.order.cancelPayment(payment.id).subscribe(({ cancelPayment }) => {
1431
+ switch (cancelPayment.__typename) {
1432
+ case 'Payment':
1433
+ this.notificationService.success(marker('order.transitioned-payment-to-state-success'), {
1434
+ state,
1435
+ });
1436
+ this.dataService.order.getOrder(this.id).single$.subscribe();
1437
+ this.fetchHistory.next();
1438
+ break;
1439
+ case 'PaymentStateTransitionError':
1440
+ this.notificationService.error(cancelPayment.transitionError);
1441
+ break;
1442
+ case 'CancelPaymentError':
1443
+ this.notificationService.error(cancelPayment.paymentErrorMessage);
1444
+ break;
1445
+ }
1446
+ });
1447
+ }
1448
+ else {
1449
+ this.dataService.order
1450
+ .transitionPaymentToState(payment.id, state)
1451
+ .subscribe(({ transitionPaymentToState }) => {
1452
+ switch (transitionPaymentToState.__typename) {
1453
+ case 'Payment':
1454
+ this.notificationService.success(marker('order.transitioned-payment-to-state-success'), {
1455
+ state,
1456
+ });
1457
+ this.dataService.order.getOrder(this.id).single$.subscribe();
1458
+ this.fetchHistory.next();
1459
+ break;
1460
+ case 'PaymentStateTransitionError':
1461
+ this.notificationService.error(transitionPaymentToState.message);
1462
+ break;
1463
+ }
1464
+ });
1465
+ }
1466
+ }
1467
+ canAddFulfillment(order) {
1468
+ var _a;
1469
+ const allFulfillmentSummaryRows = ((_a = order.fulfillments) !== null && _a !== void 0 ? _a : []).reduce((all, fulfillment) => [...all, ...fulfillment.summary], []);
1470
+ let allItemsFulfilled = true;
1471
+ for (const line of order.lines) {
1472
+ const totalFulfilledCount = allFulfillmentSummaryRows
1473
+ .filter(row => row.orderLine.id === line.id)
1474
+ .reduce((sum, row) => sum + row.quantity, 0);
1475
+ if (totalFulfilledCount < line.quantity) {
1476
+ allItemsFulfilled = false;
1477
+ }
1478
+ }
1479
+ return (!allItemsFulfilled &&
1480
+ !this.hasUnsettledModifications(order) &&
1481
+ this.outstandingPaymentAmount(order) === 0 &&
1482
+ (order.nextStates.includes('Shipped') ||
1483
+ order.nextStates.includes('PartiallyShipped') ||
1484
+ order.nextStates.includes('Delivered')));
1485
+ }
1486
+ hasUnsettledModifications(order) {
1487
+ return 0 < order.modifications.filter(m => !m.isSettled).length;
1488
+ }
1489
+ getOutstandingModificationAmount(order) {
1490
+ return summate(order.modifications.filter(m => !m.isSettled), 'priceChange');
1491
+ }
1492
+ outstandingPaymentAmount(order) {
1493
+ var _a, _b, _c;
1494
+ const paymentIsValid = (p) => p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';
1495
+ let amountCovered = 0;
1496
+ for (const payment of (_b = (_a = order.payments) === null || _a === void 0 ? void 0 : _a.filter(paymentIsValid)) !== null && _b !== void 0 ? _b : []) {
1497
+ const refunds = (_c = payment.refunds.filter(r => r.state !== 'Failed')) !== null && _c !== void 0 ? _c : [];
1498
+ const refundsTotal = summate(refunds, 'total');
1499
+ amountCovered += payment.amount - refundsTotal;
1500
+ }
1501
+ return order.totalWithTax - amountCovered;
1502
+ }
1503
+ addManualPayment(order) {
1504
+ const priorState = order.state;
1505
+ this.modalService
1506
+ .fromComponent(AddManualPaymentDialogComponent, {
1507
+ closable: true,
1508
+ locals: {
1509
+ outstandingAmount: this.outstandingPaymentAmount(order),
1510
+ currencyCode: order.currencyCode,
1511
+ },
1512
+ })
1513
+ .pipe(switchMap(result => {
1514
+ if (result) {
1515
+ return this.dataService.order.addManualPaymentToOrder({
1516
+ orderId: this.id,
1517
+ transactionId: result.transactionId,
1518
+ method: result.method,
1519
+ metadata: result.metadata || {},
1520
+ });
1521
+ }
1522
+ else {
1523
+ return EMPTY;
1524
+ }
1525
+ }), switchMap(({ addManualPaymentToOrder }) => {
1526
+ switch (addManualPaymentToOrder.__typename) {
1527
+ case 'Order':
1528
+ this.notificationService.success(marker('order.add-payment-to-order-success'));
1529
+ if (priorState === 'ArrangingAdditionalPayment') {
1530
+ return this.orderTransitionService.transitionToPreModifyingState(order.id, order.nextStates);
1531
+ }
1532
+ else {
1533
+ return this.dataService.order
1534
+ .transitionToState(this.id, 'PaymentSettled')
1535
+ .pipe(mapTo('PaymentSettled'));
1536
+ }
1537
+ case 'ManualPaymentStateError':
1538
+ this.notificationService.error(addManualPaymentToOrder.message);
1539
+ return EMPTY;
1540
+ default:
1541
+ return EMPTY;
1542
+ }
1543
+ }))
1544
+ .subscribe(result => {
1545
+ if (result) {
1546
+ this.refetchOrder({ result });
1547
+ }
1548
+ });
1549
+ }
1550
+ fulfillOrder() {
1551
+ this.entity$
1552
+ .pipe(take(1), switchMap(order => {
1553
+ return this.modalService.fromComponent(FulfillOrderDialogComponent, {
1554
+ size: 'xl',
1555
+ locals: {
1556
+ order,
1557
+ },
1558
+ });
1559
+ }), switchMap(input => {
1560
+ if (input) {
1561
+ return this.dataService.order.createFulfillment(input);
1562
+ }
1563
+ else {
1564
+ return of(undefined);
1565
+ }
1566
+ }), switchMap(result => this.refetchOrder(result).pipe(mapTo(result))))
1567
+ .subscribe(result => {
1568
+ if (result) {
1569
+ const { addFulfillmentToOrder } = result;
1570
+ switch (addFulfillmentToOrder.__typename) {
1571
+ case 'Fulfillment':
1572
+ this.notificationService.success(marker('order.create-fulfillment-success'));
1573
+ break;
1574
+ case 'EmptyOrderLineSelectionError':
1575
+ case 'InsufficientStockOnHandError':
1576
+ case 'ItemsAlreadyFulfilledError':
1577
+ case 'InvalidFulfillmentHandlerError':
1578
+ this.notificationService.error(addFulfillmentToOrder.message);
1579
+ break;
1580
+ case 'FulfillmentStateTransitionError':
1581
+ this.notificationService.error(addFulfillmentToOrder.transitionError);
1582
+ break;
1583
+ case 'CreateFulfillmentError':
1584
+ this.notificationService.error(addFulfillmentToOrder.fulfillmentHandlerError);
1585
+ break;
1586
+ case undefined:
1587
+ this.notificationService.error(JSON.stringify(addFulfillmentToOrder));
1588
+ break;
1589
+ default:
1590
+ assertNever(addFulfillmentToOrder);
1591
+ }
1592
+ }
1593
+ });
1594
+ }
1595
+ transitionFulfillment(id, state) {
1596
+ this.dataService.order
1597
+ .transitionFulfillmentToState(id, state)
1598
+ .pipe(switchMap(result => this.refetchOrder(result)))
1599
+ .subscribe(() => {
1600
+ this.notificationService.success(marker('order.successfully-updated-fulfillment'));
1601
+ });
1602
+ }
1603
+ cancelOrRefund(order) {
1604
+ const isRefundable = this.orderHasSettledPayments(order);
1605
+ if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {
1606
+ this.cancelOrder(order);
1607
+ }
1608
+ else {
1609
+ this.refundOrder(order);
1610
+ }
1611
+ }
1612
+ settleRefund(refund) {
1613
+ this.modalService
1614
+ .fromComponent(SettleRefundDialogComponent, {
1615
+ size: 'md',
1616
+ locals: {
1617
+ refund,
1618
+ },
1619
+ })
1620
+ .pipe(switchMap(transactionId => {
1621
+ if (transactionId) {
1622
+ return this.dataService.order.settleRefund({
1623
+ transactionId,
1624
+ id: refund.id,
1625
+ }, this.id);
1626
+ }
1627
+ else {
1628
+ return of(undefined);
1629
+ }
1630
+ }))
1631
+ .subscribe(result => {
1632
+ if (result) {
1633
+ this.notificationService.success(marker('order.settle-refund-success'));
1634
+ }
1635
+ });
1636
+ }
1637
+ addNote(event) {
1638
+ const { note, isPublic } = event;
1639
+ this.dataService.order
1640
+ .addNoteToOrder({
1641
+ id: this.id,
1642
+ note,
1643
+ isPublic,
1644
+ })
1645
+ .pipe(switchMap(result => this.refetchOrder(result)))
1646
+ .subscribe(result => {
1647
+ this.notificationService.success(marker('common.notify-create-success'), {
1648
+ entity: 'Note',
1649
+ });
1650
+ });
1651
+ }
1652
+ updateNote(entry) {
1653
+ this.modalService
1654
+ .fromComponent(EditNoteDialogComponent, {
1655
+ closable: true,
1656
+ locals: {
1657
+ displayPrivacyControls: true,
1658
+ note: entry.data.note,
1659
+ noteIsPrivate: !entry.isPublic,
1660
+ },
1661
+ })
1662
+ .pipe(switchMap(result => {
1663
+ if (result) {
1664
+ return this.dataService.order.updateOrderNote({
1665
+ noteId: entry.id,
1666
+ isPublic: !result.isPrivate,
1667
+ note: result.note,
1668
+ });
1669
+ }
1670
+ else {
1671
+ return EMPTY;
1672
+ }
1673
+ }))
1674
+ .subscribe(result => {
1675
+ this.fetchHistory.next();
1676
+ this.notificationService.success(marker('common.notify-update-success'), {
1677
+ entity: 'Note',
1678
+ });
1679
+ });
1680
+ }
1681
+ deleteNote(entry) {
1682
+ return this.modalService
1683
+ .dialog({
1684
+ title: marker('common.confirm-delete-note'),
1685
+ body: entry.data.note,
1686
+ buttons: [
1687
+ { type: 'secondary', label: marker('common.cancel') },
1688
+ { type: 'danger', label: marker('common.delete'), returnValue: true },
1689
+ ],
1690
+ })
1691
+ .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))
1692
+ .subscribe(() => {
1693
+ this.fetchHistory.next();
1694
+ this.notificationService.success(marker('common.notify-delete-success'), {
1695
+ entity: 'Note',
1696
+ });
1697
+ });
1698
+ }
1699
+ orderHasSettledPayments(order) {
1700
+ var _a;
1701
+ return !!((_a = order.payments) === null || _a === void 0 ? void 0 : _a.find(p => p.state === 'Settled'));
1702
+ }
1703
+ cancelOrder(order) {
1704
+ this.modalService
1705
+ .fromComponent(CancelOrderDialogComponent, {
1706
+ size: 'xl',
1707
+ locals: {
1708
+ order,
1709
+ },
1710
+ })
1711
+ .pipe(switchMap(input => {
1712
+ if (input) {
1713
+ return this.dataService.order.cancelOrder(input);
1714
+ }
1715
+ else {
1716
+ return of(undefined);
1717
+ }
1718
+ }), switchMap(result => this.refetchOrder(result)))
1719
+ .subscribe(result => {
1720
+ if (result) {
1721
+ this.notificationService.success(marker('order.cancelled-order-success'));
1722
+ }
1723
+ });
1724
+ }
1725
+ refundOrder(order) {
1726
+ this.modalService
1727
+ .fromComponent(RefundOrderDialogComponent, {
1728
+ size: 'xl',
1729
+ locals: {
1730
+ order,
1731
+ },
1732
+ })
1733
+ .pipe(switchMap(input => {
1734
+ var _a;
1735
+ if (!input) {
1736
+ return of(undefined);
1737
+ }
1738
+ if ((_a = input.cancel.lines) === null || _a === void 0 ? void 0 : _a.length) {
1739
+ return this.dataService.order.cancelOrder(input.cancel).pipe(map(res => {
1740
+ const result = res.cancelOrder;
1741
+ switch (result.__typename) {
1742
+ case 'Order':
1743
+ this.refetchOrder(result).subscribe();
1744
+ this.notificationService.success(marker('order.cancelled-order-success'));
1745
+ return input;
1746
+ case 'CancelActiveOrderError':
1747
+ case 'QuantityTooGreatError':
1748
+ case 'MultipleOrderError':
1749
+ case 'OrderStateTransitionError':
1750
+ case 'EmptyOrderLineSelectionError':
1751
+ this.notificationService.error(result.message);
1752
+ return undefined;
1753
+ }
1754
+ }));
1755
+ }
1756
+ else {
1757
+ return [input];
1758
+ }
1759
+ }), switchMap(input => {
1760
+ if (!input) {
1761
+ return of(undefined);
1762
+ }
1763
+ if (input.refund.lines.length) {
1764
+ return this.dataService.order
1765
+ .refundOrder(input.refund)
1766
+ .pipe(map(res => res.refundOrder));
1767
+ }
1768
+ else {
1769
+ return [undefined];
1770
+ }
1771
+ }))
1772
+ .subscribe(result => {
1773
+ if (result) {
1774
+ switch (result.__typename) {
1775
+ case 'Refund':
1776
+ this.refetchOrder(result).subscribe();
1777
+ if (result.state === 'Failed') {
1778
+ this.notificationService.error(marker('order.refund-order-failed'));
1779
+ }
1780
+ else {
1781
+ this.notificationService.success(marker('order.refund-order-success'));
1782
+ }
1783
+ break;
1784
+ case 'AlreadyRefundedError':
1785
+ case 'NothingToRefundError':
1786
+ case 'PaymentOrderMismatchError':
1787
+ case 'RefundOrderStateError':
1788
+ case 'RefundStateTransitionError':
1789
+ this.notificationService.error(result.message);
1790
+ break;
1791
+ }
1792
+ }
1793
+ });
1794
+ }
1795
+ refetchOrder(result) {
1796
+ this.fetchHistory.next();
1797
+ if (result) {
1798
+ return this.dataService.order.getOrder(this.id).single$;
1799
+ }
1800
+ else {
1801
+ return of(undefined);
1802
+ }
1803
+ }
1804
+ setFormValues(entity) {
1805
+ // empty
1806
+ }
1807
+ }
1808
+ OrderDetailComponent.decorators = [
1809
+ { type: Component, args: [{
1810
+ selector: 'vdr-order-detail',
1811
+ template: "<vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-order-state-label [state]=\"order.state\">\r\n <button\r\n class=\"icon-button\"\r\n (click)=\"openStateDiagram()\"\r\n [title]=\"'order.order-state-diagram' | translate\"\r\n >\r\n <clr-icon shape=\"list\"></clr-icon>\r\n </button>\r\n </vdr-order-state-label>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"\r\n (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&\r\n (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))\r\n \"\r\n (click)=\"addManualPayment(order)\"\r\n >\r\n {{ 'order.add-payment-to-order' | translate }}\r\n ({{ outstandingPaymentAmount(order) | localeCurrency: order.currencyCode }})\r\n </button>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"\r\n order.active === false &&\r\n order.state !== 'ArrangingAdditionalPayment' &&\r\n order.state !== 'ArrangingPayment' &&\r\n 0 < outstandingPaymentAmount(order)\r\n \"\r\n (click)=\"transitionToState('ArrangingAdditionalPayment')\"\r\n >\r\n {{ 'order.arrange-additional-payment' | translate }}\r\n </button>\r\n <button class=\"btn btn-primary\" (click)=\"fulfillOrder()\" [disabled]=\"!canAddFulfillment(order)\">\r\n {{ 'order.fulfill-order' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container *ngIf=\"order.nextStates.includes('Modifying')\">\r\n <button type=\"button\" class=\"btn\" vdrDropdownItem (click)=\"transitionToModifying()\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'order.modify-order' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n </ng-container>\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n vdrDropdownItem\r\n *ngIf=\"order.nextStates.includes('Cancelled')\"\r\n (click)=\"cancelOrRefund(order)\"\r\n >\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n <ng-container *ngIf=\"orderHasSettledPayments(order); else cancelOnly\">\r\n {{ 'order.refund-and-cancel-order' | translate }}\r\n </ng-container>\r\n <ng-template #cancelOnly>\r\n {{ 'order.cancel-order' | translate }}\r\n </ng-template>\r\n </button>\r\n\r\n <ng-container *ngIf=\"(nextStates$ | async)?.length\">\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n *ngFor=\"let nextState of nextStates$ | async\"\r\n type=\"button\"\r\n class=\"btn\"\r\n vdrDropdownItem\r\n (click)=\"transitionToState(nextState)\"\r\n >\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{\r\n 'order.transition-to-state'\r\n | translate: { state: (nextState | stateI18nToken | translate) }\r\n }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" class=\"btn\" vdrDropdownItem (click)=\"manuallyTransitionToState(order)\">\r\n <clr-icon shape=\"step-forward-2\" class=\"is-warning\"></clr-icon>\r\n {{ 'order.manually-transition-to-state' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<div *ngIf=\"entity$ | async as order\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-lg-8\">\r\n <vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n ></vdr-order-table>\r\n <h4>{{ 'order.tax-summary' | translate }}</h4>\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'common.description' | translate }}</th>\r\n <th>{{ 'order.tax-rate' | translate }}</th>\r\n <th>{{ 'order.tax-base' | translate }}</th>\r\n <th>{{ 'order.tax-total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of order.taxSummary\">\r\n <td>{{ row.description }}</td>\r\n <td>{{ row.taxRate / 100 | percent }}</td>\r\n <td>{{ row.taxBase | localeCurrency: order.currencyCode }}</td>\r\n <td>{{ row.taxTotal | localeCurrency: order.currencyCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"order-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-order-history\r\n [order]=\"order\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNote($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-order-history>\r\n </div>\r\n <div class=\"clr-col-lg-4 order-cards\">\r\n <vdr-order-custom-fields-card\r\n [customFieldsConfig]=\"customFields\"\r\n [customFieldValues]=\"order.customFields\"\r\n (updateClick)=\"updateCustomFields($event)\"\r\n ></vdr-order-custom-fields-card>\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'order.customer' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n <h6 *ngIf=\"getOrderAddressLines(order.shippingAddress).length\">\r\n {{ 'order.shipping-address' | translate }}\r\n </h6>\r\n <vdr-formatted-address [address]=\"order.shippingAddress\"></vdr-formatted-address>\r\n <h6 *ngIf=\"getOrderAddressLines(order.billingAddress).length\">\r\n {{ 'order.billing-address' | translate }}\r\n </h6>\r\n <vdr-formatted-address [address]=\"order.billingAddress\"></vdr-formatted-address>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"order.payments && order.payments.length\">\r\n <vdr-order-payment-card\r\n *ngFor=\"let payment of order.payments\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [payment]=\"payment\"\r\n (settlePayment)=\"settlePayment($event)\"\r\n (transitionPaymentState)=\"transitionPaymentState($event)\"\r\n (settleRefund)=\"settleRefund($event)\"\r\n ></vdr-order-payment-card>\r\n </ng-container>\r\n <ng-container *ngFor=\"let fulfillment of order.fulfillments\">\r\n <vdr-fulfillment-card\r\n [fulfillment]=\"fulfillment\"\r\n [order]=\"order\"\r\n (transitionState)=\"transitionFulfillment(fulfillment.id, $event)\"\r\n ></vdr-fulfillment-card>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
1812
+ changeDetection: ChangeDetectionStrategy.OnPush,
1813
+ styles: [".shipping-address{list-style-type:none;line-height:1.3em}.order-cards h6{margin-top:6px;color:var(--color-text-200)}\n"]
1814
+ },] }
1815
+ ];
1816
+ OrderDetailComponent.ctorParameters = () => [
1817
+ { type: Router },
1818
+ { type: ActivatedRoute },
1819
+ { type: ServerConfigService },
1820
+ { type: ChangeDetectorRef },
1821
+ { type: DataService },
1822
+ { type: NotificationService },
1823
+ { type: ModalService },
1824
+ { type: OrderTransitionService }
1825
+ ];
1826
+
1827
+ var OrderEditResultType;
1828
+ (function (OrderEditResultType) {
1829
+ OrderEditResultType[OrderEditResultType["Refund"] = 0] = "Refund";
1830
+ OrderEditResultType[OrderEditResultType["Payment"] = 1] = "Payment";
1831
+ OrderEditResultType[OrderEditResultType["PriceUnchanged"] = 2] = "PriceUnchanged";
1832
+ OrderEditResultType[OrderEditResultType["Cancel"] = 3] = "Cancel";
1833
+ })(OrderEditResultType || (OrderEditResultType = {}));
1834
+ class OrderEditsPreviewDialogComponent {
1835
+ get priceDifference() {
1836
+ return this.order.totalWithTax - this.originalTotalWithTax;
1837
+ }
1838
+ ngOnInit() {
1839
+ this.refundNote = this.modifyOrderInput.note || '';
1840
+ }
1841
+ cancel() {
1842
+ this.resolveWith({
1843
+ result: OrderEditResultType.Cancel,
1844
+ });
1845
+ }
1846
+ submit() {
1847
+ if (0 < this.priceDifference) {
1848
+ this.resolveWith({
1849
+ result: OrderEditResultType.Payment,
1850
+ });
1851
+ }
1852
+ else if (this.priceDifference < 0) {
1853
+ this.resolveWith({
1854
+ result: OrderEditResultType.Refund,
1855
+ // tslint:disable-next-line:no-non-null-assertion
1856
+ refundPaymentId: this.selectedPayment.id,
1857
+ refundNote: this.refundNote,
1858
+ });
1859
+ }
1860
+ else {
1861
+ this.resolveWith({
1862
+ result: OrderEditResultType.PriceUnchanged,
1863
+ });
1864
+ }
1865
+ }
1866
+ }
1867
+ OrderEditsPreviewDialogComponent.decorators = [
1868
+ { type: Component, args: [{
1869
+ selector: 'vdr-order-edits-preview-dialog',
1870
+ template: "<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\r\n<vdr-order-table [order]=\"order\" [orderLineCustomFields]=\"orderLineCustomFields\"></vdr-order-table>\r\n\r\n<h4 class=\"h4\">\r\n {{ 'order.modify-order-price-difference' | translate }}:\r\n <strong>{{ priceDifference | localeCurrency: order.currencyCode }}</strong>\r\n</h4>\r\n<div *ngIf=\"priceDifference < 0\">\r\n<clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\">\r\n <option\r\n *ngFor=\"let payment of order.payments\"\r\n [ngValue]=\"payment\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n</clr-select-container>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" clrTextarea required></textarea>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"submit()\" [disabled]=\"priceDifference < 0 && !selectedPayment\" class=\"btn btn-primary\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\r\n",
1871
+ changeDetection: ChangeDetectionStrategy.OnPush,
1872
+ styles: [""]
1873
+ },] }
1874
+ ];
1875
+
1876
+ class OrderEditorComponent extends BaseDetailComponent {
1877
+ constructor(router, route, serverConfigService, changeDetector, dataService, notificationService, modalService, orderTransitionService) {
1878
+ super(route, router, serverConfigService, dataService);
1879
+ this.changeDetector = changeDetector;
1880
+ this.dataService = dataService;
1881
+ this.notificationService = notificationService;
1882
+ this.modalService = modalService;
1883
+ this.orderTransitionService = orderTransitionService;
1884
+ this.detailForm = new FormGroup({});
1885
+ this.couponCodesControl = new FormControl();
1886
+ this.modifyOrderInput = {
1887
+ dryRun: true,
1888
+ orderId: '',
1889
+ addItems: [],
1890
+ adjustOrderLines: [],
1891
+ surcharges: [],
1892
+ note: '',
1893
+ updateShippingAddress: {},
1894
+ updateBillingAddress: {},
1895
+ };
1896
+ this.note = '';
1897
+ this.recalculateShipping = true;
1898
+ this.addedVariants = new Map();
1899
+ }
1900
+ get addedLines() {
1901
+ const getSinglePriceValue = (price) => price.__typename === 'SinglePrice' ? price.value : 0;
1902
+ return (this.modifyOrderInput.addItems || [])
1903
+ .map(row => {
1904
+ const variantInfo = this.addedVariants.get(row.productVariantId);
1905
+ if (variantInfo) {
1906
+ return Object.assign(Object.assign({}, variantInfo), { price: getSinglePriceValue(variantInfo.price), priceWithTax: getSinglePriceValue(variantInfo.priceWithTax), quantity: row.quantity });
1907
+ }
1908
+ })
1909
+ .filter(notNullOrUndefined);
1910
+ }
1911
+ ngOnInit() {
1912
+ this.init();
1913
+ this.dataService.promotion.getPromotions();
1914
+ this.addressCustomFields = this.getCustomFieldConfig('Address');
1915
+ this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id');
1916
+ this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');
1917
+ this.entity$.pipe(takeUntil(this.destroy$)).subscribe(order => {
1918
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
1919
+ if (order.couponCodes.length) {
1920
+ this.couponCodesControl.setValue(order.couponCodes);
1921
+ }
1922
+ this.surchargeForm = new FormGroup({
1923
+ description: new FormControl('', Validators.required),
1924
+ sku: new FormControl(''),
1925
+ price: new FormControl(0, Validators.required),
1926
+ priceIncludesTax: new FormControl(true),
1927
+ taxRate: new FormControl(0),
1928
+ taxDescription: new FormControl(''),
1929
+ });
1930
+ if (!this.shippingAddressForm) {
1931
+ this.shippingAddressForm = new FormGroup({
1932
+ fullName: new FormControl((_a = order.shippingAddress) === null || _a === void 0 ? void 0 : _a.fullName),
1933
+ company: new FormControl((_b = order.shippingAddress) === null || _b === void 0 ? void 0 : _b.company),
1934
+ streetLine1: new FormControl((_c = order.shippingAddress) === null || _c === void 0 ? void 0 : _c.streetLine1),
1935
+ streetLine2: new FormControl((_d = order.shippingAddress) === null || _d === void 0 ? void 0 : _d.streetLine2),
1936
+ city: new FormControl((_e = order.shippingAddress) === null || _e === void 0 ? void 0 : _e.city),
1937
+ province: new FormControl((_f = order.shippingAddress) === null || _f === void 0 ? void 0 : _f.province),
1938
+ postalCode: new FormControl((_g = order.shippingAddress) === null || _g === void 0 ? void 0 : _g.postalCode),
1939
+ countryCode: new FormControl((_h = order.shippingAddress) === null || _h === void 0 ? void 0 : _h.countryCode),
1940
+ phoneNumber: new FormControl((_j = order.shippingAddress) === null || _j === void 0 ? void 0 : _j.phoneNumber),
1941
+ });
1942
+ this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);
1943
+ }
1944
+ if (!this.billingAddressForm) {
1945
+ this.billingAddressForm = new FormGroup({
1946
+ fullName: new FormControl((_k = order.billingAddress) === null || _k === void 0 ? void 0 : _k.fullName),
1947
+ company: new FormControl((_l = order.billingAddress) === null || _l === void 0 ? void 0 : _l.company),
1948
+ streetLine1: new FormControl((_m = order.billingAddress) === null || _m === void 0 ? void 0 : _m.streetLine1),
1949
+ streetLine2: new FormControl((_o = order.billingAddress) === null || _o === void 0 ? void 0 : _o.streetLine2),
1950
+ city: new FormControl((_p = order.billingAddress) === null || _p === void 0 ? void 0 : _p.city),
1951
+ province: new FormControl((_q = order.billingAddress) === null || _q === void 0 ? void 0 : _q.province),
1952
+ postalCode: new FormControl((_r = order.billingAddress) === null || _r === void 0 ? void 0 : _r.postalCode),
1953
+ countryCode: new FormControl((_s = order.billingAddress) === null || _s === void 0 ? void 0 : _s.countryCode),
1954
+ phoneNumber: new FormControl((_t = order.billingAddress) === null || _t === void 0 ? void 0 : _t.phoneNumber),
1955
+ });
1956
+ this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);
1957
+ }
1958
+ this.orderLineCustomFieldsFormArray = new FormArray([]);
1959
+ for (const line of order.lines) {
1960
+ const formGroup = new FormGroup({});
1961
+ for (const { name } of this.orderLineCustomFields) {
1962
+ formGroup.addControl(name, new FormControl(line.customFields[name]));
1963
+ }
1964
+ formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
1965
+ let modifyRow = this.modifyOrderInput.adjustOrderLines.find(l => l.orderLineId === line.id);
1966
+ if (!modifyRow) {
1967
+ modifyRow = {
1968
+ orderLineId: line.id,
1969
+ quantity: line.quantity,
1970
+ };
1971
+ this.modifyOrderInput.adjustOrderLines.push(modifyRow);
1972
+ }
1973
+ if (this.orderLineCustomFields.length) {
1974
+ modifyRow.customFields = value;
1975
+ }
1976
+ });
1977
+ this.orderLineCustomFieldsFormArray.push(formGroup);
1978
+ }
1979
+ });
1980
+ this.addItemCustomFieldsFormArray = new FormArray([]);
1981
+ this.addItemCustomFieldsForm = new FormGroup({});
1982
+ for (const customField of this.orderLineCustomFields) {
1983
+ this.addItemCustomFieldsForm.addControl(customField.name, new FormControl());
1984
+ }
1985
+ this.availableCountries$ = this.dataService.settings
1986
+ .getAvailableCountries()
1987
+ .mapSingle(result => result.countries.items)
1988
+ .pipe(shareReplay(1));
1989
+ this.dataService.order
1990
+ .getOrderHistory(this.id, {
1991
+ take: 1,
1992
+ sort: {
1993
+ createdAt: SortOrder.DESC,
1994
+ },
1995
+ filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },
1996
+ })
1997
+ .single$.subscribe(({ order }) => {
1998
+ this.previousState = order === null || order === void 0 ? void 0 : order.history.items[0].data.from;
1999
+ });
2000
+ }
2001
+ ngOnDestroy() {
2002
+ this.destroy();
2003
+ }
2004
+ transitionToPriorState(order) {
2005
+ this.orderTransitionService
2006
+ .transitionToPreModifyingState(order.id, order.nextStates)
2007
+ .subscribe(result => {
2008
+ this.router.navigate(['..'], { relativeTo: this.route });
2009
+ });
2010
+ }
2011
+ canPreviewChanges() {
2012
+ const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;
2013
+ return (!!(addItems === null || addItems === void 0 ? void 0 : addItems.length) ||
2014
+ !!(surcharges === null || surcharges === void 0 ? void 0 : surcharges.length) ||
2015
+ !!(adjustOrderLines === null || adjustOrderLines === void 0 ? void 0 : adjustOrderLines.length) ||
2016
+ (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||
2017
+ (this.billingAddressForm.dirty && this.billingAddressForm.valid) ||
2018
+ this.couponCodesControl.dirty);
2019
+ }
2020
+ isLineModified(line) {
2021
+ var _a;
2022
+ return !!((_a = this.modifyOrderInput.adjustOrderLines) === null || _a === void 0 ? void 0 : _a.find(l => l.orderLineId === line.id && l.quantity !== line.quantity));
2023
+ }
2024
+ updateLineQuantity(line, quantity) {
2025
+ const { adjustOrderLines } = this.modifyOrderInput;
2026
+ let row = adjustOrderLines === null || adjustOrderLines === void 0 ? void 0 : adjustOrderLines.find(l => l.orderLineId === line.id);
2027
+ if (row && +quantity === line.quantity) {
2028
+ // Remove the modification if the quantity is the same as
2029
+ // the original order
2030
+ adjustOrderLines === null || adjustOrderLines === void 0 ? void 0 : adjustOrderLines.splice(adjustOrderLines === null || adjustOrderLines === void 0 ? void 0 : adjustOrderLines.indexOf(row), 1);
2031
+ }
2032
+ if (!row) {
2033
+ row = { orderLineId: line.id, quantity: +quantity };
2034
+ adjustOrderLines === null || adjustOrderLines === void 0 ? void 0 : adjustOrderLines.push(row);
2035
+ }
2036
+ row.quantity = +quantity;
2037
+ }
2038
+ updateAddedItemQuantity(item, quantity) {
2039
+ var _a;
2040
+ const row = (_a = this.modifyOrderInput.addItems) === null || _a === void 0 ? void 0 : _a.find(l => l.productVariantId === item.productVariantId);
2041
+ if (row) {
2042
+ row.quantity = +quantity;
2043
+ }
2044
+ }
2045
+ trackByProductVariantId(index, item) {
2046
+ return item.productVariantId;
2047
+ }
2048
+ getSelectedItemPrice(result) {
2049
+ switch (result === null || result === void 0 ? void 0 : result.priceWithTax.__typename) {
2050
+ case 'SinglePrice':
2051
+ return result.priceWithTax.value;
2052
+ default:
2053
+ return 0;
2054
+ }
2055
+ }
2056
+ addItemToOrder(result) {
2057
+ var _a, _b;
2058
+ if (!result) {
2059
+ return;
2060
+ }
2061
+ const customFields = this.orderLineCustomFields.length
2062
+ ? this.addItemCustomFieldsForm.value
2063
+ : undefined;
2064
+ let row = (_a = this.modifyOrderInput.addItems) === null || _a === void 0 ? void 0 : _a.find(l => this.isMatchingAddItemRow(l, result, customFields));
2065
+ if (!row) {
2066
+ row = { productVariantId: result.productVariantId, quantity: 1 };
2067
+ if (customFields) {
2068
+ row.customFields = customFields;
2069
+ }
2070
+ (_b = this.modifyOrderInput.addItems) === null || _b === void 0 ? void 0 : _b.push(row);
2071
+ }
2072
+ else {
2073
+ row.quantity++;
2074
+ }
2075
+ if (customFields) {
2076
+ const formGroup = new FormGroup({});
2077
+ for (const [key, value] of Object.entries(customFields)) {
2078
+ formGroup.addControl(key, new FormControl(value));
2079
+ }
2080
+ this.addItemCustomFieldsFormArray.push(formGroup);
2081
+ formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
2082
+ if (row) {
2083
+ row.customFields = value;
2084
+ }
2085
+ });
2086
+ }
2087
+ this.addItemCustomFieldsForm.reset({});
2088
+ this.addItemSelectedVariant = undefined;
2089
+ this.addedVariants.set(result.productVariantId, result);
2090
+ }
2091
+ isMatchingAddItemRow(row, result, customFields) {
2092
+ return (row.productVariantId === result.productVariantId &&
2093
+ JSON.stringify(row.customFields) === JSON.stringify(customFields));
2094
+ }
2095
+ removeAddedItem(index) {
2096
+ this.modifyOrderInput.addItems.splice(index, 1);
2097
+ if (-1 < index) {
2098
+ this.addItemCustomFieldsFormArray.removeAt(index);
2099
+ }
2100
+ }
2101
+ getSurchargePrices(surcharge) {
2102
+ const priceWithTax = surcharge.priceIncludesTax
2103
+ ? surcharge.price
2104
+ : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));
2105
+ const price = surcharge.priceIncludesTax
2106
+ ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))
2107
+ : surcharge.price;
2108
+ return {
2109
+ price,
2110
+ priceWithTax,
2111
+ };
2112
+ }
2113
+ addSurcharge(value) {
2114
+ var _a;
2115
+ (_a = this.modifyOrderInput.surcharges) === null || _a === void 0 ? void 0 : _a.push(value);
2116
+ this.surchargeForm.reset({
2117
+ price: 0,
2118
+ priceIncludesTax: true,
2119
+ taxRate: 0,
2120
+ });
2121
+ }
2122
+ removeSurcharge(index) {
2123
+ var _a;
2124
+ (_a = this.modifyOrderInput.surcharges) === null || _a === void 0 ? void 0 : _a.splice(index, 1);
2125
+ }
2126
+ previewAndModify(order) {
2127
+ var _a;
2128
+ const modifyOrderInput = Object.assign(Object.assign({}, this.modifyOrderInput), { adjustOrderLines: this.modifyOrderInput.adjustOrderLines.map(line => {
2129
+ return transformRelationCustomFieldInputs(simpleDeepClone(line), this.orderLineCustomFields);
2130
+ }) });
2131
+ const input = Object.assign(Object.assign(Object.assign(Object.assign({}, modifyOrderInput), (this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {})), (this.shippingAddressForm.dirty
2132
+ ? { updateShippingAddress: this.shippingAddressForm.value }
2133
+ : {})), { dryRun: true, couponCodes: this.couponCodesControl.dirty ? this.couponCodesControl.value : undefined, note: (_a = this.note) !== null && _a !== void 0 ? _a : '', options: {
2134
+ recalculateShipping: this.recalculateShipping,
2135
+ } });
2136
+ const originalTotalWithTax = order.totalWithTax;
2137
+ this.dataService.order
2138
+ .modifyOrder(input)
2139
+ .pipe(switchMap(({ modifyOrder }) => {
2140
+ switch (modifyOrder.__typename) {
2141
+ case 'Order':
2142
+ return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {
2143
+ size: 'xl',
2144
+ closable: false,
2145
+ locals: {
2146
+ originalTotalWithTax,
2147
+ order: modifyOrder,
2148
+ orderLineCustomFields: this.orderLineCustomFields,
2149
+ modifyOrderInput: input,
2150
+ },
2151
+ });
2152
+ case 'InsufficientStockError':
2153
+ case 'NegativeQuantityError':
2154
+ case 'NoChangesSpecifiedError':
2155
+ case 'OrderLimitError':
2156
+ case 'OrderModificationStateError':
2157
+ case 'PaymentMethodMissingError':
2158
+ case 'RefundPaymentIdMissingError':
2159
+ case 'CouponCodeLimitError':
2160
+ case 'CouponCodeExpiredError':
2161
+ case 'CouponCodeInvalidError': {
2162
+ this.notificationService.error(modifyOrder.message);
2163
+ return of(false);
2164
+ }
2165
+ case null:
2166
+ case undefined:
2167
+ return of(false);
2168
+ default:
2169
+ assertNever(modifyOrder);
2170
+ }
2171
+ }), switchMap(result => {
2172
+ if (!result || result.result === OrderEditResultType.Cancel) {
2173
+ // re-fetch so that the preview values get overwritten in the cache.
2174
+ return this.dataService.order.getOrder(this.id).mapSingle(() => false);
2175
+ }
2176
+ else {
2177
+ // Do the modification
2178
+ const wetRunInput = Object.assign(Object.assign({}, input), { dryRun: false });
2179
+ if (result.result === OrderEditResultType.Refund) {
2180
+ wetRunInput.refund = {
2181
+ paymentId: result.refundPaymentId,
2182
+ reason: result.refundNote,
2183
+ };
2184
+ }
2185
+ return this.dataService.order.modifyOrder(wetRunInput).pipe(switchMap(({ modifyOrder }) => {
2186
+ if (modifyOrder.__typename === 'Order') {
2187
+ const priceDelta = modifyOrder.totalWithTax - originalTotalWithTax;
2188
+ const nextState = 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;
2189
+ return this.dataService.order
2190
+ .transitionToState(order.id, nextState)
2191
+ .pipe(mapTo(true));
2192
+ }
2193
+ else {
2194
+ this.notificationService.error(modifyOrder.message);
2195
+ return EMPTY;
2196
+ }
2197
+ }));
2198
+ }
2199
+ }))
2200
+ .subscribe(result => {
2201
+ if (result) {
2202
+ this.router.navigate(['../'], { relativeTo: this.route });
2203
+ }
2204
+ });
2205
+ }
2206
+ addAddressCustomFieldsFormGroup(parentFormGroup, address) {
2207
+ var _a;
2208
+ if (address && this.addressCustomFields.length) {
2209
+ const addressCustomFieldsFormGroup = new FormGroup({});
2210
+ for (const customFieldDef of this.addressCustomFields) {
2211
+ const name = customFieldDef.name;
2212
+ const value = (_a = address.customFields) === null || _a === void 0 ? void 0 : _a[name];
2213
+ addressCustomFieldsFormGroup.addControl(name, new FormControl(value));
2214
+ }
2215
+ parentFormGroup.addControl('customFields', addressCustomFieldsFormGroup);
2216
+ }
2217
+ }
2218
+ setFormValues(entity, languageCode) {
2219
+ /* not used */
2220
+ }
2221
+ }
2222
+ OrderEditorComponent.decorators = [
2223
+ { type: Component, args: [{
2224
+ selector: 'vdr-order-editor',
2225
+ template: "<vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\r\n {{ 'order.cancel-modification' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<div *ngIf=\"entity$ | async as order\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-lg-8\">\r\n <table class=\"order-table table\">\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 *ngIf=\"orderLineCustomFields.length\">{{ 'common.custom-fields' | translate }}</th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let line of order.lines; let i = index\"\r\n class=\"order-line\"\r\n [class.is-cancelled]=\"line.quantity === 0\"\r\n [class.modified]=\"isLineModified(line)\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"line.featuredAsset\"\r\n [src]=\"line.featuredAsset | assetPreview: 'tiny'\"\r\n />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"line.quantity\"\r\n (input)=\"updateLineQuantity(line, $event.target.value)\"\r\n />\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n ></vdr-line-fulfillment>\r\n </td>\r\n <td *ngIf=\"orderLineCustomFields.length\" class=\"order-line-custom-field align-middle\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"OrderLine\"\r\n [customFields]=\"orderLineCustomFields\"\r\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.get([i])\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{ line.linePriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr\r\n *ngFor=\"let addedLine of addedLines; trackBy: trackByProductVariantId; let i = index\"\r\n class=\"modified\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"addedLine.productAsset\"\r\n [src]=\"addedLine.productAsset | assetPreview: 'tiny'\"\r\n />\r\n </td>\r\n <td class=\"align-middle name\">{{ addedLine.productVariantName }}</td>\r\n <td class=\"align-middle sku\">{{ addedLine.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ addedLine.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ addedLine.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"addedLine.quantity\"\r\n (input)=\"updateAddedItemQuantity(addedLine, $event.target.value)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"removeAddedItem(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td *ngIf=\"orderLineCustomFields.length\" class=\"order-line-custom-field align-middle\">\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsFormArray.get([i])\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{\r\n (addedLine.priceWithTax * addedLine.quantity) / 100\r\n | currency: order.currencyCode\r\n }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{\r\n (addedLine.price * addedLine.quantity) / 100\r\n | currency: order.currencyCode\r\n }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr\r\n class=\"surcharge modified\"\r\n *ngFor=\"let surcharge of modifyOrderInput.surcharges; let i = index\"\r\n >\r\n <td class=\"align-middle name left\" colspan=\"2\">\r\n {{ surcharge.description }}\r\n <button class=\"icon-button\" (click)=\"removeSurcharge(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></td>\r\n <td class=\"align-middle total\">\r\n <ng-container *ngIf=\"getSurchargePrices(surcharge) as surchargePrice\">\r\n {{ surchargePrice.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surchargePrice.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">{{ order.shippingLines[0]?.shippingMethod?.name }}</td>\r\n <td colspan=\"3\"></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <h4 class=\"mb2\">{{ 'order.modifications' | translate }}</h4>\r\n <clr-accordion>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-item-to-order' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-product-selector class=\"mb4\" (productSelected)=\"addItemSelectedVariant = $event\">\r\n </vdr-product-selector>\r\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb4\">\r\n <img\r\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n class=\"mr4\"\r\n />\r\n <div>\r\n <strong class=\"mr4\">{{ addItemSelectedVariant.productVariantName }}</strong>\r\n <small>{{ addItemSelectedVariant.sku }}</small>\r\n <div>\r\n {{\r\n getSelectedItemPrice(addItemSelectedVariant)\r\n | localeCurrency: order.currencyCode\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [readonly]=\"!addItemSelectedVariant\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\r\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\r\n >\r\n {{ 'order.add-item-to-order' | translate }}\r\n </button>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.set-coupon-codes' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-coupon-code-selector\r\n [control]=\"couponCodesControl\"\r\n ></vdr-coupon-code-selector>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-surcharge' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\r\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\r\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\r\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\r\n <vdr-currency-input\r\n [currencyCode]=\"order.currencyCode\"\r\n id=\"price\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"\r\n 'catalog.price-includes-tax-at'\r\n | translate: { rate: surchargeForm.get('taxRate')?.value }\r\n \"\r\n for=\"priceIncludesTax\"\r\n ><input\r\n id=\"priceIncludesTax\"\r\n type=\"checkbox\"\r\n clrCheckbox\r\n formControlName=\"priceIncludesTax\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\r\n <vdr-affixed-input suffix=\"%\"\r\n ><input\r\n id=\"taxRate\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"100\"\r\n formControlName=\"taxRate\"\r\n /></vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\r\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\r\n /></vdr-form-field>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"\r\n surchargeForm.invalid ||\r\n surchargeForm.pristine ||\r\n surchargeForm.get('price')?.value === 0\r\n \"\r\n >\r\n {{ 'order.add-surcharge' | translate }}\r\n </button>\r\n </form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.edit-shipping-address' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"shippingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.edit-billing-address' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"billingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n </clr-accordion>\r\n </div>\r\n <div class=\"clr-col-lg-4 order-cards\">\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'order.modification-summary' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <ul>\r\n <li *ngIf=\"modifyOrderInput.addItems?.length\">\r\n {{\r\n 'order.modification-adding-items'\r\n | translate: { count: modifyOrderInput.addItems?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.adjustOrderLines?.length\">\r\n {{\r\n 'order.modification-adjusting-lines'\r\n | translate: { count: modifyOrderInput.adjustOrderLines?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.surcharges?.length\">\r\n {{\r\n 'order.modification-adding-surcharges'\r\n | translate: { count: modifyOrderInput.surcharges?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"shippingAddressForm.dirty\">\r\n {{ 'order.modification-updating-shipping-address' | translate }}\r\n </li>\r\n <li *ngIf=\"billingAddressForm.dirty\">\r\n {{ 'order.modification-updating-billing-address' | translate }}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"card-block\">\r\n <label class=\"clr-control-label\">{{ 'order.note' | translate }}</label>\r\n <textarea [(ngModel)]=\"note\" name=\"note\" clrTextarea required></textarea>\r\n <clr-checkbox-wrapper class=\"\">\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"recalculateShipping\" />\r\n <label>{{ 'order.modification-recalculate-shipping' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!canPreviewChanges()\"\r\n (click)=\"previewAndModify(order)\"\r\n >\r\n {{ 'order.preview-changes' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
2226
+ changeDetection: ChangeDetectionStrategy.OnPush,
2227
+ styles: [".order-table .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.order-table .sub-total td{border-top:1px dashed var(--color-component-border-200)}.order-table .total td{font-weight:bold;border-top:1px dashed var(--color-component-border-200)}.order-table td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}.order-table img{border-radius:var(--border-radius-img)}.order-table .order-line-custom-fields{display:flex;flex-wrap:wrap}.order-table .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-right:18px}.order-table .draft-qty{max-width:48px}.order-table .order-line-custom-field{background-color:var(--color-component-bg-100)}.order-table .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}.order-table .net-price{font-size:11px;color:var(--color-text-300)}.order-table .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}.order-table .thumb img{width:50px;height:50px}.order-table tr.modified td{background-color:var(--color-warning-100)}.order-table .order-line-custom-field{text-align:start}\n"]
2228
+ },] }
2229
+ ];
2230
+ OrderEditorComponent.ctorParameters = () => [
2231
+ { type: Router },
2232
+ { type: ActivatedRoute },
2233
+ { type: ServerConfigService },
2234
+ { type: ChangeDetectorRef },
2235
+ { type: DataService },
2236
+ { type: NotificationService },
2237
+ { type: ModalService },
2238
+ { type: OrderTransitionService }
2239
+ ];
2240
+
2241
+ class OrderHistoryComponent {
2242
+ constructor() {
2243
+ this.addNote = new EventEmitter();
2244
+ this.updateNote = new EventEmitter();
2245
+ this.deleteNote = new EventEmitter();
2246
+ this.note = '';
2247
+ this.noteIsPrivate = true;
2248
+ this.expanded = false;
2249
+ this.type = HistoryEntryType;
2250
+ }
2251
+ getDisplayType(entry) {
2252
+ if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {
2253
+ if (entry.data.to === 'Delivered') {
2254
+ return 'success';
2255
+ }
2256
+ if (entry.data.to === 'Cancelled') {
2257
+ return 'error';
2258
+ }
2259
+ }
2260
+ if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {
2261
+ if (entry.data.to === 'Delivered') {
2262
+ return 'success';
2263
+ }
2264
+ }
2265
+ if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {
2266
+ if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {
2267
+ return 'error';
2268
+ }
2269
+ }
2270
+ if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {
2271
+ return 'error';
2272
+ }
2273
+ if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {
2274
+ return 'warning';
2275
+ }
2276
+ return 'default';
2277
+ }
2278
+ getTimelineIcon(entry) {
2279
+ if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {
2280
+ if (entry.data.to === 'Delivered') {
2281
+ return ['success-standard', 'is-solid'];
2282
+ }
2283
+ if (entry.data.to === 'Cancelled') {
2284
+ return 'ban';
2285
+ }
2286
+ }
2287
+ if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {
2288
+ if (entry.data.to === 'Settled') {
2289
+ return 'credit-card';
2290
+ }
2291
+ }
2292
+ if (entry.type === HistoryEntryType.ORDER_NOTE) {
2293
+ return 'note';
2294
+ }
2295
+ if (entry.type === HistoryEntryType.ORDER_MODIFIED) {
2296
+ return 'pencil';
2297
+ }
2298
+ if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {
2299
+ if (entry.data.to === 'Shipped') {
2300
+ return 'truck';
2301
+ }
2302
+ if (entry.data.to === 'Delivered') {
2303
+ return 'truck';
2304
+ }
2305
+ }
2306
+ }
2307
+ isFeatured(entry) {
2308
+ switch (entry.type) {
2309
+ case HistoryEntryType.ORDER_STATE_TRANSITION: {
2310
+ return (entry.data.to === 'Delivered' ||
2311
+ entry.data.to === 'Cancelled' ||
2312
+ entry.data.to === 'Settled');
2313
+ }
2314
+ case HistoryEntryType.ORDER_PAYMENT_TRANSITION:
2315
+ return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';
2316
+ case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:
2317
+ return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';
2318
+ case HistoryEntryType.ORDER_NOTE:
2319
+ case HistoryEntryType.ORDER_MODIFIED:
2320
+ return true;
2321
+ default:
2322
+ return false;
2323
+ }
2324
+ }
2325
+ getFulfillment(entry) {
2326
+ if ((entry.type === HistoryEntryType.ORDER_FULFILLMENT ||
2327
+ entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&
2328
+ this.order.fulfillments) {
2329
+ return this.order.fulfillments.find(f => f.id === entry.data.fulfillmentId);
2330
+ }
2331
+ }
2332
+ getPayment(entry) {
2333
+ if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {
2334
+ return this.order.payments.find(p => p.id === entry.data.paymentId);
2335
+ }
2336
+ }
2337
+ getCancelledItems(entry) {
2338
+ const itemMap = new Map();
2339
+ const cancelledItemIds = entry.data.orderItemIds;
2340
+ for (const line of this.order.lines) {
2341
+ for (const item of line.items) {
2342
+ if (cancelledItemIds.includes(item.id)) {
2343
+ const count = itemMap.get(line.productVariant.name);
2344
+ if (count != null) {
2345
+ itemMap.set(line.productVariant.name, count + 1);
2346
+ }
2347
+ else {
2348
+ itemMap.set(line.productVariant.name, 1);
2349
+ }
2350
+ }
2351
+ }
2352
+ }
2353
+ return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));
2354
+ }
2355
+ getModification(id) {
2356
+ return this.order.modifications.find(m => m.id === id);
2357
+ }
2358
+ getName(entry) {
2359
+ const { administrator } = entry;
2360
+ if (administrator) {
2361
+ return `${administrator.firstName} ${administrator.lastName}`;
2362
+ }
2363
+ else {
2364
+ const customer = this.order.customer;
2365
+ if (customer) {
2366
+ return `${customer.firstName} ${customer.lastName}`;
2367
+ }
2368
+ }
2369
+ return '';
2370
+ }
2371
+ addNoteToOrder() {
2372
+ this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });
2373
+ this.note = '';
2374
+ this.noteIsPrivate = true;
2375
+ }
2376
+ }
2377
+ OrderHistoryComponent.decorators = [
2378
+ { type: Component, args: [{
2379
+ selector: 'vdr-order-history',
2380
+ template: "<h4>{{ 'order.order-history' | translate }}</h4>\r\n<div class=\"entry-list\" [class.expanded]=\"expanded\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToOrder()\">\r\n {{ 'common.add-note' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"visibility-select\">\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\r\n <label>{{ 'order.note-is-private' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\r\n {{ 'order.note-only-visible-to-administrators' | translate }}\r\n </span>\r\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\r\n {{ 'order.note-visible-to-customer' | translate }}\r\n </span>\r\n </div>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry\r\n *ngFor=\"let entry of history\"\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n [collapsed]=\"!expanded && !isFeatured(entry)\"\r\n (expandClick)=\"expanded = !expanded\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.ORDER_STATE_TRANSITION\">\r\n <div class=\"title\" *ngIf=\"entry.data.to === 'Delivered'\">\r\n {{ 'order.history-order-fulfilled' | translate }}\r\n </div>\r\n <div class=\"title\" *ngIf=\"entry.data.to === 'Cancelled'\">\r\n {{ 'order.history-order-cancelled' | translate }}\r\n </div>\r\n <ng-template [ngIf]=\"entry.data.to !== 'Cancelled' && entry.data.to !== 'Delivered'\">\r\n {{\r\n 'order.history-order-transition'\r\n | translate: { from: entry.data.from, to: entry.data.to }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_MODIFIED\">\r\n <div class=\"title\">\r\n {{ 'order.history-order-modified' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"getModification(entry.data.modificationId) as modification\">\r\n {{ 'order.modify-order-price-difference' | translate }}:\r\n <strong>{{ modification.priceChange | localeCurrency: order.currencyCode }}</strong>\r\n <vdr-chip colorType=\"success\" *ngIf=\"modification.isSettled\">{{\r\n 'order.modification-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip colorType=\"error\" *ngIf=\"!modification.isSettled\">{{\r\n 'order.modification-not-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-history-entry-detail>\r\n <vdr-modification-detail\r\n [order]=\"order\"\r\n [modification]=\"modification\"\r\n ></vdr-modification-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_PAYMENT_TRANSITION\">\r\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularPaymentTransition\">\r\n <div class=\"title\">\r\n {{ 'order.history-payment-settled' | translate }}\r\n </div>\r\n {{ 'order.transaction-id' | translate }}: {{ getPayment(entry)?.transactionId }}\r\n <vdr-history-entry-detail *ngIf=\"getPayment(entry) as payment\">\r\n <vdr-payment-detail\r\n [payment]=\"payment\"\r\n [currencyCode]=\"order.currencyCode\"\r\n ></vdr-payment-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-template #regularPaymentTransition>\r\n {{\r\n 'order.history-payment-transition'\r\n | translate\r\n : {\r\n from: entry.data.from,\r\n to: entry.data.to,\r\n id: getPayment(entry)?.transactionId\r\n }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_REFUND_TRANSITION\">\r\n {{\r\n 'order.history-refund-transition'\r\n | translate: { from: entry.data.from, to: entry.data.to, id: entry.data.refundId }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_CANCELLATION\">\r\n {{ 'order.history-items-cancelled' | translate: { count: entry.data.orderItemIds.length } }}\r\n <vdr-history-entry-detail *ngIf=\"getCancelledItems(entry) as items\">\r\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\r\n {{ entry.data.reason }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\r\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.shipping-cancelled' | translate\">\r\n {{ entry.data.shippingCancelled }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT\">\r\n {{ 'order.history-fulfillment-created' | translate }}\r\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\r\n <vdr-fulfillment-detail\r\n [fulfillmentId]=\"fulfillment.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT_TRANSITION\">\r\n <ng-container *ngIf=\"entry.data.to === 'Delivered'\">\r\n <div class=\"title\">\r\n {{ 'order.history-fulfillment-delivered' | translate }}\r\n </div>\r\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\r\n </ng-container>\r\n <ng-container *ngIf=\"entry.data.to === 'Shipped'\">\r\n <div class=\"title\">\r\n {{ 'order.history-fulfillment-shipped' | translate }}\r\n </div>\r\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\r\n </ng-container>\r\n <ng-container *ngIf=\"entry.data.to !== 'Delivered' && entry.data.to !== 'Shipped'\">\r\n {{\r\n 'order.history-fulfillment-transition'\r\n | translate: { from: entry.data.from, to: entry.data.to }\r\n }}\r\n </ng-container>\r\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\r\n <vdr-fulfillment-detail\r\n [fulfillmentId]=\"fulfillment.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n <span *ngIf=\"entry.isPublic\" class=\"note-visibility public\">{{\r\n 'common.public' | translate\r\n }}</span>\r\n <span *ngIf=\"!entry.isPublic\" class=\"note-visibility private\">{{\r\n 'common.private' | translate\r\n }}</span>\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></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)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_APPLIED\">\r\n {{ 'order.history-coupon-code-applied' | translate }}:\r\n <vdr-chip>\r\n <a [routerLink]=\"['/marketing', 'promotions', entry.data.promotionId]\">{{\r\n entry.data.couponCode\r\n }}</a>\r\n </vdr-chip>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_REMOVED\">\r\n {{ 'order.history-coupon-code-removed' | translate }}:\r\n <vdr-chip\r\n ><span class=\"cancelled-coupon-code\">{{ entry.data.couponCode }}</span></vdr-chip\r\n >\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry [isLast]=\"true\" [createdAt]=\"order.createdAt\" [featured]=\"true\">\r\n <div class=\"title\">\r\n {{ 'order.history-order-created' | translate }}\r\n </div>\r\n </vdr-timeline-entry>\r\n</div>\r\n",
2381
+ changeDetection: ChangeDetectionStrategy.OnPush,
2382
+ styles: [":host{margin-top:48px;display:block}.entry-list{margin-top:24px;margin-left:24px;margin-right:12px}.note-entry{display:flex;align-items:center}.note-entry .note{flex:1}.note-entry button{margin:0}.visibility-select{display:flex;justify-content:space-between;align-items:baseline}.visibility-select .public{color:var(--color-warning-500)}.visibility-select .private{color:var(--color-success-500)}textarea.note{flex:1;height:36px;border-radius:3px;margin-right:6px}.note-text{color:var(--color-grey-800);white-space:pre-wrap}.cancelled-coupon-code{text-decoration:line-through}.note-visibility{text-transform:lowercase}.note-visibility.public{color:var(--color-warning-500)}.note-visibility.private{color:var(--color-success-500)}\n"]
2383
+ },] }
2384
+ ];
2385
+ OrderHistoryComponent.propDecorators = {
2386
+ order: [{ type: Input }],
2387
+ history: [{ type: Input }],
2388
+ addNote: [{ type: Output }],
2389
+ updateNote: [{ type: Output }],
2390
+ deleteNote: [{ type: Output }]
2391
+ };
2392
+
2393
+ class OrderListComponent extends BaseListComponent {
2394
+ constructor(serverConfigService, dataService, localStorageService, router, route) {
2395
+ var _a;
2396
+ super(router, route);
2397
+ this.serverConfigService = serverConfigService;
2398
+ this.dataService = dataService;
2399
+ this.localStorageService = localStorageService;
2400
+ this.searchControl = new FormControl('');
2401
+ this.searchOrderCodeControl = new FormControl('');
2402
+ this.searchLastNameControl = new FormControl('');
2403
+ this.orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);
2404
+ this.filterPresets = [
2405
+ {
2406
+ name: 'open',
2407
+ label: marker('order.filter-preset-open'),
2408
+ config: {
2409
+ active: false,
2410
+ states: this.orderStates.filter(s => s !== 'Delivered' && s !== 'Cancelled' && s !== 'Shipped' && s !== 'Draft'),
2411
+ },
2412
+ },
2413
+ {
2414
+ name: 'shipped',
2415
+ label: marker('order.filter-preset-shipped'),
2416
+ config: {
2417
+ active: false,
2418
+ states: ['Shipped'],
2419
+ },
2420
+ },
2421
+ {
2422
+ name: 'completed',
2423
+ label: marker('order.filter-preset-completed'),
2424
+ config: {
2425
+ active: false,
2426
+ states: ['Delivered', 'Cancelled'],
2427
+ },
2428
+ },
2429
+ {
2430
+ name: 'active',
2431
+ label: marker('order.filter-preset-active'),
2432
+ config: {
2433
+ active: true,
2434
+ },
2435
+ },
2436
+ {
2437
+ name: 'draft',
2438
+ label: marker('order.filter-preset-draft'),
2439
+ config: {
2440
+ active: false,
2441
+ states: ['Draft'],
2442
+ },
2443
+ },
2444
+ ];
2445
+ this.canCreateDraftOrder = false;
2446
+ super.setQueryFn(
2447
+ // tslint:disable-next-line:no-shadowed-variable
2448
+ (take, skip) => this.dataService.order.getOrders({ take, skip }).refetchOnChannelChange(), data => data.orders,
2449
+ // tslint:disable-next-line:no-shadowed-variable
2450
+ (skip, take) => this.createQueryOptions(skip, take, this.searchControl.value, this.route.snapshot.queryParamMap.get('filter') || 'open'));
2451
+ const lastFilters = this.localStorageService.get('orderListLastCustomFilters');
2452
+ if (lastFilters) {
2453
+ this.setQueryParam(lastFilters, { replaceUrl: true });
2454
+ }
2455
+ this.canCreateDraftOrder = !!((_a = this.serverConfigService
2456
+ .getOrderProcessStates()
2457
+ .find(state => state.name === 'Created')) === null || _a === void 0 ? void 0 : _a.to.includes('Draft'));
2458
+ if (!this.canCreateDraftOrder) {
2459
+ this.filterPresets = this.filterPresets.filter(p => p.name !== 'draft');
2460
+ }
2461
+ }
2462
+ ngOnInit() {
2463
+ var _a;
2464
+ super.ngOnInit();
2465
+ this.activePreset$ = this.route.queryParamMap.pipe(map(qpm => qpm.get('filter') || 'open'), distinctUntilChanged());
2466
+ const searchTerms$ = merge(this.searchControl.valueChanges).pipe(filter(value => 2 < value.length || value.length === 0), debounceTime(250));
2467
+ merge(searchTerms$, this.route.queryParamMap)
2468
+ .pipe(takeUntil(this.destroy$))
2469
+ .subscribe(val => {
2470
+ this.refresh();
2471
+ });
2472
+ const queryParamMap = this.route.snapshot.queryParamMap;
2473
+ this.customFilterForm = new FormGroup({
2474
+ states: new FormControl((_a = queryParamMap.getAll('states')) !== null && _a !== void 0 ? _a : []),
2475
+ placedAtStart: new FormControl(queryParamMap.get('placedAtStart')),
2476
+ placedAtEnd: new FormControl(queryParamMap.get('placedAtEnd')),
2477
+ });
2478
+ }
2479
+ selectFilterPreset(presetName) {
2480
+ var _a;
2481
+ const lastCustomFilters = (_a = this.localStorageService.get('orderListLastCustomFilters')) !== null && _a !== void 0 ? _a : {};
2482
+ const emptyCustomFilters = { states: undefined, placedAtStart: undefined, placedAtEnd: undefined };
2483
+ const filters = presetName === 'custom' ? lastCustomFilters : emptyCustomFilters;
2484
+ this.setQueryParam(Object.assign({ filter: presetName, page: 1 }, filters), { replaceUrl: true });
2485
+ }
2486
+ applyCustomFilters() {
2487
+ const formValue = this.customFilterForm.value;
2488
+ const customFilters = {
2489
+ states: formValue.states,
2490
+ placedAtStart: formValue.placedAtStart,
2491
+ placedAtEnd: formValue.placedAtEnd,
2492
+ };
2493
+ this.setQueryParam(Object.assign({ filter: 'custom' }, customFilters));
2494
+ this.customFilterForm.markAsPristine();
2495
+ this.localStorageService.set('orderListLastCustomFilters', customFilters);
2496
+ }
2497
+ createQueryOptions(
2498
+ // tslint:disable-next-line:no-shadowed-variable
2499
+ skip, take, searchTerm, activeFilterPreset) {
2500
+ var _a;
2501
+ const filterConfig = this.filterPresets.find(p => p.name === activeFilterPreset);
2502
+ // tslint:disable-next-line:no-shadowed-variable
2503
+ let filter = {};
2504
+ let filterOperator = LogicalOperator.AND;
2505
+ if (filterConfig) {
2506
+ if (filterConfig.config.active != null) {
2507
+ filter.active = {
2508
+ eq: filterConfig.config.active,
2509
+ };
2510
+ }
2511
+ if (filterConfig.config.states) {
2512
+ filter.state = {
2513
+ in: filterConfig.config.states,
2514
+ };
2515
+ }
2516
+ }
2517
+ else if (activeFilterPreset === 'custom') {
2518
+ const queryParams = this.route.snapshot.queryParamMap;
2519
+ const states = (_a = queryParams.getAll('states')) !== null && _a !== void 0 ? _a : [];
2520
+ const placedAtStart = queryParams.get('placedAtStart');
2521
+ const placedAtEnd = queryParams.get('placedAtEnd');
2522
+ if (states.length) {
2523
+ filter.state = {
2524
+ in: states,
2525
+ };
2526
+ }
2527
+ if (placedAtStart && placedAtEnd) {
2528
+ filter.orderPlacedAt = {
2529
+ between: {
2530
+ start: placedAtStart,
2531
+ end: placedAtEnd,
2532
+ },
2533
+ };
2534
+ }
2535
+ else if (placedAtStart) {
2536
+ filter.orderPlacedAt = {
2537
+ after: placedAtStart,
2538
+ };
2539
+ }
2540
+ else if (placedAtEnd) {
2541
+ filter.orderPlacedAt = {
2542
+ before: placedAtEnd,
2543
+ };
2544
+ }
2545
+ }
2546
+ if (searchTerm) {
2547
+ filter = {
2548
+ customerLastName: {
2549
+ contains: searchTerm,
2550
+ },
2551
+ transactionId: {
2552
+ contains: searchTerm,
2553
+ },
2554
+ code: {
2555
+ contains: searchTerm,
2556
+ },
2557
+ };
2558
+ filterOperator = LogicalOperator.OR;
2559
+ }
2560
+ return {
2561
+ options: {
2562
+ skip,
2563
+ take,
2564
+ filter: Object.assign({}, (filter !== null && filter !== void 0 ? filter : {})),
2565
+ sort: {
2566
+ updatedAt: SortOrder.DESC,
2567
+ },
2568
+ filterOperator,
2569
+ },
2570
+ };
2571
+ }
2572
+ getShippingNames(order) {
2573
+ if (order.shippingLines.length) {
2574
+ return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');
2575
+ }
2576
+ else {
2577
+ return '';
2578
+ }
2579
+ }
2580
+ }
2581
+ OrderListComponent.decorators = [
2582
+ { type: Component, args: [{
2583
+ selector: 'vdr-order-list',
2584
+ template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"search-form\">\r\n <div class=\"filter-presets btn-group btn-outline-primary\" *ngIf=\"activePreset$ | async as activePreset\">\r\n <button\r\n class=\"btn\"\r\n *ngFor=\"let preset of filterPresets\"\r\n [class.btn-primary]=\"activePreset === preset.name\"\r\n (click)=\"selectFilterPreset(preset.name)\"\r\n >\r\n {{ preset.label | translate }}\r\n </button>\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"activePreset === 'custom'\"\r\n (click)=\"selectFilterPreset('custom')\"\r\n >\r\n {{ 'order.filter-custom' | translate }}\r\n <clr-icon shape=\"angle down\"></clr-icon>\r\n </button>\r\n </div>\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchControl\"\r\n [placeholder]=\"'order.search-by-order-filters' | translate\"\r\n class=\"search-input\"\r\n />\r\n </div>\r\n <div class=\"custom-filters\" [class.expanded]=\"(activePreset$ | async) === 'custom'\">\r\n <form [formGroup]=\"customFilterForm\">\r\n <div class=\"flex align-center\">\r\n <ng-select\r\n [items]=\"orderStates\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n formControlName=\"states\"\r\n [placeholder]=\"'state.all-orders' | translate\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n >\r\n <ng-template ng-option-tmp let-item=\"item\">{{\r\n item | stateI18nToken | translate\r\n }}</ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\"> {{ item | stateI18nToken | translate }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\"\r\n >\u00D7</span\r\n >\r\n </ng-template>\r\n </ng-select>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"customFilterForm.pristine\"\r\n (click)=\"applyCustomFilters()\"\r\n >\r\n {{ 'order.apply-filters' | translate }}\r\n <clr-icon shape=\"filter\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex\">\r\n <div>\r\n <label>{{ 'order.placed-at-start' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtStart\"></vdr-datetime-picker>\r\n </div>\r\n <div>\r\n <label>{{ 'order.placed-at-end' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtEnd\"></vdr-datetime-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-list\"></vdr-action-bar-items>\r\n <ng-container *ngIf=\"canCreateDraftOrder\">\r\n <a class=\"btn btn-primary mt1\" *vdrIfPermissions=\"['CreateOrder']\" [routerLink]=\"['./draft/create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.create-draft-order' | translate }}\r\n </a>\r\n </ng-container>\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>{{ 'order.customer' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.placed-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.shipping' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left align-middle\">{{ order.code }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </td>\r\n <td class=\"left align-middle\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </td>\r\n <td class=\"left align-middle\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left align-middle\">{{ order.updatedAt | timeAgo }}</td>\r\n <td class=\"left align-middle\">{{ order.orderPlacedAt | localeDate: 'medium' }}</td>\r\n <td class=\"left align-middle\">{{ getShippingNames(order) }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"\r\n order.state === 'Modifying'\r\n ? ['./', order.id, 'modify']\r\n : order.state === 'Draft'\r\n ? ['./draft', order.id]\r\n : ['./', order.id]\r\n \"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
2585
+ changeDetection: ChangeDetectionStrategy.OnPush,
2586
+ styles: [".search-form{display:flex;flex-direction:column;align-items:baseline;width:100%;max-width:100vw;margin-bottom:6px}.filter-presets{max-width:90vw;overflow-x:auto}.search-input{margin-top:6px;min-width:300px}.custom-filters{overflow:hidden;max-height:0;padding-bottom:6px}.custom-filters.expanded{max-height:initial}.custom-filters>form{display:flex;flex-direction:column;align-items:center}.custom-filters>form>div{width:100%}ng-select{flex:1;min-width:200px;height:36px}ng-select ::ng-deep .ng-select-container{height:36px}\n"]
2587
+ },] }
2588
+ ];
2589
+ OrderListComponent.ctorParameters = () => [
2590
+ { type: ServerConfigService },
2591
+ { type: DataService },
2592
+ { type: LocalStorageService },
2593
+ { type: Router },
2594
+ { type: ActivatedRoute }
2595
+ ];
2596
+
2597
+ class OrderPaymentCardComponent {
2598
+ constructor() {
2599
+ this.settlePayment = new EventEmitter();
2600
+ this.transitionPaymentState = new EventEmitter();
2601
+ this.settleRefund = new EventEmitter();
2602
+ }
2603
+ refundHasMetadata(refund) {
2604
+ return !!refund && Object.keys(refund.metadata).length > 0;
2605
+ }
2606
+ nextOtherStates() {
2607
+ if (!this.payment) {
2608
+ return [];
2609
+ }
2610
+ return this.payment.nextStates.filter(s => s !== 'Settled' && s !== 'Error');
2611
+ }
2612
+ }
2613
+ OrderPaymentCardComponent.decorators = [
2614
+ { type: Component, args: [{
2615
+ selector: 'vdr-order-payment-card',
2616
+ template: "<div class=\"card\">\r\n <div class=\"card-header payment-header\">\r\n <div>\r\n {{ 'order.payment' | translate }}\r\n <ng-container *ngIf=\"payment.transactionId\">#{{ payment.transactionId }}</ng-container>\r\n </div>\r\n <div class=\"payment-state\">\r\n <vdr-payment-state-label [state]=\"payment.state\"></vdr-payment-state-label>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-payment-detail [payment]=\"payment\" [currencyCode]=\"currencyCode\"></vdr-payment-detail>\r\n </div>\r\n <ng-container *ngFor=\"let refund of payment.refunds\">\r\n <div class=\"card-header payment-header\">\r\n <clr-icon shape=\"redo\" class=\"refund-icon\" dir=\"down\"></clr-icon>\r\n {{ 'order.refund' | translate }} #{{ refund.id }}\r\n <div class=\"clr-flex-fill\"></div>\r\n <vdr-refund-state-label [state]=\"refund.state\"></vdr-refund-state-label>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ refund.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refund-total' | translate\">\r\n {{ refund.total | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\" *ngIf=\"refund.transactionId\">\r\n {{ refund.transactionId }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refund-reason' | translate\" *ngIf=\"refund.reason\">\r\n {{ refund.reason }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refund-metadata' | translate\" *ngIf=\"refundHasMetadata(refund)\">\r\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\r\n </vdr-labeled-data>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"refund.state === 'Pending'\">\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"settleRefund.emit(refund)\">\r\n {{ 'order.settle-refund' | translate }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-footer\" *ngIf=\"payment.nextStates.length\">\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n *ngIf=\"payment.nextStates.includes('Settled')\"\r\n (click)=\"settlePayment.emit(payment)\"\r\n >\r\n {{ 'order.settle-payment' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n vdrDropdownItem\r\n (click)=\"transitionPaymentState.emit({ payment: payment, state: nextState })\"\r\n >\r\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{\r\n 'order.transition-to-state'\r\n | translate: { state: (nextState | stateI18nToken | translate) }\r\n }}\r\n </ng-container>\r\n <ng-template #cancel>\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n {{ 'order.cancel-payment' | translate }}\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n</div>\r\n",
2617
+ changeDetection: ChangeDetectionStrategy.OnPush,
2618
+ styles: [".payment-header{display:flex;justify-content:space-between;align-items:center}.refund-icon{margin-right:6px;color:var(--color-grey-400)}.card-footer{display:flex;align-items:center;justify-content:flex-end}\n"]
2619
+ },] }
2620
+ ];
2621
+ OrderPaymentCardComponent.propDecorators = {
2622
+ payment: [{ type: Input }],
2623
+ currencyCode: [{ type: Input }],
2624
+ settlePayment: [{ type: Output }],
2625
+ transitionPaymentState: [{ type: Output }],
2626
+ settleRefund: [{ type: Output }]
2627
+ };
2628
+
2629
+ const NODE_HEIGHT = 72;
2630
+
2631
+ class OrderProcessEdgeComponent {
2632
+ ngOnInit() {
2633
+ this.active$ = this.from.active$
2634
+ .asObservable()
2635
+ .pipe(tap((active) => this.to.activeTarget$.next(active)));
2636
+ }
2637
+ getStyle() {
2638
+ const direction = this.from.index < this.to.index ? 'down' : 'up';
2639
+ const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');
2640
+ const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');
2641
+ const dX = Math.abs(startPos.x - endPos.x);
2642
+ const dY = Math.abs(startPos.y - endPos.y);
2643
+ const length = Math.sqrt(Math.pow(dX, 2) + Math.pow(dY, 2));
2644
+ return Object.assign({ 'top.px': startPos.y, 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12, 'height.px': length, 'width.px': 1 }, (direction === 'up'
2645
+ ? {
2646
+ transform: 'rotateZ(180deg)',
2647
+ 'transform-origin': 'top',
2648
+ }
2649
+ : {}));
2650
+ }
2651
+ }
2652
+ OrderProcessEdgeComponent.decorators = [
2653
+ { type: Component, args: [{
2654
+ selector: 'vdr-order-process-edge',
2655
+ template: "<div\r\n [attr.data-from]=\"from.node.name\"\r\n [attr.data-to]=\"to.node.name\"\r\n [ngStyle]=\"getStyle()\"\r\n [class.active]=\"active$ | async\"\r\n class=\"edge\">\r\n <clr-icon shape=\"arrow\" flip=\"vertical\" class=\"arrow\"></clr-icon>\r\n</div>\r\n",
2656
+ changeDetection: ChangeDetectionStrategy.OnPush,
2657
+ styles: [".edge{position:absolute;border:1px solid var(--color-component-border-200);background-color:var(--color-component-bg-300);opacity:.3;transition:border .2s,opacity .2s,background-color .2s}.edge.active{border-color:var(--color-primary-500);background-color:var(--color-primary-500);opacity:1}.edge.active .arrow{color:var(--color-primary-500)}.edge .arrow{position:absolute;bottom:-4px;left:-8px;color:var(--color-grey-300)}\n"]
2658
+ },] }
2659
+ ];
2660
+ OrderProcessEdgeComponent.propDecorators = {
2661
+ from: [{ type: Input }],
2662
+ to: [{ type: Input }],
2663
+ index: [{ type: Input }]
2664
+ };
2665
+
2666
+ class OrderProcessNodeComponent {
2667
+ constructor(elementRef) {
2668
+ this.elementRef = elementRef;
2669
+ this.active$ = new BehaviorSubject(false);
2670
+ this.activeTarget$ = new BehaviorSubject(false);
2671
+ this.isCancellable = false;
2672
+ // We use a class field here to prevent the
2673
+ // i18n extractor from extracting a "Cancelled" key
2674
+ this.cancelledState = 'Cancelled';
2675
+ }
2676
+ ngOnChanges(changes) {
2677
+ this.isCancellable = !!this.node.to.find((s) => s.name === 'Cancelled');
2678
+ if (changes.active) {
2679
+ this.active$.next(this.active);
2680
+ }
2681
+ }
2682
+ getPos(origin = 'top') {
2683
+ var _a, _b;
2684
+ const rect = this.elementRef.nativeElement.getBoundingClientRect();
2685
+ const nodeHeight = (_b = (_a = this.elementRef.nativeElement.querySelector('.node')) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) !== null && _b !== void 0 ? _b : 0;
2686
+ return {
2687
+ x: 10,
2688
+ y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),
2689
+ };
2690
+ }
2691
+ getStyle() {
2692
+ const pos = this.getPos();
2693
+ return {
2694
+ 'top.px': pos.y,
2695
+ 'left.px': pos.x,
2696
+ };
2697
+ }
2698
+ }
2699
+ OrderProcessNodeComponent.decorators = [
2700
+ { type: Component, args: [{
2701
+ selector: 'vdr-order-process-node',
2702
+ template: "<div class=\"node-wrapper\" [ngStyle]=\"getStyle()\" [class.active]=\"active$ | async\">\r\n <div\r\n class=\"node\"\r\n [class.active-target]=\"activeTarget$ | async\"\r\n >\r\n {{ node.name | stateI18nToken | translate }}\r\n </div>\r\n <div class=\"cancelled-wrapper\" *ngIf=\"isCancellable\">\r\n <div class=\"cancelled-edge\">\r\n </div>\r\n <clr-icon shape=\"dot-circle\"></clr-icon>\r\n <div class=\"cancelled-node\">\r\n {{ cancelledState | stateI18nToken | translate }}\r\n </div>\r\n </div>\r\n</div>\r\n",
2703
+ changeDetection: ChangeDetectionStrategy.OnPush,
2704
+ styles: [":host{display:block}.node-wrapper{position:absolute;z-index:1;display:flex;align-items:center}.node{display:inline-block;border:2px solid var(--color-component-border-200);border-radius:3px;padding:3px 6px;z-index:1;background-color:var(--color-component-bg-100);opacity:.7;transition:opacity .2s,background-color .2s,color .2s;cursor:default}.node.active-target{border-color:var(--color-primary-500);opacity:.9}.cancelled-wrapper{display:flex;align-items:center;color:var(--color-grey-300);transition:color .2s,opacity .2s;opacity:.7}.cancelled-edge{width:48px;height:2px;background-color:var(--color-component-bg-300);transition:background-color .2s}clr-icon{margin-left:-1px}.cancelled-node{margin-left:6px}.active .cancelled-wrapper{opacity:1}.active .node{opacity:1;background-color:var(--color-primary-600);border-color:var(--color-primary-600);color:var(--color-primary-100)}.active .cancelled-wrapper{color:var(--color-error-500)}.active .cancelled-edge{background-color:var(--color-error-500)}\n"]
2705
+ },] }
2706
+ ];
2707
+ OrderProcessNodeComponent.ctorParameters = () => [
2708
+ { type: ElementRef }
2709
+ ];
2710
+ OrderProcessNodeComponent.propDecorators = {
2711
+ node: [{ type: Input }],
2712
+ index: [{ type: Input }],
2713
+ active: [{ type: Input }]
2714
+ };
2715
+
2716
+ class OrderProcessGraphComponent {
2717
+ constructor(changeDetector) {
2718
+ this.changeDetector = changeDetector;
2719
+ this.setActiveState$ = new BehaviorSubject(undefined);
2720
+ this.nodes = [];
2721
+ this.edges = [];
2722
+ }
2723
+ get outerHeight() {
2724
+ return this.nodes.length * NODE_HEIGHT;
2725
+ }
2726
+ ngOnInit() {
2727
+ this.setActiveState$.next(this.initialState);
2728
+ this.activeState$ = this.setActiveState$.pipe(debounceTime(150));
2729
+ }
2730
+ ngOnChanges(changes) {
2731
+ this.populateNodes();
2732
+ }
2733
+ ngAfterViewInit() {
2734
+ setTimeout(() => this.populateEdges());
2735
+ }
2736
+ onMouseOver(stateName) {
2737
+ this.setActiveState$.next(stateName);
2738
+ }
2739
+ onMouseOut() {
2740
+ this.setActiveState$.next(this.initialState);
2741
+ }
2742
+ getNodeFor(state) {
2743
+ if (this.nodeComponents) {
2744
+ return this.nodeComponents.find((n) => n.node.name === state);
2745
+ }
2746
+ }
2747
+ populateNodes() {
2748
+ var _a, _b;
2749
+ const stateNodeMap = new Map();
2750
+ for (const state of this.states) {
2751
+ stateNodeMap.set(state.name, {
2752
+ name: state.name,
2753
+ to: [],
2754
+ });
2755
+ }
2756
+ for (const [name, stateNode] of stateNodeMap.entries()) {
2757
+ const targets = (_b = (_a = this.states.find((s) => s.name === name)) === null || _a === void 0 ? void 0 : _a.to) !== null && _b !== void 0 ? _b : [];
2758
+ for (const target of targets) {
2759
+ const targetNode = stateNodeMap.get(target);
2760
+ if (targetNode) {
2761
+ stateNode.to.push(targetNode);
2762
+ }
2763
+ }
2764
+ }
2765
+ this.nodes = [...stateNodeMap.values()].filter((n) => n.name !== 'Cancelled');
2766
+ }
2767
+ populateEdges() {
2768
+ for (const node of this.nodes) {
2769
+ const nodeCmp = this.getNodeFor(node.name);
2770
+ let index = 0;
2771
+ for (const to of node.to) {
2772
+ const toCmp = this.getNodeFor(to.name);
2773
+ if (nodeCmp && toCmp && nodeCmp !== toCmp) {
2774
+ this.edges.push({
2775
+ to: toCmp,
2776
+ from: nodeCmp,
2777
+ index,
2778
+ });
2779
+ index++;
2780
+ }
2781
+ }
2782
+ }
2783
+ this.edges = [...this.edges];
2784
+ this.changeDetector.markForCheck();
2785
+ }
2786
+ }
2787
+ OrderProcessGraphComponent.decorators = [
2788
+ { type: Component, args: [{
2789
+ selector: 'vdr-order-process-graph',
2790
+ template: "<ng-container *ngFor=\"let state of nodes; let i = index\">\r\n <vdr-order-process-node\r\n [node]=\"state\"\r\n [index]=\"i\"\r\n [active]=\"(activeState$ | async) === state.name\"\r\n (mouseenter)=\"onMouseOver(state.name)\"\r\n (mouseleave)=\"onMouseOut()\"\r\n ></vdr-order-process-node>\r\n</ng-container>\r\n<ng-container *ngFor=\"let edge of edges\">\r\n <vdr-order-process-edge [from]=\"edge.from\" [to]=\"edge.to\" [index]=\"edge.index\"></vdr-order-process-edge>\r\n</ng-container>\r\n",
2791
+ changeDetection: ChangeDetectionStrategy.OnPush,
2792
+ styles: [":host{display:block;border:1px hotpink;margin:20px;padding:12px;position:relative}.state-row{display:flex}\n"]
2793
+ },] }
2794
+ ];
2795
+ OrderProcessGraphComponent.ctorParameters = () => [
2796
+ { type: ChangeDetectorRef }
2797
+ ];
2798
+ OrderProcessGraphComponent.propDecorators = {
2799
+ states: [{ type: Input }],
2800
+ initialState: [{ type: Input }],
2801
+ nodeComponents: [{ type: ViewChildren, args: [OrderProcessNodeComponent,] }],
2802
+ outerHeight: [{ type: HostBinding, args: ['style.height.px',] }]
2803
+ };
2804
+
2805
+ class OrderTableComponent {
2806
+ constructor() {
2807
+ this.isDraft = false;
2808
+ this.adjust = new EventEmitter();
2809
+ this.remove = new EventEmitter();
2810
+ this.orderLineCustomFieldsVisible = false;
2811
+ this.customFieldsForLine = {};
2812
+ }
2813
+ get visibleOrderLineCustomFields() {
2814
+ return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];
2815
+ }
2816
+ get showElided() {
2817
+ return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;
2818
+ }
2819
+ ngOnInit() {
2820
+ this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;
2821
+ this.getLineCustomFields();
2822
+ }
2823
+ draftInputBlur(line, quantity) {
2824
+ if (line.quantity !== quantity) {
2825
+ this.adjust.emit({ lineId: line.id, quantity });
2826
+ }
2827
+ }
2828
+ toggleOrderLineCustomFields() {
2829
+ this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;
2830
+ }
2831
+ getLineDiscounts(line) {
2832
+ return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);
2833
+ }
2834
+ getLineCustomFields() {
2835
+ for (const line of this.order.lines) {
2836
+ const formGroup = new FormGroup({});
2837
+ const result = this.orderLineCustomFields
2838
+ .map(config => {
2839
+ const value = line.customFields[config.name];
2840
+ formGroup.addControl(config.name, new FormControl(value));
2841
+ return {
2842
+ config,
2843
+ formGroup,
2844
+ value,
2845
+ };
2846
+ })
2847
+ .filter(field => {
2848
+ return this.orderLineCustomFieldsVisible ? true : field.value != null;
2849
+ });
2850
+ this.customFieldsForLine[line.id] = result;
2851
+ }
2852
+ }
2853
+ getPromotionLink(promotion) {
2854
+ const id = promotion.adjustmentSource.split(':')[1];
2855
+ return ['/marketing', 'promotions', id];
2856
+ }
2857
+ getCouponCodeForAdjustment(order, promotionAdjustment) {
2858
+ const id = promotionAdjustment.adjustmentSource.split(':')[1];
2859
+ const promotion = order.promotions.find(p => p.id === id);
2860
+ if (promotion) {
2861
+ return promotion.couponCode || undefined;
2862
+ }
2863
+ }
2864
+ getShippingNames(order) {
2865
+ if (order.shippingLines.length) {
2866
+ return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');
2867
+ }
2868
+ else {
2869
+ return '';
2870
+ }
2871
+ }
2872
+ }
2873
+ OrderTableComponent.decorators = [
2874
+ { type: Component, args: [{
2875
+ selector: 'vdr-order-table',
2876
+ template: "<table class=\"order-table table\">\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 <tbody>\r\n <ng-container *ngFor=\"let line of order.lines\">\r\n <tr class=\"order-line\" [class.is-cancelled]=\"line.quantity === 0\">\r\n <td class=\"align-middle thumb\">\r\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n {{ line.quantity }}\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment [line]=\"line\" [orderState]=\"order.state\"></vdr-line-fulfillment>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{ line.linePriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"customFieldsForLine[line.id] as customFields\">\r\n <tr *ngIf=\"customFields.length\">\r\n <td colspan=\"6\" class=\"custom-fields-row\">\r\n <div class=\"order-line-custom-fields\">\r\n <div class=\"custom-field\" *ngFor=\"let field of customFields\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [readonly]=\"true\"\r\n [customField]=\"field.config\"\r\n [customFieldsFormGroup]=\"field.formGroup\"\r\n ></vdr-custom-field-control>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" colspan=\"2\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td colspan=\"5\" class=\"left clr-align-middle\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.sub-total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">{{ getShippingNames(order) }}</td>\r\n <td colspan=\"3\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n",
2877
+ changeDetection: ChangeDetectionStrategy.OnPush,
2878
+ styles: [".order-table .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.order-table .sub-total td{border-top:1px dashed var(--color-component-border-200)}.order-table .total td{font-weight:bold;border-top:1px dashed var(--color-component-border-200)}.order-table td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}.order-table img{border-radius:var(--border-radius-img)}.order-table .order-line-custom-fields{display:flex;flex-wrap:wrap}.order-table .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-right:18px}.order-table .draft-qty{max-width:48px}.order-table .order-line-custom-field{background-color:var(--color-component-bg-100)}.order-table .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}.order-table .net-price{font-size:11px;color:var(--color-text-300)}.order-table .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}.order-table .thumb img{width:50px;height:50px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-left:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"]
2879
+ },] }
2880
+ ];
2881
+ OrderTableComponent.propDecorators = {
2882
+ order: [{ type: Input }],
2883
+ orderLineCustomFields: [{ type: Input }],
2884
+ isDraft: [{ type: Input }],
2885
+ adjust: [{ type: Output }],
2886
+ remove: [{ type: Output }]
2887
+ };
2888
+
2889
+ class PaymentDetailComponent {
2890
+ }
2891
+ PaymentDetailComponent.decorators = [
2892
+ { type: Component, args: [{
2893
+ selector: 'vdr-payment-detail',
2894
+ template: "<vdr-labeled-data [label]=\"'order.payment-method' | translate\">\r\n {{ payment.method }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.amount' | translate\">\r\n {{ payment.amount | localeCurrency: currencyCode }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"payment.errorMessage\" [label]=\"'order.error-message' | translate\">\r\n {{ payment.errorMessage }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"payment.transactionId\" [label]=\"'order.transaction-id' | translate\">\r\n {{ payment.transactionId }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\r\n <vdr-object-tree [value]=\"payment.metadata\"></vdr-object-tree>\r\n</vdr-labeled-data>\r\n",
2895
+ changeDetection: ChangeDetectionStrategy.OnPush,
2896
+ styles: [""]
2897
+ },] }
2898
+ ];
2899
+ PaymentDetailComponent.propDecorators = {
2900
+ payment: [{ type: Input }],
2901
+ currencyCode: [{ type: Input }]
2902
+ };
2903
+
2904
+ class PaymentStateLabelComponent {
2905
+ get chipColorType() {
2906
+ switch (this.state) {
2907
+ case 'Authorized':
2908
+ return 'warning';
2909
+ case 'Settled':
2910
+ return 'success';
2911
+ case 'Declined':
2912
+ case 'Cancelled':
2913
+ return 'error';
2914
+ }
2915
+ }
2916
+ }
2917
+ PaymentStateLabelComponent.decorators = [
2918
+ { type: Component, args: [{
2919
+ selector: 'vdr-payment-state-label',
2920
+ template: "<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n",
2921
+ changeDetection: ChangeDetectionStrategy.OnPush,
2922
+ styles: [":host{font-size:14px}\n"]
2923
+ },] }
2924
+ ];
2925
+ PaymentStateLabelComponent.propDecorators = {
2926
+ state: [{ type: Input }]
2927
+ };
2928
+
2929
+ class RefundStateLabelComponent {
2930
+ get chipColorType() {
2931
+ switch (this.state) {
2932
+ case 'Pending':
2933
+ return 'warning';
2934
+ case 'Settled':
2935
+ return 'success';
2936
+ case 'Failed':
2937
+ return 'error';
2938
+ }
2939
+ }
2940
+ }
2941
+ RefundStateLabelComponent.decorators = [
2942
+ { type: Component, args: [{
2943
+ selector: 'vdr-refund-state-label',
2944
+ template: "<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n",
2945
+ changeDetection: ChangeDetectionStrategy.OnPush,
2946
+ styles: [":host{font-size:14px}\n"]
2947
+ },] }
2948
+ ];
2949
+ RefundStateLabelComponent.propDecorators = {
2950
+ state: [{ type: Input }]
2951
+ };
2952
+
2953
+ class SimpleItemListComponent {
2954
+ }
2955
+ SimpleItemListComponent.decorators = [
2956
+ { type: Component, args: [{
2957
+ selector: 'vdr-simple-item-list',
2958
+ template: "<div class=\"items-list\">\r\n <ul>\r\n <li *ngFor=\"let item of items\" [title]=\"item.name\">\r\n <div class=\"quantity\">{{ item.quantity }}</div>\r\n <clr-icon shape=\"times\" size=\"12\"></clr-icon>\r\n {{ item.name }}\r\n </li>\r\n </ul>\r\n</div>\r\n",
2959
+ changeDetection: ChangeDetectionStrategy.OnPush,
2960
+ styles: [".items-list{font-size:12px}.items-list ul{margin-top:6px;list-style-type:none;margin-left:2px}.items-list ul li{line-height:14px;text-overflow:ellipsis;overflow:hidden}.items-list .quantity{min-width:16px;display:inline-block}\n"]
2961
+ },] }
2962
+ ];
2963
+ SimpleItemListComponent.propDecorators = {
2964
+ items: [{ type: Input }]
2965
+ };
2966
+
2967
+ /**
2968
+ * Resolves the id from the path into a Customer entity.
2969
+ */
2970
+ class OrderResolver {
2971
+ constructor(router, dataService) {
2972
+ this.router = router;
2973
+ this.dataService = dataService;
2974
+ }
2975
+ /** @internal */
2976
+ resolve(route, state) {
2977
+ const id = route.paramMap.get('id');
2978
+ // Complete the entity stream upon navigating away
2979
+ const navigateAway$ = this.router.events.pipe(filter(event => event instanceof ActivationStart));
2980
+ const stream = this.dataService.order
2981
+ .getOrder(id)
2982
+ .mapStream(data => data.order)
2983
+ .pipe(switchMap(order => {
2984
+ if ((order === null || order === void 0 ? void 0 : order.state) === 'Draft' && route.component !== DraftOrderDetailComponent) {
2985
+ // Make sure Draft orders only get displayed with the DraftOrderDetailComponent
2986
+ this.router.navigate(['/orders/draft', id]);
2987
+ return EMPTY;
2988
+ }
2989
+ else {
2990
+ return [order];
2991
+ }
2992
+ }), takeUntil(navigateAway$), filter(notNullOrUndefined), shareReplay(1));
2993
+ return stream.pipe(take(1), map(() => stream));
2994
+ }
2995
+ }
2996
+ OrderResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function OrderResolver_Factory() { return new OrderResolver(i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(i1.DataService)); }, token: OrderResolver, providedIn: "root" });
2997
+ OrderResolver.decorators = [
2998
+ { type: Injectable, args: [{
2999
+ providedIn: 'root',
3000
+ },] }
3001
+ ];
3002
+ OrderResolver.ctorParameters = () => [
3003
+ { type: Router },
3004
+ { type: DataService }
3005
+ ];
3006
+
3007
+ class OrderGuard {
3008
+ constructor(dataService, router) {
3009
+ this.dataService = dataService;
3010
+ this.router = router;
3011
+ }
3012
+ canActivate(route, state) {
3013
+ const isDraft = state.url.includes('orders/draft');
3014
+ const id = route.paramMap.get('id');
3015
+ if (isDraft) {
3016
+ if (id === 'create') {
3017
+ return this.dataService.order
3018
+ .createDraftOrder()
3019
+ .pipe(map(({ createDraftOrder }) => this.router.parseUrl(`/orders/draft/${createDraftOrder.id}`)));
3020
+ }
3021
+ else {
3022
+ return true;
3023
+ }
3024
+ }
3025
+ else {
3026
+ return true;
3027
+ }
3028
+ }
3029
+ }
3030
+ OrderGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function OrderGuard_Factory() { return new OrderGuard(i0.ɵɵinject(i1.DataService), i0.ɵɵinject(i1$1.Router)); }, token: OrderGuard, providedIn: "root" });
3031
+ OrderGuard.decorators = [
3032
+ { type: Injectable, args: [{
3033
+ providedIn: 'root',
3034
+ },] }
3035
+ ];
3036
+ OrderGuard.ctorParameters = () => [
3037
+ { type: DataService },
3038
+ { type: Router }
3039
+ ];
3040
+
3041
+ const ɵ0 = {
3042
+ breadcrumb: marker('breadcrumb.orders'),
3043
+ }, ɵ1 = {
3044
+ breadcrumb: orderBreadcrumb,
3045
+ }, ɵ2 = {
3046
+ breadcrumb: orderBreadcrumb,
3047
+ }, ɵ3 = {
3048
+ breadcrumb: modifyingOrderBreadcrumb,
3049
+ };
3050
+ const orderRoutes = [
3051
+ {
3052
+ path: '',
3053
+ component: OrderListComponent,
3054
+ data: ɵ0,
3055
+ },
3056
+ {
3057
+ path: 'draft/:id',
3058
+ component: DraftOrderDetailComponent,
3059
+ resolve: {
3060
+ entity: OrderResolver,
3061
+ },
3062
+ canActivate: [OrderGuard],
3063
+ canDeactivate: [CanDeactivateDetailGuard],
3064
+ data: ɵ1,
3065
+ },
3066
+ {
3067
+ path: ':id',
3068
+ component: OrderDetailComponent,
3069
+ resolve: {
3070
+ entity: OrderResolver,
3071
+ },
3072
+ canActivate: [OrderGuard],
3073
+ canDeactivate: [CanDeactivateDetailGuard],
3074
+ data: ɵ2,
3075
+ },
3076
+ {
3077
+ path: ':id/modify',
3078
+ component: OrderEditorComponent,
3079
+ resolve: {
3080
+ entity: OrderResolver,
3081
+ },
3082
+ // canDeactivate: [CanDeactivateDetailGuard],
3083
+ data: ɵ3,
3084
+ },
3085
+ ];
3086
+ function orderBreadcrumb(data, params) {
3087
+ return detailBreadcrumb({
3088
+ entity: data.entity,
3089
+ id: params.id,
3090
+ breadcrumbKey: 'breadcrumb.orders',
3091
+ getName: order => order.code,
3092
+ route: '',
3093
+ });
3094
+ }
3095
+ function modifyingOrderBreadcrumb(data, params) {
3096
+ return orderBreadcrumb(data, params).pipe(map((breadcrumbs) => {
3097
+ const modifiedBreadcrumbs = breadcrumbs.slice();
3098
+ modifiedBreadcrumbs[0].link[0] = '../';
3099
+ modifiedBreadcrumbs[1].link[0] = '../orders';
3100
+ return modifiedBreadcrumbs.concat({ label: marker('breadcrumb.modifying'), link: [''] });
3101
+ }));
3102
+ }
3103
+
3104
+ class OrderModule {
3105
+ }
3106
+ OrderModule.decorators = [
3107
+ { type: NgModule, args: [{
3108
+ imports: [SharedModule, RouterModule.forChild(orderRoutes)],
3109
+ declarations: [
3110
+ OrderListComponent,
3111
+ OrderDetailComponent,
3112
+ FulfillOrderDialogComponent,
3113
+ LineFulfillmentComponent,
3114
+ RefundOrderDialogComponent,
3115
+ CancelOrderDialogComponent,
3116
+ PaymentStateLabelComponent,
3117
+ LineRefundsComponent,
3118
+ OrderPaymentCardComponent,
3119
+ RefundStateLabelComponent,
3120
+ SettleRefundDialogComponent,
3121
+ OrderHistoryComponent,
3122
+ FulfillmentDetailComponent,
3123
+ PaymentDetailComponent,
3124
+ SimpleItemListComponent,
3125
+ OrderCustomFieldsCardComponent,
3126
+ OrderProcessGraphComponent,
3127
+ OrderProcessNodeComponent,
3128
+ OrderProcessEdgeComponent,
3129
+ OrderProcessGraphDialogComponent,
3130
+ FulfillmentStateLabelComponent,
3131
+ FulfillmentCardComponent,
3132
+ OrderEditorComponent,
3133
+ OrderTableComponent,
3134
+ OrderEditsPreviewDialogComponent,
3135
+ ModificationDetailComponent,
3136
+ AddManualPaymentDialogComponent,
3137
+ OrderStateSelectDialogComponent,
3138
+ DraftOrderDetailComponent,
3139
+ DraftOrderVariantSelectorComponent,
3140
+ SelectCustomerDialogComponent,
3141
+ SelectAddressDialogComponent,
3142
+ CouponCodeSelectorComponent,
3143
+ SelectShippingMethodDialogComponent,
3144
+ ],
3145
+ },] }
3146
+ ];
3147
+
3148
+ // This file was generated by the build-public-api.ts script
3149
+
3150
+ /**
3151
+ * Generated bundle index. Do not edit.
3152
+ */
3153
+
3154
+ export { AddManualPaymentDialogComponent, CancelOrderDialogComponent, CouponCodeSelectorComponent, DraftOrderDetailComponent, DraftOrderVariantSelectorComponent, FulfillOrderDialogComponent, FulfillmentCardComponent, FulfillmentDetailComponent, FulfillmentStateLabelComponent, GET_CUSTOMER_ADDRESSES, LineFulfillmentComponent, LineRefundsComponent, ModificationDetailComponent, NODE_HEIGHT, OrderCustomFieldsCardComponent, OrderDetailComponent, OrderEditResultType, OrderEditorComponent, OrderEditsPreviewDialogComponent, OrderGuard, OrderHistoryComponent, OrderListComponent, OrderModule, OrderPaymentCardComponent, OrderProcessEdgeComponent, OrderProcessGraphComponent, OrderProcessGraphDialogComponent, OrderProcessNodeComponent, OrderResolver, OrderStateSelectDialogComponent, OrderTableComponent, OrderTransitionService, PaymentDetailComponent, PaymentStateLabelComponent, RefundOrderDialogComponent, RefundStateLabelComponent, SelectAddressDialogComponent, SelectCustomerDialogComponent, SelectShippingMethodDialogComponent, SettleRefundDialogComponent, SimpleItemListComponent, modifyingOrderBreadcrumb, orderBreadcrumb, orderRoutes, ɵ0, ɵ1, ɵ2, ɵ3 };
3155
+ //# sourceMappingURL=vendure-admin-ui-order.js.map