@vendure/admin-ui 3.0.2 → 3.0.4

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 (430) hide show
  1. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +3 -5
  2. package/catalog/components/collection-list/collection-list.component.d.ts +1 -0
  3. package/catalog/components/facet-list/facet-list.component.d.ts +1 -0
  4. package/catalog/components/product-list/product-list.component.d.ts +2 -0
  5. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
  6. package/core/common/base-list.component.d.ts +13 -0
  7. package/core/common/version.d.ts +1 -1
  8. package/core/data/providers/base-data.service.d.ts +19 -2
  9. package/core/data/providers/collection-data.service.d.ts +2 -2
  10. package/core/data/providers/data.service.d.ts +3 -3
  11. package/core/data/query-result.d.ts +60 -4
  12. package/core/data/utils/add-custom-fields.d.ts +1 -1
  13. package/core/extension/register-route-component.d.ts +1 -1
  14. package/core/providers/alerts/alerts.service.d.ts +3 -0
  15. package/core/providers/auth/auth.service.d.ts +3 -1
  16. package/core/providers/data-table/data-table-config.service.d.ts +12 -0
  17. package/core/public_api.d.ts +1 -0
  18. package/core/shared/components/data-table-2/data-table2.component.d.ts +5 -5
  19. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +3 -4
  20. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  21. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  22. package/customer/components/customer-group-list/customer-group-list.component.d.ts +2 -0
  23. package/customer/components/customer-list/customer-list.component.d.ts +1 -0
  24. package/esm2022/catalog/catalog.module.mjs +5 -5
  25. package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +4 -4
  26. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +4 -4
  27. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +4 -4
  28. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +4 -4
  29. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +4 -4
  30. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +4 -4
  31. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +11 -13
  32. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +4 -4
  33. package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +4 -4
  34. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +6 -5
  35. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +4 -4
  36. package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +4 -4
  37. package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +4 -4
  38. package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +4 -4
  39. package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +4 -4
  40. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +4 -4
  41. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +4 -4
  42. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +4 -4
  43. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +6 -5
  44. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +4 -4
  45. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +4 -4
  46. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +4 -4
  47. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +4 -4
  48. package/esm2022/catalog/components/product-list/product-list.component.mjs +7 -5
  49. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +4 -4
  50. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +4 -4
  51. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +4 -4
  52. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +4 -4
  53. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +4 -4
  54. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +4 -4
  55. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +4 -4
  56. package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +4 -4
  57. package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +4 -4
  58. package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +4 -4
  59. package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +4 -4
  60. package/esm2022/core/app.component.mjs +4 -4
  61. package/esm2022/core/app.component.module.mjs +5 -5
  62. package/esm2022/core/common/base-list.component.mjs +26 -10
  63. package/esm2022/core/common/version.mjs +2 -2
  64. package/esm2022/core/components/alerts/alerts.component.mjs +4 -4
  65. package/esm2022/core/components/app-shell/app-shell.component.mjs +5 -5
  66. package/esm2022/core/components/base-nav/base-nav.component.mjs +4 -4
  67. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +4 -4
  68. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +4 -4
  69. package/esm2022/core/components/main-nav/main-nav.component.mjs +4 -4
  70. package/esm2022/core/components/notification/notification.component.mjs +4 -4
  71. package/esm2022/core/components/overlay-host/overlay-host.component.mjs +4 -4
  72. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +4 -4
  73. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +4 -4
  74. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +4 -4
  75. package/esm2022/core/components/user-menu/user-menu.component.mjs +4 -4
  76. package/esm2022/core/core.module.mjs +5 -5
  77. package/esm2022/core/data/data.module.mjs +7 -7
  78. package/esm2022/core/data/providers/base-data.service.mjs +10 -11
  79. package/esm2022/core/data/providers/collection-data.service.mjs +3 -3
  80. package/esm2022/core/data/providers/data.service.mjs +8 -8
  81. package/esm2022/core/data/providers/fetch-adapter.mjs +4 -4
  82. package/esm2022/core/data/providers/interceptor.mjs +4 -4
  83. package/esm2022/core/data/providers/product-data.service.mjs +4 -2
  84. package/esm2022/core/data/query-result.mjs +96 -10
  85. package/esm2022/core/data/server-config.mjs +4 -4
  86. package/esm2022/core/data/utils/add-custom-fields.mjs +48 -30
  87. package/esm2022/core/extension/components/angular-route.component.mjs +7 -7
  88. package/esm2022/core/extension/components/route.component.mjs +4 -4
  89. package/esm2022/core/extension/providers/page-metadata.service.mjs +4 -4
  90. package/esm2022/core/providers/alerts/alerts.service.mjs +16 -6
  91. package/esm2022/core/providers/auth/auth.service.mjs +13 -9
  92. package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +4 -4
  93. package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +4 -4
  94. package/esm2022/core/providers/channel/channel.service.mjs +4 -4
  95. package/esm2022/core/providers/component-registry/component-registry.service.mjs +4 -4
  96. package/esm2022/core/providers/currency/currency.service.mjs +4 -4
  97. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +4 -4
  98. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +4 -4
  99. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +4 -4
  100. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +4 -4
  101. package/esm2022/core/providers/data-table/data-table-config.service.mjs +43 -0
  102. package/esm2022/core/providers/guard/auth.guard.mjs +4 -4
  103. package/esm2022/core/providers/health-check/health-check.service.mjs +4 -4
  104. package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +4 -4
  105. package/esm2022/core/providers/i18n/i18n.service.mjs +4 -4
  106. package/esm2022/core/providers/job-queue/job-queue.service.mjs +4 -4
  107. package/esm2022/core/providers/local-storage/local-storage.service.mjs +4 -4
  108. package/esm2022/core/providers/localization/localization.service.mjs +4 -4
  109. package/esm2022/core/providers/modal/modal.service.mjs +4 -4
  110. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +4 -4
  111. package/esm2022/core/providers/notification/notification.service.mjs +4 -4
  112. package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +4 -4
  113. package/esm2022/core/providers/page/page.service.mjs +4 -4
  114. package/esm2022/core/providers/permissions/permissions.service.mjs +4 -4
  115. package/esm2022/core/public_api.mjs +2 -1
  116. package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +10 -10
  117. package/esm2022/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +4 -4
  118. package/esm2022/core/shared/components/action-bar-items/action-bar-base.component.mjs +4 -4
  119. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +4 -4
  120. package/esm2022/core/shared/components/address-form/address-form.component.mjs +4 -4
  121. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +4 -4
  122. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +4 -4
  123. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +4 -4
  124. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +4 -4
  125. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +4 -4
  126. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +4 -4
  127. package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +4 -4
  128. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +4 -4
  129. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +4 -4
  130. package/esm2022/core/shared/components/assets/assets.component.mjs +4 -4
  131. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +4 -4
  132. package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +4 -4
  133. package/esm2022/core/shared/components/card/card.component.mjs +7 -7
  134. package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +4 -4
  135. package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +4 -4
  136. package/esm2022/core/shared/components/chart/chart.component.mjs +4 -4
  137. package/esm2022/core/shared/components/chip/chip.component.mjs +4 -4
  138. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +4 -4
  139. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +4 -4
  140. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +4 -4
  141. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +4 -4
  142. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +4 -4
  143. package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +4 -4
  144. package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +4 -4
  145. package/esm2022/core/shared/components/data-table/data-table.component.mjs +4 -4
  146. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +4 -4
  147. package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +4 -4
  148. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +5 -5
  149. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +4 -4
  150. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +45 -53
  151. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +4 -4
  152. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +4 -4
  153. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +4 -4
  154. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +4 -4
  155. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +25 -37
  156. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +4 -4
  157. package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +4 -4
  158. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +4 -4
  159. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +4 -4
  160. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +4 -4
  161. package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +4 -4
  162. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +4 -4
  163. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +4 -4
  164. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +4 -4
  165. package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +4 -4
  166. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +4 -4
  167. package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +4 -4
  168. package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +4 -4
  169. package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +4 -4
  170. package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +4 -4
  171. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +4 -4
  172. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +4 -4
  173. package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +4 -4
  174. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +4 -4
  175. package/esm2022/core/shared/components/form-field/form-field.component.mjs +4 -4
  176. package/esm2022/core/shared/components/form-item/form-item.component.mjs +4 -4
  177. package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +4 -4
  178. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +4 -4
  179. package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +4 -4
  180. package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +4 -4
  181. package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +4 -4
  182. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +4 -4
  183. package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +4 -4
  184. package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +4 -4
  185. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +4 -4
  186. package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +4 -4
  187. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +4 -4
  188. package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +4 -4
  189. package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +4 -4
  190. package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +4 -4
  191. package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +4 -4
  192. package/esm2022/core/shared/components/page/page.component.mjs +4 -4
  193. package/esm2022/core/shared/components/page-block/page-block.component.mjs +4 -4
  194. package/esm2022/core/shared/components/page-body/page-body.component.mjs +4 -4
  195. package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +4 -4
  196. package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +4 -4
  197. package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +4 -4
  198. package/esm2022/core/shared/components/page-header/page-header.component.mjs +4 -4
  199. package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +4 -4
  200. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +4 -4
  201. package/esm2022/core/shared/components/page-title/page-title.component.mjs +4 -4
  202. package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +4 -4
  203. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +4 -4
  204. package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +4 -4
  205. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +4 -4
  206. package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +4 -4
  207. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +4 -4
  208. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +4 -4
  209. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +4 -4
  210. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +4 -4
  211. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +4 -4
  212. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +4 -4
  213. package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +4 -4
  214. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +4 -4
  215. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +4 -4
  216. package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +4 -4
  217. package/esm2022/core/shared/components/split-view/split-view.component.mjs +4 -4
  218. package/esm2022/core/shared/components/split-view/split-view.directive.mjs +7 -7
  219. package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +4 -4
  220. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +4 -4
  221. package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +4 -4
  222. package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +4 -4
  223. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +4 -4
  224. package/esm2022/core/shared/components/title-input/title-input.component.mjs +4 -4
  225. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +4 -4
  226. package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +4 -4
  227. package/esm2022/core/shared/directives/disabled.directive.mjs +4 -4
  228. package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +4 -4
  229. package/esm2022/core/shared/directives/if-directive-base.mjs +4 -4
  230. package/esm2022/core/shared/directives/if-multichannel.directive.mjs +4 -4
  231. package/esm2022/core/shared/directives/if-permissions.directive.mjs +4 -4
  232. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +4 -4
  233. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +4 -4
  234. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +4 -4
  235. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +4 -4
  236. package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +4 -4
  237. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +4 -4
  238. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +4 -4
  239. package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +4 -4
  240. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +4 -4
  241. package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +4 -4
  242. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +4 -4
  243. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +4 -4
  244. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +4 -4
  245. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +4 -4
  246. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +4 -4
  247. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +4 -4
  248. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +4 -4
  249. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +4 -4
  250. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +4 -4
  251. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +10 -10
  252. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +4 -4
  253. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +4 -4
  254. package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +4 -4
  255. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +4 -4
  256. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +4 -4
  257. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +4 -4
  258. package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +4 -4
  259. package/esm2022/core/shared/pipes/channel-label.pipe.mjs +4 -4
  260. package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +4 -4
  261. package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +4 -4
  262. package/esm2022/core/shared/pipes/duration.pipe.mjs +4 -4
  263. package/esm2022/core/shared/pipes/file-size.pipe.mjs +4 -4
  264. package/esm2022/core/shared/pipes/has-permission.pipe.mjs +4 -4
  265. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +6 -6
  266. package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +4 -4
  267. package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +4 -4
  268. package/esm2022/core/shared/pipes/locale-date.pipe.mjs +4 -4
  269. package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +4 -4
  270. package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +4 -4
  271. package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +4 -4
  272. package/esm2022/core/shared/pipes/sort.pipe.mjs +4 -4
  273. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +4 -4
  274. package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +4 -4
  275. package/esm2022/core/shared/pipes/time-ago.pipe.mjs +4 -4
  276. package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +4 -4
  277. package/esm2022/core/shared/shared.module.mjs +5 -5
  278. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +4 -4
  279. package/esm2022/customer/components/address-card/address-card.component.mjs +4 -4
  280. package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +4 -4
  281. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +4 -4
  282. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +4 -4
  283. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +4 -4
  284. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +7 -5
  285. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +4 -4
  286. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +4 -4
  287. package/esm2022/customer/components/customer-history/customer-history.component.mjs +4 -4
  288. package/esm2022/customer/components/customer-list/customer-list.component.mjs +6 -5
  289. package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +4 -4
  290. package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +4 -4
  291. package/esm2022/customer/customer.module.mjs +5 -5
  292. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +4 -4
  293. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +4 -4
  294. package/esm2022/dashboard/dashboard.module.mjs +5 -5
  295. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +8 -8
  296. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +4 -4
  297. package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +8 -8
  298. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +8 -8
  299. package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +8 -8
  300. package/esm2022/login/components/login/login.component.mjs +4 -4
  301. package/esm2022/login/login.module.mjs +5 -5
  302. package/esm2022/login/providers/login.guard.mjs +4 -4
  303. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +4 -4
  304. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +6 -5
  305. package/esm2022/marketing/marketing.module.mjs +5 -5
  306. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +4 -4
  307. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +4 -4
  308. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +4 -4
  309. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +4 -4
  310. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +4 -4
  311. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +4 -4
  312. package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +4 -4
  313. package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +4 -4
  314. package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +4 -4
  315. package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +4 -4
  316. package/esm2022/order/components/line-refunds/line-refunds.component.mjs +4 -4
  317. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +4 -4
  318. package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +4 -4
  319. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +4 -17
  320. package/esm2022/order/components/order-data-table/order-total-column.component.mjs +4 -4
  321. package/esm2022/order/components/order-detail/order-detail.component.mjs +5 -5
  322. package/esm2022/order/components/order-editor/order-editor.component.mjs +4 -4
  323. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +4 -4
  324. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +4 -4
  325. package/esm2022/order/components/order-history/order-history.component.mjs +4 -4
  326. package/esm2022/order/components/order-list/order-list.component.mjs +6 -5
  327. package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +4 -4
  328. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +4 -4
  329. package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +4 -4
  330. package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +4 -4
  331. package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +4 -4
  332. package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +4 -4
  333. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +4 -4
  334. package/esm2022/order/components/order-table/order-table.component.mjs +4 -4
  335. package/esm2022/order/components/payment-detail/payment-detail.component.mjs +4 -4
  336. package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +4 -4
  337. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +4 -4
  338. package/esm2022/order/components/refund-detail/refund-detail.component.mjs +4 -4
  339. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +4 -4
  340. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +4 -4
  341. package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +4 -4
  342. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +4 -4
  343. package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +4 -4
  344. package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +4 -4
  345. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +4 -4
  346. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +4 -4
  347. package/esm2022/order/order.module.mjs +5 -5
  348. package/esm2022/order/providers/order-transition.service.mjs +4 -4
  349. package/esm2022/order/providers/routing/order.guard.mjs +4 -4
  350. package/esm2022/react/components/react-custom-column.component.mjs +4 -4
  351. package/esm2022/react/components/react-custom-detail.component.mjs +4 -4
  352. package/esm2022/react/components/react-form-input.component.mjs +4 -4
  353. package/esm2022/react/components/react-route.component.mjs +4 -4
  354. package/esm2022/react/directives/react-component-host.directive.mjs +4 -4
  355. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +4 -4
  356. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +4 -4
  357. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +6 -5
  358. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +4 -4
  359. package/esm2022/settings/components/channel-list/channel-list.component.mjs +6 -5
  360. package/esm2022/settings/components/country-detail/country-detail.component.mjs +4 -4
  361. package/esm2022/settings/components/country-list/country-list.component.mjs +6 -5
  362. package/esm2022/settings/components/global-settings/global-settings.component.mjs +4 -4
  363. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +4 -4
  364. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +6 -5
  365. package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +4 -4
  366. package/esm2022/settings/components/profile/profile.component.mjs +4 -4
  367. package/esm2022/settings/components/role-detail/role-detail.component.mjs +4 -4
  368. package/esm2022/settings/components/role-list/role-list.component.mjs +6 -5
  369. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +4 -4
  370. package/esm2022/settings/components/seller-list/seller-list.component.mjs +6 -5
  371. package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +4 -4
  372. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +4 -4
  373. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +6 -5
  374. package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +4 -4
  375. package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +4 -4
  376. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +6 -5
  377. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +4 -4
  378. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +6 -5
  379. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +4 -4
  380. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +6 -5
  381. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +4 -4
  382. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +4 -4
  383. package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +4 -4
  384. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +4 -4
  385. package/esm2022/settings/components/zone-list/zone-list.component.mjs +6 -5
  386. package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +4 -4
  387. package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +4 -4
  388. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +4 -4
  389. package/esm2022/settings/providers/routing/profile-resolver.mjs +4 -4
  390. package/esm2022/settings/settings.module.mjs +5 -5
  391. package/esm2022/system/components/health-check/health-check.component.mjs +4 -4
  392. package/esm2022/system/components/job-list/job-list.component.mjs +4 -4
  393. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +4 -4
  394. package/esm2022/system/system.module.mjs +5 -5
  395. package/fesm2022/vendure-admin-ui-catalog.mjs +120 -118
  396. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  397. package/fesm2022/vendure-admin-ui-core.mjs +1027 -876
  398. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  399. package/fesm2022/vendure-admin-ui-customer.mjs +48 -45
  400. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  401. package/fesm2022/vendure-admin-ui-dashboard.mjs +41 -41
  402. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  403. package/fesm2022/vendure-admin-ui-login.mjs +10 -10
  404. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  405. package/fesm2022/vendure-admin-ui-marketing.mjs +12 -11
  406. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  407. package/fesm2022/vendure-admin-ui-order.mjs +136 -148
  408. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  409. package/fesm2022/vendure-admin-ui-react.mjs +15 -15
  410. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  411. package/fesm2022/vendure-admin-ui-settings.mjs +131 -120
  412. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  413. package/fesm2022/vendure-admin-ui-system.mjs +13 -13
  414. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  415. package/marketing/components/promotion-list/promotion-list.component.d.ts +1 -0
  416. package/order/components/order-data-table/order-data-table.component.d.ts +2 -3
  417. package/order/components/order-list/order-list.component.d.ts +1 -0
  418. package/package.json +13 -13
  419. package/settings/components/administrator-list/administrator-list.component.d.ts +1 -0
  420. package/settings/components/channel-list/channel-list.component.d.ts +1 -0
  421. package/settings/components/country-list/country-list.component.d.ts +1 -0
  422. package/settings/components/payment-method-list/payment-method-list.component.d.ts +1 -0
  423. package/settings/components/role-list/role-list.component.d.ts +1 -0
  424. package/settings/components/seller-list/seller-list.component.d.ts +1 -0
  425. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +1 -0
  426. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -0
  427. package/settings/components/tax-category-list/tax-category-list.component.d.ts +1 -0
  428. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +1 -0
  429. package/settings/components/zone-list/zone-list.component.d.ts +1 -0
  430. package/static/theme.min.css +1 -1
