From bfef22b33e0aa4aa542d3f22fb32ee261f5a19ea Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Thu, 23 Mar 2023 09:29:29 +0100 Subject: [PATCH] fix(admin-ui): Gift Card manage page (#3532) **What** - Updates GC manage page to use product page sections - Revamps Denomination section - Updates the location of several components to reflect that they are now shared between the GC and products domain ![image](https://user-images.githubusercontent.com/45367945/226584238-bb0786b1-d21c-4b90-b00b-29530af320f4.png) ![image](https://user-images.githubusercontent.com/45367945/226584362-80c0c9f8-4ec5-4e64-9075-110caa3b5137.png) Resolves CORE-1089 --- .changeset/neat-lamps-repeat.md | 5 + .../ui/src/components/atoms/switch/index.tsx | 35 ++- .../ui/src/components/atoms/tooltip/index.tsx | 2 +- .../forms/general}/prices-form/index.tsx | 0 .../general}/prices-form/nested-price.tsx | 10 +- .../general}/prices-form/price-form-input.tsx | 2 +- .../gift-card/denomination-form/index.tsx | 177 ++++++++++++ .../forms/product}/customs-form/index.tsx | 4 +- .../forms/product}/dimensions-form/index.tsx | 2 +- .../product}/discountable-form/index.tsx | 8 +- .../forms/product}/general-form/index.tsx | 27 +- .../forms/product}/media-form/index.tsx | 12 +- .../forms/product}/organize-form/index.tsx | 31 +-- .../organize-form/use-organize-data.tsx | 9 +- .../sales-channels-modal/add-screen.tsx | 12 +- .../sales-channels-modal/available-screen.tsx | 4 +- .../product}/sales-channels-modal/index.tsx | 11 +- .../product}/sales-channels-modal/table.tsx | 14 +- .../use-sales-channels-modal.tsx | 0 .../forms/product}/thumbnail-form/index.tsx | 10 +- .../create-flow-variant-form/index.tsx | 8 +- .../edit-flow-variant-form/index.tsx | 16 +- .../variant-general-form/index.tsx | 2 +- .../variant-prices-form/index.tsx | 2 +- .../variant-select-options-form/hooks.tsx | 2 +- .../variant-select-options-form/index.tsx | 2 +- .../variant-form/variant-stock-form/index.tsx | 22 +- .../edit-flow-variant-form/index.tsx | 0 .../variant-stock-form/index.tsx | 25 +- .../indeterminate-checkbox/index.tsx | 2 + .../add-denomination-modal/index.tsx | 262 ------------------ .../use-values-field-array.ts | 72 ----- .../edit-denominations-modal/index.tsx | 179 ------------ .../add-denominations-modal.tsx | 175 ++++++++++++ .../denominations-table.tsx | 75 +++++ .../edit-denominations-modal.tsx | 191 +++++++++++++ .../gift-card-denominations-section/index.tsx | 48 ++++ .../use-denominations-columns.tsx | 176 ++++++++++++ .../attribute-modal.tsx | 14 +- .../product-attributes-section}/index.tsx | 12 +- .../channels-modal.tsx | 2 +- .../general-modal.tsx | 30 +- .../product-general-section}/index.tsx | 30 +- .../product-media-section}/index.tsx | 10 +- .../product-media-section}/media-modal.tsx | 18 +- .../organisms/product-raw-section}/index.tsx | 10 +- .../product-thumbnail-section}/index.tsx | 18 +- .../thumbnail-modal.tsx | 18 +- .../add-variant-modal.tsx | 24 +- .../edit-variant-inventory-modal.tsx | 15 +- .../edit-variant-modal.tsx | 26 +- .../edit-variant-screen.tsx | 26 +- .../edit-variants-modal/index.tsx | 9 +- .../use-edit-variants-modal.tsx | 4 +- .../edit-variants-modal/variant-card.tsx | 20 +- .../product-variants-section}/index.tsx | 25 +- .../options-modal.tsx | 14 +- .../options-provider.tsx | 8 +- .../product-variants-section}/table.tsx | 14 +- .../gift-cards/manage/denomination-table.tsx | 119 -------- .../manage/form/gift-card-form-context.tsx | 92 ------ .../domain/gift-cards/manage/form/mappers.ts | 59 ---- .../ui/src/domain/gift-cards/manage/index.tsx | 129 ++++----- .../manage/sections/denominations.tsx | 126 --------- .../gift-cards/manage/sections/images.tsx | 104 ------- .../manage/sections/information.tsx | 227 --------------- .../domain/gift-cards/manage/utils/types.ts | 12 - .../components/edit-sales-channels/index.tsx | 4 +- .../components/sales-channels-form/index.tsx | 2 +- .../orders/components/shipping-form/index.tsx | 2 +- .../ui/src/domain/products/edit/index.tsx | 28 +- .../products/new/add-sales-channels.tsx | 2 +- .../products/new/add-variants/index.tsx | 16 +- .../new/add-variants/new-variant/index.tsx | 14 +- .../ui/src/domain/products/new/index.tsx | 62 ++--- .../components/shipping-option-form/index.tsx | 2 +- .../hooks/use-edit-product-actions.tsx | 11 +- 77 files changed, 1286 insertions(+), 1706 deletions(-) create mode 100644 .changeset/neat-lamps-repeat.md rename packages/admin-ui/ui/src/{domain/products/components => components/forms/general}/prices-form/index.tsx (100%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/general}/prices-form/nested-price.tsx (91%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/general}/prices-form/price-form-input.tsx (97%) create mode 100644 packages/admin-ui/ui/src/components/forms/gift-card/denomination-form/index.tsx rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/customs-form/index.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/dimensions-form/index.tsx (96%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/discountable-form/index.tsx (76%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/general-form/index.tsx (73%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/media-form/index.tsx (93%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/organize-form/index.tsx (86%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/organize-form/use-organize-data.tsx (83%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/sales-channels-modal/add-screen.tsx (88%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/sales-channels-modal/available-screen.tsx (97%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/sales-channels-modal/index.tsx (83%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/sales-channels-modal/table.tsx (91%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/sales-channels-modal/use-sales-channels-modal.tsx (100%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/thumbnail-form/index.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/create-flow-variant-form/index.tsx (93%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/edit-flow-variant-form/index.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/variant-general-form/index.tsx (94%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/variant-prices-form/index.tsx (85%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/variant-select-options-form/hooks.tsx (95%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/variant-select-options-form/index.tsx (95%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-form/variant-stock-form/index.tsx (93%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-inventory-form/edit-flow-variant-form/index.tsx (100%) rename packages/admin-ui/ui/src/{domain/products/components => components/forms/product}/variant-inventory-form/variant-stock-form/index.tsx (94%) delete mode 100644 packages/admin-ui/ui/src/components/organisms/add-denomination-modal/index.tsx delete mode 100644 packages/admin-ui/ui/src/components/organisms/add-denomination-modal/use-values-field-array.ts delete mode 100644 packages/admin-ui/ui/src/components/organisms/edit-denominations-modal/index.tsx create mode 100644 packages/admin-ui/ui/src/components/organisms/gift-card-denominations-section/add-denominations-modal.tsx create mode 100644 packages/admin-ui/ui/src/components/organisms/gift-card-denominations-section/denominations-table.tsx create mode 100644 packages/admin-ui/ui/src/components/organisms/gift-card-denominations-section/edit-denominations-modal.tsx create mode 100644 packages/admin-ui/ui/src/components/organisms/gift-card-denominations-section/index.tsx create mode 100644 packages/admin-ui/ui/src/components/organisms/gift-card-denominations-section/use-denominations-columns.tsx rename packages/admin-ui/ui/src/{domain/products/edit/sections/attributes => components/organisms/product-attributes-section}/attribute-modal.tsx (88%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/attributes => components/organisms/product-attributes-section}/index.tsx (82%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/general => components/organisms/product-general-section}/channels-modal.tsx (91%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/general => components/organisms/product-general-section}/general-modal.tsx (81%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/general => components/organisms/product-general-section}/index.tsx (80%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/media => components/organisms/product-media-section}/index.tsx (79%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/media => components/organisms/product-media-section}/media-modal.tsx (85%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/raw => components/organisms/product-raw-section}/index.tsx (59%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/thumbnail => components/organisms/product-thumbnail-section}/index.tsx (76%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/thumbnail => components/organisms/product-thumbnail-section}/thumbnail-modal.tsx (86%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/add-variant-modal.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variant-inventory-modal.tsx (93%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variant-modal.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variants-modal/edit-variant-screen.tsx (86%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variants-modal/index.tsx (94%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variants-modal/use-edit-variants-modal.tsx (77%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/edit-variants-modal/variant-card.tsx (85%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/index.tsx (88%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/options-modal.tsx (92%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/options-provider.tsx (81%) rename packages/admin-ui/ui/src/{domain/products/edit/sections/variants => components/organisms/product-variants-section}/table.tsx (89%) delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/denomination-table.tsx delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/form/gift-card-form-context.tsx delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/form/mappers.ts delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/sections/denominations.tsx delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/sections/images.tsx delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/sections/information.tsx delete mode 100644 packages/admin-ui/ui/src/domain/gift-cards/manage/utils/types.ts rename packages/admin-ui/ui/src/{domain/products/edit => }/hooks/use-edit-product-actions.tsx (93%) diff --git a/.changeset/neat-lamps-repeat.md b/.changeset/neat-lamps-repeat.md new file mode 100644 index 0000000000..d268ff9034 --- /dev/null +++ b/.changeset/neat-lamps-repeat.md @@ -0,0 +1,5 @@ +--- +"@medusajs/admin-ui": patch +--- + +fix(admin-ui): Revamps gift card manage page diff --git a/packages/admin-ui/ui/src/components/atoms/switch/index.tsx b/packages/admin-ui/ui/src/components/atoms/switch/index.tsx index 71b9584f00..11c419a484 100644 --- a/packages/admin-ui/ui/src/components/atoms/switch/index.tsx +++ b/packages/admin-ui/ui/src/components/atoms/switch/index.tsx @@ -1,25 +1,30 @@ import * as RadixSwitch from "@radix-ui/react-switch" import clsx from "clsx" +import React from "react" /** * A controlled switch component atom. */ -function Switch(props: RadixSwitch.SwitchProps) { - return ( - - ( + (props, ref) => { + return ( + - - ) -} + > + + + ) + } +) + +Switch.displayName = "Switch" export default Switch diff --git a/packages/admin-ui/ui/src/components/atoms/tooltip/index.tsx b/packages/admin-ui/ui/src/components/atoms/tooltip/index.tsx index a279a817c4..cf313f86c1 100644 --- a/packages/admin-ui/ui/src/components/atoms/tooltip/index.tsx +++ b/packages/admin-ui/ui/src/components/atoms/tooltip/index.tsx @@ -42,7 +42,7 @@ const Tooltip = ({ sideOffset={8} align="center" className={clsx( - "inter-small-semibold text-grey-50", + "inter-small-semibold text-grey-50 z-[999]", "bg-grey-0 shadow-dropdown rounded-rounded py-2 px-3", "border-grey-20 border border-solid", className diff --git a/packages/admin-ui/ui/src/domain/products/components/prices-form/index.tsx b/packages/admin-ui/ui/src/components/forms/general/prices-form/index.tsx similarity index 100% rename from packages/admin-ui/ui/src/domain/products/components/prices-form/index.tsx rename to packages/admin-ui/ui/src/components/forms/general/prices-form/index.tsx diff --git a/packages/admin-ui/ui/src/domain/products/components/prices-form/nested-price.tsx b/packages/admin-ui/ui/src/components/forms/general/prices-form/nested-price.tsx similarity index 91% rename from packages/admin-ui/ui/src/domain/products/components/prices-form/nested-price.tsx rename to packages/admin-ui/ui/src/components/forms/general/prices-form/nested-price.tsx index a45647edb2..aa72df7a32 100644 --- a/packages/admin-ui/ui/src/domain/products/components/prices-form/nested-price.tsx +++ b/packages/admin-ui/ui/src/components/forms/general/prices-form/nested-price.tsx @@ -1,13 +1,13 @@ import clsx from "clsx" import { Controller } from "react-hook-form" import { NestedPriceObject, PricesFormType } from "." -import IncludesTaxTooltip from "../../../../components/atoms/includes-tax-tooltip" -import CoinsIcon from "../../../../components/fundamentals/icons/coins-icon" -import MapPinIcon from "../../../../components/fundamentals/icons/map-pin-icon" -import TriangleRightIcon from "../../../../components/fundamentals/icons/triangle-right-icon" import useToggleState from "../../../../hooks/use-toggle-state" import { currencies } from "../../../../utils/currencies" import { NestedForm } from "../../../../utils/nested-form" +import IncludesTaxTooltip from "../../../atoms/includes-tax-tooltip" +import CoinsIcon from "../../../fundamentals/icons/coins-icon" +import MapPinIcon from "../../../fundamentals/icons/map-pin-icon" +import TriangleRightIcon from "../../../fundamentals/icons/triangle-right-icon" import PriceFormInput from "./price-form-input" type Props = { @@ -21,7 +21,7 @@ const NestedPrice = ({ form, nestedPrice }: Props) => { const { control, path } = form const { currencyPrice, regionPrices } = nestedPrice return ( -
+
) diff --git a/packages/admin-ui/ui/src/domain/products/components/general-form/index.tsx b/packages/admin-ui/ui/src/components/forms/product/general-form/index.tsx similarity index 73% rename from packages/admin-ui/ui/src/domain/products/components/general-form/index.tsx rename to packages/admin-ui/ui/src/components/forms/product/general-form/index.tsx index 82c0b5251c..c399dd0453 100644 --- a/packages/admin-ui/ui/src/domain/products/components/general-form/index.tsx +++ b/packages/admin-ui/ui/src/components/forms/product/general-form/index.tsx @@ -1,7 +1,7 @@ -import InputField from "../../../../components/molecules/input" -import TextArea from "../../../../components/molecules/textarea" import FormValidator from "../../../../utils/form-validator" import { NestedForm } from "../../../../utils/nested-form" +import InputField from "../../../molecules/input" +import TextArea from "../../../molecules/textarea" export type GeneralFormType = { title: string @@ -14,9 +14,10 @@ export type GeneralFormType = { type Props = { form: NestedForm requireHandle?: boolean + isGiftCard?: boolean } -const GeneralForm = ({ form, requireHandle = true }: Props) => { +const GeneralForm = ({ form, requireHandle = true, isGiftCard }: Props) => { const { register, path, @@ -28,7 +29,7 @@ const GeneralForm = ({ form, requireHandle = true }: Props) => {
{ />

- Give your product a short and clear title. + Give your {isGiftCard ? "gift card" : "product"} a short and clear + title.
50-60 characters is the recommended length for search engines.

@@ -59,10 +61,12 @@ const GeneralForm = ({ form, requireHandle = true }: Props) => { label="Handle" tooltipContent={ !requireHandle - ? "The handle is the part of the URL that identifies the product. If not specified, it will be generated from the title." + ? `The handle is the part of the URL that identifies the ${ + isGiftCard ? "gift card" : "product" + }. If not specified, it will be generated from the title.` : undefined } - placeholder="winter-jacket" + placeholder={isGiftCard ? "gift-card" : "winter-jacket"} required={requireHandle} {...register(path("handle"), { required: requireHandle ? "Handle is required" : undefined, @@ -74,7 +78,7 @@ const GeneralForm = ({ form, requireHandle = true }: Props) => { /> {