@dropins/storefront-requisition-list 0.8.0-beta → 1.0.0-beta1
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/api/fragments/RequisitionListItemsFragment.graphql.d.ts +1 -1
- package/chunks/RequisitionListForm.js +1 -1
- package/chunks/RequisitionListForm.js.map +1 -1
- package/chunks/RequisitionListView.js +1 -1
- package/chunks/RequisitionListView.js.map +1 -1
- package/chunks/updateRequisitionList.js +24 -4
- package/chunks/updateRequisitionList.js.map +1 -1
- package/components/RequisitionListGridWrapper/RequisitionListGridWrapper.d.ts +0 -1
- package/containers/RequisitionListGrid.js +1 -1
- package/containers/RequisitionListGrid.js.map +1 -1
- package/containers/RequisitionListSelector.js +2 -2
- package/containers/RequisitionListSelector.js.map +1 -1
- package/containers/RequisitionListView.js +1 -1
- package/containers/RequisitionListView.js.map +1 -1
- package/hooks/useRequisitionListGrid.d.ts +3 -3
- package/package.json +1 -1
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
* is strictly forbidden unless prior written permission is obtained
|
|
15
15
|
* from Adobe.
|
|
16
16
|
*******************************************************************/
|
|
17
|
-
export declare const REQUISITION_LIST_ITEMS_FRAGMENT = "\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n";
|
|
17
|
+
export declare const REQUISITION_LIST_ITEMS_FRAGMENT = "\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on BundleRequisitionListItem {\n bundle_options {\n uid\n type\n label\n values {\n uid\n label\n quantity\n priceV2 {\n value\n currency\n }\n original_price {\n value\n currency\n }\n }\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n";
|
|
18
18
|
//# sourceMappingURL=RequisitionListItemsFragment.graphql.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as o,jsx as e}from"@dropins/tools/preact-jsx-runtime.js";import{useState as m}from"@dropins/tools/preact-hooks.js";import{ProgressSpinner as M,InLineAlert as x,Field as f,Input as y,TextArea as D,Button as R}from"@dropins/tools/components.js";import{classes as c}from"@dropins/tools/lib.js";import{useText as B}from"@dropins/tools/i18n.js";const Z=10,g=3,G=40,H=255,P=/^[a-zA-Z0-9\s.,\-_!?'"()&]+$/,w=({className:l,mode:
|
|
3
|
+
import{jsxs as o,jsx as e}from"@dropins/tools/preact-jsx-runtime.js";import{useState as m}from"@dropins/tools/preact-hooks.js";import{ProgressSpinner as M,InLineAlert as x,Field as f,Input as y,TextArea as D,Button as R}from"@dropins/tools/components.js";import{classes as c}from"@dropins/tools/lib.js";import{useText as B}from"@dropins/tools/i18n.js";const Z=10,g=3,G=40,H=255,P=/^[a-zA-Z0-9\s.,\-_!?'"()&]+$/,w=({className:l,mode:_,defaultValues:b={name:"",description:""},error:u=null,onSubmit:v,onCancel:F,...N})=>{const[s,T]=m(b),[E,d]=m({name:!1}),[r,p]=m(!1),i=B({actionCancel:"RequisitionList.RequisitionListForm.actionCancel",actionSave:"RequisitionList.RequisitionListForm.actionSave",requiredField:"RequisitionList.RequisitionListForm.requiredField",nameMinLength:"RequisitionList.RequisitionListForm.nameMinLength",nameInvalidCharacters:"RequisitionList.RequisitionListForm.nameInvalidCharacters",floatingLabel:"RequisitionList.RequisitionListForm.floatingLabel",placeholder:"RequisitionList.RequisitionListForm.placeholder",label:"RequisitionList.RequisitionListForm.label",updateTitle:"RequisitionList.RequisitionListForm.updateTitle",createTitle:"RequisitionList.RequisitionListForm.createTitle"}),q=n=>{const t=n.trim();return t?t.length<g?i.nameMinLength.replace("{min}",g.toString()):P.test(t)?"":i.nameInvalidCharacters:i.requiredField},L=n=>t=>{const a=t.target;T(I=>({...I,[n]:a.value}))},h=n=>()=>{d(t=>({...t,[n]:!0}))},S=async n=>{var a;if(n.preventDefault(),d({name:!0,description:!0}),!(q(s.name)||r)){p(!0);try{await v({name:s.name.trim(),description:((a=s.description)==null?void 0:a.trim())??""})}catch{p(!1)}}},A=E.name?q(s.name):"",C=_==="update"?i.updateTitle:i.createTitle;return o("div",{...N,className:c(["requisition-list-form",l]),children:[o("div",{className:"requisition-list-form__title",children:[C,r?e("div",{className:c(["requisition-list-form_progress-spinner",l]),"data-testid":"requisition-list-form-progress-spinner",children:e(M,{stroke:"4",size:"small"})}):null]}),u?e(x,{type:"error",className:"requisition-list-form__notification",variant:"secondary",heading:u,"data-testid":"requisition-list-alert"}):null,o("form",{className:c(["requisition-list-form__form",l]),onSubmit:S,children:[e(f,{error:A,disabled:r,children:e(y,{id:"requisition-list-form-name",name:"name",type:"text",floatingLabel:i.floatingLabel,placeholder:i.placeholder,maxLength:G,value:s.name,onChange:L("name"),onBlur:h("name")})}),e(f,{disabled:r,children:e(D,{id:"requisition-list-form-description",name:"description",label:i.label,placeholder:i.label,maxLength:H,value:s.description,onChange:L("description"),onBlur:h("description")})}),o("div",{className:"requisition-list-form__actions",children:[e(R,{type:"button",variant:"secondary",onClick:F,disabled:r,"data-testid":"requisition-list-form-cancel",children:i.actionCancel}),e(R,{type:"submit",disabled:r,"data-testid":"requisition-list-form-save",children:i.actionSave})]})]})]})};export{Z as D,w as R};
|
|
4
4
|
//# sourceMappingURL=RequisitionListForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequisitionListForm.js","sources":["/@dropins/storefront-requisition-list/src/lib/constants.ts","/@dropins/storefront-requisition-list/src/components/RequisitionListForm/RequisitionListForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Default page size for pagination in requisition lists\n */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n/**\n * Validation constants for requisition list forms\n */\nexport const NAME_MIN_LENGTH = 3;\nexport const NAME_MAX_LENGTH = 40;\nexport const DESCRIPTION_MAX_LENGTH = 255;\n// Allow letters, numbers, spaces, and common punctuation: . , - _ ! ? ' \" ( ) &\nexport const NAME_VALID_CHARS = /^[a-zA-Z0-9\\s.,\\-_!?'\"()&]+$/;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport {\n Field,\n Input,\n TextArea,\n Button,\n InLineAlert,\n ProgressSpinner,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListFormMode,\n RequisitionListFormValues,\n} from '@/requisitionList/hooks/useRequisitionListForm';\nimport {\n NAME_MIN_LENGTH,\n NAME_MAX_LENGTH,\n DESCRIPTION_MAX_LENGTH,\n NAME_VALID_CHARS,\n} from '@/requisitionList/lib/constants';\n\nimport '@/requisitionList/components/RequisitionListForm/RequisitionListForm.css';\n\nexport interface RequisitionListFormProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n mode: RequisitionListFormMode;\n defaultValues?: RequisitionListFormValues;\n error?: string | null;\n onSubmit: (values: RequisitionListFormValues) => Promise<void> | void;\n onCancel: () => void;\n}\n\nexport const RequisitionListForm: FunctionComponent<\n RequisitionListFormProps\n> = ({\n className,\n mode,\n defaultValues = { name: '', description: '' },\n error = null,\n onSubmit,\n onCancel,\n ...props\n}) => {\n const [values, setValues] =\n useState<RequisitionListFormValues>(defaultValues);\n const [touched, setTouched] = useState({\n name: false,\n });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const translations = useText({\n actionCancel: `RequisitionList.RequisitionListForm.actionCancel`,\n actionSave: `RequisitionList.RequisitionListForm.actionSave`,\n requiredField: `RequisitionList.RequisitionListForm.requiredField`,\n nameMinLength: `RequisitionList.RequisitionListForm.nameMinLength`,\n nameInvalidCharacters: `RequisitionList.RequisitionListForm.nameInvalidCharacters`,\n floatingLabel: `RequisitionList.RequisitionListForm.floatingLabel`,\n placeholder: `RequisitionList.RequisitionListForm.placeholder`,\n label: `RequisitionList.RequisitionListForm.label`,\n updateTitle: `RequisitionList.RequisitionListForm.updateTitle`,\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n });\n\n // Validation functions\n const validateName = (name: string): string => {\n const trimmedName = name.trim();\n\n if (!trimmedName) {\n return translations.requiredField;\n }\n\n if (trimmedName.length < NAME_MIN_LENGTH) {\n return translations.nameMinLength.replace(\n '{min}',\n NAME_MIN_LENGTH.toString()\n );\n }\n\n if (!NAME_VALID_CHARS.test(trimmedName)) {\n return translations.nameInvalidCharacters;\n }\n\n return '';\n };\n\n const handleChange =\n (field: keyof RequisitionListFormValues) => (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n setValues((prevValues) => ({\n ...prevValues,\n [field]: target.value,\n }));\n };\n\n const handleBlur = (field: keyof RequisitionListFormValues) => () => {\n setTouched((prev) => ({ ...prev, [field]: true }));\n };\n\n const handleSubmit = async (e: Event) => {\n e.preventDefault();\n\n // Mark all fields as touched on submit attempt\n setTouched({ name: true, description: true });\n\n // Validate all fields\n const nameError = validateName(values.name);\n\n if (nameError || isSubmitting) return;\n\n setIsSubmitting(true);\n try {\n await onSubmit({\n name: values.name.trim(),\n description: values.description?.trim() || undefined,\n });\n } catch {\n setIsSubmitting(false);\n }\n };\n\n // Calculate error messages\n const nameError = touched.name ? validateName(values.name) : '';\n\n const title =\n mode === 'update' ? translations.updateTitle : translations.createTitle;\n\n return (\n <div {...props} className={classes(['requisition-list-form', className])}>\n <div className=\"requisition-list-form__title\">\n {title}\n {isSubmitting ? (\n <div\n className={classes([\n 'requisition-list-form_progress-spinner',\n className,\n ])}\n data-testid=\"requisition-list-form-progress-spinner\"\n >\n <ProgressSpinner stroke={'4'} size={'small'} />\n </div>\n ) : null}\n </div>\n\n {error ? (\n <InLineAlert\n type=\"error\"\n className=\"requisition-list-form__notification\"\n variant=\"secondary\"\n heading={error}\n data-testid=\"requisition-list-alert\"\n />\n ) : null}\n\n <form\n className={classes(['requisition-list-form__form', className])}\n onSubmit={handleSubmit}\n >\n <Field error={nameError} disabled={isSubmitting}>\n <Input\n id=\"requisition-list-form-name\"\n name=\"name\"\n type=\"text\"\n floatingLabel={translations.floatingLabel}\n placeholder={translations.placeholder}\n maxLength={NAME_MAX_LENGTH}\n value={values.name}\n onChange={handleChange('name')}\n onBlur={handleBlur('name')}\n />\n </Field>\n\n <Field disabled={isSubmitting}>\n <TextArea\n id=\"requisition-list-form-description\"\n name=\"description\"\n label={translations.label}\n placeholder={translations.label}\n maxLength={DESCRIPTION_MAX_LENGTH}\n value={values.description}\n onChange={handleChange('description')}\n onBlur={handleBlur('description')}\n />\n </Field>\n\n <div className=\"requisition-list-form__actions\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={onCancel}\n disabled={isSubmitting}\n data-testid=\"requisition-list-form-cancel\"\n >\n {translations.actionCancel}\n </Button>\n <Button\n type=\"submit\"\n disabled={isSubmitting}\n data-testid=\"requisition-list-form-save\"\n >\n {translations.actionSave}\n </Button>\n </div>\n </form>\n </div>\n );\n};\n"],"names":["DEFAULT_PAGE_SIZE","NAME_MIN_LENGTH","NAME_MAX_LENGTH","DESCRIPTION_MAX_LENGTH","NAME_VALID_CHARS","RequisitionListForm","className","mode","defaultValues","error","onSubmit","onCancel","props","values","setValues","useState","touched","setTouched","isSubmitting","setIsSubmitting","translations","useText","validateName","name","trimmedName","handleChange","field","e","target","prevValues","handleBlur","prev","handleSubmit","nameError","_a","title","jsxs","classes","jsx","ProgressSpinner","InLineAlert","Field","Input","TextArea","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RequisitionListForm.js","sources":["/@dropins/storefront-requisition-list/src/lib/constants.ts","/@dropins/storefront-requisition-list/src/components/RequisitionListForm/RequisitionListForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Default page size for pagination in requisition lists\n */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n/**\n * Validation constants for requisition list forms\n */\nexport const NAME_MIN_LENGTH = 3;\nexport const NAME_MAX_LENGTH = 40;\nexport const DESCRIPTION_MAX_LENGTH = 255;\n// Allow letters, numbers, spaces, and common punctuation: . , - _ ! ? ' \" ( ) &\nexport const NAME_VALID_CHARS = /^[a-zA-Z0-9\\s.,\\-_!?'\"()&]+$/;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState } from 'preact/hooks';\nimport {\n Field,\n Input,\n TextArea,\n Button,\n InLineAlert,\n ProgressSpinner,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListFormMode,\n RequisitionListFormValues,\n} from '@/requisitionList/hooks/useRequisitionListForm';\nimport {\n NAME_MIN_LENGTH,\n NAME_MAX_LENGTH,\n DESCRIPTION_MAX_LENGTH,\n NAME_VALID_CHARS,\n} from '@/requisitionList/lib/constants';\n\nimport '@/requisitionList/components/RequisitionListForm/RequisitionListForm.css';\n\nexport interface RequisitionListFormProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n mode: RequisitionListFormMode;\n defaultValues?: RequisitionListFormValues;\n error?: string | null;\n onSubmit: (values: RequisitionListFormValues) => Promise<void> | void;\n onCancel: () => void;\n}\n\nexport const RequisitionListForm: FunctionComponent<\n RequisitionListFormProps\n> = ({\n className,\n mode,\n defaultValues = { name: '', description: '' },\n error = null,\n onSubmit,\n onCancel,\n ...props\n}) => {\n const [values, setValues] =\n useState<RequisitionListFormValues>(defaultValues);\n const [touched, setTouched] = useState({\n name: false,\n });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const translations = useText({\n actionCancel: `RequisitionList.RequisitionListForm.actionCancel`,\n actionSave: `RequisitionList.RequisitionListForm.actionSave`,\n requiredField: `RequisitionList.RequisitionListForm.requiredField`,\n nameMinLength: `RequisitionList.RequisitionListForm.nameMinLength`,\n nameInvalidCharacters: `RequisitionList.RequisitionListForm.nameInvalidCharacters`,\n floatingLabel: `RequisitionList.RequisitionListForm.floatingLabel`,\n placeholder: `RequisitionList.RequisitionListForm.placeholder`,\n label: `RequisitionList.RequisitionListForm.label`,\n updateTitle: `RequisitionList.RequisitionListForm.updateTitle`,\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n });\n\n // Validation functions\n const validateName = (name: string): string => {\n const trimmedName = name.trim();\n\n if (!trimmedName) {\n return translations.requiredField;\n }\n\n if (trimmedName.length < NAME_MIN_LENGTH) {\n return translations.nameMinLength.replace(\n '{min}',\n NAME_MIN_LENGTH.toString()\n );\n }\n\n if (!NAME_VALID_CHARS.test(trimmedName)) {\n return translations.nameInvalidCharacters;\n }\n\n return '';\n };\n\n const handleChange =\n (field: keyof RequisitionListFormValues) => (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n setValues((prevValues) => ({\n ...prevValues,\n [field]: target.value,\n }));\n };\n\n const handleBlur = (field: keyof RequisitionListFormValues) => () => {\n setTouched((prev) => ({ ...prev, [field]: true }));\n };\n\n const handleSubmit = async (e: Event) => {\n e.preventDefault();\n\n // Mark all fields as touched on submit attempt\n setTouched({ name: true, description: true });\n\n // Validate all fields\n const nameError = validateName(values.name);\n\n if (nameError || isSubmitting) return;\n\n setIsSubmitting(true);\n try {\n await onSubmit({\n name: values.name.trim(),\n description: values.description?.trim() ?? '',\n });\n } catch {\n setIsSubmitting(false);\n }\n };\n\n // Calculate error messages\n const nameError = touched.name ? validateName(values.name) : '';\n\n const title =\n mode === 'update' ? translations.updateTitle : translations.createTitle;\n\n return (\n <div {...props} className={classes(['requisition-list-form', className])}>\n <div className=\"requisition-list-form__title\">\n {title}\n {isSubmitting ? (\n <div\n className={classes([\n 'requisition-list-form_progress-spinner',\n className,\n ])}\n data-testid=\"requisition-list-form-progress-spinner\"\n >\n <ProgressSpinner stroke={'4'} size={'small'} />\n </div>\n ) : null}\n </div>\n\n {error ? (\n <InLineAlert\n type=\"error\"\n className=\"requisition-list-form__notification\"\n variant=\"secondary\"\n heading={error}\n data-testid=\"requisition-list-alert\"\n />\n ) : null}\n\n <form\n className={classes(['requisition-list-form__form', className])}\n onSubmit={handleSubmit}\n >\n <Field error={nameError} disabled={isSubmitting}>\n <Input\n id=\"requisition-list-form-name\"\n name=\"name\"\n type=\"text\"\n floatingLabel={translations.floatingLabel}\n placeholder={translations.placeholder}\n maxLength={NAME_MAX_LENGTH}\n value={values.name}\n onChange={handleChange('name')}\n onBlur={handleBlur('name')}\n />\n </Field>\n\n <Field disabled={isSubmitting}>\n <TextArea\n id=\"requisition-list-form-description\"\n name=\"description\"\n label={translations.label}\n placeholder={translations.label}\n maxLength={DESCRIPTION_MAX_LENGTH}\n value={values.description}\n onChange={handleChange('description')}\n onBlur={handleBlur('description')}\n />\n </Field>\n\n <div className=\"requisition-list-form__actions\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={onCancel}\n disabled={isSubmitting}\n data-testid=\"requisition-list-form-cancel\"\n >\n {translations.actionCancel}\n </Button>\n <Button\n type=\"submit\"\n disabled={isSubmitting}\n data-testid=\"requisition-list-form-save\"\n >\n {translations.actionSave}\n </Button>\n </div>\n </form>\n </div>\n );\n};\n"],"names":["DEFAULT_PAGE_SIZE","NAME_MIN_LENGTH","NAME_MAX_LENGTH","DESCRIPTION_MAX_LENGTH","NAME_VALID_CHARS","RequisitionListForm","className","mode","defaultValues","error","onSubmit","onCancel","props","values","setValues","useState","touched","setTouched","isSubmitting","setIsSubmitting","translations","useText","validateName","name","trimmedName","handleChange","field","e","target","prevValues","handleBlur","prev","handleSubmit","nameError","_a","title","jsxs","classes","jsx","ProgressSpinner","InLineAlert","Field","Input","TextArea","Button"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import*as
|
|
3
|
+
import*as t from"@dropins/tools/preact-compat.js";import{useState as p,useMemo as l,useCallback as A}from"@dropins/tools/preact-compat.js";import{useText as y}from"@dropins/tools/i18n.js";import{jsxs as x,jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{Icon as C}from"@dropins/tools/components.js";import{classes as h}from"@dropins/tools/lib.js";function E(s){const[r,i]=p(null),c=y({errorCreate:"RequisitionList.RequisitionListAlert.errorCreate",successCreate:"RequisitionList.RequisitionListAlert.successCreate",errorDeleteItem:"RequisitionList.RequisitionListAlert.errorDeleteItem",successDeleteItem:"RequisitionList.RequisitionListAlert.successDeleteItem",errorDeleteReqList:"RequisitionList.RequisitionListAlert.errorDeleteReqList",successDeleteReqList:"RequisitionList.RequisitionListAlert.successDeleteReqList",errorAddToCart:"RequisitionList.RequisitionListAlert.errorAddToCart",successAddToCart:"RequisitionList.RequisitionListAlert.successAddToCart",errorUpdateQuantity:"RequisitionList.RequisitionListAlert.errorUpdateQuantity",successUpdateQuantity:"RequisitionList.RequisitionListAlert.successUpdateQuantity",errorUpdate:"RequisitionList.RequisitionListAlert.errorUpdate",successUpdate:"RequisitionList.RequisitionListAlert.successUpdate",errorMove:"RequisitionList.RequisitionListAlert.errorMove",successMove:"RequisitionList.RequisitionListAlert.successMove",errorAddToRequisitionList:"RequisitionList.RequisitionListAlert.errorAddToRequisitionList",successAddToRequisitionList:"RequisitionList.RequisitionListAlert.successAddToRequisitionList"}),e=l(()=>({...c,...s}),[c,s]),u=l(()=>({create:{requisitionList:{success:e.successCreate,error:e.errorCreate}},add:{product:{success:e.successAddToRequisitionList,error:e.errorAddToRequisitionList}},update:{product:{success:e.successUpdateQuantity,error:e.errorUpdateQuantity},requisitionList:{success:e.successUpdate,error:e.errorUpdate}},delete:{product:{success:e.successDeleteItem,error:e.errorDeleteItem},requisitionList:{success:e.successDeleteReqList,error:e.errorDeleteReqList}},move:{product:{success:e.successMove,error:e.errorMove}}}),[e]),d=A(L=>{const{type:n,action:q,context:R,skus:o}=L;i({type:n,description:u[q][R][n],sku:o==null?void 0:o[0]});const m=setTimeout(()=>{i(null)},5e3);return()=>clearTimeout(m)},[u]);return{alert:r,setAlert:i,handleRequisitionListAlert:d}}const T=s=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...s},t.createElement("rect",{x:4.89282,y:2.75,width:14.2143,height:18.5,rx:2.25,stroke:"currentColor",strokeWidth:1}),t.createElement("line",{x1:9.85718,y1:7.67871,x2:16.2857,y2:7.67871,stroke:"currentColor",strokeWidth:1}),t.createElement("line",{x1:9.85718,y1:11.9644,x2:16.2857,y2:11.9644,stroke:"currentColor",strokeWidth:1}),t.createElement("line",{x1:9.85718,y1:16.25,x2:16.2857,y2:16.25,stroke:"currentColor",strokeWidth:1}),t.createElement("circle",{cx:7.71429,cy:7.71429,r:.714286,fill:"currentColor"}),t.createElement("circle",{cx:7.71429,cy:11.9999,r:.714286,fill:"currentColor"}),t.createElement("circle",{cx:7.71429,cy:16.2856,r:.714286,fill:"currentColor"})),g=({className:s,textContent:r,...i})=>x("div",{className:h(["empty-list",s]),"data-testid":"empty-list",...i,children:[a(C,{source:T,size:"64",stroke:"2"}),r&&a("h4",{children:r})]});export{g as E,T as S,E as u};
|
|
4
4
|
//# sourceMappingURL=RequisitionListView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequisitionListView.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListAlert.tsx","../../node_modules/@adobe-commerce/elsie/src/icons/List.svg","/@dropins/storefront-requisition-list/src/components/EmptyList/EmptyList.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useMemo, useState } from 'preact/compat';\nimport { RequisitionListActionPayload } from 'adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface Alert {\n type: string;\n description: string;\n action?: string;\n sku?: string;\n}\n\nexport function useRequisitionListAlert(\n translationsOverride?: Record<string, string>\n) {\n const [alert, setAlert] = useState<Alert | null>(null);\n\n const defaultTranslations = useText({\n errorCreate: `RequisitionList.RequisitionListAlert.errorCreate`,\n successCreate: `RequisitionList.RequisitionListAlert.successCreate`,\n errorDeleteItem: `RequisitionList.RequisitionListAlert.errorDeleteItem`,\n successDeleteItem: `RequisitionList.RequisitionListAlert.successDeleteItem`,\n errorDeleteReqList: `RequisitionList.RequisitionListAlert.errorDeleteReqList`,\n successDeleteReqList: `RequisitionList.RequisitionListAlert.successDeleteReqList`,\n errorAddToCart: `RequisitionList.RequisitionListAlert.errorAddToCart`,\n successAddToCart: `RequisitionList.RequisitionListAlert.successAddToCart`,\n errorUpdateQuantity: `RequisitionList.RequisitionListAlert.errorUpdateQuantity`,\n successUpdateQuantity: `RequisitionList.RequisitionListAlert.successUpdateQuantity`,\n errorUpdate: `RequisitionList.RequisitionListAlert.errorUpdate`,\n successUpdate: `RequisitionList.RequisitionListAlert.successUpdate`,\n errorMove: `RequisitionList.RequisitionListAlert.errorMove`,\n successMove: `RequisitionList.RequisitionListAlert.successMove`,\n errorAddToRequisitionList: `RequisitionList.RequisitionListAlert.errorAddToRequisitionList`,\n successAddToRequisitionList: `RequisitionList.RequisitionListAlert.successAddToRequisitionList`,\n });\n\n const translations = useMemo(\n () => ({\n ...defaultTranslations,\n ...translationsOverride,\n }),\n [defaultTranslations, translationsOverride]\n );\n\n const messages = useMemo(\n () => ({\n create: {\n // adding context for consistency, although 'create' action only applies to requisition lists\n requisitionList: {\n success: translations.successCreate,\n error: translations.errorCreate,\n },\n },\n add: {\n product: {\n success: translations.successAddToRequisitionList,\n error: translations.errorAddToRequisitionList,\n },\n },\n update: {\n product: {\n success: translations.successUpdateQuantity,\n error: translations.errorUpdateQuantity,\n },\n requisitionList: {\n success: translations.successUpdate,\n error: translations.errorUpdate,\n },\n },\n delete: {\n product: {\n success: translations.successDeleteItem,\n error: translations.errorDeleteItem,\n },\n requisitionList: {\n success: translations.successDeleteReqList,\n error: translations.errorDeleteReqList,\n },\n },\n move: {\n // adding context for consistency, although 'move' action only applies to products\n product: {\n success: translations.successMove,\n error: translations.errorMove,\n },\n },\n }),\n [translations]\n );\n\n const handleRequisitionListAlert = useCallback(\n (payload: RequisitionListActionPayload) => {\n const { type, action, context, skus } = payload;\n setAlert({\n type,\n description: messages[action][context][type],\n sku: skus?.[0],\n });\n\n const timer = setTimeout(() => {\n setAlert(null);\n }, 5000);\n\n return () => clearTimeout(timer);\n },\n [messages]\n );\n\n return { alert, setAlert, handleRequisitionListAlert };\n}\n","import * as React from \"react\";\nconst SvgList = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M16.8569 2C18.5138 2 19.8569 3.34315 19.8569 5V19C19.8569 20.6569 18.5138 22 16.8569 22H7.14307L6.98877 21.9961C5.45484 21.9183 4.22469 20.6883 4.14697 19.1543L4.14307 19V5C4.14307 3.39498 5.40374 2.08434 6.98877 2.00391L7.14307 2H16.8569ZM7.14307 3.5C6.31475 3.50013 5.64307 4.17165 5.64307 5V19C5.64307 19.8283 6.31475 20.4999 7.14307 20.5H16.8569C17.6854 20.5 18.3569 19.8284 18.3569 19V5C18.3569 4.17157 17.6854 3.5 16.8569 3.5H7.14307ZM7.71436 15.5713C8.10871 15.5713 8.42897 15.8909 8.4292 16.2852C8.4292 16.6796 8.10884 17 7.71436 17C7.32006 16.9998 7.00049 16.6795 7.00049 16.2852C7.00071 15.891 7.3202 15.5715 7.71436 15.5713ZM16.2866 17H9.85791V15.5H16.2866V17ZM16.2866 12.7148H9.85791V11.2148H16.2866V12.7148ZM7.71436 11.2861C8.10884 11.2861 8.4292 11.6055 8.4292 12C8.42916 12.3945 8.10882 12.7139 7.71436 12.7139C7.32008 12.7136 7.00053 12.3943 7.00049 12C7.00049 11.6057 7.32006 11.2864 7.71436 11.2861ZM7.71436 7C8.10871 7 8.42897 7.31957 8.4292 7.71387C8.4292 8.10836 8.10884 8.42871 7.71436 8.42871C7.32006 8.42848 7.00049 8.10822 7.00049 7.71387C7.00071 7.31971 7.3202 7.00023 7.71436 7ZM16.2866 8.42871H9.85791V6.92871H16.2866V8.42871Z\", fill: \"currentColor\" }));\nexport default SvgList;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { Icon } from '@adobe-commerce/elsie/components';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { List } from '@adobe-commerce/elsie/icons';\nimport '@/requisitionList/components/EmptyList/EmptyList.css';\n\nexport interface EmptyListProps {\n className?: string;\n textContent?: string | null;\n}\n\nexport const EmptyList: FunctionComponent<EmptyListProps> = ({\n className,\n textContent,\n ...props\n}) => {\n return (\n <div\n className={classes(['empty-list', className])}\n data-testid=\"empty-list\"\n {...props}\n >\n <Icon source={List} size={'64'} stroke={'2'} />\n {textContent && <h4>{textContent}</h4>}\n </div>\n );\n};\n"],"names":["useRequisitionListAlert","translationsOverride","alert","setAlert","useState","defaultTranslations","useText","translations","useMemo","messages","handleRequisitionListAlert","useCallback","payload","type","action","context","skus","timer","SvgList","props","React","EmptyList","className","textContent","jsxs","classes","jsx","Icon","List"],"mappings":"qWA4BO,SAASA,EACdC,EACA,CACA,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAuB,IAAI,EAE/CC,EAAsBC,EAAQ,CAClC,YAAa,mDACb,cAAe,qDACf,gBAAiB,uDACjB,kBAAmB,yDACnB,mBAAoB,0DACpB,qBAAsB,4DACtB,eAAgB,sDAChB,iBAAkB,wDAClB,oBAAqB,2DACrB,sBAAuB,6DACvB,YAAa,mDACb,cAAe,qDACf,UAAW,iDACX,YAAa,mDACb,0BAA2B,iEAC3B,4BAA6B,kEAAA,CAC9B,EAEKC,EAAeC,EACnB,KAAO,CACL,GAAGH,EACH,GAAGJ,CAAA,GAEL,CAACI,EAAqBJ,CAAoB,CAC5C,EAEMQ,EAAWD,EACf,KAAO,CACL,OAAQ,CAEN,gBAAiB,CACf,QAASD,EAAa,cACtB,MAAOA,EAAa,WAAA,CAExB,EACA,IAAK,CACH,QAAS,CACP,QAASA,EAAa,4BACtB,MAAOA,EAAa,yBAAA,CAExB,EACA,OAAQ,CACN,QAAS,CACP,QAASA,EAAa,sBACtB,MAAOA,EAAa,mBACtB,EACA,gBAAiB,CACf,QAASA,EAAa,cACtB,MAAOA,EAAa,WAAA,CAExB,EACA,OAAQ,CACN,QAAS,CACP,QAASA,EAAa,kBACtB,MAAOA,EAAa,eACtB,EACA,gBAAiB,CACf,QAASA,EAAa,qBACtB,MAAOA,EAAa,kBAAA,CAExB,EACA,KAAM,CAEJ,QAAS,CACP,QAASA,EAAa,YACtB,MAAOA,EAAa,SAAA,CACtB,CACF,GAEF,CAACA,CAAY,CACf,EAEMG,EAA6BC,EAChCC,GAA0C,CACzC,KAAM,CAAE,KAAAC,EAAM,OAAAC,EAAQ,QAAAC,EAAS,KAAAC,CAAS,EAAAJ,EAC/BT,EAAA,CACP,KAAAU,EACA,YAAaJ,EAASK,CAAM,EAAEC,CAAO,EAAEF,CAAI,EAC3C,IAAKG,GAAA,YAAAA,EAAO,EAAC,CACd,EAEK,MAAAC,EAAQ,WAAW,IAAM,CAC7Bd,EAAS,IAAI,GACZ,GAAI,EAEA,MAAA,IAAM,aAAac,CAAK,CACjC,EACA,CAACR,CAAQ,CACX,EAEO,MAAA,CAAE,MAAAP,EAAO,SAAAC,EAAU,2BAAAO,CAA2B,CACvD,CC5HK,MAACQ,EAAWC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAO,EAAkBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,qoCAAsoC,KAAM,cAAc,CAAE,CAAC,EC0Bz5CC,EAA+C,CAAC,CAC3D,UAAAC,EACA,YAAAC,EACA,GAAGJ,CACL,IAEIK,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,aAAcH,CAAS,CAAC,EAC5C,cAAY,aACX,GAAGH,EAEJ,SAAA,CAAAO,EAACC,GAAK,OAAQC,EAAM,KAAM,KAAM,OAAQ,IAAK,EAC5CL,GAAgBG,EAAA,KAAA,CAAI,SAAYH,CAAA,CAAA,CAAA,CAAA,CACnC","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"RequisitionListView.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListAlert.tsx","../../node_modules/@adobe-commerce/elsie/src/icons/List.svg","/@dropins/storefront-requisition-list/src/components/EmptyList/EmptyList.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useMemo, useState } from 'preact/compat';\nimport { RequisitionListActionPayload } from 'adobe-commerce/event-bus';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface Alert {\n type: string;\n description: string;\n action?: string;\n sku?: string;\n}\n\nexport function useRequisitionListAlert(\n translationsOverride?: Record<string, string>\n) {\n const [alert, setAlert] = useState<Alert | null>(null);\n\n const defaultTranslations = useText({\n errorCreate: `RequisitionList.RequisitionListAlert.errorCreate`,\n successCreate: `RequisitionList.RequisitionListAlert.successCreate`,\n errorDeleteItem: `RequisitionList.RequisitionListAlert.errorDeleteItem`,\n successDeleteItem: `RequisitionList.RequisitionListAlert.successDeleteItem`,\n errorDeleteReqList: `RequisitionList.RequisitionListAlert.errorDeleteReqList`,\n successDeleteReqList: `RequisitionList.RequisitionListAlert.successDeleteReqList`,\n errorAddToCart: `RequisitionList.RequisitionListAlert.errorAddToCart`,\n successAddToCart: `RequisitionList.RequisitionListAlert.successAddToCart`,\n errorUpdateQuantity: `RequisitionList.RequisitionListAlert.errorUpdateQuantity`,\n successUpdateQuantity: `RequisitionList.RequisitionListAlert.successUpdateQuantity`,\n errorUpdate: `RequisitionList.RequisitionListAlert.errorUpdate`,\n successUpdate: `RequisitionList.RequisitionListAlert.successUpdate`,\n errorMove: `RequisitionList.RequisitionListAlert.errorMove`,\n successMove: `RequisitionList.RequisitionListAlert.successMove`,\n errorAddToRequisitionList: `RequisitionList.RequisitionListAlert.errorAddToRequisitionList`,\n successAddToRequisitionList: `RequisitionList.RequisitionListAlert.successAddToRequisitionList`,\n });\n\n const translations = useMemo(\n () => ({\n ...defaultTranslations,\n ...translationsOverride,\n }),\n [defaultTranslations, translationsOverride]\n );\n\n const messages = useMemo(\n () => ({\n create: {\n // adding context for consistency, although 'create' action only applies to requisition lists\n requisitionList: {\n success: translations.successCreate,\n error: translations.errorCreate,\n },\n },\n add: {\n product: {\n success: translations.successAddToRequisitionList,\n error: translations.errorAddToRequisitionList,\n },\n },\n update: {\n product: {\n success: translations.successUpdateQuantity,\n error: translations.errorUpdateQuantity,\n },\n requisitionList: {\n success: translations.successUpdate,\n error: translations.errorUpdate,\n },\n },\n delete: {\n product: {\n success: translations.successDeleteItem,\n error: translations.errorDeleteItem,\n },\n requisitionList: {\n success: translations.successDeleteReqList,\n error: translations.errorDeleteReqList,\n },\n },\n move: {\n // adding context for consistency, although 'move' action only applies to products\n product: {\n success: translations.successMove,\n error: translations.errorMove,\n },\n },\n }),\n [translations]\n );\n\n const handleRequisitionListAlert = useCallback(\n (payload: RequisitionListActionPayload) => {\n const { type, action, context, skus } = payload;\n setAlert({\n type,\n description: messages[action][context][type],\n sku: skus?.[0],\n });\n\n const timer = setTimeout(() => {\n setAlert(null);\n }, 5000);\n\n return () => clearTimeout(timer);\n },\n [messages]\n );\n\n return { alert, setAlert, handleRequisitionListAlert };\n}\n","import * as React from \"react\";\nconst SvgList = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 4.89282, y: 2.75, width: 14.2143, height: 18.5, rx: 2.25, stroke: \"currentColor\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 9.85718, y1: 7.67871, x2: 16.2857, y2: 7.67871, stroke: \"currentColor\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 9.85718, y1: 11.9644, x2: 16.2857, y2: 11.9644, stroke: \"currentColor\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 9.85718, y1: 16.25, x2: 16.2857, y2: 16.25, stroke: \"currentColor\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 7.71429, cy: 7.71429, r: 0.714286, fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 7.71429, cy: 11.9999, r: 0.714286, fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 7.71429, cy: 16.2856, r: 0.714286, fill: \"currentColor\" }));\nexport default SvgList;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { FunctionComponent } from 'preact';\nimport { Icon } from '@adobe-commerce/elsie/components';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { List } from '@adobe-commerce/elsie/icons';\nimport '@/requisitionList/components/EmptyList/EmptyList.css';\n\nexport interface EmptyListProps {\n className?: string;\n textContent?: string | null;\n}\n\nexport const EmptyList: FunctionComponent<EmptyListProps> = ({\n className,\n textContent,\n ...props\n}) => {\n return (\n <div\n className={classes(['empty-list', className])}\n data-testid=\"empty-list\"\n {...props}\n >\n <Icon source={List} size={'64'} stroke={'2'} />\n {textContent && <h4>{textContent}</h4>}\n </div>\n );\n};\n"],"names":["useRequisitionListAlert","translationsOverride","alert","setAlert","useState","defaultTranslations","useText","translations","useMemo","messages","handleRequisitionListAlert","useCallback","payload","type","action","context","skus","timer","SvgList","props","React","EmptyList","className","textContent","jsxs","classes","jsx","Icon","List"],"mappings":"qWA4BO,SAASA,EACdC,EACA,CACA,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAuB,IAAI,EAE/CC,EAAsBC,EAAQ,CAClC,YAAa,mDACb,cAAe,qDACf,gBAAiB,uDACjB,kBAAmB,yDACnB,mBAAoB,0DACpB,qBAAsB,4DACtB,eAAgB,sDAChB,iBAAkB,wDAClB,oBAAqB,2DACrB,sBAAuB,6DACvB,YAAa,mDACb,cAAe,qDACf,UAAW,iDACX,YAAa,mDACb,0BAA2B,iEAC3B,4BAA6B,kEAAA,CAC9B,EAEKC,EAAeC,EACnB,KAAO,CACL,GAAGH,EACH,GAAGJ,CAAA,GAEL,CAACI,EAAqBJ,CAAoB,CAC5C,EAEMQ,EAAWD,EACf,KAAO,CACL,OAAQ,CAEN,gBAAiB,CACf,QAASD,EAAa,cACtB,MAAOA,EAAa,WAAA,CAExB,EACA,IAAK,CACH,QAAS,CACP,QAASA,EAAa,4BACtB,MAAOA,EAAa,yBAAA,CAExB,EACA,OAAQ,CACN,QAAS,CACP,QAASA,EAAa,sBACtB,MAAOA,EAAa,mBACtB,EACA,gBAAiB,CACf,QAASA,EAAa,cACtB,MAAOA,EAAa,WAAA,CAExB,EACA,OAAQ,CACN,QAAS,CACP,QAASA,EAAa,kBACtB,MAAOA,EAAa,eACtB,EACA,gBAAiB,CACf,QAASA,EAAa,qBACtB,MAAOA,EAAa,kBAAA,CAExB,EACA,KAAM,CAEJ,QAAS,CACP,QAASA,EAAa,YACtB,MAAOA,EAAa,SAAA,CACtB,CACF,GAEF,CAACA,CAAY,CACf,EAEMG,EAA6BC,EAChCC,GAA0C,CACzC,KAAM,CAAE,KAAAC,EAAM,OAAAC,EAAQ,QAAAC,EAAS,KAAAC,CAAS,EAAAJ,EAC/BT,EAAA,CACP,KAAAU,EACA,YAAaJ,EAASK,CAAM,EAAEC,CAAO,EAAEF,CAAI,EAC3C,IAAKG,GAAA,YAAAA,EAAO,EAAC,CACd,EAEK,MAAAC,EAAQ,WAAW,IAAM,CAC7Bd,EAAS,IAAI,GACZ,GAAI,EAEA,MAAA,IAAM,aAAac,CAAK,CACjC,EACA,CAACR,CAAQ,CACX,EAEO,MAAA,CAAE,MAAAP,EAAO,SAAAC,EAAU,2BAAAO,CAA2B,CACvD,CC5HK,MAACQ,EAAWC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAO,EAAkBC,EAAM,cAAc,OAAQ,CAAE,EAAG,QAAS,EAAG,KAAM,MAAO,QAAS,OAAQ,KAAM,GAAI,KAAM,OAAQ,eAAgB,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,OAAQ,eAAgB,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,OAAQ,eAAgB,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,GAAI,QAAS,GAAI,MAAO,GAAI,QAAS,GAAI,MAAO,OAAQ,eAAgB,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,SAAU,CAAE,GAAI,QAAS,GAAI,QAAS,EAAG,QAAU,KAAM,cAAc,CAAE,EAAmBA,EAAM,cAAc,SAAU,CAAE,GAAI,QAAS,GAAI,QAAS,EAAG,QAAU,KAAM,cAAgB,CAAA,EAAmBA,EAAM,cAAc,SAAU,CAAE,GAAI,QAAS,GAAI,QAAS,EAAG,QAAU,KAAM,cAAc,CAAE,CAAC,EC0B9iCC,EAA+C,CAAC,CAC3D,UAAAC,EACA,YAAAC,EACA,GAAGJ,CACL,IAEIK,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,aAAcH,CAAS,CAAC,EAC5C,cAAY,aACX,GAAGH,EAEJ,SAAA,CAAAO,EAACC,GAAK,OAAQC,EAAM,KAAM,KAAM,OAAQ,IAAK,EAC5CL,GAAgBG,EAAA,KAAA,CAAI,SAAYH,CAAA,CAAA,CAAA,CAAA,CACnC","x_google_ignoreList":[1]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{events as _}from"@dropins/tools/event-bus.js";import{FetchGraphQL as l}from"@dropins/tools/fetch-graphql.js";const p=t=>{const e=t.map(o=>o.message).join(" ");throw Error(e)},{setEndpoint:R,setFetchGraphQlHeader:
|
|
3
|
+
import{events as _}from"@dropins/tools/event-bus.js";import{FetchGraphQL as l}from"@dropins/tools/fetch-graphql.js";const p=t=>{const e=t.map(o=>o.message).join(" ");throw Error(e)},{setEndpoint:R,setFetchGraphQlHeader:q,removeFetchGraphQlHeader:L,setFetchGraphQlHeaders:S,fetchGraphQl:c,getConfig:E}=new l().getMethods(),d=`
|
|
4
4
|
fragment REQUISITION_LIST_FRAGMENT on RequisitionList {
|
|
5
5
|
uid
|
|
6
6
|
name
|
|
@@ -8,7 +8,7 @@ fragment REQUISITION_LIST_FRAGMENT on RequisitionList {
|
|
|
8
8
|
items_count
|
|
9
9
|
updated_at
|
|
10
10
|
}
|
|
11
|
-
`;function I(t){var e,o;return t?{uid:t.uid,name:t.name,description:t.description,updated_at:t.updated_at,items_count:t.items_count,items:m((e=t.items)==null?void 0:e.items),page_info:(o=t.items)==null?void 0:o.page_info}:null}function m(t){return t!=null&&t.length?t.map(e=>{var n,
|
|
11
|
+
`;function I(t){var e,o;return t?{uid:t.uid,name:t.name,description:t.description,updated_at:t.updated_at,items_count:t.items_count,items:m((e=t.items)==null?void 0:e.items),page_info:(o=t.items)==null?void 0:o.page_info}:null}function m(t){return t!=null&&t.length?t.map(e=>{var n,u;const o={uid:e.uid,sku:(n=e.product)==null?void 0:n.sku,quantity:e.quantity,customizable_options:e.customizable_options?e.customizable_options.map(i=>({uid:i.customizable_option_uid,is_required:i.is_required,label:i.label,sort_order:i.sort_order,type:i.type,values:i.values.map(r=>({uid:r.customizable_option_value_uid,label:r.label,price:r.price,value:r.value}))})):[],bundle_options:e.bundle_options||[],configurable_options:e.configurable_options?e.configurable_options.map(i=>({option_uid:i.configurable_product_option_uid,option_label:i.option_label,value_uid:i.configurable_product_option_value_uid,value_label:i.value_label})):[],samples:e.samples?e.samples.map(i=>({url:i.sample_url,sort_order:i.sort_order,title:i.title})):[],gift_card_options:e.gift_card_options||{}};return(u=e.configured_product)!=null&&u.name?{...o,configured_product:e.configured_product}:o}):[]}const g=`
|
|
12
12
|
fragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {
|
|
13
13
|
items {
|
|
14
14
|
uid
|
|
@@ -55,6 +55,26 @@ fragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {
|
|
|
55
55
|
title
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
... on BundleRequisitionListItem {
|
|
59
|
+
bundle_options {
|
|
60
|
+
uid
|
|
61
|
+
type
|
|
62
|
+
label
|
|
63
|
+
values {
|
|
64
|
+
uid
|
|
65
|
+
label
|
|
66
|
+
quantity
|
|
67
|
+
priceV2 {
|
|
68
|
+
value
|
|
69
|
+
currency
|
|
70
|
+
}
|
|
71
|
+
original_price {
|
|
72
|
+
value
|
|
73
|
+
currency
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
58
78
|
... on GiftCardRequisitionListItem {
|
|
59
79
|
gift_card_options {
|
|
60
80
|
amount {
|
|
@@ -79,7 +99,7 @@ fragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {
|
|
|
79
99
|
total_pages
|
|
80
100
|
}
|
|
81
101
|
}
|
|
82
|
-
`,
|
|
102
|
+
`,b=`
|
|
83
103
|
mutation UPDATE_REQUISITION_LIST_MUTATION(
|
|
84
104
|
$requisitionListUid: ID!,
|
|
85
105
|
$name: String!,
|
|
@@ -104,5 +124,5 @@ fragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {
|
|
|
104
124
|
}
|
|
105
125
|
${d}
|
|
106
126
|
${g}
|
|
107
|
-
`,
|
|
127
|
+
`,v=async(t,e,o,n,u)=>c(b,{variables:{requisitionListUid:t,name:e,description:o,pageSize:n,currentPage:u}}).then(({errors:i,data:r})=>{var a;if(i)return p(i);if(!((a=r==null?void 0:r.updateRequisitionList)!=null&&a.requisition_list))return null;const s=I(r.updateRequisitionList.requisition_list);return _.emit("requisitionList/data",s),s});export{d as R,q as a,S as b,g as c,c as f,E as g,p as h,L as r,R as s,I as t,v as u};
|
|
108
128
|
//# sourceMappingURL=updateRequisitionList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/lib/fetch-error.ts","/@dropins/storefront-requisition-list/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListFragment.graphql.ts","/@dropins/storefront-requisition-list/src/data/transforms/transform-requisition-list.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListItemsFragment.graphql.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/graphql/updateRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/updateRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (errors: Array<{ message: string }>) => {\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_FRAGMENT = `\nfragment REQUISITION_LIST_FRAGMENT on RequisitionList {\n uid\n name\n description\n items_count\n updated_at\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { RequisitionList } from '../models/requisitionList';\nimport {\n Item,\n ConfiguredProduct,\n Link,\n Sample,\n BundleOption,\n ConfigurableOption,\n CustomizableOption,\n GiftCardOption,\n} from '@/requisitionList/data/models/item';\n\n// Interface for raw API response data for a requisition list\nexport interface RawRequisitionListData {\n name: string;\n description: string;\n uid: string;\n updated_at: string;\n items_count: number;\n items: {\n items: RawItemData[];\n page_info: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n };\n}\n\nexport function transformRequisitionList(\n data: RawRequisitionListData\n): RequisitionList | null {\n if (!data) {\n return null;\n }\n\n return {\n uid: data.uid,\n name: data.name,\n description: data.description,\n updated_at: data.updated_at,\n items_count: data.items_count,\n items: transformItems(data.items?.items),\n page_info: data.items?.page_info,\n };\n}\n\n// Interface for raw item data\ninterface RawItemData {\n uid: string;\n product: {\n sku: string;\n };\n quantity: number;\n customizable_options?: CustomizableOption[];\n bundle_options?: BundleOption[];\n configurable_options?: ConfigurableOption[];\n configured_product?: ConfiguredProduct;\n links?: Link[];\n samples?: Sample[];\n gift_card_options?: GiftCardOption;\n}\n\nfunction transformItems(items: RawItemData[]): Item[] {\n if (!items?.length) return [];\n\n return items.map((item: RawItemData) => {\n const transformedItem = {\n uid: item.uid,\n sku: item.product?.sku,\n quantity: item.quantity,\n customizable_options: item.customizable_options\n ? item.customizable_options.map((option) => ({\n uid: option.customizable_option_uid,\n is_required: option.is_required,\n label: option.label,\n sort_order: option.sort_order,\n type: option.type,\n values: option.values.map((value) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n price: value.price,\n value: value.value,\n })),\n }))\n : [],\n bundle_options: item.bundle_options || [],\n configurable_options: item.configurable_options\n ? item.configurable_options.map((option) => ({\n option_uid: option.configurable_product_option_uid,\n option_label: option.option_label,\n value_uid: option.configurable_product_option_value_uid,\n value_label: option.value_label,\n }))\n : [],\n samples: item.samples\n ? item.samples.map((sample) => ({\n url: sample.sample_url,\n sort_order: sample.sort_order,\n title: sample.title,\n }))\n : [],\n gift_card_options: item.gift_card_options || {},\n };\n\n if (item.configured_product?.name) {\n return {\n ...transformedItem,\n configured_product: item.configured_product,\n };\n }\n return transformedItem;\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_ITEMS_FRAGMENT = `\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const UPDATE_REQUISITION_LIST_MUTATION = `\n mutation UPDATE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n $name: String!,\n $description: String,\n $pageSize: Int,\n $currentPage: Int\n ) {\n updateRequisitionList(\n requisitionListUid: $requisitionListUid\n input: {\n name: $name\n description: $description\n }\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items(pageSize: $pageSize, currentPage: $currentPage) {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_FRAGMENT}\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { UPDATE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/updateRequisitionList/graphql/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const updateRequisitionList = async (\n requisitionListUid: string,\n name: string,\n description?: string,\n pageSize?: number,\n currentPage?: number\n): Promise<RequisitionList | null> => {\n return fetchGraphQl(UPDATE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n name,\n description,\n pageSize,\n currentPage,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.updateRequisitionList?.requisition_list) {\n return null;\n }\n\n const payload = transformRequisitionList(\n data.updateRequisitionList.requisition_list\n );\n\n events.emit('requisitionList/data', payload);\n\n return payload;\n });\n};\n"],"names":["handleFetchError","errors","errorMessage","e","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","REQUISITION_LIST_FRAGMENT","transformRequisitionList","data","transformItems","_a","_b","items","item","transformedItem","option","value","sample","REQUISITION_LIST_ITEMS_FRAGMENT","UPDATE_REQUISITION_LIST_MUTATION","updateRequisitionList","requisitionListUid","name","description","pageSize","currentPage","payload","events"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/lib/fetch-error.ts","/@dropins/storefront-requisition-list/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListFragment.graphql.ts","/@dropins/storefront-requisition-list/src/data/transforms/transform-requisition-list.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListItemsFragment.graphql.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/graphql/updateRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/updateRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (errors: Array<{ message: string }>) => {\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_FRAGMENT = `\nfragment REQUISITION_LIST_FRAGMENT on RequisitionList {\n uid\n name\n description\n items_count\n updated_at\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { RequisitionList } from '../models/requisitionList';\nimport {\n Item,\n ConfiguredProduct,\n Link,\n Sample,\n BundleOption,\n ConfigurableOption,\n CustomizableOption,\n GiftCardOption,\n} from '@/requisitionList/data/models/item';\n\n// Interface for raw API response data for a requisition list\nexport interface RawRequisitionListData {\n name: string;\n description: string;\n uid: string;\n updated_at: string;\n items_count: number;\n items: {\n items: RawItemData[];\n page_info: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n };\n}\n\nexport function transformRequisitionList(\n data: RawRequisitionListData\n): RequisitionList | null {\n if (!data) {\n return null;\n }\n\n return {\n uid: data.uid,\n name: data.name,\n description: data.description,\n updated_at: data.updated_at,\n items_count: data.items_count,\n items: transformItems(data.items?.items),\n page_info: data.items?.page_info,\n };\n}\n\n// Interface for raw item data\ninterface RawItemData {\n uid: string;\n product: {\n sku: string;\n };\n quantity: number;\n customizable_options?: CustomizableOption[];\n bundle_options?: BundleOption[];\n configurable_options?: ConfigurableOption[];\n configured_product?: ConfiguredProduct;\n links?: Link[];\n samples?: Sample[];\n gift_card_options?: GiftCardOption;\n}\n\nfunction transformItems(items: RawItemData[]): Item[] {\n if (!items?.length) return [];\n\n return items.map((item: RawItemData) => {\n const transformedItem = {\n uid: item.uid,\n sku: item.product?.sku,\n quantity: item.quantity,\n customizable_options: item.customizable_options\n ? item.customizable_options.map((option) => ({\n uid: option.customizable_option_uid,\n is_required: option.is_required,\n label: option.label,\n sort_order: option.sort_order,\n type: option.type,\n values: option.values.map((value) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n price: value.price,\n value: value.value,\n })),\n }))\n : [],\n bundle_options: item.bundle_options || [],\n configurable_options: item.configurable_options\n ? item.configurable_options.map((option) => ({\n option_uid: option.configurable_product_option_uid,\n option_label: option.option_label,\n value_uid: option.configurable_product_option_value_uid,\n value_label: option.value_label,\n }))\n : [],\n samples: item.samples\n ? item.samples.map((sample) => ({\n url: sample.sample_url,\n sort_order: sample.sort_order,\n title: sample.title,\n }))\n : [],\n gift_card_options: item.gift_card_options || {},\n };\n\n if (item.configured_product?.name) {\n return {\n ...transformedItem,\n configured_product: item.configured_product,\n };\n }\n return transformedItem;\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_ITEMS_FRAGMENT = `\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on BundleRequisitionListItem {\n bundle_options {\n uid\n type\n label\n values {\n uid\n label\n quantity\n priceV2 {\n value\n currency\n }\n original_price {\n value\n currency\n }\n }\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const UPDATE_REQUISITION_LIST_MUTATION = `\n mutation UPDATE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n $name: String!,\n $description: String,\n $pageSize: Int,\n $currentPage: Int\n ) {\n updateRequisitionList(\n requisitionListUid: $requisitionListUid\n input: {\n name: $name\n description: $description\n }\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items(pageSize: $pageSize, currentPage: $currentPage) {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_FRAGMENT}\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { UPDATE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/updateRequisitionList/graphql/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const updateRequisitionList = async (\n requisitionListUid: string,\n name: string,\n description?: string,\n pageSize?: number,\n currentPage?: number\n): Promise<RequisitionList | null> => {\n return fetchGraphQl(UPDATE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n name,\n description,\n pageSize,\n currentPage,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.updateRequisitionList?.requisition_list) {\n return null;\n }\n\n const payload = transformRequisitionList(\n data.updateRequisitionList.requisition_list\n );\n\n events.emit('requisitionList/data', payload);\n\n return payload;\n });\n};\n"],"names":["handleFetchError","errors","errorMessage","e","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","REQUISITION_LIST_FRAGMENT","transformRequisitionList","data","transformItems","_a","_b","items","item","transformedItem","option","value","sample","REQUISITION_LIST_ITEMS_FRAGMENT","UPDATE_REQUISITION_LIST_MUTATION","updateRequisitionList","requisitionListUid","name","description","pageSize","currentPage","payload","events"],"mappings":"oHAkBa,MAAAA,EAAoBC,GAAuC,CAChE,MAAAC,EAAeD,EAAO,IAAKE,GAAWA,EAAE,OAAO,EAAE,KAAK,GAAG,EAE/D,MAAM,MAAMD,CAAY,CAC1B,ECHa,CACX,YAAAE,EACA,sBAAAC,EACA,yBAAAC,EACA,uBAAAC,EACA,aAAAC,EACA,UAAAC,CACF,EAAI,IAAIC,EAAa,EAAE,WAAW,ECTrBC,EAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC4BlC,SAASC,EACdC,EACwB,SACxB,OAAKA,EAIE,CACL,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,YAAaA,EAAK,YAClB,WAAYA,EAAK,WACjB,YAAaA,EAAK,YAClB,MAAOC,GAAeC,EAAAF,EAAK,QAAL,YAAAE,EAAY,KAAK,EACvC,WAAWC,EAAAH,EAAK,QAAL,YAAAG,EAAY,SACzB,EAXS,IAYX,CAkBA,SAASF,EAAeG,EAA8B,CACpD,OAAKA,GAAA,MAAAA,EAAO,OAELA,EAAM,IAAKC,GAAsB,SACtC,MAAMC,EAAkB,CACtB,IAAKD,EAAK,IACV,KAAKH,EAAAG,EAAK,UAAL,YAAAH,EAAc,IACnB,SAAUG,EAAK,SACf,qBAAsBA,EAAK,qBACvBA,EAAK,qBAAqB,IAAKE,IAAY,CACzC,IAAKA,EAAO,wBACZ,YAAaA,EAAO,YACpB,MAAOA,EAAO,MACd,WAAYA,EAAO,WACnB,KAAMA,EAAO,KACb,OAAQA,EAAO,OAAO,IAAKC,IAAW,CACpC,IAAKA,EAAM,8BACX,MAAOA,EAAM,MACb,MAAOA,EAAM,MACb,MAAOA,EAAM,KAAA,EACb,CACJ,EAAE,EACF,CAAC,EACL,eAAgBH,EAAK,gBAAkB,CAAC,EACxC,qBAAsBA,EAAK,qBACvBA,EAAK,qBAAqB,IAAKE,IAAY,CACzC,WAAYA,EAAO,gCACnB,aAAcA,EAAO,aACrB,UAAWA,EAAO,sCAClB,YAAaA,EAAO,WACtB,EAAE,EACF,CAAC,EACL,QAASF,EAAK,QACVA,EAAK,QAAQ,IAAKI,IAAY,CAC5B,IAAKA,EAAO,WACZ,WAAYA,EAAO,WACnB,MAAOA,EAAO,KAChB,EAAE,EACF,CAAC,EACL,kBAAmBJ,EAAK,mBAAqB,CAAA,CAC/C,EAEI,OAAAF,EAAAE,EAAK,qBAAL,MAAAF,EAAyB,KACpB,CACL,GAAGG,EACH,mBAAoBD,EAAK,kBAC3B,EAEKC,CAAA,CACR,EAhD0B,CAAC,CAiD9B,CChHO,MAAMI,EAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECElCC,EAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuB9Cb,CAAyB;AAAA,EACzBY,CAA+B;AAAA,ECnBpBE,EAAwB,MACnCC,EACAC,EACAC,EACAC,EACAC,IAEOtB,EAAagB,EAAkC,CACpD,UAAW,CACT,mBAAAE,EACA,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,YAAAC,CAAA,CAEH,CAAA,EAAE,KAAK,CAAC,CAAE,OAAA7B,EAAQ,KAAAY,KAAW,OACxB,GAAAZ,EAAe,OAAAD,EAAiBC,CAAM,EAEtC,GAAA,GAACc,EAAAF,GAAA,YAAAA,EAAM,wBAAN,MAAAE,EAA6B,kBACzB,OAAA,KAGT,MAAMgB,EAAUnB,EACdC,EAAK,sBAAsB,gBAC7B,EAEO,OAAAmB,EAAA,KAAK,uBAAwBD,CAAO,EAEpCA,CAAA,CACR"}
|
|
@@ -6,7 +6,6 @@ export interface RequisitionListGridWrapperProps extends HTMLAttributes<HTMLDivE
|
|
|
6
6
|
isLoading?: boolean;
|
|
7
7
|
header?: VNode;
|
|
8
8
|
rows: Array<Record<string, VNode | string | number | undefined>>;
|
|
9
|
-
expandedRows: Set<number>;
|
|
10
9
|
skeletonRowCount: number;
|
|
11
10
|
pageInfo?: {
|
|
12
11
|
total_pages: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{
|
|
3
|
+
import{jsxs as w,jsx as n,Fragment as D}from"@dropins/tools/preact-jsx-runtime.js";import{useState as M,useCallback as m,useMemo as W,useEffect as S}from"@dropins/tools/preact-compat.js";import{Button as b,Header as G,InLineAlert as U,Table as V,Pagination as B,Card as j}from"@dropins/tools/components.js";import{Slot as Z,classes as v,VComponent as $}from"@dropins/tools/lib.js";import{D as N,R as J}from"../chunks/RequisitionListForm.js";import"@dropins/tools/preact-hooks.js";import{R as K}from"../chunks/RequisitionListForm2.js";import"../chunks/state.js";import{events as g}from"@dropins/tools/event-bus.js";import{u as Q,E as X}from"../chunks/RequisitionListView.js";import"@dropins/tools/preact.js";import{R as Y}from"../chunks/RequisitionListActions.js";import{R as z}from"../chunks/RequisitionListModal.js";import{P as I}from"../chunks/PageSizePicker.js";import{useText as x}from"@dropins/tools/i18n.js";import{u as ii}from"../chunks/updateRequisitionList.js";import{d as ei}from"../chunks/deleteRequisitionList.js";import{g as E}from"../chunks/getRequisitionLists.js";import"@dropins/tools/fetch-graphql.js";function ti(c,l,t){const d=x({actionRename:"RequisitionList.RequisitionListView.actionRename",actionDeleteList:"RequisitionList.RequisitionListView.actionDeleteList"}),[e,o]=M(null),[h,L]=M(!1),[C,R]=M(!1),q=m(()=>{t&&t(),L(!0)},[t]),f=m(()=>L(!1),[]),u=W(()=>{if(c)return{handleOpenRenameModal:i=>{L(s=>s&&!1),c.handleOpenRenameModal(i)},handleOpenDeleteModal:i=>{L(s=>s&&!1),c.handleOpenDeleteModal(i)}}},[c]),a=m(async(i,s)=>{var r,_,P;R(!0);try{const p=await E(i,s),T=((r=p==null?void 0:p.page_info)==null?void 0:r.current_page)??1,F=((_=p==null?void 0:p.page_info)==null?void 0:_.total_pages)??0;if(!((((P=p==null?void 0:p.items)==null?void 0:P.length)??0)>0)&&T>1&&F>=T-1){const H=T-1,k=await E(H,s);o(k)}else o(p)}finally{R(!1)}},[]);S(()=>{const i=g.on("requisitionLists/data",s=>{s&&s.items&&o(s)},{eager:!0});return()=>{i==null||i.off()}},[]),S(()=>{e||a(1,N)},[e,a]);const O=m(i=>{var _,P;const s=i??((_=e==null?void 0:e.page_info)==null?void 0:_.current_page)??1,r=((P=e==null?void 0:e.page_info)==null?void 0:P.page_size)??N;return a(s,r)},[a,e]),A=m(async i=>{await a(1,i)},[a]);return{rows:W(()=>((e==null?void 0:e.items)??[]).map(i=>({name:w("div",{className:"requisition-list-grid-wrapper__name",children:[n("div",{className:"requisition-list-grid-wrapper__name__title",children:n("a",{href:"#",onClick:s=>{if(s.preventDefault(),l){const r=l(i.uid);typeof r=="string"&&(window.location.href=r)}},children:i.name})}),i.description&&n("div",{className:"requisition-list-grid-wrapper__name__description",children:i.description})]}),items_count:i.items_count,last_updated:new Date(i.updated_at).toLocaleString(),actions:w("div",{className:"requisition-list-grid-wrapper__actions",children:[n(b,{variant:"tertiary",type:"button","data-testid":"rename-button",onClick:()=>u==null?void 0:u.handleOpenRenameModal(i),children:d.actionRename}),n(b,{variant:"tertiary",type:"button","data-testid":"delete-button",onClick:()=>u==null?void 0:u.handleOpenDeleteModal(i),children:d.actionDeleteList})]})})),[e==null?void 0:e.items,d.actionRename,d.actionDeleteList,u,l]),isLoading:C||!e,pageInfo:e==null?void 0:e.page_info,handlePageChange:O,handlePageSizeChange:A,isAdding:h,handleAddNew:q,handleCancelCreate:f}}const Oi=({routeRequisitionListDetails:c,slots:l})=>{const[t,d]=M({type:null,isOpen:!1,isLoading:!1,requisitionList:null}),e=m(()=>{d({type:null,isOpen:!1,isLoading:!1,requisitionList:null})},[]),o=m(r=>{d({type:"rename",isOpen:!0,isLoading:!1,requisitionList:r})},[]),h=m(r=>{d({type:"delete",isOpen:!0,isLoading:!1,requisitionList:r})},[]),{rows:L,isLoading:C,pageInfo:R,handlePageChange:q,handlePageSizeChange:f,isAdding:u,handleAddNew:a,handleCancelCreate:O}=ti({handleOpenRenameModal:o,handleOpenDeleteModal:h},c,e),A=m(async r=>{if(t.requisitionList)try{await ii(t.requisitionList.uid,r.name,r.description),g.emit("requisitionList/alert",{action:"update",type:"success",context:"requisitionList"}),await q(),e()}catch{g.emit("requisitionList/alert",{action:"update",type:"error",context:"requisitionList"})}},[t.requisitionList,q,e]),y=async()=>{t.requisitionList&&(d({...t,isLoading:!0}),await ei(t.requisitionList.uid).then(async()=>{g.emit("requisitionList/alert",{type:"success",action:"delete",context:"requisitionList"})}).catch(()=>{g.emit("requisitionList/alert",{type:"error",action:"delete",context:"requisitionList"})}).finally(async()=>{await q(),e()}))},i=x({containerTitle:"RequisitionList.containerTitle",updateTitle:"RequisitionList.RequisitionListForm.updateTitle",deleteRequisitionListTitle:"RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle",deleteRequisitionListMessage:"RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage",cancelAction:"RequisitionList.RequisitionListWrapper.cancelAction",confirmAction:"RequisitionList.RequisitionListWrapper.confirmAction"}),s=m(()=>l!=null&&l.Header?n(Z,{name:"Header","aria-label":i.containerTitle,title:i.containerTitle,slot:l.Header}):n(G,{"aria-label":i.containerTitle,role:"region",title:i.containerTitle}),[l,i.containerTitle]);return w(D,{children:[n(ni,{header:s(),rows:L,skeletonRowCount:10,isLoading:C,pageInfo:R,handlePageChange:q,handlePageSizeChange:f,defaultPageSize:10,isAdding:u,handleAddNew:a,handleCancelCreate:O}),t.type==="rename"&&t.isOpen&&t.requisitionList&&n(z,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.updateTitle,modalContent:n(J,{mode:"update",defaultValues:{name:t.requisitionList.name,description:t.requisitionList.description||""},onSubmit:A,onCancel:e}),handleModalOnClose:e}),t.type==="delete"&&t.isOpen&&n(z,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.deleteRequisitionListTitle,modalContent:i.deleteRequisitionListMessage,confirmBtnCaption:i.confirmAction,closeBtnCaption:i.cancelAction,handleModalOnClose:e,handleModalOnConfirm:y})]})},ni=({className:c,isLoading:l=!1,header:t,rows:d=[],skeletonRowCount:e=10,pageInfo:o,handlePageChange:h,handlePageSizeChange:L,defaultPageSize:C=10,isAdding:R,handleAddNew:q,handleCancelCreate:f,...u})=>{const a=x({name:"RequisitionList.RequisitionListWrapper.name",itemsCount:"RequisitionList.RequisitionListWrapper.itemsCount",lastUpdated:"RequisitionList.RequisitionListWrapper.lastUpdated",actions:"RequisitionList.RequisitionListWrapper.actions",emptyList:"RequisitionList.RequisitionListWrapper.emptyList"}),O=((o==null?void 0:o.total_pages)??0)>0,A=!l&&d.length===0&&!O,{alert:y,setAlert:i,handleRequisitionListAlert:s}=Q();return S(()=>{g.on("requisitionList/alert",s)},[s]),w("div",{...u,className:v(["requisition-list-grid-wrapper",c]),"data-testid":"requisition-list-grid-wrapper",children:[t&&n("div",{className:v(["requisition-list-grid-wrapper__header",c]),"data-testid":"requisition-list-grid-wrapper-header",children:n($,{node:t})}),y&&n(D,{children:n(U,{heading:y.description,type:y.type,variant:"primary",onDismiss:()=>i(null)})}),A?n(X,{textContent:a.emptyList}):w(D,{children:[n(V,{columns:[{key:"name",label:a.name},{key:"items_count",label:a.itemsCount},{key:"last_updated",label:a.lastUpdated},{key:"actions",label:a.actions}],rowData:d,loading:l,skeletonRowCount:e}),n("div",{className:v(["requisition-list-grid-wrapper__pagination",c]),children:w("div",{className:"requisition-list-grid-wrapper__pagination-controls",children:[n(I,{currentPageSize:(o==null?void 0:o.page_size)||C,onPageSizeChange:L||(()=>Promise.resolve()),disabled:l}),o&&o.total_pages>1&&n(B,{totalPages:o.total_pages,currentPage:o.current_page,onChange:h})]})})]}),n("div",{className:v(["requisition-list-grid-wrapper__add-new",c]),children:R?n(j,{variant:"secondary",children:n(K,{mode:"create",onSuccess:async()=>{await h(),f(),g.emit("requisitionList/alert",{type:"success",action:"create",context:"requisitionList"})},onError:()=>{g.emit("requisitionList/alert",{type:"error",action:"create",context:"requisitionList"})},onCancel:f})}):n(Y,{onAddNew:q})})]})};export{Oi as RequisitionListGrid,Oi as default};
|
|
4
4
|
//# sourceMappingURL=RequisitionListGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequisitionListGrid.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListGrid/RequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/components/RequisitionListGridWrapper/RequisitionListGridWrapper.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo, useState, useCallback, useEffect } from 'preact/compat';\nimport { VNode } from 'preact';\nimport { Button, Card } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport { getRequisitionLists } from '@/requisitionList/api/getRequisitionLists';\nimport { RequisitionLists } from '@/requisitionList/data/models/requisitionLists';\nimport { events } from '@adobe-commerce/event-bus';\nimport { DEFAULT_PAGE_SIZE } from '@/requisitionList/lib/constants';\n\ntype Row = Record<string, VNode | string | number | undefined>;\ntype Callbacks = { handleOpenModal: (rl: RequisitionListModel) => void };\n\nexport function useRequisitionListGrid(\n callbacks?: Callbacks,\n routeRequisitionListDetails?: (uid: string) => string | void\n) {\n const translations = useText({\n actionDelete: 'RequisitionList.RequisitionListItem.actionDelete',\n actionUpdate: 'RequisitionList.RequisitionListItem.actionUpdate',\n });\n\n const [reqLists, setReqLists] = useState<RequisitionLists | null>(null);\n const [reqListUid, setReqListUid] = useState<string | null>(null);\n const [isAdding, setIsAdding] = useState(false);\n const [isFetching, setIsFetching] = useState(false);\n\n const handleClick = useCallback((uid: string) => {\n setReqListUid(uid);\n setIsAdding(false); // Close create form when opening update form\n }, []);\n const handleCancel = useCallback(() => setReqListUid(null), []);\n const handleAddNew = useCallback(() => {\n setIsAdding(true);\n setReqListUid(null); // Close update form when opening create form\n }, []);\n const handleCancelCreate = useCallback(() => setIsAdding(false), []);\n\n const fetchPage = useCallback(async (page: number, pageSize: number) => {\n setIsFetching(true);\n try {\n const data = await getRequisitionLists(page, pageSize);\n const currentPage = data?.page_info?.current_page ?? 1;\n const totalPages = data?.page_info?.total_pages ?? 0;\n const hasRows = (data?.items?.length ?? 0) > 0;\n\n if (!hasRows && currentPage > 1 && totalPages >= currentPage - 1) {\n const prev = currentPage - 1;\n const prevData = await getRequisitionLists(prev, pageSize);\n setReqLists(prevData);\n } else {\n setReqLists(data);\n }\n } finally {\n setIsFetching(false);\n }\n }, []);\n\n useEffect(() => {\n const requisitionListsEvent = events.on(\n 'requisitionLists/data',\n (data: RequisitionLists) => {\n if (data && data.items) {\n setReqLists(data);\n }\n },\n { eager: true }\n );\n return () => {\n requisitionListsEvent?.off();\n };\n }, []);\n\n useEffect(() => {\n if (!reqLists) {\n void fetchPage(1, DEFAULT_PAGE_SIZE);\n }\n }, [reqLists, fetchPage]);\n\n const handlePageChange = useCallback(\n (page?: number) => {\n const currentPage = page ?? reqLists?.page_info?.current_page ?? 1;\n const currentPageSize =\n reqLists?.page_info?.page_size ?? DEFAULT_PAGE_SIZE;\n return fetchPage(currentPage, currentPageSize);\n },\n [fetchPage, reqLists]\n );\n\n const handlePageSizeChange = useCallback(\n async (pageSize: number) => {\n // Reset to page 1 when changing page size\n await fetchPage(1, pageSize);\n },\n [fetchPage]\n );\n\n const rows: Row[] = useMemo(\n () =>\n (reqLists?.items ?? []).map((rl: RequisitionListModel) => {\n const isUpdating = reqListUid === rl.uid;\n return {\n name: (\n <div className=\"requisition-list-grid-wrapper__name\">\n <div className=\"requisition-list-grid-wrapper__name__title\">\n <a\n href=\"#\"\n onClick={(e: Event): void => {\n e.preventDefault();\n if (routeRequisitionListDetails) {\n const result = routeRequisitionListDetails(rl.uid);\n if (typeof result === 'string') {\n window.location.href = result;\n }\n }\n }}\n >\n {rl.name}\n </a>\n </div>\n {rl.description && (\n <div className=\"requisition-list-grid-wrapper__name__description\">\n {rl.description}\n </div>\n )}\n </div>\n ),\n items_count: rl.items_count,\n last_updated: new Date(rl.updated_at).toLocaleString(),\n actions: (\n <div className=\"requisition-list-grid-wrapper__actions\">\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"update-button\"\n onClick={() => handleClick(rl.uid)}\n >\n {translations.actionUpdate}\n </Button>\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"delete-button\"\n onClick={() => callbacks?.handleOpenModal(rl)}\n >\n {translations.actionDelete}\n </Button>\n </div>\n ),\n _rowDetails: isUpdating ? (\n <Card\n variant=\"secondary\"\n className=\"requisition-list-grid-wrapper__form-row\"\n >\n <RequisitionListForm\n mode=\"update\"\n requisitionListUid={rl.uid}\n defaultValues={{ name: rl.name, description: rl.description }}\n onSuccess={async () => {\n await handlePageChange();\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'success',\n context: 'requisitionList',\n });\n setReqListUid(null);\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'requisitionList',\n });\n }}\n onCancel={handleCancel}\n />\n </Card>\n ) : undefined,\n };\n }),\n [\n reqLists?.items,\n reqListUid,\n handleClick,\n handleCancel,\n translations.actionUpdate,\n translations.actionDelete,\n callbacks,\n handlePageChange,\n routeRequisitionListDetails,\n ]\n );\n\n const expandedRows = useMemo(\n () =>\n new Set(\n rows\n .map((row, index) => (row._rowDetails ? index : -1))\n .filter((index) => index >= 0) as number[]\n ),\n [rows]\n );\n\n return {\n rows,\n expandedRows,\n isLoading: isFetching || !reqLists,\n pageInfo: reqLists?.page_info,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useState, useCallback } from 'preact/compat';\nimport { Header } from '@adobe-commerce/elsie/components';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { RequisitionLists as RequisitionListsModel } from '@/requisitionList/data/models/requisitionLists';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n RequisitionListGridWrapper,\n RequisitionListModal,\n} from '@/requisitionList/components';\nimport { useRequisitionListGrid } from '@/requisitionList/hooks';\nimport { deleteRequisitionList } from '@/requisitionList/api/deleteRequisitionList/deleteRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport interface RequisitionListGridProps\n extends HTMLAttributes<HTMLDivElement> {\n routeRequisitionListDetails?: (uid: string) => string | void;\n slots?: {\n Header?: SlotProps;\n };\n}\n\nexport const RequisitionListGrid: Container<RequisitionListGridProps> = ({\n routeRequisitionListDetails,\n slots,\n}: RequisitionListGridProps) => {\n const [modal, setModal] = useState<{\n isOpen: boolean;\n isLoading: boolean;\n rl: RequisitionListsModel | null;\n }>({\n isOpen: false,\n isLoading: false,\n rl: null,\n });\n\n const handleOpenModal = (rl: RequisitionListsModel) =>\n setModal({ isOpen: true, isLoading: false, rl });\n const handleCloseModal = () =>\n setModal({ isOpen: false, isLoading: false, rl: null });\n\n const handleConfirmModal = async () => {\n if (!modal.rl) return;\n setModal((m) => ({ ...m, isLoading: true }));\n await deleteRequisitionList(modal.rl.uid)\n .then(async () => {\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .catch(() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .finally(async () => {\n await handlePageChange();\n handleCloseModal();\n });\n };\n\n const {\n rows,\n expandedRows,\n isLoading,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n } = useRequisitionListGrid({ handleOpenModal }, routeRequisitionListDetails);\n\n const translations = useText({\n containerTitle: `RequisitionList.containerTitle`,\n deleteRequisitionListTitle:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle',\n deleteRequisitionListMessage:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage',\n cancelAction: 'RequisitionList.RequisitionListWrapper.cancelAction',\n confirmAction: 'RequisitionList.RequisitionListWrapper.confirmAction',\n });\n\n const getHeader = useCallback(() => {\n if (slots?.Header) {\n return (\n <Slot\n name=\"Header\"\n aria-label={translations.containerTitle}\n title={translations.containerTitle}\n slot={slots.Header}\n />\n );\n }\n return (\n <Header\n aria-label={translations.containerTitle}\n role=\"region\"\n title={translations.containerTitle}\n />\n );\n }, [slots, translations.containerTitle]);\n\n return (\n <>\n <RequisitionListGridWrapper\n header={getHeader()}\n rows={rows}\n expandedRows={expandedRows}\n skeletonRowCount={10}\n isLoading={isLoading}\n pageInfo={pageInfo}\n handlePageChange={handlePageChange}\n handlePageSizeChange={handlePageSizeChange}\n defaultPageSize={10}\n isAdding={isAdding}\n handleAddNew={handleAddNew}\n handleCancelCreate={handleCancelCreate}\n />\n {modal.isOpen && (\n <RequisitionListModal\n isOpen\n isLoading={modal.isLoading}\n title={translations.deleteRequisitionListTitle}\n modalContent={translations.deleteRequisitionListMessage}\n confirmBtnCaption={translations.confirmAction}\n closeBtnCaption={translations.cancelAction}\n handleModalOnClose={handleCloseModal}\n handleModalOnConfirm={handleConfirmModal}\n />\n )}\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListActions,\n EmptyList,\n PageSizePicker,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport {\n Pagination,\n Card,\n Table,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/components/RequisitionListGridWrapper/RequisitionListGridWrapper.css';\nimport { useRequisitionListAlert } from '@/requisitionList/hooks';\n\nexport interface RequisitionListGridWrapperProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n isLoading?: boolean;\n header?: VNode;\n rows: Array<Record<string, VNode | string | number | undefined>>;\n expandedRows: Set<number>;\n skeletonRowCount: number;\n pageInfo?: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n handlePageChange: (page?: number) => Promise<void>;\n handlePageSizeChange?: (pageSize: number) => Promise<void>;\n defaultPageSize?: number;\n isAdding: boolean;\n handleAddNew: () => void;\n handleCancelCreate: () => void;\n}\n\nexport const RequisitionListGridWrapper: FunctionComponent<\n RequisitionListGridWrapperProps\n> = ({\n className,\n isLoading = false,\n header,\n rows = [],\n expandedRows,\n skeletonRowCount = 10,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n defaultPageSize = 10,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n ...props\n}) => {\n const translations = useText({\n name: `RequisitionList.RequisitionListWrapper.name`,\n itemsCount: `RequisitionList.RequisitionListWrapper.itemsCount`,\n lastUpdated: `RequisitionList.RequisitionListWrapper.lastUpdated`,\n actions: `RequisitionList.RequisitionListWrapper.actions`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n });\n\n const hasAnyItems = (pageInfo?.total_pages ?? 0) > 0;\n const showEmptyList = !isLoading && rows.length === 0 && !hasAnyItems;\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n useEffect(() => {\n events.on('requisitionList/alert', handleRequisitionListAlert);\n }, [handleRequisitionListAlert]);\n\n return (\n <div\n {...props}\n className={classes(['requisition-list-grid-wrapper', className])}\n data-testid=\"requisition-list-grid-wrapper\"\n >\n {/* Requisition List Header */}\n {header && (\n <div\n className={classes([\n 'requisition-list-grid-wrapper__header',\n className,\n ])}\n data-testid=\"requisition-list-grid-wrapper-header\"\n >\n <VComponent node={header} />\n </div>\n )}\n {/* Requisition List alerts go here */}\n {alert && (\n <>\n <InLineAlert\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n onDismiss={() => setAlert(null)}\n />\n </>\n )}\n\n {showEmptyList ? (\n <EmptyList textContent={translations.emptyList} />\n ) : (\n <>\n {/* Requisition Lists Table */}\n <Table\n columns={[\n { key: 'name', label: translations.name },\n { key: 'items_count', label: translations.itemsCount },\n { key: 'last_updated', label: translations.lastUpdated },\n { key: 'actions', label: translations.actions },\n ]}\n rowData={rows}\n expandedRows={expandedRows}\n loading={isLoading}\n skeletonRowCount={skeletonRowCount}\n />\n <div\n className={classes([\n 'requisition-list-grid-wrapper__pagination',\n className,\n ])}\n >\n <div className=\"requisition-list-grid-wrapper__pagination-controls\">\n <PageSizePicker\n currentPageSize={pageInfo?.page_size || defaultPageSize}\n onPageSizeChange={\n handlePageSizeChange || (() => Promise.resolve())\n }\n disabled={isLoading}\n />\n {pageInfo && pageInfo.total_pages > 1 && (\n <Pagination\n totalPages={pageInfo.total_pages}\n currentPage={pageInfo.current_page}\n onChange={handlePageChange}\n />\n )}\n </div>\n </div>\n </>\n )}\n\n {/* Requisition Lists Form */}\n <div\n className={classes([\n 'requisition-list-grid-wrapper__add-new',\n className,\n ])}\n >\n {isAdding ? (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async () => {\n await handlePageChange();\n handleCancelCreate();\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onCancel={handleCancelCreate}\n />\n </Card>\n ) : (\n <RequisitionListActions onAddNew={handleAddNew} />\n )}\n </div>\n </div>\n );\n};\n"],"names":["useRequisitionListGrid","callbacks","routeRequisitionListDetails","translations","useText","reqLists","setReqLists","useState","reqListUid","setReqListUid","isAdding","setIsAdding","isFetching","setIsFetching","handleClick","useCallback","uid","handleCancel","handleAddNew","handleCancelCreate","fetchPage","page","pageSize","data","getRequisitionLists","currentPage","_a","totalPages","_b","_c","prev","prevData","useEffect","requisitionListsEvent","events","DEFAULT_PAGE_SIZE","handlePageChange","currentPageSize","handlePageSizeChange","rows","useMemo","rl","isUpdating","jsxs","jsx","e","result","Button","Card","RequisitionListForm","expandedRows","row","index","RequisitionListGrid","slots","modal","setModal","handleOpenModal","handleCloseModal","handleConfirmModal","m","deleteRequisitionList","isLoading","pageInfo","getHeader","Slot","Header","Fragment","RequisitionListGridWrapper","RequisitionListModal","className","header","skeletonRowCount","defaultPageSize","props","hasAnyItems","showEmptyList","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","classes","VComponent","InLineAlert","EmptyList","Table","PageSizePicker","Pagination","RequisitionListActions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RequisitionListGrid.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListGrid/RequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/components/RequisitionListGridWrapper/RequisitionListGridWrapper.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo, useState, useCallback, useEffect } from 'preact/compat';\nimport { VNode } from 'preact';\nimport { Button } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { getRequisitionLists } from '@/requisitionList/api/getRequisitionLists';\nimport { RequisitionLists } from '@/requisitionList/data/models/requisitionLists';\nimport { events } from '@adobe-commerce/event-bus';\nimport { DEFAULT_PAGE_SIZE } from '@/requisitionList/lib/constants';\n\ntype Row = Record<string, VNode | string | number | undefined>;\ntype Callbacks = {\n handleOpenRenameModal: (rl: RequisitionListModel) => void;\n handleOpenDeleteModal: (rl: RequisitionListModel) => void;\n};\n\nexport function useRequisitionListGrid(\n callbacks?: Callbacks,\n routeRequisitionListDetails?: (uid: string) => string | void,\n closeModal?: () => void\n) {\n const translations = useText({\n actionRename: 'RequisitionList.RequisitionListView.actionRename',\n actionDeleteList: 'RequisitionList.RequisitionListView.actionDeleteList',\n });\n\n const [reqLists, setReqLists] = useState<RequisitionLists | null>(null);\n const [isAdding, setIsAdding] = useState(false);\n const [isFetching, setIsFetching] = useState(false);\n\n const handleAddNew = useCallback(() => {\n // Close any open modal before opening create form\n if (closeModal) {\n closeModal();\n }\n setIsAdding(true);\n }, [closeModal]);\n\n const handleCancelCreate = useCallback(() => setIsAdding(false), []);\n\n // Wrap callbacks to close create form when opening modals\n const wrappedCallbacks = useMemo(() => {\n if (!callbacks) return undefined;\n\n return {\n handleOpenRenameModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenRenameModal(rl);\n },\n handleOpenDeleteModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenDeleteModal(rl);\n },\n };\n }, [callbacks]);\n\n const fetchPage = useCallback(async (page: number, pageSize: number) => {\n setIsFetching(true);\n try {\n const data = await getRequisitionLists(page, pageSize);\n const currentPage = data?.page_info?.current_page ?? 1;\n const totalPages = data?.page_info?.total_pages ?? 0;\n const hasRows = (data?.items?.length ?? 0) > 0;\n\n if (!hasRows && currentPage > 1 && totalPages >= currentPage - 1) {\n const prev = currentPage - 1;\n const prevData = await getRequisitionLists(prev, pageSize);\n setReqLists(prevData);\n } else {\n setReqLists(data);\n }\n } finally {\n setIsFetching(false);\n }\n }, []);\n\n useEffect(() => {\n const requisitionListsEvent = events.on(\n 'requisitionLists/data',\n (data: RequisitionLists) => {\n if (data && data.items) {\n setReqLists(data);\n }\n },\n { eager: true }\n );\n return () => {\n requisitionListsEvent?.off();\n };\n }, []);\n\n useEffect(() => {\n if (!reqLists) {\n void fetchPage(1, DEFAULT_PAGE_SIZE);\n }\n }, [reqLists, fetchPage]);\n\n const handlePageChange = useCallback(\n (page?: number) => {\n const currentPage = page ?? reqLists?.page_info?.current_page ?? 1;\n const currentPageSize =\n reqLists?.page_info?.page_size ?? DEFAULT_PAGE_SIZE;\n return fetchPage(currentPage, currentPageSize);\n },\n [fetchPage, reqLists]\n );\n\n const handlePageSizeChange = useCallback(\n async (pageSize: number) => {\n // Reset to page 1 when changing page size\n await fetchPage(1, pageSize);\n },\n [fetchPage]\n );\n\n const rows: Row[] = useMemo(\n () =>\n (reqLists?.items ?? []).map((rl: RequisitionListModel) => {\n return {\n name: (\n <div className=\"requisition-list-grid-wrapper__name\">\n <div className=\"requisition-list-grid-wrapper__name__title\">\n <a\n href=\"#\"\n onClick={(e: Event): void => {\n e.preventDefault();\n if (routeRequisitionListDetails) {\n const result = routeRequisitionListDetails(rl.uid);\n if (typeof result === 'string') {\n window.location.href = result;\n }\n }\n }}\n >\n {rl.name}\n </a>\n </div>\n {rl.description && (\n <div className=\"requisition-list-grid-wrapper__name__description\">\n {rl.description}\n </div>\n )}\n </div>\n ),\n items_count: rl.items_count,\n last_updated: new Date(rl.updated_at).toLocaleString(),\n actions: (\n <div className=\"requisition-list-grid-wrapper__actions\">\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"rename-button\"\n onClick={() => wrappedCallbacks?.handleOpenRenameModal(rl)}\n >\n {translations.actionRename}\n </Button>\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"delete-button\"\n onClick={() => wrappedCallbacks?.handleOpenDeleteModal(rl)}\n >\n {translations.actionDeleteList}\n </Button>\n </div>\n ),\n };\n }),\n [\n reqLists?.items,\n translations.actionRename,\n translations.actionDeleteList,\n wrappedCallbacks,\n routeRequisitionListDetails,\n ]\n );\n\n return {\n rows,\n isLoading: isFetching || !reqLists,\n pageInfo: reqLists?.page_info,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useState, useCallback } from 'preact/compat';\nimport { Header } from '@adobe-commerce/elsie/components';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n RequisitionListGridWrapper,\n RequisitionListModal,\n RequisitionListForm,\n} from '@/requisitionList/components';\nimport { useRequisitionListGrid } from '@/requisitionList/hooks';\nimport { deleteRequisitionList } from '@/requisitionList/api/deleteRequisitionList/deleteRequisitionList';\nimport { updateRequisitionList } from '@/requisitionList/api/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport interface RequisitionListGridProps\n extends HTMLAttributes<HTMLDivElement> {\n routeRequisitionListDetails?: (uid: string) => string | void;\n slots?: {\n Header?: SlotProps;\n };\n}\n\nexport const RequisitionListGrid: Container<RequisitionListGridProps> = ({\n routeRequisitionListDetails,\n slots,\n}: RequisitionListGridProps) => {\n const [modal, setModal] = useState<{\n type: 'rename' | 'delete' | null;\n isOpen: boolean;\n isLoading: boolean;\n requisitionList: RequisitionListModel | null;\n }>({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n\n const closeModal = useCallback(() => {\n setModal({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n }, []);\n\n const handleOpenRenameModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'rename',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const handleOpenDeleteModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'delete',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const {\n rows,\n isLoading,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n } = useRequisitionListGrid(\n { handleOpenRenameModal, handleOpenDeleteModal },\n routeRequisitionListDetails,\n closeModal\n );\n\n const handleRenameSubmit = useCallback(\n async (values: { name: string; description?: string }) => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n\n try {\n await updateRequisitionList(\n modal.requisitionList.uid,\n values.name,\n values.description\n );\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'success',\n context: 'requisitionList',\n });\n await handlePageChange();\n closeModal();\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'requisitionList',\n });\n }\n },\n [modal.requisitionList, handlePageChange, closeModal]\n );\n\n const handleDeleteConfirm = async () => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n setModal({ ...modal, isLoading: true });\n await deleteRequisitionList(modal.requisitionList.uid)\n .then(async () => {\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .catch(() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .finally(async () => {\n await handlePageChange();\n closeModal();\n });\n };\n\n const translations = useText({\n containerTitle: `RequisitionList.containerTitle`,\n updateTitle: `RequisitionList.RequisitionListForm.updateTitle`,\n deleteRequisitionListTitle:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle',\n deleteRequisitionListMessage:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage',\n cancelAction: 'RequisitionList.RequisitionListWrapper.cancelAction',\n confirmAction: 'RequisitionList.RequisitionListWrapper.confirmAction',\n });\n\n const getHeader = useCallback(() => {\n if (slots?.Header) {\n return (\n <Slot\n name=\"Header\"\n aria-label={translations.containerTitle}\n title={translations.containerTitle}\n slot={slots.Header}\n />\n );\n }\n return (\n <Header\n aria-label={translations.containerTitle}\n role=\"region\"\n title={translations.containerTitle}\n />\n );\n }, [slots, translations.containerTitle]);\n\n return (\n <>\n <RequisitionListGridWrapper\n header={getHeader()}\n rows={rows}\n skeletonRowCount={10}\n isLoading={isLoading}\n pageInfo={pageInfo}\n handlePageChange={handlePageChange}\n handlePageSizeChange={handlePageSizeChange}\n defaultPageSize={10}\n isAdding={isAdding}\n handleAddNew={handleAddNew}\n handleCancelCreate={handleCancelCreate}\n />\n\n {/* Rename Modal */}\n {modal.type === 'rename' && modal.isOpen && modal.requisitionList && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.updateTitle}\n modalContent={\n <RequisitionListForm\n mode=\"update\"\n defaultValues={{\n name: modal.requisitionList.name,\n description: modal.requisitionList.description || '',\n }}\n onSubmit={handleRenameSubmit}\n onCancel={closeModal}\n />\n }\n handleModalOnClose={closeModal}\n />\n )}\n\n {/* Delete Confirmation Modal */}\n {modal.type === 'delete' && modal.isOpen && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.deleteRequisitionListTitle}\n modalContent={translations.deleteRequisitionListMessage}\n confirmBtnCaption={translations.confirmAction}\n closeBtnCaption={translations.cancelAction}\n handleModalOnClose={closeModal}\n handleModalOnConfirm={handleDeleteConfirm}\n />\n )}\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListActions,\n EmptyList,\n PageSizePicker,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport {\n Pagination,\n Card,\n Table,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/components/RequisitionListGridWrapper/RequisitionListGridWrapper.css';\nimport { useRequisitionListAlert } from '@/requisitionList/hooks';\n\nexport interface RequisitionListGridWrapperProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n isLoading?: boolean;\n header?: VNode;\n rows: Array<Record<string, VNode | string | number | undefined>>;\n skeletonRowCount: number;\n pageInfo?: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n handlePageChange: (page?: number) => Promise<void>;\n handlePageSizeChange?: (pageSize: number) => Promise<void>;\n defaultPageSize?: number;\n isAdding: boolean;\n handleAddNew: () => void;\n handleCancelCreate: () => void;\n}\n\nexport const RequisitionListGridWrapper: FunctionComponent<\n RequisitionListGridWrapperProps\n> = ({\n className,\n isLoading = false,\n header,\n rows = [],\n skeletonRowCount = 10,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n defaultPageSize = 10,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n ...props\n}) => {\n const translations = useText({\n name: `RequisitionList.RequisitionListWrapper.name`,\n itemsCount: `RequisitionList.RequisitionListWrapper.itemsCount`,\n lastUpdated: `RequisitionList.RequisitionListWrapper.lastUpdated`,\n actions: `RequisitionList.RequisitionListWrapper.actions`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n });\n\n const hasAnyItems = (pageInfo?.total_pages ?? 0) > 0;\n const showEmptyList = !isLoading && rows.length === 0 && !hasAnyItems;\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n useEffect(() => {\n events.on('requisitionList/alert', handleRequisitionListAlert);\n }, [handleRequisitionListAlert]);\n\n return (\n <div\n {...props}\n className={classes(['requisition-list-grid-wrapper', className])}\n data-testid=\"requisition-list-grid-wrapper\"\n >\n {/* Requisition List Header */}\n {header && (\n <div\n className={classes([\n 'requisition-list-grid-wrapper__header',\n className,\n ])}\n data-testid=\"requisition-list-grid-wrapper-header\"\n >\n <VComponent node={header} />\n </div>\n )}\n {/* Requisition List alerts go here */}\n {alert && (\n <>\n <InLineAlert\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n onDismiss={() => setAlert(null)}\n />\n </>\n )}\n\n {showEmptyList ? (\n <EmptyList textContent={translations.emptyList} />\n ) : (\n <>\n {/* Requisition Lists Table */}\n <Table\n columns={[\n { key: 'name', label: translations.name },\n { key: 'items_count', label: translations.itemsCount },\n { key: 'last_updated', label: translations.lastUpdated },\n { key: 'actions', label: translations.actions },\n ]}\n rowData={rows}\n loading={isLoading}\n skeletonRowCount={skeletonRowCount}\n />\n <div\n className={classes([\n 'requisition-list-grid-wrapper__pagination',\n className,\n ])}\n >\n <div className=\"requisition-list-grid-wrapper__pagination-controls\">\n <PageSizePicker\n currentPageSize={pageInfo?.page_size || defaultPageSize}\n onPageSizeChange={\n handlePageSizeChange || (() => Promise.resolve())\n }\n disabled={isLoading}\n />\n {pageInfo && pageInfo.total_pages > 1 && (\n <Pagination\n totalPages={pageInfo.total_pages}\n currentPage={pageInfo.current_page}\n onChange={handlePageChange}\n />\n )}\n </div>\n </div>\n </>\n )}\n\n {/* Requisition Lists Form */}\n <div\n className={classes([\n 'requisition-list-grid-wrapper__add-new',\n className,\n ])}\n >\n {isAdding ? (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async () => {\n await handlePageChange();\n handleCancelCreate();\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onCancel={handleCancelCreate}\n />\n </Card>\n ) : (\n <RequisitionListActions onAddNew={handleAddNew} />\n )}\n </div>\n </div>\n );\n};\n"],"names":["useRequisitionListGrid","callbacks","routeRequisitionListDetails","closeModal","translations","useText","reqLists","setReqLists","useState","isAdding","setIsAdding","isFetching","setIsFetching","handleAddNew","useCallback","handleCancelCreate","wrappedCallbacks","useMemo","rl","current","fetchPage","page","pageSize","data","getRequisitionLists","currentPage","_a","totalPages","_b","_c","prev","prevData","useEffect","requisitionListsEvent","events","DEFAULT_PAGE_SIZE","handlePageChange","currentPageSize","handlePageSizeChange","jsxs","jsx","e","result","Button","RequisitionListGrid","slots","modal","setModal","handleOpenRenameModal","handleOpenDeleteModal","rows","isLoading","pageInfo","handleRenameSubmit","values","updateRequisitionList","handleDeleteConfirm","deleteRequisitionList","getHeader","Slot","Header","Fragment","RequisitionListGridWrapper","RequisitionListModal","RequisitionListForm","className","header","skeletonRowCount","defaultPageSize","props","hasAnyItems","showEmptyList","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","classes","VComponent","InLineAlert","EmptyList","Table","PageSizePicker","Pagination","Card","RequisitionListActions"],"mappings":"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"}
|