@vendure/dashboard 3.3.6-master-202507041203 → 3.4.0-minor-202506250934
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.
- package/README.md +4 -41
- package/dist/plugin/utils/config-loader.d.ts +1 -70
- package/dist/plugin/utils/config-loader.js +9 -33
- package/dist/plugin/vite-plugin-config-loader.js +1 -6
- package/dist/plugin/vite-plugin-config.js +7 -6
- package/dist/plugin/vite-plugin-dashboard-metadata.d.ts +3 -1
- package/dist/plugin/vite-plugin-dashboard-metadata.js +8 -1
- package/dist/plugin/vite-plugin-vendure-dashboard.d.ts +0 -41
- package/dist/plugin/vite-plugin-vendure-dashboard.js +2 -5
- package/package.json +131 -131
- package/src/app/app-providers.tsx +6 -6
- package/src/app/main.tsx +9 -9
- package/src/app/routes/__root.tsx +2 -1
- package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +1 -10
- package/src/app/routes/_authenticated/_administrators/administrators.tsx +8 -15
- package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +12 -16
- package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +16 -16
- package/src/app/routes/_authenticated/_assets/assets.graphql.ts +2 -13
- package/src/app/routes/_authenticated/_assets/assets.tsx +4 -16
- package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +38 -52
- package/src/app/routes/_authenticated/_channels/channels.graphql.ts +1 -10
- package/src/app/routes/_authenticated/_channels/channels.tsx +10 -17
- package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +17 -21
- package/src/app/routes/_authenticated/_collections/collections.graphql.ts +3 -60
- package/src/app/routes/_authenticated/_collections/collections.tsx +124 -168
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +16 -20
- package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +8 -7
- package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +5 -9
- package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +9 -10
- package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +7 -7
- package/src/app/routes/_authenticated/_countries/countries.graphql.ts +2 -11
- package/src/app/routes/_authenticated/_countries/countries.tsx +6 -13
- package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +17 -21
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +5 -12
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +17 -22
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +2 -11
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +6 -13
- package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +15 -18
- package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +19 -19
- package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +10 -10
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +5 -5
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +7 -11
- package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +4 -4
- package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +73 -75
- package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +4 -4
- package/src/app/routes/_authenticated/_customers/customers.graphql.ts +2 -10
- package/src/app/routes/_authenticated/_customers/customers.tsx +6 -13
- package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +15 -19
- package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +9 -9
- package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +11 -15
- package/src/app/routes/_authenticated/_facets/facets.graphql.ts +1 -31
- package/src/app/routes/_authenticated/_facets/facets.tsx +7 -31
- package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +13 -17
- package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +13 -13
- package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +14 -11
- package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +55 -93
- package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +9 -11
- package/src/app/routes/_authenticated/_orders/components/order-address.tsx +6 -5
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +62 -67
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +6 -11
- package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +5 -9
- package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +7 -11
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +22 -39
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +4 -4
- package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +36 -37
- package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +33 -18
- package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +44 -43
- package/src/app/routes/_authenticated/_orders/orders.graphql.ts +3 -101
- package/src/app/routes/_authenticated/_orders/orders.tsx +20 -21
- package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +16 -72
- package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +90 -188
- package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +7 -10
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +11 -11
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.graphql.ts +2 -29
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +14 -36
- package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +15 -22
- package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +6 -7
- package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +3 -64
- package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +9 -39
- package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +22 -33
- package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +10 -10
- package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +41 -57
- package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +11 -11
- package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +14 -18
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +15 -21
- package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +34 -28
- package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +53 -84
- package/src/app/routes/_authenticated/_products/products.graphql.ts +2 -70
- package/src/app/routes/_authenticated/_products/products.tsx +7 -36
- package/src/app/routes/_authenticated/_products/products_.$id.tsx +24 -33
- package/src/app/routes/_authenticated/_profile/profile.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_profile/profile.tsx +8 -8
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +11 -14
- package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +11 -14
- package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +2 -27
- package/src/app/routes/_authenticated/_promotions/promotions.tsx +7 -31
- package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +16 -20
- package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +5 -5
- package/src/app/routes/_authenticated/_roles/components/permissions-grid.tsx +17 -21
- package/src/app/routes/_authenticated/_roles/roles.graphql.ts +1 -10
- package/src/app/routes/_authenticated/_roles/roles.tsx +10 -17
- package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +12 -16
- package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +1 -10
- package/src/app/routes/_authenticated/_sellers/sellers.tsx +6 -13
- package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +13 -17
- package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +6 -6
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +21 -23
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +21 -25
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-method-dialog.tsx +3 -3
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +2 -29
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +6 -25
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +13 -17
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.graphql.ts +1 -26
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +6 -25
- package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +12 -16
- package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +4 -4
- package/src/app/routes/_authenticated/_system/healthchecks.tsx +4 -4
- package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_system/job-queue.tsx +6 -10
- package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +28 -34
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.graphql.ts +2 -11
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +7 -14
- package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +16 -20
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.graphql.ts +2 -11
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +8 -15
- package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +18 -22
- package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +8 -12
- package/src/app/routes/_authenticated/_zones/zones.graphql.ts +2 -11
- package/src/app/routes/_authenticated/_zones/zones.tsx +6 -13
- package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +14 -18
- package/src/app/routes/_authenticated/index.tsx +4 -4
- package/src/app/routes/_authenticated.tsx +3 -3
- package/src/app/routes/login.tsx +2 -2
- package/src/app/styles.css +1 -4
- package/src/lib/components/data-display/boolean.tsx +1 -1
- package/src/lib/components/data-display/date-time.tsx +2 -2
- package/src/lib/components/data-display/json.tsx +1 -1
- package/src/lib/components/data-display/money.tsx +3 -2
- package/src/lib/components/data-input/affixed-input.tsx +8 -3
- package/src/lib/components/data-input/customer-group-input.tsx +2 -2
- package/src/lib/components/data-input/datetime-input.tsx +146 -129
- package/src/lib/components/data-input/facet-value-input.tsx +22 -30
- package/src/lib/components/data-input/money-input.tsx +12 -5
- package/src/lib/components/data-input/{rich-text-input.tsx → richt-text-input.tsx} +1 -1
- package/src/lib/components/data-table/add-filter-menu.tsx +18 -9
- package/src/lib/components/data-table/data-table-column-header.tsx +22 -4
- package/src/lib/components/data-table/data-table-faceted-filter.tsx +8 -8
- package/src/lib/components/data-table/data-table-filter-badge.tsx +8 -16
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +8 -8
- package/src/lib/components/data-table/data-table-pagination.tsx +4 -4
- package/src/lib/components/data-table/data-table-view-options.tsx +21 -25
- package/src/lib/components/data-table/data-table.tsx +41 -85
- package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +8 -11
- package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +23 -14
- package/src/lib/components/data-table/filters/data-table-id-filter.tsx +10 -15
- package/src/lib/components/data-table/filters/data-table-number-filter.tsx +17 -18
- package/src/lib/components/data-table/filters/data-table-string-filter.tsx +12 -29
- package/src/lib/components/data-table/human-readable-operator.tsx +3 -3
- package/src/lib/components/data-table/refresh-button.tsx +15 -30
- package/src/lib/components/layout/app-layout.tsx +8 -8
- package/src/lib/components/layout/app-sidebar.tsx +5 -5
- package/src/lib/components/layout/channel-switcher.tsx +8 -8
- package/src/lib/components/layout/content-language-selector.tsx +10 -16
- package/src/lib/components/layout/generated-breadcrumbs.tsx +1 -1
- package/src/lib/components/layout/language-dialog.tsx +11 -5
- package/src/lib/components/layout/nav-main.tsx +4 -4
- package/src/lib/components/layout/nav-projects.tsx +2 -2
- package/src/lib/components/layout/nav-user.tsx +7 -7
- package/src/lib/components/layout/prerelease-popup.tsx +1 -1
- package/src/lib/components/login/login-form.tsx +5 -5
- package/src/lib/components/shared/alerts.tsx +3 -3
- package/src/lib/components/shared/animated-number.tsx +2 -2
- package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +19 -29
- package/src/lib/components/shared/asset/asset-gallery.tsx +18 -23
- package/src/lib/components/shared/asset/asset-picker-dialog.tsx +66 -63
- package/src/lib/components/shared/asset/asset-preview-dialog.tsx +7 -3
- package/src/lib/components/shared/asset/asset-preview-selector.tsx +6 -4
- package/src/lib/components/shared/asset/asset-preview.tsx +15 -7
- package/src/lib/components/shared/asset/asset-properties.tsx +9 -7
- package/src/lib/components/shared/asset/focal-point-control.tsx +13 -5
- package/src/lib/components/shared/assigned-facet-values.tsx +5 -1
- package/src/lib/components/shared/channel-code-label.tsx +4 -3
- package/src/lib/components/shared/channel-selector.tsx +6 -6
- package/src/lib/components/shared/configurable-operation-arg-input.tsx +2 -2
- package/src/lib/components/shared/configurable-operation-input.tsx +16 -15
- package/src/lib/components/shared/confirmation-dialog.tsx +2 -2
- package/src/lib/components/shared/copyable-text.tsx +3 -2
- package/src/lib/components/shared/country-selector.tsx +18 -21
- package/src/lib/components/shared/currency-selector.tsx +5 -5
- package/src/lib/components/shared/custom-fields-form.tsx +51 -253
- package/src/lib/components/shared/customer-address-form.tsx +13 -18
- package/src/lib/components/shared/customer-group-selector.tsx +6 -6
- package/src/lib/components/shared/customer-selector.tsx +18 -24
- package/src/lib/components/shared/detail-page-button.tsx +1 -3
- package/src/lib/components/shared/entity-assets.tsx +34 -33
- package/src/lib/components/shared/error-page.tsx +6 -6
- package/src/lib/components/shared/facet-value-chip.tsx +5 -12
- package/src/lib/components/shared/facet-value-selector.tsx +63 -64
- package/src/lib/components/shared/form-field-wrapper.tsx +13 -22
- package/src/lib/components/shared/history-timeline/history-entry.tsx +6 -12
- package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +3 -3
- package/src/lib/components/shared/history-timeline/history-note-editor.tsx +4 -4
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +3 -3
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +8 -15
- package/src/lib/components/shared/language-selector.tsx +5 -5
- package/src/lib/components/shared/logo-mark.tsx +2 -2
- package/src/lib/components/shared/multi-select.tsx +5 -5
- package/src/lib/components/shared/navigation-confirmation.tsx +9 -24
- package/src/lib/components/shared/option-value-input.tsx +15 -17
- package/src/lib/components/shared/paginated-list-data-table.tsx +24 -100
- package/src/lib/components/shared/permission-guard.tsx +4 -4
- package/src/lib/components/shared/product-variant-selector.tsx +31 -32
- package/src/lib/components/shared/role-code-label.tsx +6 -10
- package/src/lib/components/shared/role-selector.tsx +4 -4
- package/src/lib/components/shared/seller-selector.tsx +17 -21
- package/src/lib/components/shared/stock-level-label.tsx +5 -5
- package/src/lib/components/shared/tax-category-selector.tsx +5 -5
- package/src/lib/components/shared/translatable-form-field.tsx +10 -5
- package/src/lib/components/shared/vendure-image.tsx +2 -31
- package/src/lib/components/shared/zone-selector.tsx +6 -5
- package/src/lib/components/ui/accordion.tsx +3 -3
- package/src/lib/components/ui/alert-dialog.tsx +10 -10
- package/src/lib/components/ui/alert.tsx +3 -3
- package/src/lib/components/ui/badge.tsx +2 -2
- package/src/lib/components/ui/breadcrumb.tsx +4 -4
- package/src/lib/components/ui/button.tsx +3 -10
- package/src/lib/components/ui/calendar.tsx +459 -392
- package/src/lib/components/ui/card.tsx +2 -2
- package/src/lib/components/ui/checkbox.tsx +2 -2
- package/src/lib/components/ui/command.tsx +6 -12
- package/src/lib/components/ui/dialog.tsx +2 -2
- package/src/lib/components/ui/dropdown-menu.tsx +7 -7
- package/src/lib/components/ui/form.tsx +4 -4
- package/src/lib/components/ui/hover-card.tsx +3 -3
- package/src/lib/components/ui/input.tsx +1 -1
- package/src/lib/components/ui/label.tsx +2 -2
- package/src/lib/components/ui/pagination.tsx +108 -87
- package/src/lib/components/ui/popover.tsx +3 -3
- package/src/lib/components/ui/scroll-area.tsx +2 -2
- package/src/lib/components/ui/select.tsx +129 -151
- package/src/lib/components/ui/separator.tsx +2 -2
- package/src/lib/components/ui/sheet.tsx +5 -5
- package/src/lib/components/ui/sidebar.tsx +10 -10
- package/src/lib/components/ui/skeleton.tsx +1 -1
- package/src/lib/components/ui/switch.tsx +2 -2
- package/src/lib/components/ui/table.tsx +2 -2
- package/src/lib/components/ui/tabs.tsx +3 -3
- package/src/lib/components/ui/textarea.tsx +1 -1
- package/src/lib/components/ui/tooltip.tsx +3 -3
- package/src/lib/framework/alert/alert-extensions.tsx +3 -2
- package/src/lib/framework/alert/alert-item.tsx +3 -5
- package/src/lib/framework/alert/types.ts +13 -0
- package/src/lib/framework/component-registry/component-registry.tsx +47 -33
- package/src/lib/framework/dashboard-widget/base-widget.tsx +13 -5
- package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +8 -8
- package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +7 -6
- package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +6 -7
- package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/types.ts +22 -0
- package/src/lib/framework/dashboard-widget/widget-extensions.tsx +1 -1
- package/src/lib/framework/defaults.ts +1 -1
- package/src/lib/framework/document-introspection/add-custom-fields.ts +2 -50
- package/src/lib/framework/document-introspection/get-document-structure.ts +10 -43
- package/src/lib/framework/document-introspection/hooks.ts +1 -4
- package/src/lib/framework/extension-api/define-dashboard-extension.ts +49 -31
- package/src/lib/framework/extension-api/extension-api-types.ts +98 -25
- package/src/lib/framework/extension-api/use-dashboard-extensions.ts +1 -2
- package/src/lib/framework/form-engine/form-schema-tools.ts +1 -1
- package/src/lib/framework/form-engine/use-generated-form.tsx +18 -57
- package/src/lib/framework/layout-engine/location-wrapper.tsx +8 -11
- package/src/lib/framework/layout-engine/page-layout.tsx +48 -66
- package/src/lib/framework/page/detail-page-route-loader.tsx +7 -26
- package/src/lib/framework/page/detail-page.tsx +37 -122
- package/src/lib/framework/page/list-page.tsx +11 -9
- package/src/lib/framework/page/use-detail-page.ts +7 -38
- package/src/lib/framework/page/use-extended-router.tsx +5 -4
- package/src/lib/framework/registry/registry-types.ts +5 -15
- package/src/lib/graphql/{fragments.ts → fragments.tsx} +2 -1
- package/src/lib/graphql/graphql-env.d.ts +13 -16
- package/src/lib/hooks/use-auth.tsx +1 -1
- package/src/lib/hooks/use-channel.ts +1 -1
- package/src/lib/hooks/use-grouped-permissions.ts +2 -3
- package/src/lib/hooks/use-page.tsx +2 -2
- package/src/lib/hooks/use-permissions.ts +2 -3
- package/src/lib/hooks/use-server-config.ts +1 -1
- package/src/lib/hooks/use-theme.ts +1 -1
- package/src/lib/hooks/use-user-settings.tsx +1 -1
- package/src/lib/index.ts +6 -65
- package/src/lib/lib/trans.tsx +3 -3
- package/src/lib/lib/utils.ts +0 -49
- package/src/lib/providers/auth.tsx +14 -37
- package/src/lib/providers/channel-provider.tsx +4 -4
- package/src/lib/providers/server-config.tsx +11 -13
- package/src/lib/providers/theme-provider.tsx +3 -2
- package/vite/utils/config-loader.ts +10 -120
- package/vite/vite-plugin-config-loader.ts +1 -6
- package/vite/vite-plugin-config.ts +7 -6
- package/vite/vite-plugin-dashboard-metadata.ts +9 -1
- package/vite/vite-plugin-vendure-dashboard.ts +4 -48
- package/dist/plugin/tests/barrel-exports/my-plugin/index.d.ts +0 -1
- package/dist/plugin/tests/barrel-exports/my-plugin/index.js +0 -17
- package/dist/plugin/tests/barrel-exports/my-plugin/src/my.plugin.d.ts +0 -2
- package/dist/plugin/tests/barrel-exports/my-plugin/src/my.plugin.js +0 -20
- package/dist/plugin/tests/barrel-exports/vendure-config.d.ts +0 -2
- package/dist/plugin/tests/barrel-exports/vendure-config.js +0 -19
- package/dist/plugin/tests/barrel-exports.spec.d.ts +0 -1
- package/dist/plugin/tests/barrel-exports.spec.js +0 -14
- package/dist/plugin/vite-plugin-tailwind-source.d.ts +0 -7
- package/dist/plugin/vite-plugin-tailwind-source.js +0 -49
- package/src/app/common/delete-bulk-action.tsx +0 -148
- package/src/app/common/duplicate-bulk-action.tsx +0 -134
- package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +0 -45
- package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +0 -123
- package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +0 -430
- package/src/app/routes/_authenticated/_collections/components/move-single-collection.tsx +0 -33
- package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +0 -104
- package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +0 -191
- package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +0 -320
- package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +0 -173
- package/src/app/routes/_authenticated/_orders/utils/order-types.ts +0 -7
- package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +0 -77
- package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +0 -58
- package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +0 -110
- package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +0 -281
- package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +0 -123
- package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +0 -82
- package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +0 -61
- package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +0 -58
- package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +0 -15
- package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +0 -15
- package/src/lib/components/data-input/index.ts +0 -11
- package/src/lib/components/data-input/relation-input.tsx +0 -153
- package/src/lib/components/data-input/relation-selector.tsx +0 -468
- package/src/lib/components/data-table/data-table-bulk-action-item.tsx +0 -101
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +0 -95
- package/src/lib/components/labeled-data.tsx +0 -21
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +0 -94
- package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +0 -71
- package/src/lib/components/shared/assign-to-channel-dialog.tsx +0 -155
- package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +0 -90
- package/src/lib/framework/data-table/data-table-extensions.ts +0 -35
- package/src/lib/framework/document-extension/extend-detail-form-query.ts +0 -50
- package/src/lib/framework/document-extension/extend-document.spec.ts +0 -884
- package/src/lib/framework/document-extension/extend-document.ts +0 -159
- package/src/lib/framework/extension-api/display-component-extensions.tsx +0 -69
- package/src/lib/framework/extension-api/input-component-extensions.tsx +0 -69
- package/src/lib/framework/extension-api/logic/alerts.ts +0 -10
- package/src/lib/framework/extension-api/logic/data-table.ts +0 -60
- package/src/lib/framework/extension-api/logic/detail-forms.ts +0 -48
- package/src/lib/framework/extension-api/logic/form-components.ts +0 -13
- package/src/lib/framework/extension-api/logic/index.ts +0 -8
- package/src/lib/framework/extension-api/logic/layout.ts +0 -22
- package/src/lib/framework/extension-api/logic/navigation.ts +0 -37
- package/src/lib/framework/extension-api/logic/widgets.ts +0 -10
- package/src/lib/framework/extension-api/types/alerts.ts +0 -54
- package/src/lib/framework/extension-api/types/data-table.ts +0 -87
- package/src/lib/framework/extension-api/types/detail-forms.ts +0 -81
- package/src/lib/framework/extension-api/types/form-components.ts +0 -32
- package/src/lib/framework/extension-api/types/index.ts +0 -8
- package/src/lib/framework/extension-api/types/layout.ts +0 -78
- package/src/lib/framework/extension-api/types/navigation.ts +0 -19
- package/src/lib/framework/extension-api/types/widgets.ts +0 -97
- package/src/lib/framework/form-engine/custom-form-component-extensions.ts +0 -38
- package/src/lib/framework/form-engine/custom-form-component.tsx +0 -33
- package/src/lib/framework/form-engine/utils.ts +0 -58
- package/src/lib/framework/layout-engine/page-block-provider.tsx +0 -6
- package/src/lib/graphql/common-operations.ts +0 -18
- package/src/lib/hooks/use-extended-detail-query.ts +0 -37
- package/src/lib/hooks/use-extended-list-query.ts +0 -73
- package/src/lib/hooks/use-page-block.tsx +0 -10
- package/vite/tests/barrel-exports/my-plugin/index.ts +0 -1
- package/vite/tests/barrel-exports/my-plugin/src/my.plugin.ts +0 -8
- package/vite/tests/barrel-exports/package.json +0 -6
- package/vite/tests/barrel-exports/vendure-config.ts +0 -19
- package/vite/tests/barrel-exports.spec.ts +0 -21
- package/vite/vite-plugin-tailwind-source.ts +0 -65
- /package/src/lib/components/data-table/{types.ts → data-table-types.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,50 +1,13 @@
|
|
|
1
1
|
# Vendure Dashboard
|
|
2
2
|
|
|
3
|
-
This is
|
|
4
|
-
|
|
3
|
+
This is an admin dashboard for managing Vendure applications. It is designed to supersede the existing Admin UI.
|
|
4
|
+
|
|
5
|
+
Current status: early work in progress
|
|
5
6
|
|
|
6
7
|
## Development
|
|
7
8
|
|
|
8
9
|
Run `npx vite` to start Vite in dev mode.
|
|
9
10
|
|
|
10
|
-
### Note on internal `@/vdb` imports
|
|
11
|
-
|
|
12
|
-
You will notice that the dashboard uses internal Vendure Dashboard imports prefixed with `@/vdb`. This is adapted from the
|
|
13
|
-
convention of Shadcn which uses a `@/*` path alias for internal imports.
|
|
14
|
-
|
|
15
|
-
**Why not just use relative imports?**
|
|
16
|
-
|
|
17
|
-
The problem with using relative imports is that they are handled differently by Vite when compiling the dashboard. This
|
|
18
|
-
manifests as things like React Context not working correctly. The underlying reason is that Vite will selectively
|
|
19
|
-
pre-compile source code and mixing the imports between alias and relative can result in 2 "versions" of the same code
|
|
20
|
-
being loaded, which causes issues with React Context and other things that rely on a single instance of a module.
|
|
21
|
-
|
|
22
|
-
For this reason, try to use the `@/vdb` alias for all internal Vendure Dashboard imports to the "src/lib" directory.
|
|
23
|
-
|
|
24
|
-
This is especially import for hooks (since many of them use React Context) and there is even a pre-commit hook
|
|
25
|
-
that will run [a script](./scripts/check-internal-imports.js) to ensure that you are not using relative imports for
|
|
26
|
-
internal Vendure Dashboard code.
|
|
27
|
-
|
|
28
|
-
**Type Safety for Consumers**
|
|
29
|
-
|
|
30
|
-
Because we ship source code in the npm package, consumers need to tell TypeScript how to resolve these internal
|
|
31
|
-
imports by adding the path alias to _their_ `tsconfig.json` file.
|
|
32
|
-
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"compilerOptions": {
|
|
36
|
-
"paths": {
|
|
37
|
-
"@/vdb/*": [
|
|
38
|
-
"./node_modules/@vendure/dashboard/src/lib/*"
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Note: even without that path alias, the vite compilation will still work, but TypeScript types will not resolve correctly
|
|
46
|
-
when developing dashboard extensions.
|
|
47
|
-
|
|
48
11
|
## Testing
|
|
49
12
|
|
|
50
|
-
Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
|
|
13
|
+
Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
|
|
@@ -9,77 +9,9 @@ export type PluginInfo = {
|
|
|
9
9
|
pluginPath: string;
|
|
10
10
|
dashboardEntryPath: string | undefined;
|
|
11
11
|
};
|
|
12
|
-
/**
|
|
13
|
-
* @description
|
|
14
|
-
* The PathAdapter interface allows customization of how paths are handled
|
|
15
|
-
* when compiling the Vendure config and its imports.
|
|
16
|
-
*
|
|
17
|
-
* This is particularly useful in complex project structures, such as monorepos,
|
|
18
|
-
* where the Vendure config file may not be in the root directory,
|
|
19
|
-
* or when you need to transform TypeScript path mappings.
|
|
20
|
-
*/
|
|
21
|
-
export interface PathAdapter {
|
|
22
|
-
/**
|
|
23
|
-
* @description
|
|
24
|
-
* A function to determine the path to the compiled Vendure config file. The default implementation
|
|
25
|
-
* simple joins the output directory with the config file name:
|
|
26
|
-
*
|
|
27
|
-
* ```ts
|
|
28
|
-
* return path.join(outputPath, configFileName)
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* However, in some cases with more complex project structures, you may need to
|
|
32
|
-
* provide a custom implementation to ensure the compiled config file is
|
|
33
|
-
* correctly located.
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ```ts
|
|
37
|
-
* getCompiledConfigPath: ({ inputRootDir, outputPath, configFileName }) => {
|
|
38
|
-
* const projectName = inputRootDir.split('/libs/')[1].split('/')[0];
|
|
39
|
-
* const pathAfterProject = inputRootDir.split(`/libs/${projectName}`)[1];
|
|
40
|
-
* const compiledConfigFilePath = `${outputPath}/${projectName}${pathAfterProject}`;
|
|
41
|
-
* return path.join(compiledConfigFilePath, configFileName);
|
|
42
|
-
* },
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
getCompiledConfigPath?: (params: {
|
|
46
|
-
inputRootDir: string;
|
|
47
|
-
outputPath: string;
|
|
48
|
-
configFileName: string;
|
|
49
|
-
}) => string;
|
|
50
|
-
/**
|
|
51
|
-
* If your project makes use of the TypeScript `paths` configuration, the compiler will
|
|
52
|
-
* attempt to use these paths when compiling the Vendure config and its imports.
|
|
53
|
-
*
|
|
54
|
-
* In certain cases, you may need to transform these paths before they are used. For instance,
|
|
55
|
-
* if your project is a monorepo and the paths are defined relative to the root of the monorepo,
|
|
56
|
-
* you may need to adjust them to be relative to the output directory where the compiled files are located.
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```ts
|
|
60
|
-
* transformTsConfigPathMappings: ({ phase, patterns }) => {
|
|
61
|
-
* // "loading" phase is when the compiled Vendure code is being loaded by
|
|
62
|
-
* // the plugin, in order to introspect the configuration of your app.
|
|
63
|
-
* if (phase === 'loading') {
|
|
64
|
-
* return patterns.map((p) =>
|
|
65
|
-
* p.replace('libs/', '').replace(/.ts$/, '.js'),
|
|
66
|
-
* );
|
|
67
|
-
* }
|
|
68
|
-
* return patterns;
|
|
69
|
-
* },
|
|
70
|
-
* ```
|
|
71
|
-
* @param params
|
|
72
|
-
*/
|
|
73
|
-
transformTsConfigPathMappings?: (params: {
|
|
74
|
-
phase: 'compiling' | 'loading';
|
|
75
|
-
alias: string;
|
|
76
|
-
patterns: string[];
|
|
77
|
-
}) => string[];
|
|
78
|
-
}
|
|
79
12
|
export interface ConfigLoaderOptions {
|
|
80
13
|
vendureConfigPath: string;
|
|
81
14
|
tempDir: string;
|
|
82
|
-
pathAdapter?: PathAdapter;
|
|
83
15
|
vendureConfigExport?: string;
|
|
84
16
|
logger?: Logger;
|
|
85
17
|
reportCompilationErrors?: boolean;
|
|
@@ -110,12 +42,11 @@ type CompileFileOptions = {
|
|
|
110
42
|
inputRootDir: string;
|
|
111
43
|
inputPath: string;
|
|
112
44
|
outputDir: string;
|
|
113
|
-
transformTsConfigPathMappings: Required<PathAdapter>['transformTsConfigPathMappings'];
|
|
114
45
|
logger?: Logger;
|
|
115
46
|
compiledFiles?: Set<string>;
|
|
116
47
|
isRoot?: boolean;
|
|
117
48
|
pluginInfo?: PluginInfo[];
|
|
118
49
|
reportCompilationErrors?: boolean;
|
|
119
50
|
};
|
|
120
|
-
export declare function compileFile({ inputRootDir, inputPath, outputDir,
|
|
51
|
+
export declare function compileFile({ inputRootDir, inputPath, outputDir, logger, compiledFiles, isRoot, pluginInfo, reportCompilationErrors, }: CompileFileOptions): Promise<PluginInfo[]>;
|
|
121
52
|
export {};
|
|
@@ -15,10 +15,6 @@ const defaultLogger = {
|
|
|
15
15
|
/* noop */
|
|
16
16
|
},
|
|
17
17
|
};
|
|
18
|
-
const defaultPathAdapter = {
|
|
19
|
-
getCompiledConfigPath: ({ outputPath, configFileName }) => path.join(outputPath, configFileName),
|
|
20
|
-
transformTsConfigPathMappings: ({ patterns }) => patterns,
|
|
21
|
-
};
|
|
22
18
|
/**
|
|
23
19
|
* @description
|
|
24
20
|
* This function compiles the given Vendure config file and any imported relative files (i.e.
|
|
@@ -36,10 +32,7 @@ const defaultPathAdapter = {
|
|
|
36
32
|
* to handle the compiled JavaScript output.
|
|
37
33
|
*/
|
|
38
34
|
export async function loadVendureConfig(options) {
|
|
39
|
-
|
|
40
|
-
const { vendureConfigPath, vendureConfigExport, tempDir, pathAdapter } = options;
|
|
41
|
-
const getCompiledConfigPath = (_a = pathAdapter === null || pathAdapter === void 0 ? void 0 : pathAdapter.getCompiledConfigPath) !== null && _a !== void 0 ? _a : defaultPathAdapter.getCompiledConfigPath;
|
|
42
|
-
const transformTsConfigPathMappings = (_b = pathAdapter === null || pathAdapter === void 0 ? void 0 : pathAdapter.transformTsConfigPathMappings) !== null && _b !== void 0 ? _b : defaultPathAdapter.transformTsConfigPathMappings;
|
|
35
|
+
const { vendureConfigPath, vendureConfigExport, tempDir } = options;
|
|
43
36
|
const logger = options.logger || defaultLogger;
|
|
44
37
|
const outputPath = tempDir;
|
|
45
38
|
const configFileName = path.basename(vendureConfigPath);
|
|
@@ -50,13 +43,8 @@ export async function loadVendureConfig(options) {
|
|
|
50
43
|
inputPath: vendureConfigPath,
|
|
51
44
|
outputDir: outputPath,
|
|
52
45
|
logger,
|
|
53
|
-
transformTsConfigPathMappings,
|
|
54
46
|
});
|
|
55
|
-
const compiledConfigFilePath = pathToFileURL(
|
|
56
|
-
inputRootDir,
|
|
57
|
-
outputPath,
|
|
58
|
-
configFileName,
|
|
59
|
-
})).href.replace(/.ts$/, '.js');
|
|
47
|
+
const compiledConfigFilePath = pathToFileURL(path.join(outputPath, configFileName)).href.replace(/.ts$/, '.js');
|
|
60
48
|
// create package.json with type commonjs and save it to the output dir
|
|
61
49
|
await fs.writeFile(path.join(outputPath, 'package.json'), JSON.stringify({ type: 'commonjs' }, null, 2));
|
|
62
50
|
// We need to figure out the symbol exported by the config file by
|
|
@@ -68,7 +56,7 @@ export async function loadVendureConfig(options) {
|
|
|
68
56
|
throw new Error(`Could not find a variable exported as VendureConfig. Please specify the name of the exported variable using the "vendureConfigExport" option.`);
|
|
69
57
|
}
|
|
70
58
|
// Register path aliases from tsconfig before importing
|
|
71
|
-
const tsConfigInfo = await findTsConfigPaths(vendureConfigPath, logger
|
|
59
|
+
const tsConfigInfo = await findTsConfigPaths(vendureConfigPath, logger);
|
|
72
60
|
if (tsConfigInfo) {
|
|
73
61
|
tsConfigPaths.register({
|
|
74
62
|
baseUrl: outputPath,
|
|
@@ -85,7 +73,7 @@ export async function loadVendureConfig(options) {
|
|
|
85
73
|
* Finds and parses tsconfig files in the given directory and its parent directories.
|
|
86
74
|
* Returns the paths configuration if found.
|
|
87
75
|
*/
|
|
88
|
-
async function findTsConfigPaths(configPath, logger
|
|
76
|
+
async function findTsConfigPaths(configPath, logger) {
|
|
89
77
|
const configDir = path.dirname(configPath);
|
|
90
78
|
let currentDir = configDir;
|
|
91
79
|
while (currentDir !== path.parse(currentDir).root) {
|
|
@@ -106,14 +94,9 @@ async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPat
|
|
|
106
94
|
const paths = {};
|
|
107
95
|
for (const [alias, patterns] of Object.entries(compilerOptions.paths)) {
|
|
108
96
|
// Store paths as defined in tsconfig, they will be relative to baseUrl
|
|
109
|
-
|
|
97
|
+
paths[alias] = patterns.map(pattern =>
|
|
110
98
|
// Normalize slashes for consistency, keep relative
|
|
111
99
|
pattern.replace(/\\/g, '/'));
|
|
112
|
-
paths[alias] = transformTsConfigPathMappings({
|
|
113
|
-
phase,
|
|
114
|
-
alias,
|
|
115
|
-
patterns: normalizedPatterns,
|
|
116
|
-
});
|
|
117
100
|
}
|
|
118
101
|
logger.debug(`Found tsconfig paths in ${tsConfigPath}: ${JSON.stringify({
|
|
119
102
|
baseUrl: tsConfigBaseUrl,
|
|
@@ -136,7 +119,7 @@ async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPat
|
|
|
136
119
|
logger.debug(`No tsconfig paths found traversing up from ${configDir}`);
|
|
137
120
|
return undefined;
|
|
138
121
|
}
|
|
139
|
-
export async function compileFile({ inputRootDir, inputPath, outputDir,
|
|
122
|
+
export async function compileFile({ inputRootDir, inputPath, outputDir, logger = defaultLogger, compiledFiles = new Set(), isRoot = true, pluginInfo = [], reportCompilationErrors = false, }) {
|
|
140
123
|
const absoluteInputPath = path.resolve(inputPath);
|
|
141
124
|
if (compiledFiles.has(absoluteInputPath)) {
|
|
142
125
|
return pluginInfo;
|
|
@@ -151,20 +134,17 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
|
|
|
151
134
|
const importPaths = new Set();
|
|
152
135
|
let tsConfigInfo;
|
|
153
136
|
if (isRoot) {
|
|
154
|
-
tsConfigInfo = await findTsConfigPaths(absoluteInputPath, logger
|
|
137
|
+
tsConfigInfo = await findTsConfigPaths(absoluteInputPath, logger);
|
|
155
138
|
if (tsConfigInfo) {
|
|
156
139
|
logger === null || logger === void 0 ? void 0 : logger.debug(`Using TypeScript configuration: ${JSON.stringify(tsConfigInfo, null, 2)}`);
|
|
157
140
|
}
|
|
158
141
|
}
|
|
159
142
|
async function collectImports(node) {
|
|
160
|
-
if (
|
|
161
|
-
node.moduleSpecifier &&
|
|
162
|
-
ts.isStringLiteral(node.moduleSpecifier)) {
|
|
143
|
+
if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
163
144
|
const importPath = node.moduleSpecifier.text;
|
|
164
145
|
// Handle relative imports
|
|
165
146
|
if (importPath.startsWith('.')) {
|
|
166
147
|
const resolvedPath = path.resolve(path.dirname(absoluteInputPath), importPath);
|
|
167
|
-
// TODO: does this handle index files correctly?
|
|
168
148
|
let resolvedTsPath = resolvedPath + '.ts';
|
|
169
149
|
// Also check for .tsx if .ts doesn't exist
|
|
170
150
|
if (!(await fs.pathExists(resolvedTsPath))) {
|
|
@@ -212,9 +192,7 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
|
|
|
212
192
|
continue;
|
|
213
193
|
const potentialPathBase = path.resolve(tsConfigInfo.baseUrl, patternPrefix);
|
|
214
194
|
const resolvedPath = path.join(potentialPathBase, remainingImportPath);
|
|
215
|
-
let resolvedTsPath = resolvedPath
|
|
216
|
-
? resolvedPath
|
|
217
|
-
: resolvedPath + '.ts';
|
|
195
|
+
let resolvedTsPath = resolvedPath + '.ts';
|
|
218
196
|
// Similar existence checks as relative paths
|
|
219
197
|
if (!(await fs.pathExists(resolvedTsPath))) {
|
|
220
198
|
const resolvedTsxPath = resolvedPath + '.tsx';
|
|
@@ -263,7 +241,6 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
|
|
|
263
241
|
ts.isModuleBlock(child) ||
|
|
264
242
|
ts.isModuleDeclaration(child) ||
|
|
265
243
|
ts.isImportDeclaration(child) ||
|
|
266
|
-
ts.isExportDeclaration(child) ||
|
|
267
244
|
child.kind === ts.SyntaxKind.SyntaxList) {
|
|
268
245
|
await collectImports(child);
|
|
269
246
|
}
|
|
@@ -286,7 +263,6 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
|
|
|
286
263
|
inputPath: importPath,
|
|
287
264
|
outputDir,
|
|
288
265
|
logger,
|
|
289
|
-
transformTsConfigPathMappings,
|
|
290
266
|
compiledFiles,
|
|
291
267
|
isRoot: false,
|
|
292
268
|
pluginInfo,
|
|
@@ -14,7 +14,6 @@ export function configLoaderPlugin(options) {
|
|
|
14
14
|
try {
|
|
15
15
|
const startTime = Date.now();
|
|
16
16
|
result = await loadVendureConfig({
|
|
17
|
-
pathAdapter: options.pathAdapter,
|
|
18
17
|
tempDir: options.tempDir,
|
|
19
18
|
vendureConfigPath: options.vendureConfigPath,
|
|
20
19
|
vendureConfigExport: options.vendureConfigExport,
|
|
@@ -32,11 +31,7 @@ export function configLoaderPlugin(options) {
|
|
|
32
31
|
}
|
|
33
32
|
catch (e) {
|
|
34
33
|
if (e instanceof Error) {
|
|
35
|
-
|
|
36
|
-
e.message,
|
|
37
|
-
`If you are using a monorepo, you may need to provide a custom pathAdapter to resolve the paths correctly.`,
|
|
38
|
-
].join('\n');
|
|
39
|
-
this.error(`Error loading Vendure config: ${message}`);
|
|
34
|
+
this.error(`Error loading Vendure config: ${e.message}`);
|
|
40
35
|
}
|
|
41
36
|
}
|
|
42
37
|
onConfigLoaded.forEach(fn => fn());
|
|
@@ -7,7 +7,7 @@ export function viteConfigPlugin({ packageRoot }) {
|
|
|
7
7
|
// Only set the vite `root` to the dashboard package when running the dev server.
|
|
8
8
|
// During a production build we still need to reference the dashboard source which
|
|
9
9
|
// lives in `node_modules`, but we don't want the build output to be emitted in there.
|
|
10
|
-
// Therefore
|
|
10
|
+
// Therefore we set `root` only for `serve` and, for `build`, we instead make sure that
|
|
11
11
|
// an `outDir` **outside** of `node_modules` is used (defaulting to the current working
|
|
12
12
|
// directory if the user did not provide one already).
|
|
13
13
|
config.root = packageRoot;
|
|
@@ -26,16 +26,18 @@ export function viteConfigPlugin({ packageRoot }) {
|
|
|
26
26
|
config.build = Object.assign(Object.assign({}, buildConfig), { outDir: normalizedOutDir });
|
|
27
27
|
}
|
|
28
28
|
config.resolve = {
|
|
29
|
-
alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), {
|
|
30
|
-
// See the readme for an explanation of this alias.
|
|
31
|
-
'@/vdb': path.resolve(packageRoot, './src/lib'), '@/graphql': path.resolve(packageRoot, './src/lib/graphql') }),
|
|
29
|
+
alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), { '@': path.resolve(packageRoot, './src/lib') }),
|
|
32
30
|
};
|
|
33
31
|
// This is required to prevent Vite from pre-bundling the
|
|
34
32
|
// dashboard source when it resides in node_modules.
|
|
35
33
|
config.optimizeDeps = Object.assign(Object.assign({}, config.optimizeDeps), { exclude: [
|
|
36
34
|
...(((_d = config.optimizeDeps) === null || _d === void 0 ? void 0 : _d.exclude) || []),
|
|
37
35
|
'@vendure/dashboard',
|
|
38
|
-
'@/
|
|
36
|
+
'@/providers',
|
|
37
|
+
'@/framework',
|
|
38
|
+
'@/lib',
|
|
39
|
+
'@/components',
|
|
40
|
+
'@/hooks',
|
|
39
41
|
'virtual:vendure-ui-config',
|
|
40
42
|
'virtual:admin-api-schema',
|
|
41
43
|
'virtual:dashboard-extensions',
|
|
@@ -47,7 +49,6 @@ export function viteConfigPlugin({ packageRoot }) {
|
|
|
47
49
|
...(((_e = config.optimizeDeps) === null || _e === void 0 ? void 0 : _e.include) || []),
|
|
48
50
|
'@/components > recharts',
|
|
49
51
|
'@/components > react-dropzone',
|
|
50
|
-
'@vendure/common/lib/generated-types',
|
|
51
52
|
] });
|
|
52
53
|
return config;
|
|
53
54
|
},
|
|
@@ -4,4 +4,6 @@ import { Plugin } from 'vite';
|
|
|
4
4
|
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
5
5
|
* function which can then be imported and executed in the Dashboard app.
|
|
6
6
|
*/
|
|
7
|
-
export declare function dashboardMetadataPlugin(
|
|
7
|
+
export declare function dashboardMetadataPlugin(options: {
|
|
8
|
+
rootDir: string;
|
|
9
|
+
}): Plugin;
|
|
@@ -7,7 +7,7 @@ const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
|
7
7
|
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
8
8
|
* function which can then be imported and executed in the Dashboard app.
|
|
9
9
|
*/
|
|
10
|
-
export function dashboardMetadataPlugin() {
|
|
10
|
+
export function dashboardMetadataPlugin(options) {
|
|
11
11
|
let configLoaderApi;
|
|
12
12
|
let loadVendureConfigResult;
|
|
13
13
|
return {
|
|
@@ -41,3 +41,10 @@ export function dashboardMetadataPlugin() {
|
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Converts an import path to a normalized path relative to the rootDir.
|
|
46
|
+
*/
|
|
47
|
+
function normalizeImportPath(rootDir, importPath) {
|
|
48
|
+
const relativePath = path.relative(rootDir, importPath).replace(/\\/g, '/');
|
|
49
|
+
return relativePath.replace(/\.tsx?$/, '.js');
|
|
50
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PluginOption } from 'vite';
|
|
2
|
-
import { PathAdapter } from './utils/config-loader.js';
|
|
3
2
|
import { ThemeVariablesPluginOptions } from './vite-plugin-theme.js';
|
|
4
3
|
import { UiConfigPluginOptions } from './vite-plugin-ui-config.js';
|
|
5
4
|
/**
|
|
@@ -12,46 +11,6 @@ export type VitePluginVendureDashboardOptions = {
|
|
|
12
11
|
* The path to the Vendure server configuration file.
|
|
13
12
|
*/
|
|
14
13
|
vendureConfigPath: string | URL;
|
|
15
|
-
/**
|
|
16
|
-
* @description
|
|
17
|
-
* The {@link PathAdapter} allows you to customize the resolution of paths
|
|
18
|
-
* in the compiled Vendure source code which is used as part of the
|
|
19
|
-
* introspection step of building the dashboard.
|
|
20
|
-
*
|
|
21
|
-
* It enables support for more complex repository structures, such as
|
|
22
|
-
* monorepos, where the Vendure server configuration file may not
|
|
23
|
-
* be located in the root directory of the project.
|
|
24
|
-
*
|
|
25
|
-
* If you get compilation errors like "Error loading Vendure config: Cannot find module",
|
|
26
|
-
* you probably need to provide a custom `pathAdapter` to resolve the paths correctly.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```ts
|
|
30
|
-
* vendureDashboardPlugin({
|
|
31
|
-
* tempCompilationDir: join(__dirname, './__vendure-dashboard-temp'),
|
|
32
|
-
* pathAdapter: {
|
|
33
|
-
* getCompiledConfigPath: ({ inputRootDir, outputPath, configFileName }) => {
|
|
34
|
-
* const projectName = inputRootDir.split('/libs/')[1].split('/')[0];
|
|
35
|
-
* const pathAfterProject = inputRootDir.split(`/libs/${projectName}`)[1];
|
|
36
|
-
* const compiledConfigFilePath = `${outputPath}/${projectName}${pathAfterProject}`;
|
|
37
|
-
* return path.join(compiledConfigFilePath, configFileName);
|
|
38
|
-
* },
|
|
39
|
-
* transformTsConfigPathMappings: ({ phase, patterns }) => {
|
|
40
|
-
* // "loading" phase is when the compiled Vendure code is being loaded by
|
|
41
|
-
* // the plugin, in order to introspect the configuration of your app.
|
|
42
|
-
* if (phase === 'loading') {
|
|
43
|
-
* return patterns.map((p) =>
|
|
44
|
-
* p.replace('libs/', '').replace(/.ts$/, '.js'),
|
|
45
|
-
* );
|
|
46
|
-
* }
|
|
47
|
-
* return patterns;
|
|
48
|
-
* },
|
|
49
|
-
* },
|
|
50
|
-
* // ...
|
|
51
|
-
* }),
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
pathAdapter?: PathAdapter;
|
|
55
14
|
/**
|
|
56
15
|
* @description
|
|
57
16
|
* The name of the exported variable from the Vendure server configuration file.
|
|
@@ -7,7 +7,6 @@ import { configLoaderPlugin } from './vite-plugin-config-loader.js';
|
|
|
7
7
|
import { viteConfigPlugin } from './vite-plugin-config.js';
|
|
8
8
|
import { dashboardMetadataPlugin } from './vite-plugin-dashboard-metadata.js';
|
|
9
9
|
import { gqlTadaPlugin } from './vite-plugin-gql-tada.js';
|
|
10
|
-
import { dashboardTailwindSourcePlugin } from './vite-plugin-tailwind-source.js';
|
|
11
10
|
import { themeVariablesPlugin } from './vite-plugin-theme.js';
|
|
12
11
|
import { transformIndexHtmlPlugin } from './vite-plugin-transform-index.js';
|
|
13
12
|
import { uiConfigPlugin } from './vite-plugin-ui-config.js';
|
|
@@ -32,7 +31,7 @@ export function vendureDashboardPlugin(options) {
|
|
|
32
31
|
: [
|
|
33
32
|
TanStackRouterVite({
|
|
34
33
|
autoCodeSplitting: true,
|
|
35
|
-
routeFileIgnorePattern: '.graphql.ts|components
|
|
34
|
+
routeFileIgnorePattern: '.graphql.ts|components',
|
|
36
35
|
routesDirectory: path.join(packageRoot, 'src/app/routes'),
|
|
37
36
|
generatedRouteTree: path.join(packageRoot, 'src/app/routeTree.gen.ts'),
|
|
38
37
|
}),
|
|
@@ -43,17 +42,15 @@ export function vendureDashboardPlugin(options) {
|
|
|
43
42
|
// },
|
|
44
43
|
}),
|
|
45
44
|
themeVariablesPlugin({ theme: options.theme }),
|
|
46
|
-
dashboardTailwindSourcePlugin(),
|
|
47
45
|
tailwindcss(),
|
|
48
46
|
configLoaderPlugin({
|
|
49
47
|
vendureConfigPath: normalizedVendureConfigPath,
|
|
50
48
|
tempDir,
|
|
51
49
|
reportCompilationErrors: options.reportCompilationErrors,
|
|
52
|
-
pathAdapter: options.pathAdapter,
|
|
53
50
|
}),
|
|
54
51
|
viteConfigPlugin({ packageRoot }),
|
|
55
52
|
adminApiSchemaPlugin(),
|
|
56
|
-
dashboardMetadataPlugin(),
|
|
53
|
+
dashboardMetadataPlugin({ rootDir: tempDir }),
|
|
57
54
|
uiConfigPlugin({ adminUiConfig: options.adminUiConfig }),
|
|
58
55
|
...(options.gqlTadaOutputPath
|
|
59
56
|
? [gqlTadaPlugin({ gqlTadaOutputPath: options.gqlTadaOutputPath, tempDir, packageRoot })]
|