@dropins/storefront-requisition-list 0.4.0-beta → 0.5.0-beta

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.
Files changed (49) hide show
  1. package/api/addRequisitionListItemsToCart/graphql/addRequisitionListItemsToCart.d.ts +1 -1
  2. package/api/deleteRequisitionList/deleteRequisitionList.d.ts +5 -1
  3. package/api/fragments/RequisitionListItemsFragment.graphql.d.ts +1 -1
  4. package/api/fragments.d.ts +16 -0
  5. package/api.js +2 -2
  6. package/api.js.map +1 -1
  7. package/chunks/PageSizePicker2.js +4 -0
  8. package/chunks/PageSizePicker2.js.map +1 -0
  9. package/chunks/RequisitionListForm.js +3 -3
  10. package/chunks/RequisitionListForm.js.map +1 -1
  11. package/chunks/RequisitionListItemsFragment.graphql.js +0 -20
  12. package/chunks/RequisitionListItemsFragment.graphql.js.map +1 -1
  13. package/chunks/{deleteRequisitionListItems.js → addRequisitionListItemsToCart.js} +39 -25
  14. package/chunks/addRequisitionListItemsToCart.js.map +1 -0
  15. package/chunks/deleteRequisitionList.js +3 -3
  16. package/chunks/deleteRequisitionList.js.map +1 -1
  17. package/chunks/getRequisitionLists.js +3 -3
  18. package/chunks/getRequisitionLists.js.map +1 -1
  19. package/chunks/transform-requisition-list.js.map +1 -1
  20. package/components/BatchActions/BatchActions.d.ts +16 -0
  21. package/components/BatchActions/index.d.ts +19 -0
  22. package/components/PageSizePicker/PageSizePicker.d.ts +10 -0
  23. package/components/ProductListTable/ProductListTable.d.ts +18 -0
  24. package/components/ProductListTable/__fixtures__/RequisitionListModel.d.ts +50 -0
  25. package/components/ProductListTable/index.d.ts +19 -0
  26. package/components/RequisitionListGridWrapper/RequisitionListGridWrapper.d.ts +6 -1
  27. package/components/index.d.ts +3 -1
  28. package/containers/RequisitionListForm.js +1 -1
  29. package/containers/RequisitionListGrid.js +1 -1
  30. package/containers/RequisitionListGrid.js.map +1 -1
  31. package/containers/RequisitionListNames/RequisitionListNames.d.ts +2 -0
  32. package/containers/RequisitionListNames.js +4 -4
  33. package/containers/RequisitionListNames.js.map +1 -1
  34. package/containers/RequisitionListView/RequisitionListView.d.ts +3 -1
  35. package/containers/RequisitionListView.js +1 -1
  36. package/containers/RequisitionListView.js.map +1 -1
  37. package/data/transforms/transform-product.d.ts +1 -1
  38. package/hooks/index.d.ts +3 -1
  39. package/hooks/useRequisitionListAlert.d.ts +27 -0
  40. package/hooks/useRequisitionListForm.d.ts +6 -4
  41. package/hooks/useRequisitionListGrid.d.ts +5 -1
  42. package/hooks/useRequisitionListSelectedItems.d.ts +14 -0
  43. package/i18n/en_US.json.d.ts +42 -13
  44. package/package.json +1 -1
  45. package/render.js +3 -4
  46. package/render.js.map +1 -1
  47. package/chunks/deleteRequisitionListItems.js.map +0 -1
  48. package/components/RequisitionListView/RequisitionListView.d.ts +0 -29
  49. package/components/RequisitionListView/index.d.ts +0 -3
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as f,jsx as n}from"@dropins/tools/preact-jsx-runtime.js";import*as a from"@dropins/tools/preact-compat.js";import{useState as T,useEffect as q}from"@dropins/tools/preact-compat.js";import{Picker as p,Icon as L,Card as h}from"@dropins/tools/components.js";import{R as E,f as S,h as g,t as N}from"../chunks/transform-requisition-list.js";import{R as U}from"../chunks/RequisitionListItemsFragment.graphql.js";import{g as v}from"../chunks/getRequisitionLists.js";import{R as O}from"../chunks/RequisitionListForm.js";import"@dropins/tools/lib.js";import"@dropins/tools/preact-hooks.js";/* empty css *//* empty css */import{useText as A}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const M=`
3
+ import{jsxs as L,jsx as c}from"@dropins/tools/preact-jsx-runtime.js";import*as u from"@dropins/tools/preact-compat.js";import{useState as f,useEffect as h}from"@dropins/tools/preact-compat.js";import{Picker as E,Icon as S,Card as g}from"@dropins/tools/components.js";import{R as N,f as v,h as U,t as O}from"../chunks/transform-requisition-list.js";import{events as d}from"@dropins/tools/event-bus.js";import{R as x}from"../chunks/RequisitionListItemsFragment.graphql.js";import{g as y}from"../chunks/getRequisitionLists.js";import{R as M}from"../chunks/RequisitionListForm.js";import"@dropins/tools/lib.js";import"@dropins/tools/preact-hooks.js";/* empty css *//* empty css */import"@dropins/tools/preact.js";import{useText as A}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const k=`
4
4
  mutation ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION(
5
5
  $requisitionListUid: ID!,
6
6
  $requisitionListItems: [RequisitionListItemsInput!]!
@@ -17,7 +17,7 @@ import{jsxs as f,jsx as n}from"@dropins/tools/preact-jsx-runtime.js";import*as a
17
17
  }
18
18
  }
19
19
  }
