From d71343d6abf3ab1df616056f00dc6110cc7eb3c7 Mon Sep 17 00:00:00 2001
From: Kasper Fabricius Kristensen
<45367945+kasperkristensen@users.noreply.github.com>
Date: Wed, 9 Oct 2024 13:44:40 +0200
Subject: [PATCH] feat(dashboard,admin-vite-plugin,admin-bundler,admin-sdk):
Rework admin extensions and introduce custom fields API (#9338)
---
packages/admin/admin-bundler/src/entry.tsx | 20 +-
packages/admin/admin-bundler/src/index.html | 11 +-
.../admin/admin-bundler/src/lib/config.ts | 6 +-
.../admin/admin-bundler/src/lib/develop.ts | 79 +-
packages/admin/admin-sdk/package.json | 6 +-
packages/admin/admin-sdk/src/config/index.ts | 5 +-
packages/admin/admin-sdk/src/config/types.ts | 139 ++-
packages/admin/admin-sdk/src/config/utils.ts | 87 +-
.../src/extensions/custom-fields/constants.ts | 40 +
.../src/extensions/custom-fields/index.ts | 3 +
.../custom-fields/product/constants.ts | 48 +
.../product}/index.ts | 0
.../extensions/custom-fields/product/types.ts | 10 +
.../src/extensions/custom-fields/types.ts | 48 +
.../src/extensions/custom-fields/utils.ts | 54 +
.../src/extensions/routes/constants.ts | 1 -
.../src/extensions/routes/types.ts | 3 -
.../src/extensions/virtual/constants.ts | 40 -
.../src/extensions/virtual/utils.ts | 25 -
packages/admin/admin-shared/src/index.ts | 4 +-
.../src/virtual-modules/constants.ts | 15 +
.../virtual => virtual-modules}/index.ts | 1 -
packages/admin/admin-vite-plugin/package.json | 11 +-
packages/admin/admin-vite-plugin/src/babel.ts | 39 +-
.../generate-custom-field-displays.ts | 292 ++++++
.../generate-custom-field-forms.ts | 707 +++++++++++++
.../generate-custom-field-hashes.ts | 86 ++
.../generate-custom-field-links.ts | 167 +++
.../src/custom-fields/helpers.ts | 116 +++
.../src/custom-fields/index.ts | 4 +
packages/admin/admin-vite-plugin/src/index.ts | 3 +-
.../admin/admin-vite-plugin/src/logger.ts | 64 ++
.../admin/admin-vite-plugin/src/plugin.ts | 959 ++++--------------
.../src/routes/generate-menu-items.ts | 157 +++
.../src/routes/generate-route-hashes.ts | 71 ++
.../src/routes/generate-routes.ts | 155 +++
.../admin-vite-plugin/src/routes/helpers.ts | 9 +
.../admin-vite-plugin/src/routes/index.ts | 3 +
packages/admin/admin-vite-plugin/src/types.ts | 61 ++
packages/admin/admin-vite-plugin/src/utils.ts | 147 +++
.../generate-virtual-display-module.ts | 17 +
.../generate-virtual-form-module.ts | 29 +
.../generate-virtual-link-module.ts | 17 +
.../generate-virtual-menu-item-module.ts | 18 +
.../generate-virtual-route-module.ts | 19 +
.../generate-virtual-widget-module.ts | 19 +
.../src/virtual-modules/index.ts | 6 +
packages/admin/admin-vite-plugin/src/vmod.ts | 80 ++
.../src/widgets/generate-widget-hash.ts | 59 ++
.../src/widgets/generate-widgets.ts | 203 ++++
.../admin-vite-plugin/src/widgets/helpers.ts | 11 +
.../admin-vite-plugin/src/widgets/index.ts | 2 +
packages/admin/dashboard/package.json | 14 +-
packages/admin/dashboard/src/app.tsx | 38 +-
.../layout/main-layout/main-layout.tsx | 27 +-
.../components/layout/nav-item/nav-item.tsx | 12 +-
.../layout/notifications/notifications.tsx | 10 +-
.../single-column-page/single-column-page.tsx | 8 +-
.../pages/two-column-page/two-column-page.tsx | 24 +-
.../src/components/layout/pages/types.ts | 14 +-
.../layout/public-layout/public-layout.tsx | 15 +-
.../settings-layout/settings-layout.tsx | 32 +-
.../modals/route-drawer/route-drawer.tsx | 1 +
.../error-boundary/error-boundary.tsx | 10 +
.../dashboard-extension-manager.tsx | 319 ++++++
.../dashboard-extension-manager/index.ts | 2 +
.../dashboard-extension-context.tsx | 7 +
.../dashboard-extension-provider.tsx | 18 +
.../dashboard-extension-provider/index.ts | 2 +
.../dashboard-extension-provider/types.ts | 32 +
.../use-dashboard-extension.tsx | 12 +
.../form-extension-zone.tsx | 114 +++
.../forms/form-extension-zone/index.ts | 1 +
.../forms/form-extension-zone/types.ts | 1 +
.../forms/form-extension-zone/utils.ts | 66 ++
.../dashboard/src/extensions/forms/hooks.tsx | 86 ++
.../dashboard/src/extensions/forms/index.ts | 2 +
.../admin/dashboard/src/extensions/index.ts | 13 +
.../dashboard/src/extensions/links/utils.ts | 20 +
.../routes/utils.ts} | 38 +-
.../admin/dashboard/src/extensions/types.ts | 117 +++
.../src/hooks/api/customer-groups.tsx | 5 +-
packages/admin/dashboard/src/index.ts | 1 +
packages/admin/dashboard/src/module.d.ts | 52 +-
.../admin/dashboard/src/providers/index.ts | 1 +
.../dashboard/src/providers/providers.tsx | 35 +
.../router-provider/route-extensions.tsx | 14 +-
.../providers/router-provider/route-map.tsx | 87 +-
.../router-provider/settings-extensions.tsx | 14 +-
.../api-key-management-detail.tsx | 53 +-
.../api-key-management-detail/loader.ts | 4 +-
.../api-key-management-list.tsx | 32 +-
.../campaign-detail/campaign-detail.tsx | 15 +-
.../campaigns/campaign-list/campaign-list.tsx | 34 +-
.../category-detail/category-detail.tsx | 56 +-
.../category-list/category-list.tsx | 33 +-
.../collection-detail/collection-detail.tsx | 51 +-
.../collection-list/collection-list.tsx | 33 +-
.../customer-group-detail.tsx | 9 +-
.../customer-group-list.tsx | 33 +-
.../customer-detail/customer-detail.tsx | 10 +-
.../customers/customer-list/customer-list.tsx | 33 +-
.../inventory-detail/inventory-detail.tsx | 18 +-
.../location-detail/location-detail.tsx | 84 +-
.../locations/location-list/location-list.tsx | 69 +-
.../dashboard/src/routes/login/login.tsx | 73 +-
.../orders/order-detail/order-detail.tsx | 103 +-
.../routes/orders/order-list/order-list.tsx | 30 +-
.../price-list-detail/price-list-detail.tsx | 79 +-
.../price-list-list/price-list-list.tsx | 33 +-
.../product-tag-detail/product-tag-detail.tsx | 15 +-
.../product-tag-list/product-tag-list.tsx | 10 +-
.../product-type-detail.tsx | 41 +-
.../product-type-list/product-type-list.tsx | 32 +-
.../product-attributes-form.tsx | 25 +-
.../product-attributes/product-attributes.tsx | 9 +-
.../product-create-details-form.tsx | 8 +
.../product-create-form.tsx | 15 +-
.../product-create-organize-form.tsx | 8 +-
.../routes/products/product-create/utils.ts | 2 +-
.../product-attribute-section.tsx | 9 +-
.../product-general-section.tsx | 10 +-
.../product-organization-section.tsx | 6 +
.../use-variant-table-columns.tsx | 16 +-
.../products/product-detail/constants.ts | 4 +-
.../product-detail/product-detail.tsx | 14 +-
.../edit-product-form/edit-product-form.tsx | 24 +-
.../products/product-edit/product-edit.tsx | 9 +-
.../products/product-list/product-list.tsx | 30 +-
.../product-organization-form.tsx | 19 +-
.../product-organization.tsx | 4 +-
.../profile-general-section.tsx | 4 +-
.../profile/profile-detail/profile-detail.tsx | 40 +-
.../promotion-detail/promotion-detail.tsx | 16 +-
.../promotion-list/promotions-list.tsx | 30 +-
.../regions/region-detail/region-detail.tsx | 34 +-
.../regions/region-list/region-list.tsx | 33 +-
.../reservation-detail/reservation-detail.tsx | 49 +-
.../reservation-list/reservation-list.tsx | 32 +-
.../return-reason-list/return-reason-list.tsx | 10 +-
.../sales-channel-detail.tsx | 37 +-
.../sales-channel-list/sales-channel-list.tsx | 9 +-
.../shipping-profile-detail.tsx | 46 +-
.../shipping-profile-list.tsx | 33 +-
.../store/store-detail/store-detail.tsx | 9 +-
.../tax-region-detail/tax-region-detail.tsx | 13 +-
.../tax-region-list/tax-region-list.tsx | 10 +-
.../tax-region-detail.tsx | 13 +-
.../user-general-section.tsx | 4 +-
.../routes/users/user-detail/user-detail.tsx | 42 +-
.../src/routes/users/user-list/user-list.tsx | 29 +-
.../workflow-detail.tsx | 37 +-
.../workflow-execution-list.tsx | 30 +-
packages/admin/dashboard/tailwind.config.cjs | 14 +-
packages/admin/dashboard/tsconfig.node.json | 2 +-
packages/admin/dashboard/tsup.config.cjs | 10 +-
packages/admin/dashboard/vite.config.mts | 2 +
packages/medusa/src/loaders/admin.ts | 11 +
yarn.lock | 258 +++--
159 files changed, 5266 insertions(+), 2226 deletions(-)
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/constants.ts
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/index.ts
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/product/constants.ts
rename packages/admin/admin-shared/src/extensions/{routes => custom-fields/product}/index.ts (100%)
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/product/types.ts
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/types.ts
create mode 100644 packages/admin/admin-shared/src/extensions/custom-fields/utils.ts
delete mode 100644 packages/admin/admin-shared/src/extensions/routes/constants.ts
delete mode 100644 packages/admin/admin-shared/src/extensions/routes/types.ts
delete mode 100644 packages/admin/admin-shared/src/extensions/virtual/constants.ts
delete mode 100644 packages/admin/admin-shared/src/extensions/virtual/utils.ts
create mode 100644 packages/admin/admin-shared/src/virtual-modules/constants.ts
rename packages/admin/admin-shared/src/{extensions/virtual => virtual-modules}/index.ts (53%)
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/generate-custom-field-displays.ts
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/generate-custom-field-forms.ts
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/generate-custom-field-hashes.ts
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/generate-custom-field-links.ts
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/helpers.ts
create mode 100644 packages/admin/admin-vite-plugin/src/custom-fields/index.ts
create mode 100644 packages/admin/admin-vite-plugin/src/logger.ts
create mode 100644 packages/admin/admin-vite-plugin/src/routes/generate-menu-items.ts
create mode 100644 packages/admin/admin-vite-plugin/src/routes/generate-route-hashes.ts
create mode 100644 packages/admin/admin-vite-plugin/src/routes/generate-routes.ts
create mode 100644 packages/admin/admin-vite-plugin/src/routes/helpers.ts
create mode 100644 packages/admin/admin-vite-plugin/src/routes/index.ts
create mode 100644 packages/admin/admin-vite-plugin/src/types.ts
create mode 100644 packages/admin/admin-vite-plugin/src/utils.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-display-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-form-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-link-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-menu-item-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-route-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/generate-virtual-widget-module.ts
create mode 100644 packages/admin/admin-vite-plugin/src/virtual-modules/index.ts
create mode 100644 packages/admin/admin-vite-plugin/src/vmod.ts
create mode 100644 packages/admin/admin-vite-plugin/src/widgets/generate-widget-hash.ts
create mode 100644 packages/admin/admin-vite-plugin/src/widgets/generate-widgets.ts
create mode 100644 packages/admin/admin-vite-plugin/src/widgets/helpers.ts
create mode 100644 packages/admin/admin-vite-plugin/src/widgets/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-manager/dashboard-extension-manager.tsx
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-manager/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-provider/dashboard-extension-context.tsx
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-provider/dashboard-extension-provider.tsx
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-provider/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-provider/types.ts
create mode 100644 packages/admin/dashboard/src/extensions/dashboard-extension-provider/use-dashboard-extension.tsx
create mode 100644 packages/admin/dashboard/src/extensions/forms/form-extension-zone/form-extension-zone.tsx
create mode 100644 packages/admin/dashboard/src/extensions/forms/form-extension-zone/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/forms/form-extension-zone/types.ts
create mode 100644 packages/admin/dashboard/src/extensions/forms/form-extension-zone/utils.ts
create mode 100644 packages/admin/dashboard/src/extensions/forms/hooks.tsx
create mode 100644 packages/admin/dashboard/src/extensions/forms/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/index.ts
create mode 100644 packages/admin/dashboard/src/extensions/links/utils.ts
rename packages/admin/dashboard/src/{lib/extension-helpers.ts => extensions/routes/utils.ts} (53%)
create mode 100644 packages/admin/dashboard/src/extensions/types.ts
create mode 100644 packages/admin/dashboard/src/index.ts
create mode 100644 packages/admin/dashboard/src/providers/index.ts
create mode 100644 packages/admin/dashboard/src/providers/providers.tsx
diff --git a/packages/admin/admin-bundler/src/entry.tsx b/packages/admin/admin-bundler/src/entry.tsx
index 84a8f37b2e..996d8d8030 100644
--- a/packages/admin/admin-bundler/src/entry.tsx
+++ b/packages/admin/admin-bundler/src/entry.tsx
@@ -1,9 +1,15 @@
-import App from "@medusajs/dashboard"
-import React from "react"
-import { createRoot } from "react-dom/client"
+import App from "@medusajs/dashboard";
+import React from "react";
+import ReactDOM from "react-dom/client";
+import "./index.css";
-import "./index.css"
+ReactDOM.createRoot(document.getElementById("medusa")!).render(
+