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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/catalog/components/product-variant-list/product-variant-list-bulk-actions.d.ts +1 -0
  2. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
  3. package/core/common/base-list.component.d.ts +1 -1
  4. package/core/common/component-registry-types.d.ts +1 -1
  5. package/core/common/generated-types.d.ts +174 -4817
  6. package/core/common/version.d.ts +1 -1
  7. package/core/data/server-config.d.ts +4 -3
  8. package/core/data/utils/add-custom-fields.d.ts +2 -2
  9. package/core/extension/register-route-component.d.ts +1 -1
  10. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +0 -2
  11. package/core/shared/components/form-field/form-field-control.directive.d.ts +1 -1
  12. package/core/shared/components/form-field/form-field.component.d.ts +3 -2
  13. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  14. package/core/shared/components/page-title/page-title.component.d.ts +2 -3
  15. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  16. package/esm2022/catalog/catalog.module.mjs +3 -2
  17. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +1 -1
  18. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +1 -1
  19. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +1 -1
  20. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +3 -3
  21. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +2 -2
  22. package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +1 -1
  23. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +1 -1
  24. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +1 -1
  25. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +1 -1
  26. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +1 -1
  27. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +1 -1
  28. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +1 -1
  29. package/esm2022/catalog/components/product-list/product-list-bulk-actions.mjs +1 -2
  30. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +1 -1
  31. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +1 -1
  32. package/esm2022/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +33 -2
  33. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +1 -1
  34. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +1 -1
  35. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +1 -1
  36. package/esm2022/core/common/base-list.component.mjs +1 -1
  37. package/esm2022/core/common/component-registry-types.mjs +1 -1
  38. package/esm2022/core/common/generated-types.mjs +23 -19
  39. package/esm2022/core/common/introspection-result.mjs +4 -1
  40. package/esm2022/core/common/version.mjs +2 -2
  41. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +1 -1
  42. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +1 -1
  43. package/esm2022/core/core.module.mjs +2 -2
  44. package/esm2022/core/data/definitions/order-definitions.mjs +5 -1
  45. package/esm2022/core/data/definitions/settings-definitions.mjs +4 -81
  46. package/esm2022/core/data/providers/base-data.service.mjs +2 -2
  47. package/esm2022/core/data/server-config.mjs +6 -2
  48. package/esm2022/core/data/utils/add-custom-fields.mjs +2 -2
  49. package/esm2022/core/shared/components/address-form/address-form.component.mjs +1 -1
  50. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +1 -1
  51. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +1 -1
  52. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +1 -1
  53. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
  54. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +2 -2
  55. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +3 -6
  56. package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
  57. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +4 -1
  58. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +1 -1
  59. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +1 -1
  60. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +1 -1
  61. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +1 -1
  62. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +1 -1
  63. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +1 -1
  64. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +1 -1
  65. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +1 -1
  66. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +3 -3
  67. package/esm2022/core/shared/components/form-field/form-field.component.mjs +8 -4
  68. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +1 -1
  69. package/esm2022/core/shared/components/page-title/page-title.component.mjs +5 -6
  70. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +1 -1
  71. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +1 -1
  72. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +1 -1
  73. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +2 -2
  74. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +1 -1
  75. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +4 -3
  76. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +1 -1
  77. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +1 -1
  78. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +1 -1
  79. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +1 -1
  80. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +1 -1
  81. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +1 -1
  82. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +1 -1
  83. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +1 -1
  84. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +1 -1
  85. package/esm2022/customer/components/customer-history/customer-history.component.mjs +3 -3
  86. package/esm2022/login/components/login/login.component.mjs +1 -1
  87. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +1 -1
  88. package/esm2022/order/common/get-refundable-payments.mjs +19 -0
  89. package/esm2022/order/common/modify-order-types.mjs +2 -0
  90. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +1 -1
  91. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +1 -1
  92. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +3 -3
  93. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +1 -1
  94. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +1 -1
  95. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +17 -6
  96. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +1 -1
  97. package/esm2022/order/components/order-detail/order-detail.component.mjs +77 -29
  98. package/esm2022/order/components/order-editor/order-editor.component.mjs +201 -98
  99. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +45 -7
  100. package/esm2022/order/components/order-history/order-history.component.mjs +22 -6
  101. package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +76 -0
  102. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +3 -3
  103. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +1 -1
  104. package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
  105. package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +24 -0
  106. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +2 -2
  107. package/esm2022/order/components/refund-detail/refund-detail.component.mjs +18 -0
  108. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +99 -57
  109. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +2 -2
  110. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +14 -8
  111. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +1 -1
  112. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +3 -3
  113. package/esm2022/order/order.module.mjs +32 -2
  114. package/esm2022/order/order.routes.mjs +7 -53
  115. package/esm2022/order/providers/routing/order.guard.mjs +22 -2
  116. package/esm2022/order/public_api.mjs +6 -2
  117. package/esm2022/react/components/react-custom-column.component.mjs +3 -3
  118. package/esm2022/react/components/react-custom-detail.component.mjs +3 -3
  119. package/esm2022/react/components/react-form-input.component.mjs +3 -3
  120. package/esm2022/react/components/react-route.component.mjs +3 -3
  121. package/esm2022/react/react-hooks/use-form-control.mjs +1 -1
  122. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +1 -1
  123. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +1 -1
  124. package/esm2022/settings/components/country-detail/country-detail.component.mjs +1 -1
  125. package/esm2022/settings/components/global-settings/global-settings.component.mjs +1 -1
  126. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +1 -1
  127. package/esm2022/settings/components/profile/profile.component.mjs +1 -1
  128. package/esm2022/settings/components/role-detail/role-detail.component.mjs +1 -1
  129. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +1 -1
  130. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +1 -1
  131. package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +1 -1
  132. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +1 -1
  133. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +1 -1
  134. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +1 -1
  135. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +1 -1
  136. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +1 -1
  137. package/esm2022/system/components/job-list/job-list.component.mjs +1 -1
  138. package/fesm2022/vendure-admin-ui-catalog.mjs +50 -20
  139. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  140. package/fesm2022/vendure-admin-ui-core.mjs +89 -149
  141. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  142. package/fesm2022/vendure-admin-ui-customer.mjs +5 -5
  143. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  144. package/fesm2022/vendure-admin-ui-login.mjs +1 -1
  145. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  146. package/fesm2022/vendure-admin-ui-marketing.mjs +1 -1
  147. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  148. package/fesm2022/vendure-admin-ui-order.mjs +660 -323
  149. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  150. package/fesm2022/vendure-admin-ui-react.mjs +8 -8
  151. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  152. package/fesm2022/vendure-admin-ui-settings.mjs +15 -15
  153. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  154. package/fesm2022/vendure-admin-ui-system.mjs +1 -1
  155. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  156. package/order/common/get-refundable-payments.d.ts +9 -0
  157. package/order/common/modify-order-types.d.ts +29 -0
  158. package/order/components/modification-detail/modification-detail.component.d.ts +4 -0
  159. package/order/components/order-detail/order-detail.component.d.ts +2 -0
  160. package/order/components/order-editor/order-editor.component.d.ts +57 -33
  161. package/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +17 -6
  162. package/order/components/order-history/order-history.component.d.ts +6 -2
  163. package/order/components/order-modification-summary/order-modification-summary.component.d.ts +19 -0
  164. package/order/components/payment-for-refund-selector/payment-for-refund-selector.component.d.ts +14 -0
  165. package/order/components/refund-detail/refund-detail.component.d.ts +8 -0
  166. package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +13 -11
  167. package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +9 -2
  168. package/order/components/simple-item-list/simple-item-list.component.d.ts +1 -1
  169. package/order/order.module.d.ts +6 -3
  170. package/order/order.routes.d.ts +0 -2
  171. package/order/providers/routing/order.guard.d.ts +1 -0
  172. package/order/public_api.d.ts +5 -1
  173. package/package.json +14 -14
  174. package/static/i18n-messages/ar.json +14 -5
  175. package/static/i18n-messages/cs.json +14 -5
  176. package/static/i18n-messages/de.json +14 -5
  177. package/static/i18n-messages/en.json +14 -5
  178. package/static/i18n-messages/es.json +14 -5
  179. package/static/i18n-messages/fa.json +14 -5
  180. package/static/i18n-messages/fr.json +14 -5
  181. package/static/i18n-messages/he.json +14 -5
  182. package/static/i18n-messages/hr.json +14 -5
  183. package/static/i18n-messages/it.json +14 -5
  184. package/static/i18n-messages/nb.json +15 -7
  185. package/static/i18n-messages/ne.json +14 -5
  186. package/static/i18n-messages/pl.json +14 -5
  187. package/static/i18n-messages/pt_BR.json +15 -7
  188. package/static/i18n-messages/pt_PT.json +14 -5
  189. package/static/i18n-messages/ru.json +14 -5
  190. package/static/i18n-messages/uk.json +179 -170
  191. package/static/i18n-messages/zh_Hans.json +14 -5
  192. package/static/i18n-messages/zh_Hant.json +14 -5
  193. package/static/styles/global/_utilities.scss +4 -0
  194. package/static/styles/theme/dark.scss +4 -2
  195. package/static/styles/theme/default.scss +1 -2
  196. package/static/theme.min.css +1 -1
  197. package/esm2022/order/providers/routing/order-resolver.mjs +0 -48
  198. package/order/providers/routing/order-resolver.d.ts +0 -16