20
- ${U}
21
- ${E}
22
- `,k=async(r,o)=>{const{errors:e,data:c}=await S(M,{variables:{requisitionListUid:r,requisitionListItems:o}});return e?g(e):N(c.addProductsToRequisitionList.requisition_list)},x=r=>a.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},a.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 12H21",stroke:"currentColor"}),a.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 6H21",stroke:"currentColor"}),a.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 18H21",stroke:"currentColor"})),z=({items:r=[],canCreate:o=!0,sku:e,quantity:c=1,...I})=>{const[s,d]=T(r),[m,u]=T(!1),l=A({createTitle:"RequisitionList.RequisitionListForm.createTitle",addToReqList:"RequisitionList.RequisitionListForm.addToRequisitionList"});q(()=>{(!s||s.length===0)&&v().then(t=>{t&&t.items&&d(t.items)}).catch(t=>{console.error("Error fetching requisition lists:",t)})},[s]);const R=[...(s==null?void 0:s.map(t=>({value:t.uid,text:t.name})))??[],...o?[{value:"__create__",text:l.createTitle}]:[]],_=async t=>{try{await k(t,[{sku:e,quantity:c}])}catch(i){console.error("Error adding product to list:",i)}};return f("div",{...I,className:"requisition-list-names",children:[n(p,{id:`requisition-list-names__picker__${e}`,className:"requisition-list-names__picker",name:`requisition-list-names__picker__${e}`,icon:n(L,{source:x}),variant:"secondary",placeholder:l.addToReqList,disabled:m,size:"medium",options:R,handleSelect:t=>{const i=t.currentTarget.value;if(i==="__create__"){u(!0);return}i&&_(i).then(()=>{t.target.value=""})}}),o&&m&&n(h,{variant:"secondary",children:n(O,{mode:"create",onSuccess:async t=>{_(t.uid).then(()=>{u(!1),d(i=>i?[...i,t]:[t])})},onCancel:()=>u(!1)})})]})};export{z as RequisitionListNames,z as default};
20
+ ${x}
21
+ ${N}
22
+ `,F=async(r,o)=>{const{errors:e,data:m}=await v(k,{variables:{requisitionListUid:r,requisitionListItems:o}});if(e)return U(e);const n=O(m.addProductsToRequisitionList.requisition_list);return d.emit("requisitionList/data",n),n},$=r=>u.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 12H21",stroke:"currentColor"}),u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 6H21",stroke:"currentColor"}),u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M3 18H21",stroke:"currentColor"})),X=({items:r=[],canCreate:o=!0,sku:e,selectedOptions:m,quantity:n=1,beforeAddProdToReqList:l,...q})=>{const[s,_]=f(r),[p,a]=f(!1),T=A({createTitle:"RequisitionList.RequisitionListForm.createTitle",addToReqList:"RequisitionList.RequisitionListForm.addToRequisitionList"});h(()=>{(!s||s.length===0)&&y().then(t=>{t&&t.items&&_(t.items)}).catch(t=>{console.error("Error fetching requisition lists:",t)})},[s]);const R=[...(s==null?void 0:s.map(t=>({value:t.uid,text:t.name})))??[],...o?[{value:"__create__",text:T.createTitle}]:[]],I=async t=>{if(l)try{await l()}catch{return}try{await F(t,[{sku:e,quantity:n,selected_options:m}])}catch(i){console.error("Error adding product to list:",i)}};return L("div",{...q,className:"requisition-list-names",children:[c(E,{id:`requisition-list-names__picker__${e}`,className:"requisition-list-names__picker",name:`requisition-list-names__picker__${e}`,icon:c(S,{source:$}),variant:"secondary",placeholder:T.addToReqList,disabled:p,size:"medium",options:R,handleSelect:t=>{const i=t.currentTarget.value;if(i==="__create__"){a(!0);return}i&&I(i).then(()=>{d.emit("requisitionList/alert",{action:"add",type:"success",context:"product"}),a(!1),t.target.value=""})}}),o&&p&&c(g,{variant:"secondary",children:c(M,{mode:"create",onSuccess:async t=>{I(t.uid).then(()=>{d.emit("requisitionList/alert",{action:"add",type:"success",context:"product"}),a(!1),_(i=>i?[...i,t]:[t])})},onError:()=>{d.emit("requisitionList/alert",{action:"add",type:"error",context:"product"})},onCancel:()=>a(!1)})})]})};export{X as RequisitionListNames,X as default};
23
23
  //# sourceMappingURL=RequisitionListNames.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequisitionListNames.js","sources":["/@dropins/storefront-requisition-list/src/api/addProductsToRequisitionList/graphql/addProductsToRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/addProductsToRequisitionList/addProductsToRequisitionList.ts","../../node_modules/@adobe-commerce/elsie/src/icons/Burger.svg","/@dropins/storefront-requisition-list/src/containers/RequisitionListNames/RequisitionListNames.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 { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION = `\n mutation ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!, \n $requisitionListItems: [RequisitionListItemsInput!]!\n ) {\n addProductsToRequisitionList(\n requisitionListUid: $requisitionListUid\n requisitionListItems: $requisitionListItems\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n${REQUISITION_LIST_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 { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/addProductsToRequisitionList/graphql/addProductsToRequisitionList';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { Product } from '@/requisitionList/data/models/item';\n\nexport const addProductsToRequisitionList = async (\n requisitionListUid: string,\n requisitionListItems: Array<Product>\n): Promise<RequisitionList | null> => {\n const { errors, data } = await fetchGraphQl(\n ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION,\n {\n variables: {\n requisitionListUid,\n requisitionListItems,\n },\n }\n );\n if (errors) return handleFetchError(errors);\n\n return transformRequisitionList(\n data.addProductsToRequisitionList.requisition_list\n );\n};\n","import * as React from \"react\";\nconst SvgBurger = (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: \"M3 12H21\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M3 6H21\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M3 18H21\", stroke: \"currentColor\" }));\nexport default SvgBurger;\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, useState } from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList } from '../../data/models/requisitionList.js';\nimport { Card, Icon, Picker } from '@adobe-commerce/elsie/components';\nimport { addProductsToRequisitionList } from '@/requisitionList/api/addProductsToRequisitionList/addProductsToRequisitionList';\nimport { getRequisitionLists } from '@/requisitionList/api';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Burger } from '@adobe-commerce/elsie/icons';\nimport { JSX } from 'preact';\nimport '@/requisitionList/containers/RequisitionListNames/RequisitionListNames.css';\n\nexport interface RequisitionListNamesProps\n extends HTMLAttributes<HTMLDivElement> {\n items?: RequisitionList[];\n canCreate?: boolean;\n sku: string;\n quantity?: number;\n}\n\nexport const RequisitionListNames: Container<RequisitionListNamesProps> = ({\n items = [],\n canCreate = true,\n sku,\n quantity = 1,\n ...props\n}: RequisitionListNamesProps) => {\n const [reqLists, setReqLists] = useState(items);\n const [isAdding, setIsAdding] = useState(false);\n\n const translations = useText({\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n addToReqList: `RequisitionList.RequisitionListForm.addToRequisitionList`,\n });\n\n useEffect(() => {\n if (!reqLists || reqLists.length === 0) {\n getRequisitionLists()\n .then((res: { items: RequisitionList[] }) => {\n if (res && res.items) {\n setReqLists(res.items);\n }\n })\n .catch((error: any) => {\n console.error('Error fetching requisition lists:', error);\n });\n }\n }, [reqLists]);\n\n const reqListOptions = [\n ...(reqLists?.map((reqList: RequisitionList) => ({\n value: reqList.uid,\n text: reqList.name,\n })) ?? []),\n ...(canCreate\n ? [{ value: '__create__', text: translations.createTitle }]\n : []),\n ];\n\n const handleAddProdToReqList = async (requisitionListUid: string) => {\n try {\n await addProductsToRequisitionList(requisitionListUid, [\n { sku, quantity },\n ]);\n } catch (error) {\n console.error('Error adding product to list:', error);\n }\n };\n\n return (\n <div {...props} className=\"requisition-list-names\">\n <Picker\n id={`requisition-list-names__picker__${sku}`}\n className=\"requisition-list-names__picker\"\n name={`requisition-list-names__picker__${sku}`}\n icon={<Icon source={Burger} />}\n variant={'secondary'}\n placeholder={translations.addToReqList}\n disabled={isAdding}\n size=\"medium\"\n options={reqListOptions}\n handleSelect={(event: JSX.TargetedEvent<HTMLSelectElement, Event>) => {\n const selectedUid = event.currentTarget.value;\n if (selectedUid === '__create__') {\n setIsAdding(true);\n return;\n }\n if (selectedUid) {\n handleAddProdToReqList(selectedUid).then(() => {\n // TODO: dispatch event when they are available\n event.target.value = ''; // Reset the Picker to Select the Placeholder again when completed\n });\n }\n }}\n />\n {canCreate && isAdding && (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async (newList: RequisitionList) => {\n handleAddProdToReqList(newList.uid).then(() => {\n // TODO: dispatch event when they are available\n setIsAdding(false);\n setReqLists((prevLists: RequisitionList[]) =>\n prevLists ? [...prevLists, newList] : [newList]\n );\n });\n }}\n onCancel={() => setIsAdding(false)}\n />\n </Card>\n )}\n </div>\n );\n};\n"],"names":["ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION","REQUISITION_LIST_ITEMS_FRAGMENT","REQUISITION_LIST_FRAGMENT","addProductsToRequisitionList","requisitionListUid","requisitionListItems","errors","data","fetchGraphQl","handleFetchError","transformRequisitionList","SvgBurger","props","React","RequisitionListNames","items","canCreate","sku","quantity","reqLists","setReqLists","useState","isAdding","setIsAdding","translations","useText","useEffect","getRequisitionLists","res","error","reqListOptions","reqList","handleAddProdToReqList","jsxs","jsx","Picker","Icon","Burger","event","selectedUid","Card","RequisitionListForm","newList","prevLists"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"RequisitionListNames.js","sources":["/@dropins/storefront-requisition-list/src/api/addProductsToRequisitionList/graphql/addProductsToRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/addProductsToRequisitionList/addProductsToRequisitionList.ts","../../node_modules/@adobe-commerce/elsie/src/icons/Burger.svg","/@dropins/storefront-requisition-list/src/containers/RequisitionListNames/RequisitionListNames.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 { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION = `\n mutation ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!, \n $requisitionListItems: [RequisitionListItemsInput!]!\n ) {\n addProductsToRequisitionList(\n requisitionListUid: $requisitionListUid\n requisitionListItems: $requisitionListItems\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n${REQUISITION_LIST_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 { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/addProductsToRequisitionList/graphql/addProductsToRequisitionList';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { Product } from '@/requisitionList/data/models/item';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const addProductsToRequisitionList = async (\n requisitionListUid: string,\n requisitionListItems: Array<Product>\n): Promise<RequisitionList | null> => {\n const { errors, data } = await fetchGraphQl(\n ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION,\n {\n variables: {\n requisitionListUid,\n requisitionListItems,\n },\n }\n );\n if (errors) return handleFetchError(errors);\n\n const payload = transformRequisitionList(\n data.addProductsToRequisitionList.requisition_list\n );\n events.emit('requisitionList/data', payload);\n return payload;\n};\n","import * as React from \"react\";\nconst SvgBurger = (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: \"M3 12H21\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M3 6H21\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M3 18H21\", stroke: \"currentColor\" }));\nexport default SvgBurger;\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, useState } from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList } from '../../data/models/requisitionList.js';\nimport { Card, Icon, Picker } from '@adobe-commerce/elsie/components';\nimport { addProductsToRequisitionList } from '@/requisitionList/api/addProductsToRequisitionList/addProductsToRequisitionList';\nimport { getRequisitionLists } from '@/requisitionList/api';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Burger } from '@adobe-commerce/elsie/icons';\nimport { JSX } from 'preact';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/containers/RequisitionListNames/RequisitionListNames.css';\n\nexport interface RequisitionListNamesProps\n extends HTMLAttributes<HTMLDivElement> {\n items?: RequisitionList[];\n canCreate?: boolean;\n sku: string;\n selectedOptions?: string[];\n quantity?: number;\n beforeAddProdToReqList?: () => Promise<void> | void;\n}\n\nexport const RequisitionListNames: Container<RequisitionListNamesProps> = ({\n items = [],\n canCreate = true,\n sku,\n selectedOptions,\n quantity = 1,\n beforeAddProdToReqList,\n ...props\n}: RequisitionListNamesProps) => {\n const [reqLists, setReqLists] = useState(items);\n const [isAdding, setIsAdding] = useState(false);\n\n const translations = useText({\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n addToReqList: `RequisitionList.RequisitionListForm.addToRequisitionList`,\n });\n\n useEffect(() => {\n if (!reqLists || reqLists.length === 0) {\n getRequisitionLists()\n .then((res: { items: RequisitionList[] }) => {\n if (res && res.items) {\n setReqLists(res.items);\n }\n })\n .catch((error: any) => {\n console.error('Error fetching requisition lists:', error);\n });\n }\n }, [reqLists]);\n\n const reqListOptions = [\n ...(reqLists?.map((reqList: RequisitionList) => ({\n value: reqList.uid,\n text: reqList.name,\n })) ?? []),\n ...(canCreate\n ? [{ value: '__create__', text: translations.createTitle }]\n : []),\n ];\n\n const handleAddProdToReqList = async (requisitionListUid: string) => {\n // Execute beforeAddProdToReqList callback if provided\n if (beforeAddProdToReqList) {\n try {\n await beforeAddProdToReqList();\n } catch (error) {\n // If callback throws an error (e.g., redirect), stop execution\n return;\n }\n }\n\n try {\n await addProductsToRequisitionList(requisitionListUid, [\n { sku, quantity, selected_options: selectedOptions },\n ]);\n } catch (error) {\n console.error('Error adding product to list:', error);\n }\n };\n\n return (\n <div {...props} className=\"requisition-list-names\">\n <Picker\n id={`requisition-list-names__picker__${sku}`}\n className=\"requisition-list-names__picker\"\n name={`requisition-list-names__picker__${sku}`}\n icon={<Icon source={Burger} />}\n variant={'secondary'}\n placeholder={translations.addToReqList}\n disabled={isAdding}\n size=\"medium\"\n options={reqListOptions}\n handleSelect={(event: JSX.TargetedEvent<HTMLSelectElement, Event>) => {\n const selectedUid = event.currentTarget.value;\n if (selectedUid === '__create__') {\n setIsAdding(true);\n return;\n }\n if (selectedUid) {\n handleAddProdToReqList(selectedUid).then(() => {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'success',\n context: 'product',\n });\n setIsAdding(false);\n event.target.value = ''; // Reset the Picker to Select the Placeholder again when completed\n });\n }\n }}\n />\n {canCreate && isAdding && (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async (newList: RequisitionList) => {\n handleAddProdToReqList(newList.uid).then(() => {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'success',\n context: 'product',\n });\n setIsAdding(false);\n setReqLists((prevLists: RequisitionList[]) =>\n prevLists ? [...prevLists, newList] : [newList]\n );\n });\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'error',\n context: 'product',\n });\n }}\n onCancel={() => setIsAdding(false)}\n />\n </Card>\n )}\n </div>\n );\n};\n"],"names":["ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION","REQUISITION_LIST_ITEMS_FRAGMENT","REQUISITION_LIST_FRAGMENT","addProductsToRequisitionList","requisitionListUid","requisitionListItems","errors","data","fetchGraphQl","handleFetchError","payload","transformRequisitionList","events","SvgBurger","props","React","RequisitionListNames","items","canCreate","sku","selectedOptions","quantity","beforeAddProdToReqList","reqLists","setReqLists","useState","isAdding","setIsAdding","translations","useText","useEffect","getRequisitionLists","res","error","reqListOptions","reqList","handleAddProdToReqList","jsxs","jsx","Picker","Icon","Burger","event","selectedUid","Card","RequisitionListForm","newList","prevLists"],"mappings":"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","x_google_ignoreList":[2]}
@@ -4,7 +4,6 @@ import { RequisitionList } from '../../data/models/requisitionList';
4
4
 
5
5
  export interface RequisitionListViewProps extends HTMLAttributes<HTMLDivElement> {
6
6
  requisitionList: RequisitionList;
7
- routeRequisitionListGrid?: () => string | void;
8
7
  /**
9
8
  * When true, skips automatic product data fetching on component mount.
10
9
  * Used in tests to prevent API calls.
@@ -15,6 +14,9 @@ export interface RequisitionListViewProps extends HTMLAttributes<HTMLDivElement>
15
14
  * Defaults to 10.
16
15
  */
17
16
  pageSize?: number;
17
+ loadingProducts?: boolean;
18
+ selectedItems: Set<string>;
19
+ loadingPage?: boolean;
18
20
  }
19
21
  export declare const RequisitionListView: Container<RequisitionListViewProps>;