@@ -30,10 +30,10 @@ class DashboardWidgetComponent {
30
30
  this.componentRef.destroy();
31
31
  }
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DashboardWidgetComponent, selector: "vdr-dashboard-widget", inputs: { widgetConfig: "widgetConfig" }, viewQueries: [{ propertyName: "portal", first: true, predicate: ["portal"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n", styles: [":host{display:block}.card{margin-top:0;min-height:200px}.card-header{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "directive", type: i1.CardControlsDirective, selector: "[vdrCardControls]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardWidgetComponent, selector: "vdr-dashboard-widget", inputs: { widgetConfig: "widgetConfig" }, viewQueries: [{ propertyName: "portal", first: true, predicate: ["portal"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n", styles: [":host{display:block}.card{margin-top:0;min-height:200px}.card-header{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "directive", type: i1.CardControlsDirective, selector: "[vdrCardControls]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardWidgetComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardWidgetComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'vdr-dashboard-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n", styles: [":host{display:block}.card{margin-top:0;min-height:200px}.card-header{display:flex;justify-content:space-between}\n"] }]
39
39
  }], propDecorators: { widgetConfig: [{
@@ -148,10 +148,10 @@ class DashboardComponent {
148
148
  setTimeout(() => this.changedDetectorRef.markForCheck());
149
149
  }
150
150
  }
151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.DashboardWidgetService }, { token: i1.LocalStorageService }, { token: i0.ChangeDetectorRef }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DashboardComponent, selector: "vdr-dashboard", ngImport: i0, template: "<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n", styles: [".widget-header{display:flex;justify-content:flex-end}.placeholder{color:var(--color-grey-300);text-align:center}.placeholder .version{font-size:3em;margin:24px;line-height:1em}.placeholder ::ng-deep .clr-i-outline{fill:var(--color-grey-200)}vdr-dashboard-widget{margin-bottom:24px}.drag-handle{cursor:move}.cdk-drag-preview{box-sizing:border-box;border-radius:4px}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-row{padding:0;border-width:1;margin-bottom:6px;transition:padding .2s,margin .2s}.dashboard-row.cdk-drop-list-dragging,.dashboard-row.cdk-drop-list-receiving{border:2px dashed var(--color-component-border-200);border-radius:var(--border-radius);padding:6px}.dashboard-row.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { 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: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: DashboardWidgetComponent, selector: "vdr-dashboard-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.DashboardWidgetService }, { token: i1.LocalStorageService }, { token: i0.ChangeDetectorRef }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardComponent, selector: "vdr-dashboard", ngImport: i0, template: "<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n", styles: [".widget-header{display:flex;justify-content:flex-end}.placeholder{color:var(--color-grey-300);text-align:center}.placeholder .version{font-size:3em;margin:24px;line-height:1em}.placeholder ::ng-deep .clr-i-outline{fill:var(--color-grey-200)}vdr-dashboard-widget{margin-bottom:24px}.drag-handle{cursor:move}.cdk-drag-preview{box-sizing:border-box;border-radius:4px}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-row{padding:0;border-width:1;margin-bottom:6px;transition:padding .2s,margin .2s}.dashboard-row.cdk-drop-list-dragging,.dashboard-row.cdk-drop-list-receiving{border:2px dashed var(--color-component-border-200);border-radius:var(--border-radius);padding:6px}.dashboard-row.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { 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: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: DashboardWidgetComponent, selector: "vdr-dashboard-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
153
  }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardComponent, decorators: [{
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardComponent, decorators: [{
155
155
  type: Component,
156
156
  args: [{ selector: 'vdr-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n", styles: [".widget-header{display:flex;justify-content:flex-end}.placeholder{color:var(--color-grey-300);text-align:center}.placeholder .version{font-size:3em;margin:24px;line-height:1em}.placeholder ::ng-deep .clr-i-outline{fill:var(--color-grey-200)}vdr-dashboard-widget{margin-bottom:24px}.drag-handle{cursor:move}.cdk-drag-preview{box-sizing:border-box;border-radius:4px}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-row{padding:0;border-width:1;margin-bottom:6px;transition:padding .2s,margin .2s}.dashboard-row.cdk-drop-list-dragging,.dashboard-row.cdk-drop-list-receiving{border:2px dashed var(--color-component-border-200);border-radius:var(--border-radius);padding:6px}.dashboard-row.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
157
157
  }], ctorParameters: () => [{ type: i1.DashboardWidgetService }, { type: i1.LocalStorageService }, { type: i0.ChangeDetectorRef }, { type: i1.DataService }] });
@@ -208,19 +208,19 @@ class LatestOrdersWidgetComponent {
208
208
  .refetchOnChannelChange()
209
209
  .mapStream(data => data.orders.items);
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: LatestOrdersWidgetComponent, selector: "vdr-latest-orders-widget", ngImport: i0, template: "<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n", styles: ["vdr-data-table ::ng-deep table{margin-top:0}vdr-order-state-label{display:inline-block;margin-top:2px}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.CustomerLabelComponent, selector: "vdr-customer-label", inputs: ["customer"] }, { kind: "component", type: i1.OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: ["state"] }, { 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: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LatestOrdersWidgetComponent, selector: "vdr-latest-orders-widget", ngImport: i0, template: "<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n", styles: ["vdr-data-table ::ng-deep table{margin-top:0}vdr-order-state-label{display:inline-block;margin-top:2px}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.CustomerLabelComponent, selector: "vdr-customer-label", inputs: ["customer"] }, { kind: "component", type: i1.OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: ["state"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange", "visibleColumnsChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetComponent, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetComponent, decorators: [{
215
215
  type: Component,
216
216
  args: [{ selector: 'vdr-latest-orders-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n", styles: ["vdr-data-table ::ng-deep table{margin-top:0}vdr-order-state-label{display:inline-block;margin-top:2px}\n"] }]
217
217
  }], ctorParameters: () => [{ type: i1.DataService }] });
218
218
  class LatestOrdersWidgetModule {
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
220
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetModule, declarations: [LatestOrdersWidgetComponent], imports: [CoreModule, SharedModule] }); }
221
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetModule, imports: [CoreModule, SharedModule] }); }
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
220
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetModule, declarations: [LatestOrdersWidgetComponent], imports: [CoreModule, SharedModule] }); }
221
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetModule, imports: [CoreModule, SharedModule] }); }
222
222
  }
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatestOrdersWidgetModule, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LatestOrdersWidgetModule, decorators: [{
224
224
  type: NgModule,
225
225
  args: [{
226
226
  imports: [CoreModule, SharedModule],
@@ -276,10 +276,10 @@ class OrderChartWidgetComponent {
276
276
  refresh() {
277
277
  this.refresh$.next(true);
278
278
  }
279
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderChartWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
280
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: OrderChartWidgetComponent, selector: "vdr-order-chart-widget", ngImport: i0, template: "<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n", styles: [".button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ChartComponent, selector: "vdr-chart", inputs: ["entries", "options"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
279
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderChartWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
280
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OrderChartWidgetComponent, selector: "vdr-order-chart-widget", ngImport: i0, template: "<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n", styles: [".button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.ChartComponent, selector: "vdr-chart", inputs: ["entries", "options"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
281
281
  }
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderChartWidgetComponent, decorators: [{
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderChartWidgetComponent, decorators: [{
283
283
  type: Component,
284
284
  args: [{ selector: 'vdr-order-chart-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n", styles: [".button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"] }]
285
285
  }], ctorParameters: () => [{ type: i1.DataService }] });
@@ -322,19 +322,19 @@ class OrderSummaryWidgetComponent {
322
322
  .refetchOnChannelChange()
323
323
  .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);
324
324
  }
325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
326
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: OrderSummaryWidgetComponent, selector: "vdr-order-summary-widget", ngImport: i0, template: "<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n", styles: [".stats{display:flex;justify-content:space-evenly}.stat{text-align:center}.stat-figure{font-size:2rem;line-height:3rem}.stat-label{text-transform:uppercase}.date-range{margin-top:calc(var(--space-unit) * 3);font-size:var(--font-size-xs)}.footer{margin-top:24px;display:flex;flex-direction:column;justify-content:space-between}.button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OrderSummaryWidgetComponent, selector: "vdr-order-summary-widget", ngImport: i0, template: "<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n", styles: [".stats{display:flex;justify-content:space-evenly}.stat{text-align:center}.stat-figure{font-size:2rem;line-height:3rem}.stat-label{text-transform:uppercase}.date-range{margin-top:calc(var(--space-unit) * 3);font-size:var(--font-size-xs)}.footer{margin-top:24px;display:flex;flex-direction:column;justify-content:space-between}.button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
327
327
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetComponent, decorators: [{
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetComponent, decorators: [{
329
329
  type: Component,
330
330
  args: [{ selector: 'vdr-order-summary-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n", styles: [".stats{display:flex;justify-content:space-evenly}.stat{text-align:center}.stat-figure{font-size:2rem;line-height:3rem}.stat-label{text-transform:uppercase}.date-range{margin-top:calc(var(--space-unit) * 3);font-size:var(--font-size-xs)}.footer{margin-top:24px;display:flex;flex-direction:column;justify-content:space-between}.button-small.active{background-color:var(--color-primary-200);color:var(--color-primary-900)}\n"] }]
331
331
  }], ctorParameters: () => [{ type: i1.DataService }] });
332
332
  class OrderSummaryWidgetModule {
333
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
334
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetModule, declarations: [OrderSummaryWidgetComponent], imports: [CoreModule] }); }
335
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetModule, imports: [CoreModule] }); }
333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
334
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetModule, declarations: [OrderSummaryWidgetComponent], imports: [CoreModule] }); }
335
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetModule, imports: [CoreModule] }); }
336
336
  }
