From ca78ecc19f5d6825a450e71851f0f5efef80f4c1 Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Tue, 1 Sep 2020 16:16:50 +0200 Subject: [PATCH] Add metadata editor to attribute creator --- .../AttributePage/AttributePage.tsx | 22 ++++---- .../views/AttributeCreate/AttributeCreate.tsx | 53 +++++++++++++------ 2 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/attributes/components/AttributePage/AttributePage.tsx b/src/attributes/components/AttributePage/AttributePage.tsx index c0195e699..2aa7aa0c9 100644 --- a/src/attributes/components/AttributePage/AttributePage.tsx +++ b/src/attributes/components/AttributePage/AttributePage.tsx @@ -82,9 +82,9 @@ const AttributePage: React.FC = ({ filterableInDashboard: true, filterableInStorefront: true, inputType: AttributeInputTypeEnum.DROPDOWN, - metadata: undefined, + metadata: [], name: "", - privateMetadata: undefined, + privateMetadata: [], slug: "", storefrontSearchPosition: "", valueRequired: true, @@ -119,8 +119,14 @@ const AttributePage: React.FC = ({ }; const handleSubmit = (data: AttributePageFormData) => { - const metadata = isMetadataModified ? data.metadata : undefined; - const privateMetadata = isPrivateMetadataModified + const metadata = !attribute + ? data.metadata + : isMetadataModified + ? data.metadata + : undefined; + const privateMetadata = !attribute + ? data.privateMetadata + : isPrivateMetadataModified ? data.privateMetadata : undefined; @@ -170,12 +176,8 @@ const AttributePage: React.FC = ({ onValueReorder={onValueReorder} onValueUpdate={onValueUpdate} /> - {!!attribute && ( - <> - - - - )} + +
= ({ params }) => { } } }); + const [updateMetadata] = useMetadataUpdate({}); + const [updatePrivateMetadata] = usePrivateMetadataUpdate({}); const id = params.id ? parseInt(params.id, 0) : undefined; @@ -105,6 +114,31 @@ const AttributeDetails: React.FC = ({ params }) => { const handleValueReorder = ({ newIndex, oldIndex }: ReorderEvent) => setValues(move(values[oldIndex], values, areValuesEqual, newIndex)); + const handleCreate = async (data: AttributePageFormData) => { + const input = { + ...data, + metadata: undefined, + privateMetadata: undefined, + storefrontSearchPosition: parseInt(data.storefrontSearchPosition, 0), + values: values.map(value => ({ + name: value.name + })) + }; + + const result = await attributeCreate({ + variables: { + input + } + }); + + return result.data.attributeCreate?.attribute?.id || null; + }; + const handleSubmit = createMetadataCreateHandler( + handleCreate, + updateMetadata, + updatePrivateMetadata + ); + return ( <> = ({ params }) => { errors={attributeCreateOpts.data?.attributeCreate.errors || []} onBack={() => navigate(attributeListUrl())} onDelete={undefined} - onSubmit={input => - attributeCreate({ - variables: { - input: { - ...input, - storefrontSearchPosition: parseInt( - input.storefrontSearchPosition, - 0 - ), - values: values.map(value => ({ - name: value.name - })) - } - } - }) - } + onSubmit={handleSubmit} onValueAdd={() => openModal("add-value")} onValueDelete={id => openModal("remove-value", {