20
22
  //# sourceMappingURL=RequisitionListView.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as f,jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{useState as d,useEffect as F,useCallback as w}from"@dropins/tools/preact-compat.js";import{g as ne,a as W,d as H,u as re,b as oe}from"../chunks/deleteRequisitionListItems.js";import{Button as S,InLineAlert as Q,Pagination as se}from"@dropins/tools/components.js";/* empty css */import{useText as K}from"@dropins/tools/i18n.js";import"../chunks/transform-requisition-list.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/RequisitionListItemsFragment.graphql.js";const ae=({currentRequisitionList:s,loadingProducts:k,productError:V,selectedItems:R,deletingItemId:i,deleteError:q,addingToCartItemId:c,addToCartError:_,bulkAddingToCart:p,updatingQuantityItemId:a,updateQuantityError:B,onItemSelection:D,onSelectAll:$,onSelectNone:v,onAddToCart:C,onBulkAddToCart:A,onBulkDelete:z,onUpdateQuantity:x,onDeleteItem:M,onPageChange:y,loadingPage:O=!1,routeRequisitionListGrid:P})=>{var b;const u=K({actionDelete:"RequisitionList.RequisitionListView.actionDelete",statusDeleting:"RequisitionList.RequisitionListView.statusDeleting",errorDelete:"RequisitionList.RequisitionListView.errorDelete",actionDeleteSelected:"RequisitionList.RequisitionListView.actionDeleteSelected",actionSelectAll:"RequisitionList.RequisitionListView.actionSelectAll",actionSelectNone:"RequisitionList.RequisitionListView.actionSelectNone",actionAddToCart:"RequisitionList.RequisitionListView.actionAddToCart",statusAddingToCart:"RequisitionList.RequisitionListView.statusAddingToCart",errorAddToCart:"RequisitionList.RequisitionListView.errorAddToCart",successAddToCart:"RequisitionList.RequisitionListView.successAddToCart",actionAddSelectedToCart:"RequisitionList.RequisitionListView.actionAddSelectedToCart",statusBulkAddingToCart:"RequisitionList.RequisitionListView.statusBulkAddingToCart",errorUpdateQuantity:"RequisitionList.RequisitionListView.errorUpdateQuantity",successUpdateQuantity:"RequisitionList.RequisitionListView.successUpdateQuantity",actionBackToRequisitionListsOverview:"RequisitionList.RequisitionListView.actionBackToRequisitionListsOverview"});return f("div",{children:[f("h3",{children:[s.name,P&&r(S,{type:"button",variant:"secondary",onClick:P,children:u.actionBackToRequisitionListsOverview})]}),q&&r(Q,{type:"error",variant:"primary",heading:q,"data-testid":"requisition-list-view-delete-error"}),_&&r(Q,{type:"error",variant:"primary",heading:_,"data-testid":"requisition-list-view-add-to-cart-error"}),B&&r(Q,{type:"error",variant:"primary",heading:B,"data-testid":"requisition-list-view-update-quantity-error"}),V&&r(Q,{type:"error",variant:"primary",heading:V,"data-testid":"requisition-list-view-product-error"}),f("div",{class:"requisition-list-view__bulk-actions",children:[r(S,{type:"button",variant:"secondary",onClick:$,disabled:i!==null||c!==null||p||a!==null,children:u.actionSelectAll}),r(S,{type:"button",variant:"secondary",onClick:v,disabled:i!==null||c!==null||p||a!==null,children:u.actionSelectNone}),R.size>0&&r(S,{type:"button",variant:"primary",onClick:A,disabled:i!==null||c!==null||p||a!==null,children:p?u.statusBulkAddingToCart:`${u.actionAddSelectedToCart} (${R.size})`}),R.size>0&&r(S,{type:"button",variant:"secondary",onClick:z,disabled:i!==null||c!==null||p||a!==null,children:i==="bulk"?u.statusDeleting:`${u.actionDeleteSelected} (${R.size})`})]}),k&&r("div",{children:"Loading products..."}),!k&&s&&f("div",{children:[f("h4",{children:["Requisition List Items (",s.items_count||0,")"]}),r("ul",{children:(b=s==null?void 0:s.items)==null?void 0:b.map(n=>f("li",{className:"requisition-list-view__item",children:[r("input",{type:"checkbox",checked:R.has(n.uid),onChange:g=>D(n.uid,g.target.checked),disabled:i!==null||c!==null||p||a!==null}),f("div",{className:"item-info",children:[f("div",{children:[r("strong",{children:"Item UID:"})," ",n.uid]}),n.product&&f("div",{className:"product-info",children:[f("div",{children:[r("strong",{children:"SKU:"})," ",n.product.sku," ",r("strong",{children:n.product.name})]}),n.product.images&&n.product.images.length>0&&r("div",{children:r("img",{src:n.product.images[0].url,alt:n.product.images[0].label,style:{maxWidth:"50px",maxHeight:"50px",margin:"2px"}},0)})]})]}),r("input",{type:"number",min:"1",value:n.quantity,onChange:g=>{const E=parseInt(g.currentTarget.value,10);E>0&&E!==n.quantity&&x(n.uid,E)},disabled:a===n.uid||i!==null||c!==null||p,"data-testid":`quantity-input-${n.uid}`}),r(S,{type:"button",variant:"primary",onClick:()=>C(n.uid),disabled:c===n.uid||i!==null||p||a!==null,"data-testid":"requisition-list-view-add-to-cart-button",children:c===n.uid?u.statusAddingToCart:u.actionAddToCart}),r(S,{type:"button",variant:"secondary",onClick:()=>M(n.uid),disabled:i===n.uid||c!==null||p||a!==null,"data-testid":"requisition-list-view-delete-item-button",children:i===n.uid?u.statusDeleting:u.actionDelete})]},n.uid))}),s.page_info&&s.page_info.total_pages>1&&r("div",{className:"requisition-list-view__pagination",children:r(se,{totalPages:s.page_info.total_pages,currentPage:s.page_info.current_page,onChange:y,disabled:O||k})})]})]})},qe=({requisitionList:s,routeRequisitionListGrid:k,skipProductLoading:V=!1,pageSize:R=10})=>{const[i,q]=d(s),[c,_]=d(!1),[p,a]=d(null),[B,D]=d(null),[$,v]=d(null),[C,A]=d(new Set),[z,x]=d(null),[M,y]=d(null),[O,P]=d(!1),[u,b]=d(null),[n,g]=d(null),[E,j]=d(!1),o=K({errorDelete:"RequisitionList.RequisitionListView.errorDelete",errorAddToCart:"RequisitionList.RequisitionListView.errorAddToCart",errorUpdateQuantity:"RequisitionList.RequisitionListView.errorUpdateQuantity",errorLoadingProducts:"RequisitionList.RequisitionListView.errorLoadingProducts"});F(()=>{q(s),A(new Set)},[s]);const m=w(async e=>{var h,l;const t=((h=e.items)==null?void 0:h.map(L=>L.sku))||[];if(t.length===0)return e;_(!0),a(null);try{const L=await ne(t);if(L){const U=new Map;return L.forEach(T=>{U.set(T.sku,T)}),{...e,items:(l=e.items)==null?void 0:l.map(T=>({...T,product:U.get(T.sku)||T.product}))}}return a("No products found"),e}catch(L){return a(L instanceof Error?L.message:o.errorLoadingProducts),e}finally{_(!1)}},[o.errorLoadingProducts]);F(()=>{if(V)return;(async()=>{const t=await m(s);q(t)})()},[s,m,V]);const J=w((e,t)=>{A(h=>{const l=new Set(h);return t?l.add(e):l.delete(e),l})},[]),X=w(()=>{var t;const e=((t=i.items)==null?void 0:t.map(h=>h.uid))||[];A(new Set(e))},[i.items]),Y=w(()=>{A(new Set)},[]),Z=w(async e=>{x(e),y(null);try{const t=await W(i.uid,[e]);t&&t.length>0?y(o.errorAddToCart):y(null)}catch(t){y(t instanceof Error?t.message:o.errorAddToCart)}finally{x(null)}},[i.uid,o.errorAddToCart]),G=w(async()=>{P(!0),y(null);try{const e=await W(i.uid,Array.from(C));e&&e.length>0?y(o.errorAddToCart):(y(null),A(new Set))}catch(e){y(e instanceof Error?e.message:o.errorAddToCart)}finally{P(!1)}},[i.uid,C,o.errorAddToCart]),I=w(async()=>{D("bulk"),v(null);try{const e=await H(i.uid,Array.from(C));e?(q(e),A(new Set)):v(o.errorDelete)}catch(e){v(e instanceof Error?e.message:o.errorDelete)}finally{D(null)}},[i.uid,C,o.errorDelete]),ee=w(async(e,t)=>{var h;b(e),g(null);try{const l=(h=i.items)==null?void 0:h.find(N=>N.uid===e);if(!l){g(o.errorUpdateQuantity);return}const L={item_id:l.uid,entered_options:l.entered_options,selected_options:l.selected_options,quantity:t},U=await re(i.uid,[L]);if(U){const N=await m(U);q(N),g(null)}else g(o.errorUpdateQuantity)}catch(l){g(l instanceof Error?l.message:o.errorUpdateQuantity)}finally{b(null)}},[i.uid,i.items,o.errorUpdateQuantity,m]),te=w(async e=>{D(e),v(null);try{const t=await H(i.uid,[e]);t?q(t):v(o.errorDelete)}catch(t){v(t instanceof Error?t.message:o.errorDelete)}finally{D(null)}},[i.uid,o.errorDelete]),ie=w(async e=>{j(!0),a(null);try{const t=await oe(i.uid,e,R);if(t){const h=await m(t);q(h)}else a("Failed to load page")}catch(t){a(t instanceof Error?t.message:"Failed to load page")}finally{j(!1)}},[i.uid,m,R]);return r(ae,{currentRequisitionList:i,loadingProducts:c,productError:p,selectedItems:C,deletingItemId:B,deleteError:$,addingToCartItemId:z,addToCartError:M,bulkAddingToCart:O,updatingQuantityItemId:u,updateQuantityError:n,onItemSelection:J,onSelectAll:X,onSelectNone:Y,onAddToCart:Z,onBulkAddToCart:G,onBulkDelete:I,onUpdateQuantity:ee,onDeleteItem:te,onPageChange:ie,loadingPage:E,routeRequisitionListGrid:k})};export{qe as RequisitionListView,qe as default};