337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OrderSummaryWidgetModule, decorators: [{
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderSummaryWidgetModule, decorators: [{
338
338
  type: NgModule,
339
339
  args: [{
340
340
  imports: [CoreModule],
@@ -379,11 +379,11 @@ class DashboardModule {
379
379
  dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);
380
380
  }
381
381
  }
382
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardModule, deps: [{ token: i1.DashboardWidgetService }], target: i0.ɵɵFactoryTarget.NgModule }); }
383
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: DashboardModule, declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent], imports: [SharedModule, i3$1.RouterModule] }); }
384
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardModule, imports: [SharedModule, RouterModule.forChild(dashboardRoutes)] }); }
382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardModule, deps: [{ token: i1.DashboardWidgetService }], target: i0.ɵɵFactoryTarget.NgModule }); }
383
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DashboardModule, declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent], imports: [SharedModule, i3$1.RouterModule] }); }
384
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardModule, imports: [SharedModule, RouterModule.forChild(dashboardRoutes)] }); }
385
385
  }
386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DashboardModule, decorators: [{
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardModule, decorators: [{
387
387
  type: NgModule,
388
388
  args: [{
389
389
  imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],
@@ -392,19 +392,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
392
392
  }], ctorParameters: () => [{ type: i1.DashboardWidgetService }] });
393
393
 
394
394
  class TestWidgetComponent {
395
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
396
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: TestWidgetComponent, selector: "vdr-test-widget", ngImport: i0, template: "<p>This is a test widget!</p>\r\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
395
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
396
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TestWidgetComponent, selector: "vdr-test-widget", ngImport: i0, template: "<p>This is a test widget!</p>\r\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
397
397
  }
398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetComponent, decorators: [{
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetComponent, decorators: [{
399
399
  type: Component,
400
400
  args: [{ selector: 'vdr-test-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p>This is a test widget!</p>\r\n" }]
401
401
  }] });
402
402
  class TestWidgetModule {
403
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
404
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetModule, declarations: [TestWidgetComponent] }); }
405
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetModule }); }
403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
404
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetModule, declarations: [TestWidgetComponent] }); }
405
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetModule }); }
406
406
  }
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: TestWidgetModule, decorators: [{
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TestWidgetModule, decorators: [{
408
408
  type: NgModule,
409
409
  args: [{
410
410
  declarations: [TestWidgetComponent],
@@ -424,19 +424,19 @@ class WelcomeWidgetComponent {
424
424
  .getActiveAdministrator()
425
425
  .mapStream(data => data.activeAdministrator || null);
426
426
  }
427
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
428
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: WelcomeWidgetComponent, selector: "vdr-welcome-widget", ngImport: i0, template: "<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n", styles: [":host{display:flex;justify-content:space-between}.placeholder{color:var(--color-grey-200)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
427
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetComponent, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
428
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WelcomeWidgetComponent, selector: "vdr-welcome-widget", ngImport: i0, template: "<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n", styles: [":host{display:flex;justify-content:space-between}.placeholder{color:var(--color-grey-200)}\n"], dependencies: [{ kind: "directive", type: i2$1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
429
429
  }
430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetComponent, decorators: [{
430
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetComponent, decorators: [{
431
431
  type: Component,
432
432
  args: [{ selector: 'vdr-welcome-widget', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n", styles: [":host{display:flex;justify-content:space-between}.placeholder{color:var(--color-grey-200)}\n"] }]
433
433
  }], ctorParameters: () => [{ type: i1.DataService }] });
434
434
  class WelcomeWidgetModule {
435
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
436
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetModule, declarations: [WelcomeWidgetComponent], imports: [CoreModule] }); }
437
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetModule, imports: [CoreModule] }); }
435
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
436
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetModule, declarations: [WelcomeWidgetComponent], imports: [CoreModule] }); }
437
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetModule, imports: [CoreModule] }); }
438
438
  }