@@ -117,7 +117,7 @@ class JobListComponent extends BaseListComponent {
117
117
  this.dataService.settings.cancelJob(id).subscribe(() => this.refresh());
118
118
  }
119
119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: JobListComponent, deps: [{ token: i1.DataService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: JobListComponent, selector: "vdr-job-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <clr-checkbox-wrapper class=\"mr-2\">\r\n <input type=\"checkbox\" clrCheckbox [formControl]=\"liveUpdate\" name=\"live-update\" />\r\n <label>{{ 'common.live-update' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"job-list\"></vdr-action-bar-items>\r\n <ng-select\r\n class=\"mr-2\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [formControl]=\"stateFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-option [value]=\"''\">\r\n <vdr-chip>{{ 'system.job-state-all' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'PENDING'\">\r\n <vdr-chip>{{ 'system.job-state-pending' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'RUNNING'\">\r\n <vdr-chip colorType=\"warning\">{{ 'system.job-state-running' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'COMPLETED'\">\r\n <vdr-chip colorType=\"success\">{{ 'system.job-state-completed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'FAILED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-failed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'CANCELLED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-cancelled' | translate }}</vdr-chip>\r\n </ng-option>\r\n </ng-select>\r\n <ng-select\r\n [addTag]=\"false\"\r\n [items]=\"queues$ | async\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n bindValue=\"name\"\r\n [formControl]=\"queueFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-template ng-label-tmp ng-option-tmp let-item=\"item\">\r\n <ng-container *ngIf=\"item.name === 'all'; else others\">\r\n <vdr-chip>{{ 'system.all-job-queues' | translate }}</vdr-chip>\r\n </ng-container>\r\n <ng-template #others>\r\n <vdr-chip [colorFrom]=\"item.name\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n </ng-select>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n\r\n <vdr-data-table-2\r\n id=\"job-list\"\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-dt2-column [heading]=\"'common.id' | translate\" id=\"id\">\r\n <ng-template let-job=\"item\">\r\n {{ job.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\">\r\n <ng-template let-job=\"item\">\r\n {{ job.createdAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-queue-name' | translate\" id=\"job-queue-name\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-chip [colorFrom]=\"job.queueName\">{{ job.queueName }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-data' | translate\" id=\"job-data\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"job.data\">\r\n <button\r\n class=\"button-small\"\r\n vdrDropdownTrigger\r\n [title]=\"'system.job-data' | translate\"\r\n >\r\n <clr-icon shape=\"details\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.data\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-state' | translate\" id=\"job-state\">\r\n <ng-template let-job=\"item\">\r\n <vdr-job-state-label [job]=\"job\"></vdr-job-state-label>\r\n <div *ngIf=\"job.state === 'FAILED'\" class=\"retry-info\">after {{ job.attempts }} attempts</div>\r\n <div *ngIf=\"job.state === 'RUNNING' || job.state === 'RETRYING'\" class=\"retry-info\">\r\n attempting {{ job.attempts }} of {{ job.retries + 1 }}\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-duration' | translate\" id=\"job-duration\">\r\n <ng-template let-job=\"item\">\r\n {{ job.duration | duration }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-result' | translate\" id=\"job-result\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"hasResult(job)\">\r\n <button class=\"button-small mr-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\"></clr-icon>\r\n {{ 'system.job-result' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.result\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"job.error\">\r\n <button class=\"button-small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.job-error' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n {{ job.error }}\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"!job.isSettled && job.state !== 'FAILED'\">\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"cancelJob(job.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteSystem'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"ban\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n</vdr-page-body>\r\n", styles: [".result-detail{margin:0 12px}.retry-info{margin-inline-start:6px;color:var(--color-grey-400)}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i6.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i6.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i1.ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.PageHeaderComponent, selector: "vdr-page-header" }, { kind: "component", type: i1.PageTitleComponent, selector: "vdr-page-title", inputs: ["title"] }, { kind: "component", type: i1.PageBodyComponent, selector: "vdr-page-body" }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: JobStateLabelComponent, selector: "vdr-job-state-label", inputs: ["job"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.DurationPipe, name: "duration" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: JobListComponent, selector: "vdr-job-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <clr-checkbox-wrapper class=\"mr-2\">\r\n <input type=\"checkbox\" clrCheckbox [formControl]=\"liveUpdate\" name=\"live-update\" />\r\n <label>{{ 'common.live-update' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"job-list\"></vdr-action-bar-items>\r\n <ng-select\r\n class=\"mr-2\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [formControl]=\"stateFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-option [value]=\"''\">\r\n <vdr-chip>{{ 'system.job-state-all' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'PENDING'\">\r\n <vdr-chip>{{ 'system.job-state-pending' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'RUNNING'\">\r\n <vdr-chip colorType=\"warning\">{{ 'system.job-state-running' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'COMPLETED'\">\r\n <vdr-chip colorType=\"success\">{{ 'system.job-state-completed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'FAILED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-failed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'CANCELLED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-cancelled' | translate }}</vdr-chip>\r\n </ng-option>\r\n </ng-select>\r\n <ng-select\r\n [addTag]=\"false\"\r\n [items]=\"queues$ | async\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n bindValue=\"name\"\r\n [formControl]=\"queueFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-template ng-label-tmp ng-option-tmp let-item=\"item\">\r\n <ng-container *ngIf=\"item.name === 'all'; else others\">\r\n <vdr-chip>{{ 'system.all-job-queues' | translate }}</vdr-chip>\r\n </ng-container>\r\n <ng-template #others>\r\n <vdr-chip [colorFrom]=\"item.name\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n </ng-select>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n\r\n <vdr-data-table-2\r\n id=\"job-list\"\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-dt2-column [heading]=\"'common.id' | translate\" id=\"id\">\r\n <ng-template let-job=\"item\">\r\n {{ job.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\">\r\n <ng-template let-job=\"item\">\r\n {{ job.createdAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-queue-name' | translate\" id=\"job-queue-name\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-chip [colorFrom]=\"job.queueName\">{{ job.queueName }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-data' | translate\" id=\"job-data\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"job.data\">\r\n <button\r\n class=\"button-small\"\r\n vdrDropdownTrigger\r\n [title]=\"'system.job-data' | translate\"\r\n >\r\n <clr-icon shape=\"details\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.data\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-state' | translate\" id=\"job-state\">\r\n <ng-template let-job=\"item\">\r\n <vdr-job-state-label [job]=\"job\"></vdr-job-state-label>\r\n <div *ngIf=\"job.state === 'FAILED'\" class=\"retry-info\">after {{ job.attempts }} attempts</div>\r\n <div *ngIf=\"job.state === 'RUNNING' || job.state === 'RETRYING'\" class=\"retry-info\">\r\n attempting {{ job.attempts }} of {{ job.retries + 1 }}\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-duration' | translate\" id=\"job-duration\">\r\n <ng-template let-job=\"item\">\r\n {{ job.duration | duration }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-result' | translate\" id=\"job-result\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"hasResult(job)\">\r\n <button class=\"button-small mr-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\"></clr-icon>\r\n {{ 'system.job-result' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.result\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"job.error\">\r\n <button class=\"button-small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.job-error' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n {{ job.error }}\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"!job.isSettled && job.state !== 'FAILED'\">\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"cancelJob(job.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteSystem'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"ban\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n</vdr-page-body>\r\n", styles: [".result-detail{margin:0 12px}.retry-info{margin-inline-start:6px;color:var(--color-grey-400)}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i6.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i6.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i1.ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.PageHeaderComponent, selector: "vdr-page-header" }, { kind: "component", type: i1.PageTitleComponent, selector: "vdr-page-title", inputs: ["title"] }, { kind: "component", type: i1.PageBodyComponent, selector: "vdr-page-body" }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: JobStateLabelComponent, selector: "vdr-job-state-label", inputs: ["job"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.DurationPipe, name: "duration" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
121
121
  }
122
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: JobListComponent, decorators: [{
123
123
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"vendure-admin-ui-system.mjs","sources":["../../src/lib/system/src/components/health-check/health-check.component.ts","../../src/lib/system/src/components/health-check/health-check.component.html","../../src/lib/system/src/components/job-state-label/job-state-label.component.ts","../../src/lib/system/src/components/job-state-label/job-state-label.component.html","../../src/lib/system/src/components/job-list/job-list.component.ts","../../src/lib/system/src/components/job-list/job-list.component.html","../../src/lib/system/src/system.routes.ts","../../src/lib/system/src/system.module.ts","../../src/lib/system/src/public_api.ts","../../src/lib/system/src/vendure-admin-ui-system.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { HealthCheckService } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-health-check',\r\n templateUrl: './health-check.component.html',\r\n styleUrls: ['./health-check.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class HealthCheckComponent {\r\n constructor(public healthCheckService: HealthCheckService) {}\r\n}\r\n","<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"system-status-header\" *ngIf=\"healthCheckService.status$ | async as status\">\r\n <div class=\"status-icon\">\r\n <clr-icon\r\n [attr.shape]=\"status === 'ok' ? 'check-circle' : 'exclamation-circle'\"\r\n [ngClass]=\"{ 'is-success': status === 'ok', 'is-danger': status !== 'ok' }\"\r\n size=\"48\"\r\n ></clr-icon>\r\n </div>\r\n <div class=\"status-detail\">\r\n <ng-container *ngIf=\"status === 'ok'; else error\">\r\n {{ 'system.health-all-systems-up' | translate }}\r\n </ng-container>\r\n <ng-template #error>\r\n {{ 'system.health-error' | translate }}\r\n </ng-template>\r\n <div class=\"last-checked\">\r\n {{ 'system.health-last-checked' | translate }}:\r\n {{ healthCheckService.lastCheck$ | async | localeDate : 'mediumTime' }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"system-status\"></vdr-action-bar-items>\r\n <button class=\"btn btn-secondary\" (click)=\"healthCheckService.refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon> {{ 'system.health-refresh' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n <vdr-page-block>\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th class=\"left\">\r\n {{ 'common.name' | translate }}\r\n </th>\r\n <th class=\"left\">\r\n {{ 'system.health-status' | translate }}\r\n </th>\r\n <th class=\"left\">\r\n {{ 'system.health-message' | translate }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of healthCheckService.details$ | async\">\r\n <td class=\"align-middle left\">{{ row.key }}</td>\r\n <td class=\"align-middle left\">\r\n <vdr-chip [colorType]=\"row.result.status === 'up' ? 'success' : 'error'\">\r\n <ng-container *ngIf=\"row.result.status === 'up'; else down\">\r\n <clr-icon shape=\"check-circle\"></clr-icon>\r\n {{ 'system.health-status-up' | translate }}\r\n </ng-container>\r\n <ng-template #down>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.health-status-down' | translate }}\r\n </ng-template>\r\n </vdr-chip>\r\n </td>\r\n <td class=\"align-middle left\">{{ row.result.message }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </vdr-page-block>\r\n</vdr-page-body>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { JobInfoFragment, JobState } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-job-state-label',\n templateUrl: './job-state-label.component.html',\n styleUrls: ['./job-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class JobStateLabelComponent {\n @Input()\n job: JobInfoFragment;\n\n get iconShape(): string {\n switch (this.job.state) {\n case JobState.COMPLETED:\n return 'check-circle';\n case JobState.FAILED:\n return 'exclamation-circle';\n case JobState.CANCELLED:\n return 'ban';\n case JobState.PENDING:\n case JobState.RETRYING:\n return 'hourglass';\n case JobState.RUNNING:\n return 'sync';\n }\n }\n\n get colorType(): string {\n switch (this.job.state) {\n case JobState.COMPLETED:\n return 'success';\n case JobState.FAILED:\n case JobState.CANCELLED:\n return 'error';\n case JobState.PENDING:\n case JobState.RETRYING:\n return '';\n case JobState.RUNNING:\n return 'warning';\n }\n }\n}\n","<vdr-chip [colorType]=\"colorType\">\r\n <clr-icon [attr.shape]=\"iconShape\" class=\"mr1\"></clr-icon>\r\n {{ job.state | titlecase }}\r\n <span *ngIf=\"job.state === 'RUNNING'\" class=\"progress\">\r\n {{ (job.progress / 100) | percent }}\r\n </span>\r\n</vdr-chip>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n GetAllJobsQuery,\r\n GetJobQueueListQuery,\r\n ItemOf,\r\n JobState,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable, timer } from 'rxjs';\r\nimport { filter, map, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-job-list',\r\n templateUrl: './job-list.component.html',\r\n styleUrls: ['./job-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class JobListComponent\r\n extends BaseListComponent<GetAllJobsQuery, ItemOf<GetAllJobsQuery, 'jobs'>>\r\n implements OnInit\r\n{\r\n queues$: Observable<GetJobQueueListQuery['jobQueues']>;\r\n liveUpdate = new FormControl(true);\r\n queueFilter = new FormControl('all');\r\n stateFilter = new FormControl<JobState | string>('');\r\n\r\n constructor(private dataService: DataService, router: Router, route: ActivatedRoute) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.settings.getAllJobs(...args),\r\n data => data.jobs,\r\n (skip, take) => {\r\n const queueFilter =\r\n this.queueFilter.value === 'all' ? null : { queueName: { eq: this.queueFilter.value } };\r\n const stateFilter = this.stateFilter.value;\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n ...queueFilter,\r\n ...(stateFilter ? { state: { eq: stateFilter } } : {}),\r\n },\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n };\r\n },\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n timer(5000, 2000)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n filter(() => !!this.liveUpdate.value),\r\n )\r\n .subscribe(() => {\r\n this.refresh();\r\n });\r\n this.queues$ = this.dataService.settings\r\n .getJobQueues()\r\n .mapStream(res => res.jobQueues)\r\n .pipe(map(queues => [{ name: 'all', running: true }, ...queues]));\r\n }\r\n\r\n hasResult(job: ItemOf<GetAllJobsQuery, 'jobs'>): boolean {\r\n const result = job.result;\r\n if (result == null) {\r\n return false;\r\n }\r\n if (typeof result === 'object') {\r\n return Object.keys(result).length > 0;\r\n }\r\n return true;\r\n }\r\n\r\n cancelJob(id: string) {\r\n this.dataService.settings.cancelJob(id).subscribe(() => this.refresh());\r\n }\r\n}\r\n","<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <clr-checkbox-wrapper class=\"mr-2\">\r\n <input type=\"checkbox\" clrCheckbox [formControl]=\"liveUpdate\" name=\"live-update\" />\r\n <label>{{ 'common.live-update' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"job-list\"></vdr-action-bar-items>\r\n <ng-select\r\n class=\"mr-2\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [formControl]=\"stateFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-option [value]=\"''\">\r\n <vdr-chip>{{ 'system.job-state-all' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'PENDING'\">\r\n <vdr-chip>{{ 'system.job-state-pending' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'RUNNING'\">\r\n <vdr-chip colorType=\"warning\">{{ 'system.job-state-running' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'COMPLETED'\">\r\n <vdr-chip colorType=\"success\">{{ 'system.job-state-completed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'FAILED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-failed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'CANCELLED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-cancelled' | translate }}</vdr-chip>\r\n </ng-option>\r\n </ng-select>\r\n <ng-select\r\n [addTag]=\"false\"\r\n [items]=\"queues$ | async\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n bindValue=\"name\"\r\n [formControl]=\"queueFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-template ng-label-tmp ng-option-tmp let-item=\"item\">\r\n <ng-container *ngIf=\"item.name === 'all'; else others\">\r\n <vdr-chip>{{ 'system.all-job-queues' | translate }}</vdr-chip>\r\n </ng-container>\r\n <ng-template #others>\r\n <vdr-chip [colorFrom]=\"item.name\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n </ng-select>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n\r\n <vdr-data-table-2\r\n id=\"job-list\"\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-dt2-column [heading]=\"'common.id' | translate\" id=\"id\">\r\n <ng-template let-job=\"item\">\r\n {{ job.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\">\r\n <ng-template let-job=\"item\">\r\n {{ job.createdAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-queue-name' | translate\" id=\"job-queue-name\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-chip [colorFrom]=\"job.queueName\">{{ job.queueName }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-data' | translate\" id=\"job-data\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"job.data\">\r\n <button\r\n class=\"button-small\"\r\n vdrDropdownTrigger\r\n [title]=\"'system.job-data' | translate\"\r\n >\r\n <clr-icon shape=\"details\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.data\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-state' | translate\" id=\"job-state\">\r\n <ng-template let-job=\"item\">\r\n <vdr-job-state-label [job]=\"job\"></vdr-job-state-label>\r\n <div *ngIf=\"job.state === 'FAILED'\" class=\"retry-info\">after {{ job.attempts }} attempts</div>\r\n <div *ngIf=\"job.state === 'RUNNING' || job.state === 'RETRYING'\" class=\"retry-info\">\r\n attempting {{ job.attempts }} of {{ job.retries + 1 }}\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-duration' | translate\" id=\"job-duration\">\r\n <ng-template let-job=\"item\">\r\n {{ job.duration | duration }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-result' | translate\" id=\"job-result\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"hasResult(job)\">\r\n <button class=\"button-small mr-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\"></clr-icon>\r\n {{ 'system.job-result' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.result\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"job.error\">\r\n <button class=\"button-small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.job-error' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n {{ job.error }}\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"!job.isSettled && job.state !== 'FAILED'\">\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"cancelJob(job.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteSystem'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"ban\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n</vdr-page-body>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\n\r\nimport { HealthCheckComponent } from './components/health-check/health-check.component';\r\nimport { JobListComponent } from './components/job-list/job-list.component';\r\n\r\nexport const systemRoutes: Route[] = [\r\n {\r\n path: 'jobs',\r\n component: JobListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.job-queue'),\r\n },\r\n },\r\n {\r\n path: 'system-status',\r\n component: HealthCheckComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.system-status'),\r\n },\r\n },\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { HealthCheckComponent } from './components/health-check/health-check.component';\r\nimport { JobListComponent } from './components/job-list/job-list.component';\r\nimport { JobStateLabelComponent } from './components/job-state-label/job-state-label.component';\r\nimport { systemRoutes } from './system.routes';\r\n\r\n@NgModule({\r\n declarations: [HealthCheckComponent, JobListComponent, JobStateLabelComponent],\r\n imports: [SharedModule, RouterModule.forChild(systemRoutes)],\r\n})\r\nexport class SystemModule {}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/health-check/health-check.component';\nexport * from './components/job-list/job-list.component';\nexport * from './components/job-state-label/job-state-label.component';\nexport * from './system.module';\nexport * from './system.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i1","i4","i7.JobStateLabelComponent","i8","_"],"mappings":"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"}
1
+ {"version":3,"file":"vendure-admin-ui-system.mjs","sources":["../../src/lib/system/src/components/health-check/health-check.component.ts","../../src/lib/system/src/components/health-check/health-check.component.html","../../src/lib/system/src/components/job-state-label/job-state-label.component.ts","../../src/lib/system/src/components/job-state-label/job-state-label.component.html","../../src/lib/system/src/components/job-list/job-list.component.ts","../../src/lib/system/src/components/job-list/job-list.component.html","../../src/lib/system/src/system.routes.ts","../../src/lib/system/src/system.module.ts","../../src/lib/system/src/public_api.ts","../../src/lib/system/src/vendure-admin-ui-system.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { HealthCheckService } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-health-check',\r\n templateUrl: './health-check.component.html',\r\n styleUrls: ['./health-check.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class HealthCheckComponent {\r\n constructor(public healthCheckService: HealthCheckService) {}\r\n}\r\n","<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"system-status-header\" *ngIf=\"healthCheckService.status$ | async as status\">\r\n <div class=\"status-icon\">\r\n <clr-icon\r\n [attr.shape]=\"status === 'ok' ? 'check-circle' : 'exclamation-circle'\"\r\n [ngClass]=\"{ 'is-success': status === 'ok', 'is-danger': status !== 'ok' }\"\r\n size=\"48\"\r\n ></clr-icon>\r\n </div>\r\n <div class=\"status-detail\">\r\n <ng-container *ngIf=\"status === 'ok'; else error\">\r\n {{ 'system.health-all-systems-up' | translate }}\r\n </ng-container>\r\n <ng-template #error>\r\n {{ 'system.health-error' | translate }}\r\n </ng-template>\r\n <div class=\"last-checked\">\r\n {{ 'system.health-last-checked' | translate }}:\r\n {{ healthCheckService.lastCheck$ | async | localeDate : 'mediumTime' }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"system-status\"></vdr-action-bar-items>\r\n <button class=\"btn btn-secondary\" (click)=\"healthCheckService.refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon> {{ 'system.health-refresh' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n <vdr-page-block>\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th class=\"left\">\r\n {{ 'common.name' | translate }}\r\n </th>\r\n <th class=\"left\">\r\n {{ 'system.health-status' | translate }}\r\n </th>\r\n <th class=\"left\">\r\n {{ 'system.health-message' | translate }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of healthCheckService.details$ | async\">\r\n <td class=\"align-middle left\">{{ row.key }}</td>\r\n <td class=\"align-middle left\">\r\n <vdr-chip [colorType]=\"row.result.status === 'up' ? 'success' : 'error'\">\r\n <ng-container *ngIf=\"row.result.status === 'up'; else down\">\r\n <clr-icon shape=\"check-circle\"></clr-icon>\r\n {{ 'system.health-status-up' | translate }}\r\n </ng-container>\r\n <ng-template #down>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.health-status-down' | translate }}\r\n </ng-template>\r\n </vdr-chip>\r\n </td>\r\n <td class=\"align-middle left\">{{ row.result.message }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </vdr-page-block>\r\n</vdr-page-body>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { JobInfoFragment, JobState } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-job-state-label',\n templateUrl: './job-state-label.component.html',\n styleUrls: ['./job-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class JobStateLabelComponent {\n @Input()\n job: JobInfoFragment;\n\n get iconShape(): string {\n switch (this.job.state) {\n case JobState.COMPLETED:\n return 'check-circle';\n case JobState.FAILED:\n return 'exclamation-circle';\n case JobState.CANCELLED:\n return 'ban';\n case JobState.PENDING:\n case JobState.RETRYING:\n return 'hourglass';\n case JobState.RUNNING:\n return 'sync';\n }\n }\n\n get colorType(): string {\n switch (this.job.state) {\n case JobState.COMPLETED:\n return 'success';\n case JobState.FAILED:\n case JobState.CANCELLED:\n return 'error';\n case JobState.PENDING:\n case JobState.RETRYING:\n return '';\n case JobState.RUNNING:\n return 'warning';\n }\n }\n}\n","<vdr-chip [colorType]=\"colorType\">\r\n <clr-icon [attr.shape]=\"iconShape\" class=\"mr1\"></clr-icon>\r\n {{ job.state | titlecase }}\r\n <span *ngIf=\"job.state === 'RUNNING'\" class=\"progress\">\r\n {{ (job.progress / 100) | percent }}\r\n </span>\r\n</vdr-chip>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n GetAllJobsQuery,\r\n GetJobQueueListQuery,\r\n ItemOf,\r\n JobState,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable, timer } from 'rxjs';\r\nimport { filter, map, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-job-list',\r\n templateUrl: './job-list.component.html',\r\n styleUrls: ['./job-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class JobListComponent\r\n extends BaseListComponent<GetAllJobsQuery, ItemOf<GetAllJobsQuery, 'jobs'>>\r\n implements OnInit\r\n{\r\n queues$: Observable<GetJobQueueListQuery['jobQueues']>;\r\n liveUpdate = new FormControl(true);\r\n queueFilter = new FormControl('all');\r\n stateFilter = new FormControl<JobState | string>('');\r\n\r\n constructor(private dataService: DataService, router: Router, route: ActivatedRoute) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.settings.getAllJobs(...args),\r\n data => data.jobs,\r\n (skip, take) => {\r\n const queueFilter =\r\n this.queueFilter.value === 'all' ? null : { queueName: { eq: this.queueFilter.value } };\r\n const stateFilter = this.stateFilter.value;\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n ...queueFilter,\r\n ...(stateFilter ? { state: { eq: stateFilter } } : {}),\r\n },\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n };\r\n },\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n timer(5000, 2000)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n filter(() => !!this.liveUpdate.value),\r\n )\r\n .subscribe(() => {\r\n this.refresh();\r\n });\r\n this.queues$ = this.dataService.settings\r\n .getJobQueues()\r\n .mapStream(res => res.jobQueues)\r\n .pipe(map(queues => [{ name: 'all', running: true }, ...queues]));\r\n }\r\n\r\n hasResult(job: ItemOf<GetAllJobsQuery, 'jobs'>): boolean {\r\n const result = job.result;\r\n if (result == null) {\r\n return false;\r\n }\r\n if (typeof result === 'object') {\r\n return Object.keys(result).length > 0;\r\n }\r\n return true;\r\n }\r\n\r\n cancelJob(id: string) {\r\n this.dataService.settings.cancelJob(id).subscribe(() => this.refresh());\r\n }\r\n}\r\n","<vdr-page-header>\r\n <vdr-page-title></vdr-page-title>\r\n</vdr-page-header>\r\n<vdr-page-body>\r\n <vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <clr-checkbox-wrapper class=\"mr-2\">\r\n <input type=\"checkbox\" clrCheckbox [formControl]=\"liveUpdate\" name=\"live-update\" />\r\n <label>{{ 'common.live-update' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"job-list\"></vdr-action-bar-items>\r\n <ng-select\r\n class=\"mr-2\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [formControl]=\"stateFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-option [value]=\"''\">\r\n <vdr-chip>{{ 'system.job-state-all' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'PENDING'\">\r\n <vdr-chip>{{ 'system.job-state-pending' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'RUNNING'\">\r\n <vdr-chip colorType=\"warning\">{{ 'system.job-state-running' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'COMPLETED'\">\r\n <vdr-chip colorType=\"success\">{{ 'system.job-state-completed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'FAILED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-failed' | translate }}</vdr-chip>\r\n </ng-option>\r\n <ng-option [value]=\"'CANCELLED'\">\r\n <vdr-chip colorType=\"error\">{{ 'system.job-state-cancelled' | translate }}</vdr-chip>\r\n </ng-option>\r\n </ng-select>\r\n <ng-select\r\n [addTag]=\"false\"\r\n [items]=\"queues$ | async\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"false\"\r\n [markFirst]=\"false\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n bindValue=\"name\"\r\n [formControl]=\"queueFilter\"\r\n (change)=\"refresh()\"\r\n >\r\n <ng-template ng-label-tmp ng-option-tmp let-item=\"item\">\r\n <ng-container *ngIf=\"item.name === 'all'; else others\">\r\n <vdr-chip>{{ 'system.all-job-queues' | translate }}</vdr-chip>\r\n </ng-container>\r\n <ng-template #others>\r\n <vdr-chip [colorFrom]=\"item.name\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n </ng-select>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n </vdr-page-block>\r\n\r\n <vdr-data-table-2\r\n id=\"job-list\"\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-dt2-column [heading]=\"'common.id' | translate\" id=\"id\">\r\n <ng-template let-job=\"item\">\r\n {{ job.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\">\r\n <ng-template let-job=\"item\">\r\n {{ job.createdAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-queue-name' | translate\" id=\"job-queue-name\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-chip [colorFrom]=\"job.queueName\">{{ job.queueName }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-data' | translate\" id=\"job-data\" [optional]=\"false\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"job.data\">\r\n <button\r\n class=\"button-small\"\r\n vdrDropdownTrigger\r\n [title]=\"'system.job-data' | translate\"\r\n >\r\n <clr-icon shape=\"details\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.data\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-state' | translate\" id=\"job-state\">\r\n <ng-template let-job=\"item\">\r\n <vdr-job-state-label [job]=\"job\"></vdr-job-state-label>\r\n <div *ngIf=\"job.state === 'FAILED'\" class=\"retry-info\">after {{ job.attempts }} attempts</div>\r\n <div *ngIf=\"job.state === 'RUNNING' || job.state === 'RETRYING'\" class=\"retry-info\">\r\n attempting {{ job.attempts }} of {{ job.retries + 1 }}\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-duration' | translate\" id=\"job-duration\">\r\n <ng-template let-job=\"item\">\r\n {{ job.duration | duration }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'system.job-result' | translate\" id=\"job-result\">\r\n <ng-template let-job=\"item\">\r\n <vdr-dropdown *ngIf=\"hasResult(job)\">\r\n <button class=\"button-small mr-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\"></clr-icon>\r\n {{ 'system.job-result' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n <vdr-object-tree [value]=\"job.result\"></vdr-object-tree>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"job.error\">\r\n <button class=\"button-small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"exclamation-circle\"></clr-icon>\r\n {{ 'system.job-error' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"result-detail\">\r\n {{ job.error }}\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <vdr-dropdown *ngIf=\"!job.isSettled && job.state !== 'FAILED'\">\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"cancelJob(job.id)\"\r\n [disabled]=\"!(['DeleteSettings', 'DeleteSystem'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"ban\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n</vdr-page-body>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\n\r\nimport { HealthCheckComponent } from './components/health-check/health-check.component';\r\nimport { JobListComponent } from './components/job-list/job-list.component';\r\n\r\nexport const systemRoutes: Route[] = [\r\n {\r\n path: 'jobs',\r\n component: JobListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.job-queue'),\r\n },\r\n },\r\n {\r\n path: 'system-status',\r\n component: HealthCheckComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.system-status'),\r\n },\r\n },\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { HealthCheckComponent } from './components/health-check/health-check.component';\r\nimport { JobListComponent } from './components/job-list/job-list.component';\r\nimport { JobStateLabelComponent } from './components/job-state-label/job-state-label.component';\r\nimport { systemRoutes } from './system.routes';\r\n\r\n@NgModule({\r\n declarations: [HealthCheckComponent, JobListComponent, JobStateLabelComponent],\r\n imports: [SharedModule, RouterModule.forChild(systemRoutes)],\r\n})\r\nexport class SystemModule {}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/health-check/health-check.component';\nexport * from './components/job-list/job-list.component';\nexport * from './components/job-state-label/job-state-label.component';\nexport * from './system.module';\nexport * from './system.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i1","i4","i7.JobStateLabelComponent","i8","_"],"mappings":";;;;;;;;;;;;;;;;MASa,oBAAoB,CAAA;AAC7B,IAAA,WAAA,CAAmB,kBAAsC,EAAA;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;KAAI;8GADpD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wDCTjC,8kHAyEA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDhEa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8kHAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA,CAAA;;;MEEtC,sBAAsB,CAAA;AAI/B,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK;YAClB,KAAK,QAAQ,CAAC,SAAS;AACnB,gBAAA,OAAO,cAAc,CAAC;YAC1B,KAAK,QAAQ,CAAC,MAAM;AAChB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,QAAQ,CAAC,SAAS;AACnB,gBAAA,OAAO,KAAK,CAAC;YACjB,KAAK,QAAQ,CAAC,OAAO,CAAC;YACtB,KAAK,QAAQ,CAAC,QAAQ;AAClB,gBAAA,OAAO,WAAW,CAAC;YACvB,KAAK,QAAQ,CAAC,OAAO;AACjB,gBAAA,OAAO,MAAM,CAAC;AACrB,SAAA;KACJ;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK;YAClB,KAAK,QAAQ,CAAC,SAAS;AACnB,gBAAA,OAAO,SAAS,CAAC;YACrB,KAAK,QAAQ,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ,CAAC,SAAS;AACnB,gBAAA,OAAO,OAAO,CAAC;YACnB,KAAK,QAAQ,CAAC,OAAO,CAAC;YACtB,KAAK,QAAQ,CAAC,QAAQ;AAClB,gBAAA,OAAO,EAAE,CAAC;YACd,KAAK,QAAQ,CAAC,OAAO;AACjB,gBAAA,OAAO,SAAS,CAAC;AACxB,SAAA;KACJ;8GAjCQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,mFCTnC,oSAOA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oSAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,CAAA;8BAI/C,GAAG,EAAA,CAAA;sBADF,KAAK;;;AEWJ,MAAO,gBACT,SAAQ,iBAAmE,CAAA;AAQ3E,IAAA,WAAA,CAAoB,WAAwB,EAAE,MAAc,EAAE,KAAqB,EAAA;AAC/E,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QADL,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAJ5C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,WAAW,CAAoB,EAAE,CAAC,CAAC;AAIjD,QAAA,KAAK,CAAC,UAAU,CACZ,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EACjE,IAAI,IAAI,IAAI,CAAC,IAAI,EACjB,CAAC,IAAI,EAAE,IAAI,KAAI;AACX,YAAA,MAAM,WAAW,GACb,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;AAC5F,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC3C,OAAO;AACH,gBAAA,OAAO,EAAE;oBACL,IAAI;oBACJ,IAAI;AACJ,oBAAA,MAAM,EAAE;AACJ,wBAAA,GAAG,WAAW;AACd,wBAAA,IAAI,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC;AACzD,qBAAA;AACD,oBAAA,IAAI,EAAE;wBACF,SAAS,EAAE,SAAS,CAAC,IAAI;AAC5B,qBAAA;AACJ,iBAAA;aACJ,CAAC;AACN,SAAC,CACJ,CAAC;KACL;IAED,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;aACZ,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CACxC;aACA,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,SAAC,CAAC,CAAC;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;AACnC,aAAA,YAAY,EAAE;aACd,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;aAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,SAAS,CAAC,GAAoC,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,IAAI,IAAI,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,SAAS,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAC3E;8GAhEQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,2ECrB7B,+iRA0KA,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDrJa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+iRAAA,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA,CAAA;;;AEbtC,MAAA,YAAY,GAAY;AACjC,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,IAAI,EAAE;AACF,YAAA,UAAU,EAAEC,MAAC,CAAC,sBAAsB,CAAC;AACxC,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,IAAI,EAAE;AACF,YAAA,UAAU,EAAEA,MAAC,CAAC,0BAA0B,CAAC;AAC5C,SAAA;AACJ,KAAA;;;MCPQ,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAHN,oBAAoB,EAAE,gBAAgB,EAAE,sBAAsB,aACnE,YAAY,EAAAJ,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEb,YAAY,EAAA,OAAA,EAAA,CAFX,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAElD,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,sBAAsB,CAAC;oBAC9E,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC/D,iBAAA,CAAA;;;ACZD;;ACAA;;AAEG;;;;"}
@@ -0,0 +1,9 @@
1
+ import { FormControl } from '@angular/forms';
2
+ import { OrderDetailFragment } from '@vendure/admin-ui/core';
3
+ export type Payment = NonNullable<OrderDetailFragment['payments']>[number];
4
+ export type RefundablePayment = Payment & {
5
+ refundableAmount: number;
6
+ amountToRefundControl: FormControl<number>;
7
+ selected: boolean;
8
+ };
9
+ export declare function getRefundablePayments(payments: OrderDetailFragment['payments']): RefundablePayment[];
@@ -0,0 +1,29 @@
1
+ import { AddItemInput, CurrencyCode, ModifyOrderInput, OrderDetailFragment, OrderLineInput, ProductSelectorSearchQuery } from '@vendure/admin-ui/core';
2
+ export interface OrderSnapshot {
3
+ totalWithTax: number;
4
+ currencyCode: CurrencyCode;
5
+ couponCodes: string[];
6
+ lines: OrderDetailFragment['lines'];
7
+ shippingLines: OrderDetailFragment['shippingLines'];
8
+ }
9
+ export type ProductSelectorItem = ProductSelectorSearchQuery['search']['items'][number];
10
+ export interface AddedLine {
11
+ id: string;
12
+ featuredAsset?: ProductSelectorItem['productAsset'] | null;
13
+ productVariant: {
14
+ id: string;
15
+ name: string;
16
+ sku: string;
17
+ };
18
+ unitPrice: number;
19
+ unitPriceWithTax: number;
20
+ quantity: number;
21
+ }
22
+ export type ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {
23
+ addItems: Array<AddItemInput & {
24
+ customFields?: any;
25
+ }>;
26
+ adjustOrderLines: Array<OrderLineInput & {
27
+ customFields?: any;
28
+ }>;
29
+ };
@@ -6,6 +6,7 @@ export declare class ModificationDetailComponent implements OnChanges {
6
6
  modification: OrderDetailFragment['modifications'][number];
7
7
  private addedItems;
8
8
  private removedItems;
9
+ private modifiedItems;
9
10
  ngOnChanges(): void;
10
11
  getSurcharge(id: string): {
11
12
  __typename?: "Surcharge" | undefined;
@@ -24,6 +25,9 @@ export declare class ModificationDetailComponent implements OnChanges {
24
25
  name: string;
25
26
  quantity: number;
26
27
  }[];
28
+ getModifiedItems(): {
29
+ name: string;
30
+ }[];
27
31
  private getModifiedLines;
28
32
  static ɵfac: i0.ɵɵFactoryDeclaration<ModificationDetailComponent, never>;
29
33
  static ɵcmp: i0.ɵɵComponentDeclaration<ModificationDetailComponent, "vdr-modification-detail", never, { "order": { "alias": "order"; "required": false; }; "modification": { "alias": "modification"; "required": false; }; }, {}, never, never, false, never>;
@@ -6,6 +6,7 @@ import { OrderTransitionService } from '../../providers/order-transition.service
6
6
  import * as i0 from "@angular/core";
7
7
  type Payment = NonNullable<OrderDetailFragment['payments']>[number];
8
8
  export declare const ORDER_DETAIL_QUERY: import("apollo-angular").TypedDocumentNode<unknown, unknown>;
9
+ export declare const SET_ORDER_CUSTOMER_MUTATION: import("apollo-angular").TypedDocumentNode<unknown, unknown>;
9
10
  export declare class OrderDetailComponent extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'> implements OnInit, OnDestroy {
10
11
  private changeDetector;
11
12
  protected dataService: DataService;
@@ -28,6 +29,7 @@ export declare class OrderDetailComponent extends TypedBaseDetailComponent<typeo
28
29
  ngOnInit(): void;
29
30
  ngOnDestroy(): void;
30
31
  openStateDiagram(): void;
32
+ setOrderCustomer(): void;
31
33
  transitionToState(state: string): void;
32
34
  manuallyTransitionToState(order: OrderDetailFragment): void;
33
35
  transitionToModifying(): void;
@@ -1,65 +1,89 @@
1
1
  import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
- import { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
3
- import { ActivatedRoute, Router } from '@angular/router';
4
- import { AddItemInput, BaseDetailComponent, CustomFieldConfig, DataService, GetAvailableCountriesQuery, LanguageCode, ModalService, ModifyOrderInput, NotificationService, OrderDetailFragment, OrderLineInput, ProductSelectorSearchQuery, ServerConfigService, SurchargeInput } from '@vendure/admin-ui/core';
2
+ import { FormControl, FormGroup, UntypedFormArray, UntypedFormGroup } from '@angular/forms';
3
+ import { CustomFieldConfig, DataService, DraftOrderEligibleShippingMethodsQuery, GetAvailableCountriesQuery, LanguageCode, ModalService, NotificationService, OrderDetailFragment, OrderDetailQueryDocument, SurchargeInput, TypedBaseDetailComponent } from '@vendure/admin-ui/core';
5
4
  import { Observable } from 'rxjs';
5
+ import { AddedLine, ModifyOrderData, OrderSnapshot, ProductSelectorItem } from '../../common/modify-order-types';
6
6
  import { OrderTransitionService } from '../../providers/order-transition.service';
7
7
  import * as i0 from "@angular/core";
8
- type ProductSelectorItem = ProductSelectorSearchQuery['search']['items'][number];
9
- interface AddedLine {
10
- productVariantId: string;
11
- productAsset?: ProductSelectorItem['productAsset'] | null;
12
- productVariantName: string;
13
- sku: string;
14
- priceWithTax: number;
15
- price: number;
16
- quantity: number;
17
- }
18
- type ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {
19
- addItems: Array<AddItemInput & {
20
- customFields?: any;
21
- }>;
22
- adjustOrderLines: Array<OrderLineInput & {
23
- customFields?: any;
24
- }>;
25
- };
26
- export declare class OrderEditorComponent extends BaseDetailComponent<OrderDetailFragment> implements OnInit, OnDestroy {
27
- private changeDetector;
8
+ export declare class OrderEditorComponent extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'> implements OnInit, OnDestroy {
28
9
  protected dataService: DataService;
29
10
  private notificationService;
30
11
  private modalService;
31
12
  private orderTransitionService;
13
+ private changeDetectorRef;
32
14
  availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;
33
15
  addressCustomFields: CustomFieldConfig[];
16
+ uiLanguage$: Observable<LanguageCode>;
34
17
  detailForm: UntypedFormGroup;
35
- couponCodesControl: UntypedFormControl;
18
+ couponCodesControl: FormControl<string[] | null>;
36
19
  orderLineCustomFieldsFormArray: UntypedFormArray;
37
20
  addItemCustomFieldsFormArray: UntypedFormArray;
38
21
  addItemCustomFieldsForm: UntypedFormGroup;
39
22
  addItemSelectedVariant: ProductSelectorItem | undefined;
40
23
  orderLineCustomFields: CustomFieldConfig[];
24
+ orderSnapshot: OrderSnapshot;
41
25
  modifyOrderInput: ModifyOrderData;
42
- surchargeForm: UntypedFormGroup;
43
- shippingAddressForm: UntypedFormGroup;
44
- billingAddressForm: UntypedFormGroup;
26
+ surchargeForm: FormGroup<{
27
+ description: FormControl<string | null>;
28
+ sku: FormControl<string | null>;
29
+ price: FormControl<number | null>;
30
+ priceIncludesTax: FormControl<boolean | null>;
31
+ taxRate: FormControl<number | null>;
32
+ taxDescription: FormControl<string | null>;
33
+ }>;
34
+ shippingAddressForm: FormGroup<{
35
+ fullName: FormControl<string | null>;
36
+ company: FormControl<string | null>;
37
+ streetLine1: FormControl<string | null>;
38
+ streetLine2: FormControl<string | null>;
39
+ city: FormControl<string | null>;
40
+ province: FormControl<string | null>;
41
+ postalCode: FormControl<string | null>;
42
+ countryCode: FormControl<string | null>;
43
+ phoneNumber: FormControl<string | null>;
44
+ }>;
45
+ billingAddressForm: FormGroup<{
46
+ fullName: FormControl<string | null>;
47
+ company: FormControl<string | null>;
48
+ streetLine1: FormControl<string | null>;
49
+ streetLine2: FormControl<string | null>;
50
+ city: FormControl<string | null>;
51
+ province: FormControl<string | null>;
52
+ postalCode: FormControl<string | null>;
53
+ countryCode: FormControl<string | null>;
54
+ phoneNumber: FormControl<string | null>;
55
+ }>;
45
56
  note: string;
46
57
  recalculateShipping: boolean;
47
58
  previousState: string;
59
+ editingShippingAddress: boolean;
60
+ editingBillingAddress: boolean;
61
+ updatedShippingMethods: {
62
+ [shippingLineId: string]: DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];
63
+ };
48
64
  private addedVariants;
49
- constructor(router: Router, route: ActivatedRoute, serverConfigService: ServerConfigService, changeDetector: ChangeDetectorRef, dataService: DataService, notificationService: NotificationService, modalService: ModalService, orderTransitionService: OrderTransitionService);
50
- get addedLines(): AddedLine[];
65
+ constructor(dataService: DataService, notificationService: NotificationService, modalService: ModalService, orderTransitionService: OrderTransitionService, changeDetectorRef: ChangeDetectorRef);
51
66
  ngOnInit(): void;
52
67
  ngOnDestroy(): void;
68
+ get addedLines(): AddedLine[];
69
+ private getIdForAddedItem;
53
70
  transitionToPriorState(order: OrderDetailFragment): void;
54
- canPreviewChanges(): boolean;
71
+ hasModifications(): boolean;
55
72
  isLineModified(line: OrderDetailFragment['lines'][number]): boolean;
56
- updateLineQuantity(line: OrderDetailFragment['lines'][number], quantity: string): void;
73
+ getInitialLineQuantity(lineId: string): number;
74
+ updateLineQuantity(line: OrderDetailFragment['lines'][number] | AddedLine, quantity: string): void;
75
+ isAddedLine(line: OrderDetailFragment['lines'][number] | AddedLine): line is AddedLine;
57
76
  updateAddedItemQuantity(item: AddedLine, quantity: string): void;
58
77
  trackByProductVariantId(index: number, item: AddedLine): string;
59
78
  getSelectedItemPrice(result: ProductSelectorItem | undefined): number;
60
79
  addItemToOrder(result: ProductSelectorItem | undefined): void;
80
+ getShippingLineDetails(shippingLine: OrderDetailFragment['shippingLines'][number]): {
81
+ name: string;
82
+ price: number;
83
+ };
84
+ setShippingMethod(shippingLineId: string): void;
61
85
  private isMatchingAddItemRow;
62
- removeAddedItem(index: number): void;
86
+ removeAddedItem(id: string): void;
63
87
  getSurchargePrices(surcharge: SurchargeInput): {
64
88
  price: number;
65
89
  priceWithTax: number;
@@ -68,8 +92,8 @@ export declare class OrderEditorComponent extends BaseDetailComponent<OrderDetai
68
92
  removeSurcharge(index: number): void;
69
93
  previewAndModify(order: OrderDetailFragment): void;
70
94
  private addAddressCustomFieldsFormGroup;
95
+ private createOrderSnapshot;
71
96
  protected setFormValues(entity: OrderDetailFragment, languageCode: LanguageCode): void;
72
97
  static ɵfac: i0.ɵɵFactoryDeclaration<OrderEditorComponent, never>;
73
98
  static ɵcmp: i0.ɵɵComponentDeclaration<OrderEditorComponent, "vdr-order-editor", never, {}, {}, never, never, false, never>;
74
99
  }
75
- export {};
@@ -1,5 +1,9 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetailFragment } from '@vendure/admin-ui/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { AdministratorRefundInput, CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetailFragment } from '@vendure/admin-ui/core';
4
+ import { RefundablePayment } from '../../common/get-refundable-payments';
5
+ import { AddedLine, OrderSnapshot } from '../../common/modify-order-types';
6
+ import { OrderEditorComponent } from '../order-editor/order-editor.component';
3
7
  import * as i0 from "@angular/core";
4
8
  export declare enum OrderEditResultType {
5
9
  Refund = 0,
@@ -9,8 +13,7 @@ export declare enum OrderEditResultType {
9
13
  }
10
14
  interface OrderEditsRefundResult {
11
15
  result: OrderEditResultType.Refund;
12
- refundPaymentId: string;
13
- refundNote?: string;
16
+ refunds: AdministratorRefundInput[];
14
17
  }
15
18
  interface OrderEditsPaymentResult {
16
19
  result: OrderEditResultType.Payment;
@@ -23,15 +26,23 @@ interface OrderEditsCancelResult {
23
26
  }
24
27
  type OrderEditResult = OrderEditsRefundResult | OrderEditsPaymentResult | OrderEditsPriceUnchangedResult | OrderEditsCancelResult;
25
28
  export declare class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {
26
- order: OrderDetailFragment;
27
- originalTotalWithTax: number;
28
29
  orderLineCustomFields: CustomFieldConfig[];
30
+ order: OrderDetailFragment;
31
+ orderSnapshot: OrderSnapshot;
29
32
  modifyOrderInput: ModifyOrderInput;
30
- selectedPayment?: NonNullable<OrderDetailFragment['payments']>[number];
33
+ addedLines: AddedLine[];
34
+ shippingAddressForm: OrderEditorComponent['shippingAddressForm'];
35
+ billingAddressForm: OrderEditorComponent['billingAddressForm'];
36
+ updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];
37
+ couponCodesControl: FormControl<string[] | null>;
38
+ refundablePayments: RefundablePayment[];
31
39
  refundNote: string;
32
40
  resolveWith: (result?: OrderEditResult) => void;
33
41
  get priceDifference(): number;
42
+ get amountToRefundTotal(): number;
34
43
  ngOnInit(): void;
44
+ onPaymentSelected(payment: RefundablePayment, selected: boolean): void;
45
+ refundsCoverDifference(): boolean;
35
46
  cancel(): void;
36
47
  submit(): void;
37
48
  static ɵfac: i0.ɵɵFactoryDeclaration<OrderEditsPreviewDialogComponent, never>;
@@ -44,12 +44,16 @@ export declare class OrderHistoryComponent {
44
44
  constructor(historyEntryComponentService: HistoryEntryComponentService);
45
45
  hasCustomComponent(type: string): boolean;
46
46
  getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType;
47
- getTimelineIcon(entry: TimelineHistoryEntry): string[] | "ban" | "credit-card" | "note" | "pencil" | "truck" | undefined;
47
+ getTimelineIcon(entry: TimelineHistoryEntry): string[] | "ban" | "credit-card" | "note" | "pencil" | "switch" | "truck" | undefined;
48
48
  isFeatured(entry: TimelineHistoryEntry): boolean;
49
49
  getFulfillment(entry: TimelineHistoryEntry): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined;
50
50
  getPayment(entry: TimelineHistoryEntry): NonNullable<OrderDetailFragment['payments']>[number] | undefined;
51
+ getRefund(entry: TimelineHistoryEntry): NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number] | undefined;
51
52
  getCancelledQuantity(entry: TimelineHistoryEntry): number;
52
- getCancelledItems(entry: TimelineHistoryEntry): Array<{
53
+ getCancelledItems(cancellationLines: Array<{
54
+ orderLineId: string;
55
+ quantity: number;
56
+ }>): Array<{
53
57
  name: string;
54
58
  quantity: number;
55
59
  }>;
@@ -0,0 +1,19 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import type { OrderEditorComponent } from '../order-editor/order-editor.component';
3
+ import { AddedLine, ModifyOrderData, OrderSnapshot } from '../../common/modify-order-types';
4
+ import * as i0 from "@angular/core";
5
+ export declare class OrderModificationSummaryComponent {
6
+ orderSnapshot: OrderSnapshot;
7
+ modifyOrderInput: ModifyOrderData;
8
+ addedLines: AddedLine[];
9
+ shippingAddressForm: OrderEditorComponent['shippingAddressForm'];
10
+ billingAddressForm: OrderEditorComponent['billingAddressForm'];
11
+ updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];
12
+ couponCodesControl: FormControl<string[] | null>;
13
+ get adjustedLines(): string[];
14
+ getModifiedFields(formGroup: FormGroup): string;
15
+ getUpdatedShippingMethodLines(): string[];
16
+ get couponCodeChanges(): string[];
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderModificationSummaryComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderModificationSummaryComponent, "vdr-order-modification-summary", never, { "orderSnapshot": { "alias": "orderSnapshot"; "required": false; }; "modifyOrderInput": { "alias": "modifyOrderInput"; "required": false; }; "addedLines": { "alias": "addedLines"; "required": false; }; "shippingAddressForm": { "alias": "shippingAddressForm"; "required": false; }; "billingAddressForm": { "alias": "billingAddressForm"; "required": false; }; "updatedShippingMethods": { "alias": "updatedShippingMethods"; "required": false; }; "couponCodesControl": { "alias": "couponCodesControl"; "required": false; }; }, {}, never, never, false, never>;
19
+ }
@@ -0,0 +1,14 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { OrderDetailFragment } from '@vendure/admin-ui/core';
3
+ import { RefundablePayment } from '../../common/get-refundable-payments';
4
+ import * as i0 from "@angular/core";
5
+ export declare class PaymentForRefundSelectorComponent {
6
+ refundablePayments: RefundablePayment[];
7
+ order: OrderDetailFragment;
8
+ paymentSelected: EventEmitter<{
9
+ payment: RefundablePayment;
10
+ selected: boolean;
11
+ }>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaymentForRefundSelectorComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<PaymentForRefundSelectorComponent, "vdr-payment-for-refund-selector", never, { "refundablePayments": { "alias": "refundablePayments"; "required": false; }; "order": { "alias": "order"; "required": false; }; }, { "paymentSelected": "paymentSelected"; }, never, never, false, never>;
14
+ }
@@ -0,0 +1,8 @@
1
+ import { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RefundDetailComponent {
4
+ refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];
5
+ currencyCode: CurrencyCode;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<RefundDetailComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<RefundDetailComponent, "vdr-refund-detail", never, { "refund": { "alias": "refund"; "required": false; }; "currencyCode": { "alias": "currencyCode"; "required": false; }; }, {}, never, never, false, never>;
8
+ }