3
+ import{jsxs as E,jsx as e,Fragment as st}from"@dropins/tools/preact-jsx-runtime.js";import*as d from"@dropins/tools/preact-compat.js";import{useState as S,useEffect as K,useCallback as V}from"@dropins/tools/preact-compat.js";import{b as nt,a as ot,d as at,u as rt,g as Y}from"../chunks/addRequisitionListItemsToCart.js";import{Button as T,Icon as J,Field as lt,Input as ct,Price as U,Checkbox as ut,Table as dt,Header as pt,InLineAlert as mt,Pagination as ht}from"@dropins/tools/components.js";import{events as q}from"@dropins/tools/event-bus.js";import{useState as tt,useCallback as O}from"@dropins/tools/preact-hooks.js";import{VComponent as Lt,classes as qt}from"@dropins/tools/lib.js";/* empty css */import{u as ft,E as gt,P as yt}from"../chunks/PageSizePicker2.js";import{h as wt}from"@dropins/tools/preact.js";/* empty css */import{useText as X}from"@dropins/tools/i18n.js";import"../chunks/transform-requisition-list.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/RequisitionListItemsFragment.graphql.js";function kt(o){const[l,p]=tt(o),[m,c]=tt(new Set),C=O((h,a)=>{c(k=>{const g=new Set(k);return a?g.add(h):g.delete(h),g})},[]),w=O(()=>{var a;const h=(a=l.items)==null?void 0:a.map(k=>k.uid);c(new Set(h))},[l]),v=O(()=>{c(new Set)},[]);return{currentRequisitionList:l,setCurrentRequisitionList:p,selectedItems:m,setSelectedItems:c,handleItemSelection:C,handleSelectAll:w,handleSelectNone:v}}const et=o=>d.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...o},d.createElement("g",{clipPath:"url(#clip0_102_196)"},d.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3601 18.16H6.5601L4.8801 3H2.3501M19.6701 19.59C19.6701 20.3687 19.0388 21 18.2601 21C17.4814 21 16.8501 20.3687 16.8501 19.59C16.8501 18.8113 17.4814 18.18 18.2601 18.18C19.0388 18.18 19.6701 18.8113 19.6701 19.59ZM7.42986 19.59C7.42986 20.3687 6.79858 21 6.01986 21C5.24114 21 4.60986 20.3687 4.60986 19.59C4.60986 18.8113 5.24114 18.18 6.01986 18.18C6.79858 18.18 7.42986 18.8113 7.42986 19.59Z",stroke:"currentColor",strokeLinejoin:"round"}),d.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M5.25 6.37L20.89 8.06L20.14 14.8H6.19",stroke:"currentColor",strokeLinejoin:"round"})),d.createElement("defs",null,d.createElement("clipPath",{id:"clip0_102_196"},d.createElement("rect",{vectorEffect:"non-scaling-stroke",width:19.29,height:19.5,fill:"white",transform:"translate(2.3501 2.25)"})))),it=o=>d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...o},d.createElement("path",{d:"M1 5H23",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),d.createElement("path",{d:"M17.3674 22H6.63446C5.67952 22 4.88992 21.2688 4.8379 20.3338L4 5H20L19.1621 20.3338C19.1119 21.2688 18.3223 22 17.3655 22H17.3674Z",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),d.createElement("path",{d:"M9.87189 2H14.1281C14.6085 2 15 2.39766 15 2.88889V5H9V2.88889C9 2.39912 9.39006 2 9.87189 2Z",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),d.createElement("path",{d:"M8.87402 8.58057L9.39348 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),d.createElement("path",{d:"M14.6673 8.58057L14.146 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10})),bt=({className:o,items:l,selectedItems:p,currentPage:m,pageSize:c,canEdit:C=!0,handleItemSelection:w,handleUpdateQuantity:v,onAddToCart:h,onDeleteItem:a,...k})=>{const g=X({productNameHeader:"RequisitionList.RequisitionListView.productListTable.headers.productName",skuHeader:"RequisitionList.RequisitionListView.productListTable.headers.sku",priceHeader:"RequisitionList.RequisitionListView.productListTable.headers.price",quantityHeader:"RequisitionList.RequisitionListView.productListTable.headers.quantity",subtotalHeader:"RequisitionList.RequisitionListView.productListTable.headers.subtotal",actionsHeader:"RequisitionList.RequisitionListView.productListTable.headers.actions",actionAddToCart:"RequisitionList.RequisitionListView.actionAddToCart",actionDelete:"RequisitionList.RequisitionListView.actionDelete",itemQuantity:"RequisitionList.RequisitionListView.productListTable.itemQuantity"}),P=[{label:"#",key:"index"},{label:"item",key:"item"},{label:g.priceHeader,key:"price"},{label:g.quantityHeader,key:"quantity"},{label:g.subtotalHeader,key:"subtotal"}];C&&(P.unshift({label:"",key:"checkbox"}),P.push({label:g.actionsHeader,key:"actions"}));const B=(n,s)=>{const r=n.target.checked;w(s.uid,r)},x=l.map((n,s)=>{var r,_,N,$,W,j,L,A,Z,H,f,M,D,F,Q,G,t;return{index:e("span",{children:(m-1)*c+s+1}),item:E("div",{style:"display: inline-block",children:[e("div",{style:"float: left;",children:e(ut,{className:"requisition-list-view-product-list-table__checkbox",name:"itemSelected","data-testid":`item-checkbox-${n.sku}`,onChange:i=>B(i,n),value:n.sku,checked:p.has(n.uid)})}),e("div",{className:"requisition-list-view-product-list-table__product-name",children:((r=n.product)==null?void 0:r.name)||n.sku}),e("div",{className:"requisition-list-view-product-list-table__sku",children:n.sku})]}),price:e(U,{className:"requisition-list-view-product-list-table__price",amount:(W=($=(N=(_=n.product)==null?void 0:_.price)==null?void 0:N.final)==null?void 0:$.amount)==null?void 0:W.value,currency:(Z=(A=(L=(j=n.product)==null?void 0:j.price)==null?void 0:L.final)==null?void 0:A.amount)==null?void 0:Z.currency}),subtotal:e(U,{className:"requisition-list-view-product-list-table__price",amount:((D=(M=(f=(H=n.product)==null?void 0:H.price)==null?void 0:f.final)==null?void 0:M.amount)==null?void 0:D.value)*n.quantity,currency:(t=(G=(Q=(F=n.product)==null?void 0:F.price)==null?void 0:Q.final)==null?void 0:G.amount)==null?void 0:t.currency}),quantity:e("span",{className:"requisition-list-view-product-list-table__quantity",children:e(lt,{disabled:!1,children:e(ct,{id:"requisition-list-item-quantity",name:"quantity",type:"text",value:n.quantity,onBlur:i=>{const u=Number.parseInt(i.target.value,10);v(n.uid,u)}})})}),actions:E("div",{className:"requisition-list-view__bulk-actions",children:[e(T,{type:"button",onClick:()=>h([n.uid]),icon:e(J,{source:et}),"data-testid":"product-list-table-add-to-cart-button"}),e(T,{type:"button",variant:"secondary",icon:e(J,{source:it}),onClick:()=>a([n.uid]),"data-testid":"product-list-table-delete-button"})]})}}),I=e(dt,{columns:P,rowData:x,"data-testid":"product-list-table",mobileLayout:"stacked"});return e(Lt,{node:wt("div",{}),className:qt(["requisition-list-view-product-list-table-container",o]),"data-testid":"product-list-table-container",...k,children:I})},Rt=({selectedItems:o,deletingItemId:l,addingToCartItemId:p,bulkAddingToCart:m,updatingQuantityItemId:c,onSelectAll:C,onSelectNone:w,onBulkAddToCart:v,onBulkDelete:h})=>{const a=X({statusDeleting:"RequisitionList.RequisitionListView.statusDeleting",actionDeleteSelected:"RequisitionList.RequisitionListView.actionDeleteSelected",actionSelectAll:"RequisitionList.RequisitionListView.actionSelectAll",actionSelectNone:"RequisitionList.RequisitionListView.actionSelectNone",actionAddToCart:"RequisitionList.RequisitionListView.actionAddToCart",actionAddSelectedToCart:"RequisitionList.RequisitionListView.actionAddSelectedToCart",statusBulkAddingToCart:"RequisitionList.RequisitionListView.statusBulkAddingToCart"});return E("div",{class:"requisition-list-view__bulk-actions",children:[e(T,{"data-testid":"bulk-actions-select-all-btn",type:"button",variant:"secondary",onClick:C,disabled:l!==null||p!==null||m||c!==null,children:a.actionSelectAll}),e(T,{"data-testid":"bulk-actions-select-none-btn",type:"button",variant:"secondary",onClick:w,disabled:l!==null||p!==null||m||c!==null||o.size===0,children:a.actionSelectNone}),o.size>0&&e(T,{"data-testid":"bulk-actions-add-to-cart-btn",type:"button",variant:"primary",onClick:v,icon:e(J,{source:et}),disabled:l!==null||p!==null||m||c!==null,children:m?a.statusBulkAddingToCart:`${a.actionAddSelectedToCart} (${o.size})`}),o.size>0&&e(T,{"data-testid":"bulk-actions-delete-all-btn",type:"button",variant:"secondary",onClick:h,icon:e(J,{source:it}),disabled:l!==null||p!==null||m||c!==null,children:l==="bulk"?a.statusDeleting:`${a.actionDeleteSelected} (${o.size})`})]})},Bt=({requisitionList:o,skipProductLoading:l=!1,pageSize:p=10})=>{const[m,c]=S(!1),[C,w]=S(null),[v,h]=S(null),[a,k]=S(!1),[g,P]=S(null),[B,x]=S(!1),[I,n]=S(p),{currentRequisitionList:s,setCurrentRequisitionList:r,selectedItems:_,setSelectedItems:N,handleItemSelection:$,handleSelectAll:W,handleSelectNone:j}=kt(o),L=X({emptyRequisitionList:"RequisitionList.RequisitionListView.emptyRequisitionList",errorLoadingProducts:"RequisitionList.RequisitionListView.errorLoadingProducts",errorLoadPage:"RequisitionList.RequisitionListView.errorLoadPage"}),{alert:A,setAlert:Z,handleRequisitionListAlert:H}=ft();K(()=>{const t=q.on("requisitionList/data",i=>{r(i),N(new Set)});return q.on("requisitionList/alert",H),()=>{t==null||t.off()}},[H,r,N]),K(()=>{n(p)},[p]);const f=V(async t=>{var u,R;const i=((u=t.items)==null?void 0:u.map(b=>b.sku))||[];if(i.length===0)return t;c(!0);try{const b=await nt(i);if(b){const z=new Map;return b.forEach(y=>{z.set(y.sku,y)}),{...t,items:(R=t.items)==null?void 0:R.map(y=>({...y,product:z.get(y.sku)||y.product}))}}return console.warn("No products found"),t}catch(b){return console.warn(b instanceof Error?b.message:L.errorLoadingProducts),t}finally{c(!1)}},[L.errorLoadingProducts]);K(()=>{if(l)return;(async()=>{const i=await f(o);r(i)})()},[o,f,l,r]);const M=V(async t=>{t&&t.length===1?(k(!1),h(t)):(k(!0),h(null));try{const i=await ot(s.uid,t);i&&i.length>0?q.emit("requisitionList/alert",{action:"move",type:"error",context:"product",message:i.map(u=>u.message)}):q.emit("requisitionList/alert",{action:"move",type:"success",context:"product"})}catch{q.emit("requisitionList/alert",{action:"move",type:"error",context:"product"})}finally{h(null),k(!1)}},[s]),D=V(async t=>{t&&t.length===1?w(t[0]):w("bulk");try{await at(s.uid,t)?q.emit("requisitionList/alert",{action:"delete",type:"success",context:"product"}):q.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}catch{q.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}finally{w(null)}},[s.uid]),F=V(async(t,i)=>{var u;P(t);try{const R=(u=s.items)==null?void 0:u.find(y=>y.uid===t);if(!R){q.emit("requisitionList/alert",{action:"update",type:"error",context:"product"});return}const b={item_id:R.uid,entered_options:R.entered_options,selected_options:R.selected_options,quantity:i},z=await rt(s.uid,[b]);if(z){const y=await f(z);r(y),q.emit("requisitionList/alert",{action:"update",type:"success",context:"product"})}else q.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}catch{q.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}finally{P(null)}},[s.uid,s.items,f,r]),Q=V(async t=>{x(!0);try{const i=await Y(s.uid,t,I);if(i){const u=await f(i);r(u)}else console.warn(L.errorLoadPage)}catch(i){console.warn(i instanceof Error?i.message:L.errorLoadPage)}finally{x(!1)}},[s.uid,f,I,L,r]),G=V(async t=>{n(t),x(!0);try{const i=await Y(s.uid,1,t);if(i){const u=await f(i);r(u)}else console.warn(L.errorLoadPage)}catch{console.warn(L.errorLoadPage)}finally{x(!1)}},[s.uid,f,L,r]);return E("div",{className:"requisition-list-view__container",children:[e(pt,{"aria-label":s.name,role:"region",title:s.name}),s.items_count===0?e(gt,{textContent:`${s.name} ${L.emptyRequisitionList}`}):E(st,{children:[A&&e(mt,{heading:A.description,type:A.type,variant:"primary",onDismiss:()=>Z(null)}),e(Rt,{selectedItems:_,deletingItemId:C,addingToCartItemId:v,bulkAddingToCart:a,updatingQuantityItemId:g,onSelectAll:W,onSelectNone:j,onBulkAddToCart:()=>M(Array.from(_)),onBulkDelete:()=>D(Array.from(_))}),e(bt,{items:s.items,selectedItems:_,currentPage:s.page_info.current_page,pageSize:s.page_info.page_size,handleItemSelection:$,handleUpdateQuantity:F,onAddToCart:M,onDeleteItem:D}),s.page_info&&e("div",{className:"requisition-list-view__pagination",children:E("div",{className:"requisition-list-view__pagination-controls",children:[e(yt,{currentPageSize:s.page_info.page_size,onPageSizeChange:G,disabled:B||m}),s.page_info.total_pages>1&&e(ht,{totalPages:s.page_info.total_pages,currentPage:s.page_info.current_page,onChange:Q,disabled:B||m})]})})]})]})};export{Bt as RequisitionListView,Bt as default};
4
4
  //# sourceMappingURL=RequisitionListView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequisitionListView.js","sources":["/@dropins/storefront-requisition-list/src/components/RequisitionListView/RequisitionListView.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListView/RequisitionListView.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 *******************************************************************/\nimport { HTMLAttributes } from 'preact/compat';\nimport { Item } from '@/requisitionList/data/models/item';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport {\n Button,\n InLineAlert,\n Pagination,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/requisitionList/components/RequisitionListView/RequisitionListView.css';\n\nexport interface RequisitionListViewProps\n extends HTMLAttributes<HTMLDivElement> {\n currentRequisitionList: RequisitionList;\n loadingProducts?: boolean;\n productError?: string | null;\n selectedItems: Set<string>;\n deletingItemId: string | null;\n deleteError: string | null;\n addingToCartItemId: string | null;\n addToCartError: string | null;\n bulkAddingToCart: boolean;\n updatingQuantityItemId: string | null;\n updateQuantityError: string | null;\n onItemSelection: (itemUid: string, isSelected: boolean) => void;\n onSelectAll: () => void;\n onSelectNone: () => void;\n onAddToCart: (itemUid: string) => void;\n onBulkAddToCart: () => void;\n onBulkDelete: () => void;\n onUpdateQuantity: (itemUid: string, newQuantity: number) => void;\n onDeleteItem: (itemUid: string) => void;\n onPageChange?: (page: number) => void;\n loadingPage?: boolean;\n routeRequisitionListGrid?: () => string | void;\n}\n\nexport const RequisitionListView = ({\n currentRequisitionList,\n loadingProducts,\n productError,\n selectedItems,\n deletingItemId,\n deleteError,\n addingToCartItemId,\n addToCartError,\n bulkAddingToCart,\n updatingQuantityItemId,\n updateQuantityError,\n onItemSelection,\n onSelectAll,\n onSelectNone,\n onAddToCart,\n onBulkAddToCart,\n onBulkDelete,\n onUpdateQuantity,\n onDeleteItem,\n onPageChange,\n loadingPage = false,\n routeRequisitionListGrid,\n}: RequisitionListViewProps) => {\n const translations = useText({\n actionDelete: `RequisitionList.RequisitionListView.actionDelete`,\n statusDeleting: `RequisitionList.RequisitionListView.statusDeleting`,\n errorDelete: `RequisitionList.RequisitionListView.errorDelete`,\n actionDeleteSelected: `RequisitionList.RequisitionListView.actionDeleteSelected`,\n actionSelectAll: `RequisitionList.RequisitionListView.actionSelectAll`,\n actionSelectNone: `RequisitionList.RequisitionListView.actionSelectNone`,\n actionAddToCart: `RequisitionList.RequisitionListView.actionAddToCart`,\n statusAddingToCart: `RequisitionList.RequisitionListView.statusAddingToCart`,\n errorAddToCart: `RequisitionList.RequisitionListView.errorAddToCart`,\n successAddToCart: `RequisitionList.RequisitionListView.successAddToCart`,\n actionAddSelectedToCart: `RequisitionList.RequisitionListView.actionAddSelectedToCart`,\n statusBulkAddingToCart: `RequisitionList.RequisitionListView.statusBulkAddingToCart`,\n errorUpdateQuantity: `RequisitionList.RequisitionListView.errorUpdateQuantity`,\n successUpdateQuantity: `RequisitionList.RequisitionListView.successUpdateQuantity`,\n actionBackToRequisitionListsOverview: `RequisitionList.RequisitionListView.actionBackToRequisitionListsOverview`,\n });\n return (\n <div>\n <h3>\n {currentRequisitionList.name}\n {routeRequisitionListGrid && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={routeRequisitionListGrid}\n >\n {translations.actionBackToRequisitionListsOverview}\n </Button>\n )}\n </h3>\n {deleteError && (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n heading={deleteError}\n data-testid=\"requisition-list-view-delete-error\"\n />\n )}\n {addToCartError && (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n heading={addToCartError}\n data-testid=\"requisition-list-view-add-to-cart-error\"\n />\n )}\n {updateQuantityError && (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n heading={updateQuantityError}\n data-testid=\"requisition-list-view-update-quantity-error\"\n />\n )}\n {productError && (\n <InLineAlert\n type=\"error\"\n variant=\"primary\"\n heading={productError}\n data-testid=\"requisition-list-view-product-error\"\n />\n )}\n\n {/* Bulk actions */}\n <div class=\"requisition-list-view__bulk-actions\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={onSelectAll}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {translations.actionSelectAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={onSelectNone}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {translations.actionSelectNone}\n </Button>\n {selectedItems.size > 0 && (\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={onBulkAddToCart}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {bulkAddingToCart\n ? translations.statusBulkAddingToCart\n : `${translations.actionAddSelectedToCart} (${selectedItems.size})`}\n </Button>\n )}\n {selectedItems.size > 0 && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={onBulkDelete}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {deletingItemId === 'bulk'\n ? translations.statusDeleting\n : `${translations.actionDeleteSelected} (${selectedItems.size})`}\n </Button>\n )}\n </div>\n\n {/* Display loading state */}\n {loadingProducts && <div>Loading products...</div>}\n\n {/* Display requisition list items with enriched product data */}\n {!loadingProducts && currentRequisitionList && (\n <div>\n <h4>\n Requisition List Items ({currentRequisitionList.items_count || 0})\n </h4>\n <ul>\n {currentRequisitionList?.items?.map((item: Item) => (\n <li className=\"requisition-list-view__item\" key={item.uid}>\n <input\n type=\"checkbox\"\n checked={selectedItems.has(item.uid)}\n onChange={(e) => onItemSelection(item.uid, e.target.checked)}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n />\n <div className=\"item-info\">\n <div>\n <strong>Item UID:</strong> {item.uid}\n </div>\n {item.product && (\n <div className=\"product-info\">\n <div>\n <strong>SKU:</strong> {item.product.sku}{' '}\n <strong>{item.product.name}</strong>\n </div>\n {item.product.images &&\n item.product.images.length > 0 && (\n <div>\n <img\n key={0}\n src={item.product.images[0].url}\n alt={item.product.images[0].label}\n style={{\n maxWidth: '50px',\n maxHeight: '50px',\n margin: '2px',\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n <input\n type=\"number\"\n min=\"1\"\n value={item.quantity}\n onChange={(e) => {\n const newQuantity = parseInt(e.currentTarget.value, 10);\n if (newQuantity > 0 && newQuantity !== item.quantity) {\n onUpdateQuantity(item.uid, newQuantity);\n }\n }}\n disabled={\n updatingQuantityItemId === item.uid ||\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart\n }\n data-testid={`quantity-input-${item.uid}`}\n />\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={() => onAddToCart(item.uid)}\n disabled={\n addingToCartItemId === item.uid ||\n deletingItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n data-testid=\"requisition-list-view-add-to-cart-button\"\n >\n {addingToCartItemId === item.uid\n ? translations.statusAddingToCart\n : translations.actionAddToCart}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={() => onDeleteItem(item.uid)}\n disabled={\n deletingItemId === item.uid ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n data-testid=\"requisition-list-view-delete-item-button\"\n >\n {deletingItemId === item.uid\n ? translations.statusDeleting\n : translations.actionDelete}\n </Button>\n </li>\n ))}\n </ul>\n\n {/* Pagination */}\n {currentRequisitionList.page_info &&\n currentRequisitionList.page_info.total_pages > 1 && (\n <div className=\"requisition-list-view__pagination\">\n <Pagination\n totalPages={currentRequisitionList.page_info.total_pages}\n currentPage={currentRequisitionList.page_info.current_page}\n onChange={onPageChange}\n disabled={loadingPage || loadingProducts}\n />\n </div>\n )}\n </div>\n )}\n </div>\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 {\n HTMLAttributes,\n useState,\n useCallback,\n useEffect,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { Item, Product } from '@/requisitionList/data/models/item';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { deleteRequisitionListItems } from '@/requisitionList/api/deleteRequisitionListItems';\nimport { addRequisitionListItemsToCart } from '@/requisitionList/api/addRequisitionListItemsToCart';\nimport { updateRequisitionListItems } from '@/requisitionList/api/updateRequisitionListItems';\nimport { getProductData } from '@/requisitionList/api/getProductData';\nimport { getRequisitionList } from '@/requisitionList/api/getRequisitionList';\nimport { RequisitionListView as RequisitionListViewComponent } from '@/requisitionList/components/RequisitionListView/RequisitionListView';\n\nexport interface RequisitionListViewProps\n extends HTMLAttributes<HTMLDivElement> {\n requisitionList: RequisitionList;\n routeRequisitionListGrid?: () => string | void;\n /**\n * When true, skips automatic product data fetching on component mount.\n * Used in tests to prevent API calls.\n */\n skipProductLoading?: boolean;\n /**\n * Number of items per page for pagination.\n * Defaults to 10.\n */\n pageSize?: number;\n}\n\nexport const RequisitionListView: Container<RequisitionListViewProps> = ({\n requisitionList,\n routeRequisitionListGrid,\n skipProductLoading = false,\n pageSize = 10,\n}: RequisitionListViewProps) => {\n const [currentRequisitionList, setCurrentRequisitionList] =\n useState<RequisitionList>(requisitionList);\n const [loadingProducts, setLoadingProducts] = useState<boolean>(false);\n const [productError, setProductError] = useState<string | null>(null);\n const [deletingItemId, setDeletingItemId] = useState<string | null>(null);\n const [deleteError, setDeleteError] = useState<string | null>(null);\n const [selectedItems, setSelectedItems] = useState<Set<string>>(new Set());\n const [addingToCartItemId, setAddingToCartItemId] = useState<string | null>(\n null\n );\n const [addToCartError, setAddToCartError] = useState<string | null>(null);\n const [bulkAddingToCart, setBulkAddingToCart] = useState<boolean>(false);\n const [updatingQuantityItemId, setUpdatingQuantityItemId] = useState<\n string | null\n >(null);\n const [updateQuantityError, setUpdateQuantityError] = useState<string | null>(\n null\n );\n const [loadingPage, setLoadingPage] = useState<boolean>(false);\n\n const translations = useText({\n errorDelete: `RequisitionList.RequisitionListView.errorDelete`,\n errorAddToCart: `RequisitionList.RequisitionListView.errorAddToCart`,\n errorUpdateQuantity: `RequisitionList.RequisitionListView.errorUpdateQuantity`,\n errorLoadingProducts: `RequisitionList.RequisitionListView.errorLoadingProducts`,\n });\n\n // Sync prop changes to local state\n useEffect(() => {\n setCurrentRequisitionList(requisitionList);\n // Clear selections when requisition list changes\n setSelectedItems(new Set());\n }, [requisitionList]);\n\n // Function to fetch and merge product data\n const fetchAndMergeProducts = useCallback(\n async (baseRequisitionList: RequisitionList) => {\n // Extract SKUs from requisition list items\n const productSkus =\n baseRequisitionList.items?.map((item: Item) => item.sku) || [];\n\n if (productSkus.length === 0) {\n return baseRequisitionList;\n }\n\n setLoadingProducts(true);\n setProductError(null);\n\n try {\n const fetchedProducts = await getProductData(productSkus);\n if (fetchedProducts) {\n // Create a map of SKU to Product for easy lookup\n const productMap = new Map<string, Product>();\n fetchedProducts.forEach((product: Product) => {\n productMap.set(product.sku, product);\n });\n\n // Update requisition list items with fetched product data\n const updatedRequisitionList = {\n ...baseRequisitionList,\n items: baseRequisitionList.items?.map((item: Item) => ({\n ...item,\n product: productMap.get(item.sku) || item.product, // Use fetched product or keep existing\n })),\n };\n\n return updatedRequisitionList;\n }\n setProductError('No products found');\n return baseRequisitionList;\n } catch (error) {\n setProductError(\n error instanceof Error\n ? error.message\n : translations.errorLoadingProducts\n );\n return baseRequisitionList;\n } finally {\n setLoadingProducts(false);\n }\n },\n [translations.errorLoadingProducts]\n );\n\n // Fetch products from requisition list items on initial load\n useEffect(() => {\n // Skip product loading in test mode\n if (skipProductLoading) {\n return;\n }\n\n const loadInitialProducts = async () => {\n const updatedList = await fetchAndMergeProducts(requisitionList);\n setCurrentRequisitionList(updatedList);\n };\n\n loadInitialProducts();\n }, [requisitionList, fetchAndMergeProducts, skipProductLoading]);\n\n const handleItemSelection = useCallback(\n (itemUid: string, isSelected: boolean) => {\n setSelectedItems((prev: Set<string>) => {\n const newSet = new Set(prev);\n if (isSelected) {\n newSet.add(itemUid);\n } else {\n newSet.delete(itemUid);\n }\n return newSet;\n });\n },\n []\n );\n\n const handleSelectAll = useCallback(() => {\n const allItemUids =\n currentRequisitionList.items?.map((item: Item) => item.uid) || [];\n setSelectedItems(new Set(allItemUids));\n }, [currentRequisitionList.items]);\n\n const handleSelectNone = useCallback(() => {\n setSelectedItems(new Set());\n }, []);\n\n const handleAddToCart = useCallback(\n async (itemUid: string) => {\n setAddingToCartItemId(itemUid);\n setAddToCartError(null);\n\n try {\n const errors = await addRequisitionListItemsToCart(\n currentRequisitionList.uid,\n [itemUid]\n );\n\n if (errors && errors.length > 0) {\n setAddToCartError(translations.errorAddToCart);\n } else {\n // Success - could show a success message or remove the item from the list\n // For now, we'll just clear the error state\n setAddToCartError(null);\n }\n } catch (error) {\n setAddToCartError(\n error instanceof Error ? error.message : translations.errorAddToCart\n );\n } finally {\n setAddingToCartItemId(null);\n }\n },\n [currentRequisitionList.uid, translations.errorAddToCart]\n );\n\n const handleBulkAddToCart = useCallback(async () => {\n setBulkAddingToCart(true);\n setAddToCartError(null);\n\n try {\n const errors = await addRequisitionListItemsToCart(\n currentRequisitionList.uid,\n Array.from(selectedItems)\n );\n\n if (errors && errors.length > 0) {\n setAddToCartError(translations.errorAddToCart);\n } else {\n // Success - could show a success message\n setAddToCartError(null);\n // Optionally clear selections after successful bulk add\n setSelectedItems(new Set());\n }\n } catch (error) {\n setAddToCartError(\n error instanceof Error ? error.message : translations.errorAddToCart\n );\n } finally {\n setBulkAddingToCart(false);\n }\n }, [currentRequisitionList.uid, selectedItems, translations.errorAddToCart]);\n\n const handleBulkDelete = useCallback(async () => {\n setDeletingItemId('bulk');\n setDeleteError(null);\n\n try {\n const updatedRequisitionList = await deleteRequisitionListItems(\n currentRequisitionList.uid,\n Array.from(selectedItems)\n );\n\n if (updatedRequisitionList) {\n setCurrentRequisitionList(updatedRequisitionList);\n setSelectedItems(new Set());\n } else {\n setDeleteError(translations.errorDelete);\n }\n } catch (error) {\n setDeleteError(\n error instanceof Error ? error.message : translations.errorDelete\n );\n } finally {\n setDeletingItemId(null);\n }\n }, [currentRequisitionList.uid, selectedItems, translations.errorDelete]);\n\n const handleUpdateQuantity = useCallback(\n async (itemUid: string, newQuantity: number) => {\n setUpdatingQuantityItemId(itemUid);\n setUpdateQuantityError(null);\n\n try {\n // Find the current item to update\n const currentItem = currentRequisitionList.items?.find(\n (item: Item) => item.uid === itemUid\n );\n if (!currentItem) {\n setUpdateQuantityError(translations.errorUpdateQuantity);\n return;\n }\n\n // Create updated item with new quantity\n const updatedItem = {\n item_id: currentItem.uid,\n entered_options: currentItem.entered_options,\n selected_options: currentItem.selected_options,\n quantity: newQuantity,\n };\n\n const updatedRequisitionList = await updateRequisitionListItems(\n currentRequisitionList.uid,\n [updatedItem]\n );\n\n if (updatedRequisitionList) {\n // Reload product data with updated quantities\n const enrichedRequisitionList = await fetchAndMergeProducts(\n updatedRequisitionList\n );\n setCurrentRequisitionList(enrichedRequisitionList);\n setUpdateQuantityError(null);\n } else {\n setUpdateQuantityError(translations.errorUpdateQuantity);\n }\n } catch (error) {\n setUpdateQuantityError(\n error instanceof Error\n ? error.message\n : translations.errorUpdateQuantity\n );\n } finally {\n setUpdatingQuantityItemId(null);\n }\n },\n [\n currentRequisitionList.uid,\n currentRequisitionList.items,\n translations.errorUpdateQuantity,\n fetchAndMergeProducts,\n ]\n );\n\n const handleDeleteItem = useCallback(\n async (itemUid: string) => {\n setDeletingItemId(itemUid);\n setDeleteError(null);\n\n try {\n const updatedRequisitionList = await deleteRequisitionListItems(\n currentRequisitionList.uid,\n [itemUid]\n );\n\n if (updatedRequisitionList) {\n setCurrentRequisitionList(updatedRequisitionList);\n } else {\n setDeleteError(translations.errorDelete);\n }\n } catch (error) {\n setDeleteError(\n error instanceof Error ? error.message : translations.errorDelete\n );\n } finally {\n setDeletingItemId(null);\n }\n },\n [currentRequisitionList.uid, translations.errorDelete]\n );\n\n const handlePageChange = useCallback(\n async (page: number) => {\n setLoadingPage(true);\n setProductError(null);\n\n try {\n const updatedRequisitionList = await getRequisitionList(\n currentRequisitionList.uid,\n page,\n pageSize\n );\n\n if (updatedRequisitionList) {\n // Fetch product data for the new page\n const updatedListWithProducts = await fetchAndMergeProducts(\n updatedRequisitionList\n );\n setCurrentRequisitionList(updatedListWithProducts);\n } else {\n setProductError('Failed to load page');\n }\n } catch (error) {\n setProductError(\n error instanceof Error ? error.message : 'Failed to load page'\n );\n } finally {\n setLoadingPage(false);\n }\n },\n [currentRequisitionList.uid, fetchAndMergeProducts, pageSize]\n );\n\n return (\n <RequisitionListViewComponent\n currentRequisitionList={currentRequisitionList}\n loadingProducts={loadingProducts}\n productError={productError}\n selectedItems={selectedItems}\n deletingItemId={deletingItemId}\n deleteError={deleteError}\n addingToCartItemId={addingToCartItemId}\n addToCartError={addToCartError}\n bulkAddingToCart={bulkAddingToCart}\n updatingQuantityItemId={updatingQuantityItemId}\n updateQuantityError={updateQuantityError}\n onItemSelection={handleItemSelection}\n onSelectAll={handleSelectAll}\n onSelectNone={handleSelectNone}\n onAddToCart={handleAddToCart}\n onBulkAddToCart={handleBulkAddToCart}\n onBulkDelete={handleBulkDelete}\n onUpdateQuantity={handleUpdateQuantity}\n onDeleteItem={handleDeleteItem}\n onPageChange={handlePageChange}\n loadingPage={loadingPage}\n routeRequisitionListGrid={routeRequisitionListGrid}\n />\n );\n};\n"],"names":["RequisitionListView","currentRequisitionList","loadingProducts","productError","selectedItems","deletingItemId","deleteError","addingToCartItemId","addToCartError","bulkAddingToCart","updatingQuantityItemId","updateQuantityError","onItemSelection","onSelectAll","onSelectNone","onAddToCart","onBulkAddToCart","onBulkDelete","onUpdateQuantity","onDeleteItem","onPageChange","loadingPage","routeRequisitionListGrid","translations","useText","jsxs","jsx","Button","InLineAlert","_a","item","e","newQuantity","Pagination","requisitionList","skipProductLoading","pageSize","setCurrentRequisitionList","useState","setLoadingProducts","setProductError","setDeletingItemId","setDeleteError","setSelectedItems","setAddingToCartItemId","setAddToCartError","setBulkAddingToCart","setUpdatingQuantityItemId","setUpdateQuantityError","setLoadingPage","useEffect","fetchAndMergeProducts","useCallback","baseRequisitionList","productSkus","fetchedProducts","getProductData","productMap","product","_b","error","updatedList","handleItemSelection","itemUid","isSelected","prev","newSet","handleSelectAll","allItemUids","handleSelectNone","handleAddToCart","errors","addRequisitionListItemsToCart","handleBulkAddToCart","handleBulkDelete","updatedRequisitionList","deleteRequisitionListItems","handleUpdateQuantity","currentItem","updatedItem","updateRequisitionListItems","enrichedRequisitionList","handleDeleteItem","handlePageChange","page","getRequisitionList","updatedListWithProducts","RequisitionListViewComponent"],"mappings":"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"}
1
+ {"version":3,"file":"RequisitionListView.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListSelectedItems.ts","../../node_modules/@adobe-commerce/elsie/src/icons/Cart.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Trash.svg","/@dropins/storefront-requisition-list/src/components/ProductListTable/ProductListTable.tsx","/@dropins/storefront-requisition-list/src/components/BatchActions/BatchActions.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListView/RequisitionListView.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 { useState, useCallback } from 'preact/hooks';\nimport { Item } from '@/requisitionList/data/models/item';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\n\ntype UseRequisitionListSelectedItems = {\n currentRequisitionList: RequisitionList;\n setCurrentRequisitionList: (\n value: RequisitionList | ((prev: RequisitionList) => RequisitionList)\n ) => void;\n selectedItems: Set<string>;\n setSelectedItems: (\n value: Set<string> | ((prev: Set<string>) => Set<string>)\n ) => void;\n handleItemSelection: (itemUid: string, isSelected: boolean) => void;\n handleSelectAll: () => void;\n handleSelectNone: () => void;\n};\n\nexport function useRequisitionListSelectedItems(\n requisitionList: RequisitionList\n): UseRequisitionListSelectedItems {\n const [currentRequisitionList, setCurrentRequisitionList] =\n useState<RequisitionList>(requisitionList);\n const [selectedItems, setSelectedItems] = useState<Set<string>>(new Set());\n\n const handleItemSelection = useCallback(\n (itemUid: string, isSelected: boolean) => {\n setSelectedItems((prev: Set<string>) => {\n const newSet = new Set(prev);\n if (isSelected) {\n newSet.add(itemUid);\n } else {\n newSet.delete(itemUid);\n }\n return newSet;\n });\n },\n []\n );\n\n const handleSelectAll = useCallback(() => {\n const allItemUids = currentRequisitionList.items?.map(\n (item: Item) => item.uid\n );\n setSelectedItems(new Set(allItemUids));\n }, [currentRequisitionList]);\n\n const handleSelectNone = useCallback(() => {\n setSelectedItems(new Set());\n }, []);\n\n return {\n currentRequisitionList,\n setCurrentRequisitionList,\n selectedItems,\n setSelectedItems,\n handleItemSelection,\n handleSelectAll,\n handleSelectNone,\n };\n}\n","import * as React from \"react\";\nconst SvgCart = (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(\"g\", { clipPath: \"url(#clip0_102_196)\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M18.3601 18.16H6.5601L4.8801 3H2.3501M19.6701 19.59C19.6701 20.3687 19.0388 21 18.2601 21C17.4814 21 16.8501 20.3687 16.8501 19.59C16.8501 18.8113 17.4814 18.18 18.2601 18.18C19.0388 18.18 19.6701 18.8113 19.6701 19.59ZM7.42986 19.59C7.42986 20.3687 6.79858 21 6.01986 21C5.24114 21 4.60986 20.3687 4.60986 19.59C4.60986 18.8113 5.24114 18.18 6.01986 18.18C6.79858 18.18 7.42986 18.8113 7.42986 19.59Z\", stroke: \"currentColor\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M5.25 6.37L20.89 8.06L20.14 14.8H6.19\", stroke: \"currentColor\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_102_196\" }, /* @__PURE__ */ React.createElement(\"rect\", { vectorEffect: \"non-scaling-stroke\", width: 19.29, height: 19.5, fill: \"white\", transform: \"translate(2.3501 2.25)\" }))));\nexport default SvgCart;\n","import * as React from \"react\";\nconst SvgTrash = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1 5H23\", stroke: \"currentColor\", strokeWidth: 1.5, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.3674 22H6.63446C5.67952 22 4.88992 21.2688 4.8379 20.3338L4 5H20L19.1621 20.3338C19.1119 21.2688 18.3223 22 17.3655 22H17.3674Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.87189 2H14.1281C14.6085 2 15 2.39766 15 2.88889V5H9V2.88889C9 2.39912 9.39006 2 9.87189 2Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.87402 8.58057L9.39348 17.682\", stroke: \"currentColor\", strokeWidth: 1.5, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.6673 8.58057L14.146 17.682\", stroke: \"currentColor\", strokeWidth: 1.5, strokeMiterlimit: 10 }));\nexport default SvgTrash;\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, h } from 'preact';\nimport { HTMLAttributes, ChangeEvent } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport {\n Icon,\n Table,\n Checkbox,\n Price,\n Button,\n Field,\n Input,\n} from '@adobe-commerce/elsie/components';\nimport { Trash, Cart } from '@adobe-commerce/elsie/icons';\nimport '@/requisitionList/components/ProductListTable/ProductListTable.css';\nimport { RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { Item } from '@/requisitionList/data/models/item';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface ProductListTableProps\n extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {\n className?: string;\n items: RequisitionListModel['items'];\n selectedItems: Set<string>;\n currentPage: number;\n pageSize: number;\n canEdit?: boolean;\n handleItemSelection: (itemUid: string, isSelected: boolean) => void;\n handleUpdateQuantity: (itemUid: string, newQuantity: number) => void;\n onAddToCart: (itemUids: string[] | undefined) => void;\n onDeleteItem: (itemUids: string[] | undefined) => void;\n}\n\nexport const ProductListTable: FunctionComponent<ProductListTableProps> = ({\n className,\n items,\n selectedItems,\n currentPage,\n pageSize,\n canEdit = true,\n handleItemSelection,\n handleUpdateQuantity,\n onAddToCart,\n onDeleteItem,\n ...props\n}) => {\n const translations = useText({\n productNameHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.productName',\n skuHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.sku',\n priceHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.price',\n quantityHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.quantity',\n subtotalHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.subtotal',\n actionsHeader:\n 'RequisitionList.RequisitionListView.productListTable.headers.actions',\n actionAddToCart: 'RequisitionList.RequisitionListView.actionAddToCart',\n actionDelete: 'RequisitionList.RequisitionListView.actionDelete',\n itemQuantity:\n 'RequisitionList.RequisitionListView.productListTable.itemQuantity',\n });\n const columns = [\n {\n label: '#',\n key: 'index',\n },\n {\n label: 'item',\n key: 'item',\n },\n {\n label: translations.priceHeader,\n key: 'price',\n },\n {\n label: translations.quantityHeader,\n key: 'quantity',\n },\n {\n label: translations.subtotalHeader,\n key: 'subtotal',\n },\n ];\n\n if (canEdit) {\n columns.unshift({\n label: '',\n key: 'checkbox',\n });\n columns.push({\n label: translations.actionsHeader,\n key: 'actions',\n });\n }\n\n const handleItemCheckboxChange = (\n event: ChangeEvent<HTMLInputElement>,\n item: Item\n ) => {\n const isSelected = (event.target as HTMLInputElement).checked;\n handleItemSelection(item.uid, isSelected);\n };\n\n const rowData = items.map((item: Item, index: number) => {\n return {\n index: <span>{(currentPage - 1) * pageSize + index + 1}</span>,\n item: (\n <div style=\"display: inline-block\">\n <div style=\"float: left;\">\n <Checkbox\n className=\"requisition-list-view-product-list-table__checkbox\"\n name=\"itemSelected\"\n data-testid={`item-checkbox-${item.sku}`}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleItemCheckboxChange(e, item)\n }\n value={item.sku}\n checked={selectedItems.has(item.uid)}\n />\n </div>\n\n <div className=\"requisition-list-view-product-list-table__product-name\">\n {item.product?.name || item.sku}\n </div>\n <div className=\"requisition-list-view-product-list-table__sku\">\n {item.sku}\n </div>\n </div>\n ),\n price: (\n <Price\n className=\"requisition-list-view-product-list-table__price\"\n amount={item.product?.price?.final?.amount?.value}\n currency={item.product?.price?.final?.amount?.currency}\n />\n ),\n subtotal: (\n <Price\n className=\"requisition-list-view-product-list-table__price\"\n amount={item.product?.price?.final?.amount?.value * item.quantity}\n currency={item.product?.price?.final?.amount?.currency}\n />\n ),\n quantity: (\n <span className=\"requisition-list-view-product-list-table__quantity\">\n <Field disabled={false}>\n <Input\n id=\"requisition-list-item-quantity\"\n name=\"quantity\"\n type=\"text\"\n value={item.quantity}\n onBlur={(e: FocusEvent) => {\n const newValue = Number.parseInt(\n (e.target as HTMLInputElement).value,\n 10\n );\n handleUpdateQuantity(item.uid, newValue);\n }}\n />\n </Field>\n </span>\n ),\n actions: (\n <div className=\"requisition-list-view__bulk-actions\">\n <Button\n type=\"button\"\n onClick={() => onAddToCart([item.uid])}\n icon={<Icon source={Cart} />}\n data-testid=\"product-list-table-add-to-cart-button\"\n />\n <Button\n type=\"button\"\n variant=\"secondary\"\n icon={<Icon source={Trash} />}\n onClick={() => onDeleteItem([item.uid])}\n data-testid=\"product-list-table-delete-button\"\n />\n </div>\n ),\n };\n });\n\n const table = (\n <Table\n columns={columns}\n rowData={rowData}\n data-testid=\"product-list-table\"\n mobileLayout=\"stacked\"\n />\n );\n\n return (\n <VComponent\n node={h('div', {})}\n className={classes([\n 'requisition-list-view-product-list-table-container',\n className,\n ])}\n data-testid=\"product-list-table-container\"\n {...props}\n >\n {table}\n </VComponent>\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 { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { Button, Icon } from '@adobe-commerce/elsie/components';\nimport { Trash, Cart } from '@adobe-commerce/elsie/icons';\nimport '@/requisitionList/components/BatchActions/BatchActions.css';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nexport interface BatchActionsProps\n extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {\n selectedItems: Set<string>;\n deletingItemId: string | null;\n addingToCartItemId: string | null;\n bulkAddingToCart: boolean;\n updatingQuantityItemId: string | null;\n onSelectAll: () => void;\n onSelectNone: () => void;\n onBulkAddToCart: () => void;\n onBulkDelete: () => void;\n}\n\nexport const BatchActions: FunctionComponent<BatchActionsProps> = ({\n selectedItems,\n deletingItemId,\n addingToCartItemId,\n bulkAddingToCart,\n updatingQuantityItemId,\n onSelectAll,\n onSelectNone,\n onBulkAddToCart,\n onBulkDelete,\n}) => {\n const translations = useText({\n statusDeleting: `RequisitionList.RequisitionListView.statusDeleting`,\n actionDeleteSelected: `RequisitionList.RequisitionListView.actionDeleteSelected`,\n actionSelectAll: `RequisitionList.RequisitionListView.actionSelectAll`,\n actionSelectNone: `RequisitionList.RequisitionListView.actionSelectNone`,\n actionAddToCart: `RequisitionList.RequisitionListView.actionAddToCart`,\n actionAddSelectedToCart: `RequisitionList.RequisitionListView.actionAddSelectedToCart`,\n statusBulkAddingToCart: `RequisitionList.RequisitionListView.statusBulkAddingToCart`,\n });\n\n return (\n <div class=\"requisition-list-view__bulk-actions\">\n <Button\n data-testid=\"bulk-actions-select-all-btn\"\n type=\"button\"\n variant=\"secondary\"\n onClick={onSelectAll}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {translations.actionSelectAll}\n </Button>\n <Button\n data-testid=\"bulk-actions-select-none-btn\"\n type=\"button\"\n variant=\"secondary\"\n onClick={onSelectNone}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null ||\n selectedItems.size === 0\n }\n >\n {translations.actionSelectNone}\n </Button>\n {selectedItems.size > 0 && (\n <Button\n data-testid=\"bulk-actions-add-to-cart-btn\"\n type=\"button\"\n variant=\"primary\"\n onClick={onBulkAddToCart}\n icon={<Icon source={Cart} />}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {bulkAddingToCart\n ? translations.statusBulkAddingToCart\n : `${translations.actionAddSelectedToCart} (${selectedItems.size})`}\n </Button>\n )}\n {selectedItems.size > 0 && (\n <Button\n data-testid=\"bulk-actions-delete-all-btn\"\n type=\"button\"\n variant=\"secondary\"\n onClick={onBulkDelete}\n icon={<Icon source={Trash} />}\n disabled={\n deletingItemId !== null ||\n addingToCartItemId !== null ||\n bulkAddingToCart ||\n updatingQuantityItemId !== null\n }\n >\n {deletingItemId === 'bulk'\n ? translations.statusDeleting\n : `${translations.actionDeleteSelected} (${selectedItems.size})`}\n </Button>\n )}\n </div>\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 {\n HTMLAttributes,\n useState,\n useCallback,\n useEffect,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { addRequisitionListItemsToCart } from '@/requisitionList/api/addRequisitionListItemsToCart';\nimport { deleteRequisitionListItems } from '@/requisitionList/api/deleteRequisitionListItems';\nimport { getProductData } from '@/requisitionList/api/getProductData';\nimport { updateRequisitionListItems } from '@/requisitionList/api/updateRequisitionListItems';\nimport { getRequisitionList } from '@/requisitionList/api/getRequisitionList';\nimport {\n Header,\n Pagination,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { Item, Product } from '@/requisitionList/data/models/item';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { events } from '@adobe-commerce/event-bus';\nimport { PageSizePicker, EmptyList } from '@/requisitionList/components';\nimport { ProductListTable } from '@/requisitionList/components/ProductListTable/ProductListTable';\nimport { BatchActions } from '@/requisitionList/components/BatchActions/BatchActions';\nimport { useRequisitionListSelectedItems } from '@/requisitionList/hooks/useRequisitionListSelectedItems';\nimport { useRequisitionListAlert } from '@/requisitionList/hooks/useRequisitionListAlert';\n\nexport interface RequisitionListViewProps\n extends HTMLAttributes<HTMLDivElement> {\n requisitionList: RequisitionList;\n /**\n * When true, skips automatic product data fetching on component mount.\n * Used in tests to prevent API calls.\n */\n skipProductLoading?: boolean;\n /**\n * Number of items per page for pagination.\n * Defaults to 10.\n */\n pageSize?: number;\n loadingProducts?: boolean;\n selectedItems: Set<string>;\n loadingPage?: boolean;\n}\n\nexport const RequisitionListView: Container<RequisitionListViewProps> = ({\n requisitionList,\n skipProductLoading = false,\n pageSize = 10,\n}: RequisitionListViewProps) => {\n const [loadingProducts, setLoadingProducts] = useState<boolean>(false);\n const [deletingItemId, setDeletingItemId] = useState<string | null>(null);\n const [addingToCartItemId, setAddingToCartItemId] = useState<\n string[] | undefined\n >(null);\n const [bulkAddingToCart, setBulkAddingToCart] = useState<boolean>(false);\n const [updatingQuantityItemId, setUpdatingQuantityItemId] = useState<\n string | null\n >(null);\n const [loadingPage, setLoadingPage] = useState<boolean>(false);\n const [currentPageSize, setCurrentPageSize] = useState<number>(pageSize);\n\n const {\n currentRequisitionList,\n setCurrentRequisitionList,\n selectedItems,\n setSelectedItems,\n handleItemSelection,\n handleSelectAll,\n handleSelectNone,\n } = useRequisitionListSelectedItems(requisitionList);\n\n const translations = useText({\n emptyRequisitionList: `RequisitionList.RequisitionListView.emptyRequisitionList`,\n errorLoadingProducts: `RequisitionList.RequisitionListView.errorLoadingProducts`,\n errorLoadPage: `RequisitionList.RequisitionListView.errorLoadPage`,\n });\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n useEffect(() => {\n const requisitionListEvent = events.on(\n 'requisitionList/data',\n (payload: RequisitionList) => {\n setCurrentRequisitionList(payload);\n setSelectedItems(new Set());\n }\n );\n events.on('requisitionList/alert', handleRequisitionListAlert);\n return () => {\n requisitionListEvent?.off();\n };\n }, [handleRequisitionListAlert, setCurrentRequisitionList, setSelectedItems]);\n\n // Sync pageSize prop changes to local state\n useEffect(() => {\n setCurrentPageSize(pageSize);\n }, [pageSize]);\n\n // Function to fetch and merge product data\n const fetchAndMergeProducts = useCallback(\n async (baseRequisitionList: RequisitionList) => {\n // Extract SKUs from requisition list items\n const productSkus =\n baseRequisitionList.items?.map((item: Item) => item.sku) || [];\n\n if (productSkus.length === 0) {\n return baseRequisitionList;\n }\n\n setLoadingProducts(true);\n\n try {\n const fetchedProducts = await getProductData(productSkus);\n if (fetchedProducts) {\n // Create a map of SKU to Product for easy lookup\n const productMap = new Map<string, Product>();\n fetchedProducts.forEach((product: Product) => {\n productMap.set(product.sku, product);\n });\n\n // Update requisition list items with fetched product data\n return {\n ...baseRequisitionList,\n items: baseRequisitionList.items?.map((item: Item) => ({\n ...item,\n product: productMap.get(item.sku) || item.product, // Use fetched product or keep existing\n })),\n };\n }\n console.warn('No products found');\n return baseRequisitionList;\n } catch (error) {\n console.warn(\n error instanceof Error\n ? error.message\n : translations.errorLoadingProducts\n );\n return baseRequisitionList;\n } finally {\n setLoadingProducts(false);\n }\n },\n [translations.errorLoadingProducts]\n );\n\n // Fetch products from requisition list items on initial load\n useEffect(() => {\n // Skip product loading in test mode\n if (skipProductLoading) {\n return;\n }\n\n const loadInitialProducts = async () => {\n const updatedList = await fetchAndMergeProducts(requisitionList);\n setCurrentRequisitionList(updatedList);\n };\n\n loadInitialProducts();\n }, [\n requisitionList,\n fetchAndMergeProducts,\n skipProductLoading,\n setCurrentRequisitionList,\n ]);\n\n const handleAddItemsToCart = useCallback(\n async (itemUids: string[] | undefined) => {\n if (itemUids && itemUids.length === 1) {\n setBulkAddingToCart(false);\n setAddingToCartItemId(itemUids);\n } else {\n setBulkAddingToCart(true);\n setAddingToCartItemId(null);\n }\n\n try {\n const errors = await addRequisitionListItemsToCart(\n currentRequisitionList.uid,\n itemUids\n );\n\n if (errors && errors.length > 0) {\n events.emit('requisitionList/alert', {\n action: 'move',\n type: 'error',\n context: 'product',\n message: errors.map((e: any) => e.message),\n });\n } else {\n events.emit('requisitionList/alert', {\n action: 'move',\n type: 'success',\n context: 'product',\n });\n }\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'move',\n type: 'error',\n context: 'product',\n });\n } finally {\n setAddingToCartItemId(null);\n setBulkAddingToCart(false);\n }\n },\n [currentRequisitionList]\n );\n\n const handleDeleteItems = useCallback(\n async (itemUids: string[] | undefined) => {\n if (itemUids && itemUids.length === 1) {\n setDeletingItemId(itemUids[0]);\n } else {\n setDeletingItemId('bulk');\n }\n\n try {\n const updatedRequisitionList = await deleteRequisitionListItems(\n currentRequisitionList.uid,\n itemUids\n );\n\n if (updatedRequisitionList) {\n events.emit('requisitionList/alert', {\n action: 'delete',\n type: 'success',\n context: 'product',\n });\n } else {\n events.emit('requisitionList/alert', {\n action: 'delete',\n type: 'error',\n context: 'product',\n });\n }\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'delete',\n type: 'error',\n context: 'product',\n });\n } finally {\n setDeletingItemId(null);\n }\n },\n [currentRequisitionList.uid]\n );\n\n const handleUpdateQuantity = useCallback(\n async (itemUid: string, newQuantity: number) => {\n setUpdatingQuantityItemId(itemUid);\n\n try {\n // Find the current item to update\n const currentItem = currentRequisitionList.items?.find(\n (item: Item) => item.uid === itemUid\n );\n if (!currentItem) {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'product',\n });\n return;\n }\n\n // Create updated item with new quantity\n const updatedItem = {\n item_id: currentItem.uid,\n entered_options: currentItem.entered_options,\n selected_options: currentItem.selected_options,\n quantity: newQuantity,\n };\n\n const updatedRequisitionList = await updateRequisitionListItems(\n currentRequisitionList.uid,\n [updatedItem]\n );\n\n if (updatedRequisitionList) {\n // Reload product data with updated quantities\n const enrichedRequisitionList = await fetchAndMergeProducts(\n updatedRequisitionList\n );\n setCurrentRequisitionList(enrichedRequisitionList);\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'success',\n context: 'product',\n });\n } else {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'product',\n });\n }\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'product',\n });\n } finally {\n setUpdatingQuantityItemId(null);\n }\n },\n [\n currentRequisitionList.uid,\n currentRequisitionList.items,\n fetchAndMergeProducts,\n setCurrentRequisitionList,\n ]\n );\n\n const handlePageChange = useCallback(\n async (page: number) => {\n setLoadingPage(true);\n\n try {\n const updatedRequisitionList = await getRequisitionList(\n currentRequisitionList.uid,\n page,\n currentPageSize\n );\n\n if (updatedRequisitionList) {\n // Fetch product data for the new page\n const updatedListWithProducts = await fetchAndMergeProducts(\n updatedRequisitionList\n );\n setCurrentRequisitionList(updatedListWithProducts);\n } else {\n console.warn(translations.errorLoadPage);\n }\n } catch (error) {\n console.warn(\n error instanceof Error ? error.message : translations.errorLoadPage\n );\n } finally {\n setLoadingPage(false);\n }\n },\n [\n currentRequisitionList.uid,\n fetchAndMergeProducts,\n currentPageSize,\n translations,\n setCurrentRequisitionList,\n ]\n );\n\n const handlePageSizeChange = useCallback(\n async (newPageSize: number) => {\n setCurrentPageSize(newPageSize);\n setLoadingPage(true);\n\n try {\n // Reset to page 1 when changing page size\n const updatedRequisitionList = await getRequisitionList(\n currentRequisitionList.uid,\n 1,\n newPageSize\n );\n\n if (updatedRequisitionList) {\n // Fetch product data for the new page\n const updatedListWithProducts = await fetchAndMergeProducts(\n updatedRequisitionList\n );\n setCurrentRequisitionList(updatedListWithProducts);\n } else {\n console.warn(translations.errorLoadPage);\n }\n } catch (error) {\n console.warn(translations.errorLoadPage);\n } finally {\n setLoadingPage(false);\n }\n },\n [\n currentRequisitionList.uid,\n fetchAndMergeProducts,\n translations,\n setCurrentRequisitionList,\n ]\n );\n\n return (\n <div className=\"requisition-list-view__container\">\n <Header\n aria-label={currentRequisitionList.name}\n role=\"region\"\n title={currentRequisitionList.name}\n />\n\n {currentRequisitionList.items_count === 0 ? (\n <EmptyList\n textContent={`${currentRequisitionList.name} ${translations.emptyRequisitionList}`}\n />\n ) : (\n <>\n {alert && (\n <InLineAlert\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n onDismiss={() => setAlert(null)}\n />\n )}\n\n <BatchActions\n selectedItems={selectedItems}\n deletingItemId={deletingItemId}\n addingToCartItemId={addingToCartItemId}\n bulkAddingToCart={bulkAddingToCart}\n updatingQuantityItemId={updatingQuantityItemId}\n onSelectAll={handleSelectAll}\n onSelectNone={handleSelectNone}\n onBulkAddToCart={() =>\n handleAddItemsToCart(Array.from(selectedItems))\n }\n onBulkDelete={() => handleDeleteItems(Array.from(selectedItems))}\n />\n\n <ProductListTable\n items={currentRequisitionList.items}\n selectedItems={selectedItems}\n currentPage={currentRequisitionList.page_info.current_page}\n pageSize={currentRequisitionList.page_info.page_size}\n handleItemSelection={handleItemSelection}\n handleUpdateQuantity={handleUpdateQuantity}\n onAddToCart={handleAddItemsToCart}\n onDeleteItem={handleDeleteItems}\n />\n\n {/* Pagination */}\n {currentRequisitionList.page_info && (\n <div className=\"requisition-list-view__pagination\">\n <div className=\"requisition-list-view__pagination-controls\">\n <PageSizePicker\n currentPageSize={currentRequisitionList.page_info.page_size}\n onPageSizeChange={handlePageSizeChange}\n disabled={loadingPage || loadingProducts}\n />\n {currentRequisitionList.page_info.total_pages > 1 && (\n <Pagination\n totalPages={currentRequisitionList.page_info.total_pages}\n currentPage={currentRequisitionList.page_info.current_page}\n onChange={handlePageChange}\n disabled={loadingPage || loadingProducts}\n />\n )}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n );\n};\n"],"names":["useRequisitionListSelectedItems","requisitionList","currentRequisitionList","setCurrentRequisitionList","useState","selectedItems","setSelectedItems","handleItemSelection","useCallback","itemUid","isSelected","prev","newSet","handleSelectAll","allItemUids","_a","item","handleSelectNone","SvgCart","props","React","SvgTrash","ProductListTable","className","items","currentPage","pageSize","canEdit","handleUpdateQuantity","onAddToCart","onDeleteItem","translations","useText","columns","handleItemCheckboxChange","event","rowData","index","jsx","jsxs","Checkbox","e","Price","_e","_d","_c","_b","_i","_h","_g","_f","_m","_l","_k","_j","_q","_p","_o","_n","Field","Input","newValue","Button","Icon","Cart","Trash","table","Table","VComponent","h","classes","BatchActions","deletingItemId","addingToCartItemId","bulkAddingToCart","updatingQuantityItemId","onSelectAll","onSelectNone","onBulkAddToCart","onBulkDelete","RequisitionListView","skipProductLoading","loadingProducts","setLoadingProducts","setDeletingItemId","setAddingToCartItemId","setBulkAddingToCart","setUpdatingQuantityItemId","loadingPage","setLoadingPage","currentPageSize","setCurrentPageSize","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","useEffect","requisitionListEvent","events","payload","fetchAndMergeProducts","baseRequisitionList","productSkus","fetchedProducts","getProductData","productMap","product","error","updatedList","handleAddItemsToCart","itemUids","errors","addRequisitionListItemsToCart","handleDeleteItems","deleteRequisitionListItems","newQuantity","currentItem","updatedItem","updatedRequisitionList","updateRequisitionListItems","enrichedRequisitionList","handlePageChange","page","getRequisitionList","updatedListWithProducts","handlePageSizeChange","newPageSize","Header","EmptyList","Fragment","InLineAlert","PageSizePicker","Pagination"],"mappings":"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","x_google_ignoreList":[1,2]}
@@ -1,4 +1,4 @@
1
- import { Product } from '../models/item';
1
+ import { Product } from '../models';
2
2
 
3
3
  export interface RawProductData {
4
4
  __typename: string;
package/hooks/index.d.ts CHANGED
@@ -14,6 +14,8 @@
14
14
  * is strictly forbidden unless prior written permission is obtained
15
15
  * from Adobe.
16
16
  *******************************************************************/
17
- export * from './useRequisitionListGrid';
17
+ export * from './useRequisitionListAlert';
18
18
  export * from './useRequisitionListForm';
19
+ export * from './useRequisitionListGrid';
20
+ export * from './useRequisitionListSelectedItems';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,27 @@
1
+ /********************************************************************
2
+ * ADOBE CONFIDENTIAL
3
+ * __________________
4
+ *
5
+ * Copyright 2025 Adobe
6
+ * All Rights Reserved.
7
+ *
8
+ * NOTICE: All information contained herein is, and remains
9
+ * the property of Adobe and its suppliers, if any. The intellectual
10
+ * and technical concepts contained herein are proprietary to Adobe
11
+ * and its suppliers and are protected by all applicable intellectual
12
+ * property laws, including trade secret and copyright laws.
13
+ * Dissemination of this information or reproduction of this material
14
+ * is strictly forbidden unless prior written permission is obtained
15
+ * from Adobe.
16
+ *******************************************************************/
17
+ export interface Alert {
18
+ type: string;
19
+ description: string;
20
+ action?: string;
21
+ }
22
+ export declare function useRequisitionListAlert(translationsOverride?: Record<string, string>): {
23
+ alert: Alert | null;
24
+ setAlert: import('preact/hooks').Dispatch<import('preact/hooks').StateUpdater<Alert | null>>;
25
+ handleRequisitionListAlert: (payload: RequisitionListActionPayload) => () => void;
26
+ };
27
+ //# sourceMappingURL=useRequisitionListAlert.d.ts.map
@@ -1,12 +1,14 @@
1
1
  import { RequisitionList } from '../data/models/requisitionList';
2
2
 
3
- export type RequisitionListFormMode = 'create' | 'edit';
3
+ export type RequisitionListFormMode = 'create' | 'update';
4
4
  export type RequisitionListFormValues = {
5
5
  name: string;
6
6
  description?: string;
7
7
  };
8
- export declare function useRequisitionListForm(mode: RequisitionListFormMode, requisitionListUid?: string, onSuccess?: (rl: RequisitionList) => void, onError?: (msg: string) => void): {
9
- readonly error: string | null;
10
- readonly submit: (values: RequisitionListFormValues) => Promise<RequisitionList | null>;
8
+ type UseRequisitionListFormReturn = {
9
+ error: string | null;
10
+ submit: (values: RequisitionListFormValues) => Promise<RequisitionList | null>;
11
11
  };
12
+ export declare function useRequisitionListForm(mode: RequisitionListFormMode, requisitionListUid?: string, onSuccess?: (rl: RequisitionList) => void, onError?: (msg: string) => void): UseRequisitionListFormReturn;
13
+ export {};
12
14
  //# sourceMappingURL=useRequisitionListForm.d.ts.map
@@ -4,7 +4,7 @@ import { RequisitionLists } from '../data/models/requisitionLists';
4
4
 
5
5
  type Row = Record<string, VNode | string | number | undefined>;
6
6
  type Callbacks = {
7
- openRemove: (rl: RequisitionListModel) => void;
7
+ handleOpenModal: (rl: RequisitionListModel) => void;
8
8
  };
9
9
  export declare function useRequisitionListGrid(initial?: RequisitionLists | null, callbacks?: Callbacks, routeRequisitionListDetails?: (uid: string) => string | void): {
10
10
  rows: Row[];
@@ -16,6 +16,10 @@ export declare function useRequisitionListGrid(initial?: RequisitionLists | null
16
16
  total_pages: number;
17
17
  } | undefined;
18
18
  handlePageChange: (page?: number) => Promise<void>;
19
+ handlePageSizeChange: (pageSize: number) => Promise<void>;
20
+ isAdding: boolean;
21
+ handleAddNew: () => void;
22
+ handleCancelCreate: () => void;
19
23
  };
20
24
  export {};
21
25
  //# sourceMappingURL=useRequisitionListGrid.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { RequisitionList } from '../data/models/requisitionList';
2
+
3
+ type UseRequisitionListSelectedItems = {
4
+ currentRequisitionList: RequisitionList;
5
+ setCurrentRequisitionList: (value: RequisitionList | ((prev: RequisitionList) => RequisitionList)) => void;
6
+ selectedItems: Set<string>;
7
+ setSelectedItems: (value: Set<string> | ((prev: Set<string>) => Set<string>)) => void;
8
+ handleItemSelection: (itemUid: string, isSelected: boolean) => void;
9
+ handleSelectAll: () => void;
10
+ handleSelectNone: () => void;
11
+ };
12
+ export declare function useRequisitionListSelectedItems(requisitionList: RequisitionList): UseRequisitionListSelectedItems;
13
+ export {};
14
+ //# sourceMappingURL=useRequisitionListSelectedItems.d.ts.map
@@ -2,13 +2,13 @@ declare const _default: {
2
2
  "RequisitionList": {
3
3
  "containerTitle": "Requisition Lists",
4
4
  "RequisitionListWrapper": {
5
- "name": "Name",
6
- "itemsCount": "Items count",
7
- "lastUpdated": "Last updated",
5
+ "name": "Name & Description",
6
+ "itemsCount": "Items",
7
+ "lastUpdated": "Latest activity",
8
8
  "actions": "Actions",
9
9
  "loginMsg": "Please login",
10
- "confirmRemove": "Confirm Requisition List removing",
11
- "confirmRemoveContent": "Requisition List will be permanently deleted. This action can not be undone.",
10
+ "deleteRequisitionListTitle": "Are you sure you want to delete this Requisition List?",
11
+ "deleteRequisitionListMessage": "Requisition List will be permanently deleted. This action can not be undone.",
12
12
  "confirmAction": "Confirm",
13
13
  "cancelAction": "Cancel",
14
14
  "emptyList": "No Requisition Lists found"
@@ -17,8 +17,8 @@ declare const _default: {
17
17
  "addNewReqListBtn": "Add new Requisition List"
18
18
  },
19
19
  "RequisitionListItem": {
20
- "actionRename": "Rename",
21
- "actionRemove": "Remove"
20
+ "actionUpdate": "Update",
21
+ "actionDelete": "Delete"
22
22
  },
23
23
  "RequisitionListForm": {
24
24
  "actionCancel": "Cancel",
@@ -27,28 +27,57 @@ declare const _default: {
27
27
  "floatingLabel": "Requisition List Name *",
28
28
  "placeholder": "Requisition List Name",
29
29
  "label": "Description",
30
- "editTitle": "Rename Requisition List",
30
+ "updateTitle": "Update Requisition List",
31
31
  "createTitle": "Create Requisition List",
32
32
  "addToRequisitionList": "Add to Requisition List:"
33
33
  },
34
+ "RequisitionListAlert": {
35
+ "errorCreate": "Error creating requisition list",
36
+ "successCreate": "Requisition list created successfully.",
37
+ "errorAddToCart": "Error adding item to cart",
38
+ "successAddToCart": "Item(s) added to cart successfully.",
39
+ "errorUpdateQuantity": "Error updating quantity",
40
+ "successUpdateQuantity": "Item quantity updated successfully.",
41
+ "errorUpdate": "Error updating requisition list",
42
+ "successUpdate": "Requisition list updated successfully.",
43
+ "errorDeleteItem": "Error deleting item",
44
+ "successDeleteItem": "Item(s) deleted successfully.",
45
+ "errorDeleteReqList": "Error deleting requisition list",
46
+ "successDeleteReqList": "Requisition list deleted successfully.",
47
+ "errorMove": "Error moving item(s) to cart",
48
+ "successMove": "Item(s) successfully moved to cart."
49
+ },
34
50
  "RequisitionListView": {
35
51
  "actionDelete": "Delete",
36
52
  "statusDeleting": "Deleting...",
37
- "errorDelete": "Error deleting item",
38
53
  "actionDeleteSelected": "Delete Selected",
39
54
  "actionSelectAll": "Select All",
40
55
  "actionSelectNone": "Select None",
41
56
  "actionAddToCart": "Add to Cart",
42
57
  "statusAddingToCart": "Adding...",
43
- "errorAddToCart": "Error adding item to cart",
44
- "successAddToCart": "Item added to cart successfully",
45
58
  "actionAddSelectedToCart": "Add Selected to Cart",
46
59
  "statusBulkAddingToCart": "Adding to Cart...",
47
60
  "actionUpdateQuantity": "Update",
48
61
  "statusUpdatingQuantity": "Updating...",
49
62
  "errorUpdateQuantity": "Error updating quantity",
50
- "successUpdateQuantity": "Quantity updated successfully",
51
- "actionBackToRequisitionListsOverview": "Back to requisition lists overview"
63
+ "successUpdateQuantity": "Item quantity updated successfully.",
64
+ "actionBackToRequisitionListsOverview": "Back to requisition lists overview",
65
+ "emptyRequisitionList": " Requisition List is empty",
66
+ "productListTable": {
67
+ "headers": {
68
+ "productName": "Product name",
69
+ "sku": "SKU",
70
+ "price": "Price",
71
+ "quantity": "Quantity",
72
+ "subtotal": "Subtotal",
73
+ "actions": "Actions"
74
+ },
75
+ "itemQuantity": "Item quantity"
76
+ },
77
+ "errorLoadPage": "Failed to load page"
78
+ },
79
+ "PageSizePicker": {
80
+ "itemsPerPage": "Items per page"
52
81
  }
53
82
  }
54
83
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-requisition-list", "version": "0.4.0-beta", "@dropins/tools": "^1.5.0-beta4", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-requisition-list", "version": "0.5.0-beta", "@dropins/tools": "~1.5.0", "license": "SEE LICENSE IN LICENSE.md"}