439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WelcomeWidgetModule, decorators: [{
439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WelcomeWidgetModule, decorators: [{
440
440
  type: NgModule,
441
441
  args: [{
442
442
  imports: [CoreModule],
@@ -1 +1 @@
1
- {"version":3,"file":"vendure-admin-ui-dashboard.mjs","sources":["../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.ts","../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.html","../../src/lib/dashboard/src/components/dashboard/dashboard.component.ts","../../src/lib/dashboard/src/components/dashboard/dashboard.component.html","../../src/lib/dashboard/src/dashboard.routes.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.html","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.ts","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.html","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.ts","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.html","../../src/lib/dashboard/src/default-widgets.ts","../../src/lib/dashboard/src/dashboard.module.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.html","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.ts","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.html","../../src/lib/dashboard/src/public_api.ts","../../src/lib/dashboard/src/vendure-admin-ui-dashboard.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { DashboardWidgetConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard-widget',\r\n templateUrl: './dashboard-widget.component.html',\r\n styleUrls: ['./dashboard-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardWidgetComponent implements AfterViewInit, OnDestroy {\r\n @Input() widgetConfig: DashboardWidgetConfig;\r\n\r\n @ViewChild('portal', { read: ViewContainerRef })\r\n private portal: ViewContainerRef;\r\n\r\n private componentRef: ComponentRef<any>;\r\n\r\n ngAfterViewInit(): void {\r\n this.loadWidget();\r\n }\r\n\r\n private async loadWidget() {\r\n const loadComponentResult = this.widgetConfig.loadComponent();\r\n const componentType =\r\n loadComponentResult instanceof Promise ? await loadComponentResult : loadComponentResult;\r\n this.componentRef = this.portal.createComponent(componentType);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n}\r\n","<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport {\r\n DashboardWidgetConfig,\r\n DashboardWidgetService,\r\n DashboardWidgetWidth,\r\n DataService,\r\n LocalStorageService,\r\n titleSetter,\r\n WidgetLayout,\r\n WidgetLayoutDefinition,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever } from '@vendure/common/lib/shared-utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n widgetLayout: WidgetLayout | undefined;\r\n availableWidgets$: Observable<Array<{ id: string; config: DashboardWidgetConfig }>>;\r\n private readonly deletionMarker = '__delete__';\r\n private setTitle = titleSetter();\r\n constructor(\r\n private dashboardWidgetService: DashboardWidgetService,\r\n private localStorageService: LocalStorageService,\r\n private changedDetectorRef: ChangeDetectorRef,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.availableWidgets$ = this.dataService.client.userStatus().stream$.pipe(\r\n map(({ userStatus }) => userStatus.permissions),\r\n map(permissions => this.dashboardWidgetService.getAvailableWidgets(permissions)),\r\n tap(widgets => (this.widgetLayout = this.initLayout(widgets.map(w => w.id)))),\r\n );\r\n this.setTitle('breadcrumb.dashboard');\r\n }\r\n\r\n getClassForWidth(width: DashboardWidgetWidth): string {\r\n switch (width) {\r\n case 3:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-3`;\r\n case 4:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-4`;\r\n case 6:\r\n return `clr-col-12 clr-col-lg-6`;\r\n case 8:\r\n return `clr-col-12 clr-col-lg-8`;\r\n case 12:\r\n return `clr-col-12`;\r\n default:\r\n assertNever(width);\r\n }\r\n }\r\n\r\n getSupportedWidths(config: DashboardWidgetConfig): DashboardWidgetWidth[] {\r\n return config.supportedWidths || [3, 4, 6, 8, 12];\r\n }\r\n\r\n setWidgetWidth(widget: WidgetLayout[number][number], width: DashboardWidgetWidth) {\r\n widget.width = width;\r\n this.recalculateLayout();\r\n }\r\n\r\n trackRow(index: number, row: WidgetLayout[number]) {\r\n const id = row.map(item => `${item.id}:${item.width}`).join('|');\r\n return id;\r\n }\r\n\r\n trackRowItem(index: number, item: WidgetLayout[number][number]) {\r\n return item.config;\r\n }\r\n\r\n addWidget(id: string) {\r\n const config = this.dashboardWidgetService.getWidgetById(id);\r\n if (config) {\r\n const width = this.getSupportedWidths(config)[0];\r\n const widget: WidgetLayout[number][number] = {\r\n id,\r\n config,\r\n width,\r\n };\r\n let targetRow: WidgetLayout[number];\r\n if (this.widgetLayout && this.widgetLayout.length) {\r\n targetRow = this.widgetLayout[this.widgetLayout.length - 1];\r\n } else {\r\n targetRow = [];\r\n this.widgetLayout?.push(targetRow);\r\n }\r\n targetRow.push(widget);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n removeWidget(widget: WidgetLayout[number][number]) {\r\n widget.id = this.deletionMarker;\r\n this.recalculateLayout();\r\n }\r\n\r\n drop(event: CdkDragDrop<{ index: number }>) {\r\n const { currentIndex, previousIndex, previousContainer, container } = event;\r\n if (previousIndex === currentIndex && previousContainer.data.index === container.data.index) {\r\n // Nothing changed\r\n return;\r\n }\r\n if (this.widgetLayout) {\r\n const previousLayoutRow = this.widgetLayout[previousContainer.data.index];\r\n const newLayoutRow = this.widgetLayout[container.data.index];\r\n\r\n previousLayoutRow.splice(previousIndex, 1);\r\n newLayoutRow.splice(currentIndex, 0, event.item.data);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n private initLayout(availableIds: string[]): WidgetLayout {\r\n const savedLayoutDef = this.localStorageService.get('dashboardWidgetLayout');\r\n let layoutDef: WidgetLayoutDefinition | undefined;\r\n if (savedLayoutDef) {\r\n // validate all the IDs from the saved layout are still available\r\n layoutDef = savedLayoutDef.filter(item => availableIds.includes(item.id));\r\n }\r\n return this.dashboardWidgetService.getWidgetLayout(layoutDef);\r\n }\r\n\r\n private recalculateLayout() {\r\n if (this.widgetLayout) {\r\n const flattened = this.widgetLayout\r\n .reduce((flat, row) => [...flat, ...row], [])\r\n .filter(item => item.id !== this.deletionMarker);\r\n const newLayoutDef: WidgetLayoutDefinition = flattened.map(item => ({\r\n id: item.id,\r\n width: item.width,\r\n }));\r\n this.widgetLayout = this.dashboardWidgetService.getWidgetLayout(newLayoutDef);\r\n this.localStorageService.set('dashboardWidgetLayout', newLayoutDef);\r\n setTimeout(() => this.changedDetectorRef.markForCheck());\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n","import { Routes } from '@angular/router';\r\n\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\n\r\nexport const dashboardRoutes: Routes = [\r\n {\r\n path: '',\r\n component: DashboardComponent,\r\n pathMatch: 'full',\r\n },\r\n];\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n CoreModule,\r\n DataService,\r\n GetLatestOrdersDocument,\r\n GetLatestOrdersQuery,\r\n GetOrderListQuery,\r\n ItemOf,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst GET_LATEST_ORDERS = gql`\r\n query GetLatestOrders($options: OrderListOptions) {\r\n orders(options: $options) {\r\n items {\r\n id\r\n createdAt\r\n updatedAt\r\n type\r\n orderPlacedAt\r\n code\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n customer {\r\n id\r\n firstName\r\n lastName\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-latest-orders-widget',\r\n templateUrl: './latest-orders-widget.component.html',\r\n styleUrls: ['./latest-orders-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LatestOrdersWidgetComponent implements OnInit {\r\n latestOrders$: Observable<Array<ItemOf<GetLatestOrdersQuery, 'orders'>>>;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.latestOrders$ = this.dataService\r\n .query(GetLatestOrdersDocument, {\r\n options: {\r\n take: 10,\r\n filter: {\r\n active: { eq: false },\r\n state: { notIn: ['Cancelled', 'Draft'] },\r\n },\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders.items);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule, SharedModule],\r\n declarations: [LatestOrdersWidgetComponent],\r\n})\r\nexport class LatestOrdersWidgetModule {}\r\n","<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n ChartEntry,\r\n ChartFormatOptions,\r\n DataService,\r\n GetOrderChartDataDocument,\r\n MetricType,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap } from 'rxjs';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nexport const GET_ORDER_CHART_DATA = gql`\r\n query GetOrderChartData($refresh: Boolean, $types: [MetricType!]!) {\r\n metricSummary(input: { interval: Daily, types: $types, refresh: $refresh }) {\r\n interval\r\n type\r\n entries {\r\n label\r\n value\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-chart-widget',\r\n templateUrl: './order-chart-widget.component.html',\r\n styleUrls: ['./order-chart-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderChartWidgetComponent implements OnInit {\r\n constructor(private dataService: DataService) {}\r\n metrics$: Observable<ChartEntry[]>;\r\n refresh$ = new Subject<boolean>();\r\n metricType$ = new BehaviorSubject(MetricType.OrderTotal);\r\n MetricType = MetricType;\r\n\r\n ngOnInit() {\r\n const currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n const uiState$ = this.dataService.client.uiState().mapStream(data => data.uiState);\r\n const metricType$ = this.metricType$.pipe(distinctUntilChanged());\r\n this.metrics$ = combineLatest(metricType$, currencyCode$, uiState$).pipe(\r\n switchMap(([metricType, currencyCode, uiState]) =>\r\n this.refresh$.pipe(\r\n startWith(false),\r\n switchMap(refresh =>\r\n this.dataService\r\n .query(GetOrderChartDataDocument, {\r\n types: [metricType],\r\n refresh,\r\n })\r\n .mapSingle(data => data.metricSummary)\r\n .pipe(\r\n map(metrics => {\r\n const formatValueAs: 'currency' | 'number' =\r\n metricType === MetricType.OrderCount ? 'number' : 'currency';\r\n const locale = `${uiState.language}-${uiState.locale}`;\r\n\r\n const formatOptions: ChartFormatOptions = {\r\n formatValueAs,\r\n currencyCode,\r\n locale,\r\n };\r\n return (\r\n metrics\r\n .find(m => m.type === metricType)\r\n ?.entries.map(entry => ({ ...entry, formatOptions })) ?? []\r\n );\r\n }),\r\n ),\r\n ),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n}\r\n","<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport { CoreModule, DataService, GetOrderSummaryDocument } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport dayjs from 'dayjs';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nexport type Timeframe = 'day' | 'week' | 'month';\r\n\r\nexport const GET_ORDER_SUMMARY = gql`\r\n query GetOrderSummary($start: DateTime!, $end: DateTime!) {\r\n orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {\r\n totalItems\r\n items {\r\n id\r\n totalWithTax\r\n currencyCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-summary-widget',\r\n templateUrl: './order-summary-widget.component.html',\r\n styleUrls: ['./order-summary-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderSummaryWidgetComponent implements OnInit {\r\n today = new Date();\r\n yesterday = new Date(new Date().setDate(this.today.getDate() - 1));\r\n totalOrderCount$: Observable<number>;\r\n totalOrderValue$: Observable<number>;\r\n currencyCode$: Observable<string | undefined>;\r\n selection$ = new BehaviorSubject<{ timeframe: Timeframe; date?: Date }>({\r\n timeframe: 'day',\r\n date: this.today,\r\n });\r\n dateRange$: Observable<{ start: Date; end: Date }>;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.dateRange$ = this.selection$.pipe(\r\n distinctUntilChanged(),\r\n map(selection => ({\r\n start: dayjs(selection.date).startOf(selection.timeframe).toDate(),\r\n end: dayjs(selection.date).endOf(selection.timeframe).toDate(),\r\n })),\r\n shareReplay(1),\r\n );\r\n const orderSummary$ = this.dateRange$.pipe(\r\n switchMap(({ start, end }) =>\r\n this.dataService\r\n .query(GetOrderSummaryDocument, { start: start.toISOString(), end: end.toISOString() })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders),\r\n ),\r\n shareReplay(1),\r\n );\r\n this.totalOrderCount$ = orderSummary$.pipe(map(res => res.totalItems));\r\n this.totalOrderValue$ = orderSummary$.pipe(\r\n map(res => res.items.reduce((total, order) => total + order.totalWithTax, 0)),\r\n );\r\n this.currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [OrderSummaryWidgetComponent],\r\n})\r\nexport class OrderSummaryWidgetModule {}\r\n","<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { DashboardWidgetConfig, Permission, WidgetLayoutDefinition } from '@vendure/admin-ui/core';\r\n\r\nimport { LatestOrdersWidgetComponent } from './widgets/latest-orders-widget/latest-orders-widget.component';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\nimport { OrderSummaryWidgetComponent } from './widgets/order-summary-widget/order-summary-widget.component';\r\n\r\nexport const DEFAULT_DASHBOARD_WIDGET_LAYOUT: WidgetLayoutDefinition = [\r\n { id: 'metrics', width: 12 },\r\n { id: 'orderSummary', width: 6 },\r\n { id: 'latestOrders', width: 6 },\r\n];\r\n\r\nexport const DEFAULT_WIDGETS: { [id: string]: DashboardWidgetConfig } = {\r\n metrics: {\r\n title: _('dashboard.metrics'),\r\n supportedWidths: [6, 8, 12],\r\n loadComponent: () => OrderChartWidgetComponent,\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n orderSummary: {\r\n title: _('dashboard.orders-summary'),\r\n loadComponent: () => OrderSummaryWidgetComponent,\r\n supportedWidths: [4, 6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n latestOrders: {\r\n title: _('dashboard.latest-orders'),\r\n loadComponent: () => LatestOrdersWidgetComponent,\r\n supportedWidths: [6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DashboardWidgetService, SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { dashboardRoutes } from './dashboard.routes';\r\nimport { DEFAULT_DASHBOARD_WIDGET_LAYOUT, DEFAULT_WIDGETS } from './default-widgets';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],\r\n declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent],\r\n})\r\nexport class DashboardModule {\r\n constructor(dashboardWidgetService: DashboardWidgetService) {\r\n Object.entries(DEFAULT_WIDGETS).map(([id, config]) => {\r\n if (!dashboardWidgetService.getWidgetById(id)) {\r\n dashboardWidgetService.registerWidget(id, config);\r\n }\r\n });\r\n if (dashboardWidgetService.getDefaultLayout().length === 0) {\r\n dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\n\n@Component({\n selector: 'vdr-test-widget',\n templateUrl: './test-widget.component.html',\n styleUrls: ['./test-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TestWidgetComponent {}\n\n@NgModule({\n declarations: [TestWidgetComponent],\n})\nexport class TestWidgetModule {}\n","<p>This is a test widget!</p>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n ADMIN_UI_VERSION,\r\n CoreModule,\r\n DataService,\r\n GetActiveAdministratorQuery,\r\n getAppConfig,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-welcome-widget',\r\n templateUrl: './welcome-widget.component.html',\r\n styleUrls: ['./welcome-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WelcomeWidgetComponent implements OnInit {\r\n version = ADMIN_UI_VERSION;\r\n administrator$: Observable<GetActiveAdministratorQuery['activeAdministrator']>;\r\n brand = getAppConfig().brand;\r\n hideVendureBranding = getAppConfig().hideVendureBranding;\r\n hideVersion = getAppConfig().hideVersion;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.administrator$ = this.dataService.administrator\r\n .getActiveAdministrator()\r\n .mapStream(data => data.activeAdministrator || null);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [WelcomeWidgetComponent],\r\n})\r\nexport class WelcomeWidgetModule {}\r\n","<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/dashboard/dashboard.component';\nexport * from './components/dashboard-widget/dashboard-widget.component';\nexport * from './dashboard.module';\nexport * from './dashboard.routes';\nexport * from './default-widgets';\nexport * from './widgets/latest-orders-widget/latest-orders-widget.component';\nexport * from './widgets/order-chart-widget/order-chart-widget.component';\nexport * from './widgets/order-summary-widget/order-summary-widget.component';\nexport * from './widgets/test-widget/test-widget.component';\nexport * from './widgets/welcome-widget/welcome-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i5.DashboardWidgetComponent","i6","i3","i4","i5","switchMap","_"],"mappings":"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"}
1
+ {"version":3,"file":"vendure-admin-ui-dashboard.mjs","sources":["../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.ts","../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.html","../../src/lib/dashboard/src/components/dashboard/dashboard.component.ts","../../src/lib/dashboard/src/components/dashboard/dashboard.component.html","../../src/lib/dashboard/src/dashboard.routes.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.html","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.ts","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.html","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.ts","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.html","../../src/lib/dashboard/src/default-widgets.ts","../../src/lib/dashboard/src/dashboard.module.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.html","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.ts","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.html","../../src/lib/dashboard/src/public_api.ts","../../src/lib/dashboard/src/vendure-admin-ui-dashboard.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { DashboardWidgetConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard-widget',\r\n templateUrl: './dashboard-widget.component.html',\r\n styleUrls: ['./dashboard-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardWidgetComponent implements AfterViewInit, OnDestroy {\r\n @Input() widgetConfig: DashboardWidgetConfig;\r\n\r\n @ViewChild('portal', { read: ViewContainerRef })\r\n private portal: ViewContainerRef;\r\n\r\n private componentRef: ComponentRef<any>;\r\n\r\n ngAfterViewInit(): void {\r\n this.loadWidget();\r\n }\r\n\r\n private async loadWidget() {\r\n const loadComponentResult = this.widgetConfig.loadComponent();\r\n const componentType =\r\n loadComponentResult instanceof Promise ? await loadComponentResult : loadComponentResult;\r\n this.componentRef = this.portal.createComponent(componentType);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n}\r\n","<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\r\n <ng-template vdrCardControls>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #portal></ng-template>\r\n</vdr-card>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport {\r\n DashboardWidgetConfig,\r\n DashboardWidgetService,\r\n DashboardWidgetWidth,\r\n DataService,\r\n LocalStorageService,\r\n titleSetter,\r\n WidgetLayout,\r\n WidgetLayoutDefinition,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever } from '@vendure/common/lib/shared-utils';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n widgetLayout: WidgetLayout | undefined;\r\n availableWidgets$: Observable<Array<{ id: string; config: DashboardWidgetConfig }>>;\r\n private readonly deletionMarker = '__delete__';\r\n private setTitle = titleSetter();\r\n constructor(\r\n private dashboardWidgetService: DashboardWidgetService,\r\n private localStorageService: LocalStorageService,\r\n private changedDetectorRef: ChangeDetectorRef,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.availableWidgets$ = this.dataService.client.userStatus().stream$.pipe(\r\n map(({ userStatus }) => userStatus.permissions),\r\n map(permissions => this.dashboardWidgetService.getAvailableWidgets(permissions)),\r\n tap(widgets => (this.widgetLayout = this.initLayout(widgets.map(w => w.id)))),\r\n );\r\n this.setTitle('breadcrumb.dashboard');\r\n }\r\n\r\n getClassForWidth(width: DashboardWidgetWidth): string {\r\n switch (width) {\r\n case 3:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-3`;\r\n case 4:\r\n return `clr-col-12 clr-col-sm-6 clr-col-lg-4`;\r\n case 6:\r\n return `clr-col-12 clr-col-lg-6`;\r\n case 8:\r\n return `clr-col-12 clr-col-lg-8`;\r\n case 12:\r\n return `clr-col-12`;\r\n default:\r\n assertNever(width);\r\n }\r\n }\r\n\r\n getSupportedWidths(config: DashboardWidgetConfig): DashboardWidgetWidth[] {\r\n return config.supportedWidths || [3, 4, 6, 8, 12];\r\n }\r\n\r\n setWidgetWidth(widget: WidgetLayout[number][number], width: DashboardWidgetWidth) {\r\n widget.width = width;\r\n this.recalculateLayout();\r\n }\r\n\r\n trackRow(index: number, row: WidgetLayout[number]) {\r\n const id = row.map(item => `${item.id}:${item.width}`).join('|');\r\n return id;\r\n }\r\n\r\n trackRowItem(index: number, item: WidgetLayout[number][number]) {\r\n return item.config;\r\n }\r\n\r\n addWidget(id: string) {\r\n const config = this.dashboardWidgetService.getWidgetById(id);\r\n if (config) {\r\n const width = this.getSupportedWidths(config)[0];\r\n const widget: WidgetLayout[number][number] = {\r\n id,\r\n config,\r\n width,\r\n };\r\n let targetRow: WidgetLayout[number];\r\n if (this.widgetLayout && this.widgetLayout.length) {\r\n targetRow = this.widgetLayout[this.widgetLayout.length - 1];\r\n } else {\r\n targetRow = [];\r\n this.widgetLayout?.push(targetRow);\r\n }\r\n targetRow.push(widget);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n removeWidget(widget: WidgetLayout[number][number]) {\r\n widget.id = this.deletionMarker;\r\n this.recalculateLayout();\r\n }\r\n\r\n drop(event: CdkDragDrop<{ index: number }>) {\r\n const { currentIndex, previousIndex, previousContainer, container } = event;\r\n if (previousIndex === currentIndex && previousContainer.data.index === container.data.index) {\r\n // Nothing changed\r\n return;\r\n }\r\n if (this.widgetLayout) {\r\n const previousLayoutRow = this.widgetLayout[previousContainer.data.index];\r\n const newLayoutRow = this.widgetLayout[container.data.index];\r\n\r\n previousLayoutRow.splice(previousIndex, 1);\r\n newLayoutRow.splice(currentIndex, 0, event.item.data);\r\n this.recalculateLayout();\r\n }\r\n }\r\n\r\n private initLayout(availableIds: string[]): WidgetLayout {\r\n const savedLayoutDef = this.localStorageService.get('dashboardWidgetLayout');\r\n let layoutDef: WidgetLayoutDefinition | undefined;\r\n if (savedLayoutDef) {\r\n // validate all the IDs from the saved layout are still available\r\n layoutDef = savedLayoutDef.filter(item => availableIds.includes(item.id));\r\n }\r\n return this.dashboardWidgetService.getWidgetLayout(layoutDef);\r\n }\r\n\r\n private recalculateLayout() {\r\n if (this.widgetLayout) {\r\n const flattened = this.widgetLayout\r\n .reduce((flat, row) => [...flat, ...row], [])\r\n .filter(item => item.id !== this.deletionMarker);\r\n const newLayoutDef: WidgetLayoutDefinition = flattened.map(item => ({\r\n id: item.id,\r\n width: item.width,\r\n }));\r\n this.widgetLayout = this.dashboardWidgetService.getWidgetLayout(newLayoutDef);\r\n this.localStorageService.set('dashboardWidgetLayout', newLayoutDef);\r\n setTimeout(() => this.changedDetectorRef.markForCheck());\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <div class=\"widget-header mb-1\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'dashboard.add-widget' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let widget of availableWidgets$ | async\"\r\n (click)=\"addWidget(widget.id)\"\r\n >\r\n {{ (widget.config.title ?? widget.id) | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div cdkDropListGroup>\r\n <div\r\n class=\"clr-row dashboard-row\"\r\n *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"{ index: rowIndex }\"\r\n >\r\n <div\r\n *ngFor=\"let widget of row; trackBy: trackRowItem\"\r\n class=\"dashboard-item\"\r\n [ngClass]=\"getClassForWidth(widget.width)\"\r\n cdkDrag\r\n [cdkDragData]=\"widget\"\r\n >\r\n <vdr-dashboard-widget\r\n *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\r\n [widgetConfig]=\"widget.config\"\r\n >\r\n <div class=\"flex\">\r\n <div class=\"drag-handle\" cdkDragHandle>\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\r\n <button\r\n vdrDropdownItem\r\n [disabled]=\"width === widget.width\"\r\n *ngFor=\"let width of getSupportedWidths(widget.config)\"\r\n (click)=\"setWidgetWidth(widget, width)\"\r\n >\r\n {{ 'dashboard.widget-width' | translate : { width: width } }}\r\n </button>\r\n <div class=\"dropdown-divider\" role=\"separator\"></div>\r\n <button vdrDropdownItem (click)=\"removeWidget(widget)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'dashboard.remove-widget' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-dashboard-widget>\r\n </div>\r\n </div>\r\n </div>\r\n</vdr-page-block>\r\n","import { Routes } from '@angular/router';\r\n\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\n\r\nexport const dashboardRoutes: Routes = [\r\n {\r\n path: '',\r\n component: DashboardComponent,\r\n pathMatch: 'full',\r\n },\r\n];\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n CoreModule,\r\n DataService,\r\n GetLatestOrdersDocument,\r\n GetLatestOrdersQuery,\r\n GetOrderListQuery,\r\n ItemOf,\r\n SharedModule,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst GET_LATEST_ORDERS = gql`\r\n query GetLatestOrders($options: OrderListOptions) {\r\n orders(options: $options) {\r\n items {\r\n id\r\n createdAt\r\n updatedAt\r\n type\r\n orderPlacedAt\r\n code\r\n state\r\n total\r\n totalWithTax\r\n currencyCode\r\n customer {\r\n id\r\n firstName\r\n lastName\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-latest-orders-widget',\r\n templateUrl: './latest-orders-widget.component.html',\r\n styleUrls: ['./latest-orders-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LatestOrdersWidgetComponent implements OnInit {\r\n latestOrders$: Observable<Array<ItemOf<GetLatestOrdersQuery, 'orders'>>>;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.latestOrders$ = this.dataService\r\n .query(GetLatestOrdersDocument, {\r\n options: {\r\n take: 10,\r\n filter: {\r\n active: { eq: false },\r\n state: { notIn: ['Cancelled', 'Draft'] },\r\n },\r\n sort: {\r\n orderPlacedAt: SortOrder.DESC,\r\n },\r\n },\r\n })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders.items);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule, SharedModule],\r\n declarations: [LatestOrdersWidgetComponent],\r\n})\r\nexport class LatestOrdersWidgetModule {}\r\n","<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n ChartEntry,\r\n ChartFormatOptions,\r\n DataService,\r\n GetOrderChartDataDocument,\r\n MetricType,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap } from 'rxjs';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nexport const GET_ORDER_CHART_DATA = gql`\r\n query GetOrderChartData($refresh: Boolean, $types: [MetricType!]!) {\r\n metricSummary(input: { interval: Daily, types: $types, refresh: $refresh }) {\r\n interval\r\n type\r\n entries {\r\n label\r\n value\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-chart-widget',\r\n templateUrl: './order-chart-widget.component.html',\r\n styleUrls: ['./order-chart-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderChartWidgetComponent implements OnInit {\r\n constructor(private dataService: DataService) {}\r\n metrics$: Observable<ChartEntry[]>;\r\n refresh$ = new Subject<boolean>();\r\n metricType$ = new BehaviorSubject(MetricType.OrderTotal);\r\n MetricType = MetricType;\r\n\r\n ngOnInit() {\r\n const currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n const uiState$ = this.dataService.client.uiState().mapStream(data => data.uiState);\r\n const metricType$ = this.metricType$.pipe(distinctUntilChanged());\r\n this.metrics$ = combineLatest(metricType$, currencyCode$, uiState$).pipe(\r\n switchMap(([metricType, currencyCode, uiState]) =>\r\n this.refresh$.pipe(\r\n startWith(false),\r\n switchMap(refresh =>\r\n this.dataService\r\n .query(GetOrderChartDataDocument, {\r\n types: [metricType],\r\n refresh,\r\n })\r\n .mapSingle(data => data.metricSummary)\r\n .pipe(\r\n map(metrics => {\r\n const formatValueAs: 'currency' | 'number' =\r\n metricType === MetricType.OrderCount ? 'number' : 'currency';\r\n const locale = `${uiState.language}-${uiState.locale}`;\r\n\r\n const formatOptions: ChartFormatOptions = {\r\n formatValueAs,\r\n currencyCode,\r\n locale,\r\n };\r\n return (\r\n metrics\r\n .find(m => m.type === metricType)\r\n ?.entries.map(entry => ({ ...entry, formatOptions })) ?? []\r\n );\r\n }),\r\n ),\r\n ),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n}\r\n","<vdr-chart [entries]=\"metrics$ | async\" />\r\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\r\n <button\r\n class=\"button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderTotal)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderTotal\"\r\n >\r\n {{ 'dashboard.metric-order-total-value' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.OrderCount)\"\r\n [class.active]=\"activeMetricType === MetricType.OrderCount\"\r\n >\r\n {{ 'dashboard.metric-number-of-orders' | translate }}\r\n </button>\r\n <button\r\n class=\"ml-1 button-small\"\r\n (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\r\n [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\r\n >\r\n {{ 'dashboard.metric-average-order-value' | translate }}\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <button class=\"button-small\" (click)=\"refresh()\">\r\n <clr-icon shape=\"refresh\"></clr-icon>\r\n </button>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport { CoreModule, DataService, GetOrderSummaryDocument } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport dayjs from 'dayjs';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nexport type Timeframe = 'day' | 'week' | 'month';\r\n\r\nexport const GET_ORDER_SUMMARY = gql`\r\n query GetOrderSummary($start: DateTime!, $end: DateTime!) {\r\n orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {\r\n totalItems\r\n items {\r\n id\r\n totalWithTax\r\n currencyCode\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-summary-widget',\r\n templateUrl: './order-summary-widget.component.html',\r\n styleUrls: ['./order-summary-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderSummaryWidgetComponent implements OnInit {\r\n today = new Date();\r\n yesterday = new Date(new Date().setDate(this.today.getDate() - 1));\r\n totalOrderCount$: Observable<number>;\r\n totalOrderValue$: Observable<number>;\r\n currencyCode$: Observable<string | undefined>;\r\n selection$ = new BehaviorSubject<{ timeframe: Timeframe; date?: Date }>({\r\n timeframe: 'day',\r\n date: this.today,\r\n });\r\n dateRange$: Observable<{ start: Date; end: Date }>;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.dateRange$ = this.selection$.pipe(\r\n distinctUntilChanged(),\r\n map(selection => ({\r\n start: dayjs(selection.date).startOf(selection.timeframe).toDate(),\r\n end: dayjs(selection.date).endOf(selection.timeframe).toDate(),\r\n })),\r\n shareReplay(1),\r\n );\r\n const orderSummary$ = this.dateRange$.pipe(\r\n switchMap(({ start, end }) =>\r\n this.dataService\r\n .query(GetOrderSummaryDocument, { start: start.toISOString(), end: end.toISOString() })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.orders),\r\n ),\r\n shareReplay(1),\r\n );\r\n this.totalOrderCount$ = orderSummary$.pipe(map(res => res.totalItems));\r\n this.totalOrderValue$ = orderSummary$.pipe(\r\n map(res => res.items.reduce((total, order) => total + order.totalWithTax, 0)),\r\n );\r\n this.currencyCode$ = this.dataService.settings\r\n .getActiveChannel()\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [OrderSummaryWidgetComponent],\r\n})\r\nexport class OrderSummaryWidgetModule {}\r\n","<div class=\"stats\">\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\r\n </div>\r\n <div class=\"stat\">\r\n <div class=\"stat-figure\">\r\n {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\r\n </div>\r\n <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\r\n <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\r\n {{ 'dashboard.today' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\r\n {{ 'dashboard.yesterday' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\r\n {{ 'dashboard.thisWeek' | translate }}\r\n </button>\r\n <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\r\n {{ 'dashboard.thisMonth' | translate }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\r\n {{ range.start | localeDate }} - {{ range.end | localeDate }}\r\n </div>\r\n</div>\r\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { DashboardWidgetConfig, Permission, WidgetLayoutDefinition } from '@vendure/admin-ui/core';\r\n\r\nimport { LatestOrdersWidgetComponent } from './widgets/latest-orders-widget/latest-orders-widget.component';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\nimport { OrderSummaryWidgetComponent } from './widgets/order-summary-widget/order-summary-widget.component';\r\n\r\nexport const DEFAULT_DASHBOARD_WIDGET_LAYOUT: WidgetLayoutDefinition = [\r\n { id: 'metrics', width: 12 },\r\n { id: 'orderSummary', width: 6 },\r\n { id: 'latestOrders', width: 6 },\r\n];\r\n\r\nexport const DEFAULT_WIDGETS: { [id: string]: DashboardWidgetConfig } = {\r\n metrics: {\r\n title: _('dashboard.metrics'),\r\n supportedWidths: [6, 8, 12],\r\n loadComponent: () => OrderChartWidgetComponent,\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n orderSummary: {\r\n title: _('dashboard.orders-summary'),\r\n loadComponent: () => OrderSummaryWidgetComponent,\r\n supportedWidths: [4, 6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n latestOrders: {\r\n title: _('dashboard.latest-orders'),\r\n loadComponent: () => LatestOrdersWidgetComponent,\r\n supportedWidths: [6, 8, 12],\r\n requiresPermissions: [Permission.ReadOrder],\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DashboardWidgetService, SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { dashboardRoutes } from './dashboard.routes';\r\nimport { DEFAULT_DASHBOARD_WIDGET_LAYOUT, DEFAULT_WIDGETS } from './default-widgets';\r\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],\r\n declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent],\r\n})\r\nexport class DashboardModule {\r\n constructor(dashboardWidgetService: DashboardWidgetService) {\r\n Object.entries(DEFAULT_WIDGETS).map(([id, config]) => {\r\n if (!dashboardWidgetService.getWidgetById(id)) {\r\n dashboardWidgetService.registerWidget(id, config);\r\n }\r\n });\r\n if (dashboardWidgetService.getDefaultLayout().length === 0) {\r\n dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\n\n@Component({\n selector: 'vdr-test-widget',\n templateUrl: './test-widget.component.html',\n styleUrls: ['./test-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TestWidgetComponent {}\n\n@NgModule({\n declarations: [TestWidgetComponent],\n})\nexport class TestWidgetModule {}\n","<p>This is a test widget!</p>\r\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\r\nimport {\r\n ADMIN_UI_VERSION,\r\n CoreModule,\r\n DataService,\r\n GetActiveAdministratorQuery,\r\n getAppConfig,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-welcome-widget',\r\n templateUrl: './welcome-widget.component.html',\r\n styleUrls: ['./welcome-widget.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WelcomeWidgetComponent implements OnInit {\r\n version = ADMIN_UI_VERSION;\r\n administrator$: Observable<GetActiveAdministratorQuery['activeAdministrator']>;\r\n brand = getAppConfig().brand;\r\n hideVendureBranding = getAppConfig().hideVendureBranding;\r\n hideVersion = getAppConfig().hideVersion;\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.administrator$ = this.dataService.administrator\r\n .getActiveAdministrator()\r\n .mapStream(data => data.activeAdministrator || null);\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [CoreModule],\r\n declarations: [WelcomeWidgetComponent],\r\n})\r\nexport class WelcomeWidgetModule {}\r\n","<div *ngIf=\"administrator$ | async as administrator\">\r\n <h4 class=\"\">\r\n Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\r\n <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\r\n </h4>\r\n\r\n <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\r\n {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\r\n </p>\r\n</div>\r\n<div class=\"placeholder\">\r\n <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\r\n</div>\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/dashboard/dashboard.component';\nexport * from './components/dashboard-widget/dashboard-widget.component';\nexport * from './dashboard.module';\nexport * from './dashboard.routes';\nexport * from './default-widgets';\nexport * from './widgets/latest-orders-widget/latest-orders-widget.component';\nexport * from './widgets/order-chart-widget/order-chart-widget.component';\nexport * from './widgets/order-summary-widget/order-summary-widget.component';\nexport * from './widgets/test-widget/test-widget.component';\nexport * from './widgets/welcome-widget/welcome-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i5.DashboardWidgetComponent","i6","i3","i4","i5","switchMap","_"],"mappings":"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"}