@dropins/storefront-requisition-list 0.8.0-beta → 1.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as n,jsxs as p,Fragment as x}from"@dropins/tools/preact-jsx-runtime.js";import*as k from"@dropins/tools/preact-compat.js";import{useState as m,useEffect as f,useCallback as _,useMemo as D}from"@dropins/tools/preact-compat.js";import{Card as v,Icon as E,Button as F,InLineAlert as V}from"@dropins/tools/components.js";import{c as H,R as J,f as K,h as X,t as Y}from"../chunks/updateRequisitionList.js";import{events as q}from"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/lib.js";import"../chunks/RequisitionListForm.js";import{R as Z}from"../chunks/RequisitionListForm2.js";import{s as l,a as $,b as N,u as ii}from"../chunks/state.js";import{g as ti}from"../chunks/getRequisitionLists.js";import{u as si,S as P,E as ei}from"../chunks/RequisitionListView.js";import"@dropins/tools/preact.js";import{R as oi}from"../chunks/RequisitionListActions.js";import{R as ni}from"../chunks/RequisitionListModal.js";import{useText as ri}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";let L=0;const ai=()=>{const[d,o]=m(l.requisitionLists),[c,u]=m(l.requisitionListsLoading),[r,a]=m(L);return f(()=>{l.requisitionLists.length===0&&!l.requisitionListsLoading&&($(!0),ti(1,100).then(s=>{const i=(s==null?void 0:s.items)||[];N(i),L++}).catch(s=>{console.error("Error fetching requisition lists:",s),N([]),L++}).finally(()=>{$(!1)}))},[]),f(()=>{const s=q.on("requisitionLists/data",e=>{e&&(N(e),L++,a(L),o(l.requisitionLists),u(l.requisitionListsLoading))}),i=q.on("requisitionList/data",e=>{e&&(ii(e),L++,a(L),o([...l.requisitionLists]),u(l.requisitionListsLoading))});return()=>{s==null||s.off(),i==null||i.off()}},[]),f(()=>{r!==L&&(o(l.requisitionLists),u(l.requisitionListsLoading),a(L))},[r]),{lists:d,loading:c}},li=()=>{var c,u;const[d,o]=m(((c=l.config)==null?void 0:c.is_requisition_list_active)==="1"&&((u=l.config)==null?void 0:u.company_enabled)===!0);return f(()=>{const r=q.on("requisitionList/initialized",()=>{var a,s;o(((a=l.config)==null?void 0:a.is_requisition_list_active)==="1"&&((s=l.config)==null?void 0:s.company_enabled)===!0)});return()=>r==null?void 0:r.off()},[]),{isEnabled:d}},ui=`
3
+ import{jsx as n,jsxs as p,Fragment as x}from"@dropins/tools/preact-jsx-runtime.js";import*as k from"@dropins/tools/preact-compat.js";import{useState as m,useEffect as f,useCallback as _,useMemo as D}from"@dropins/tools/preact-compat.js";import{Card as y,Icon as E,Button as F,InLineAlert as V}from"@dropins/tools/components.js";import{c as H,R as J,f as K,h as X,t as Y}from"../chunks/updateRequisitionList.js";import{events as q}from"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/lib.js";import"../chunks/RequisitionListForm.js";import{R as Z}from"../chunks/RequisitionListForm2.js";import{s as l,a as $,b as N,u as ii}from"../chunks/state.js";import{g as ti}from"../chunks/getRequisitionLists.js";import{u as si,S as P,E as ei}from"../chunks/RequisitionListView.js";import"@dropins/tools/preact.js";import{R as oi}from"../chunks/RequisitionListActions.js";import{R as ni}from"../chunks/RequisitionListModal.js";import{useText as ri}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";let L=0;const ai=()=>{const[d,o]=m(l.requisitionLists),[u,c]=m(l.requisitionListsLoading),[r,a]=m(L);return f(()=>{l.requisitionLists.length===0&&!l.requisitionListsLoading&&($(!0),ti(1,100).then(s=>{const i=(s==null?void 0:s.items)||[];N(i),L++}).catch(s=>{console.error("Error fetching requisition lists:",s),N([]),L++}).finally(()=>{$(!1)}))},[]),f(()=>{const s=q.on("requisitionLists/data",e=>{e&&(N(e),L++,a(L),o(l.requisitionLists),c(l.requisitionListsLoading))}),i=q.on("requisitionList/data",e=>{e&&(ii(e),L++,a(L),o([...l.requisitionLists]),c(l.requisitionListsLoading))});return()=>{s==null||s.off(),i==null||i.off()}},[]),f(()=>{r!==L&&(o(l.requisitionLists),c(l.requisitionListsLoading),a(L))},[r]),{lists:d,loading:u}},li=()=>{var u,c;const[d,o]=m(((u=l.config)==null?void 0:u.is_requisition_list_active)==="1"&&((c=l.config)==null?void 0:c.company_enabled)===!0);return f(()=>{const r=q.on("requisitionList/initialized",()=>{var a,s;o(((a=l.config)==null?void 0:a.is_requisition_list_active)==="1"&&((s=l.config)==null?void 0:s.company_enabled)===!0)});return()=>r==null?void 0:r.off()},[]),{isEnabled:d}},ci=`
4
4
  mutation ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION(
5
5
  $requisitionListUid: ID!,
6
6
  $requisitionListItems: [RequisitionListItemsInput!]!
@@ -19,5 +19,5 @@ import{jsx as n,jsxs as p,Fragment as x}from"@dropins/tools/preact-jsx-runtime.j
19
19
  }
20
20
  ${H}
21
21
  ${J}
22
- `,ci=async(d,o)=>{var s;const c=o.map(i=>{const e={sku:i.sku,quantity:i.quantity};return i.parent_sku&&(e.parent_sku=i.parent_sku),i.selected_options&&i.selected_options.length>0&&(e.selected_options=i.selected_options),i.entered_options&&i.entered_options.length>0&&(e.entered_options=i.entered_options),e}),{errors:u,data:r}=await K(ui,{variables:{requisitionListUid:d,requisitionListItems:c}});if(u)return X(u);if(!((s=r==null?void 0:r.addProductsToRequisitionList)!=null&&s.requisition_list))return null;const a=Y(r.addProductsToRequisitionList.requisition_list);return q.emit("requisitionList/data",a),a},di=d=>k.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...d},k.createElement("path",{d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"round"})),Ai=({canCreate:d=!0,sku:o,selectedOptions:c,quantity:u=1,beforeAddProdToReqList:r})=>{const a=ri({createTitle:"RequisitionList.RequisitionListForm.createTitle",addToRequisitionList:"RequisitionList.RequisitionListForm.addToRequisitionList",emptyList:"RequisitionList.RequisitionListWrapper.emptyList",addToNewRequisitionList:"RequisitionList.RequisitionListSelector.addToNewRequisitionList",addToSelected:"RequisitionList.RequisitionListSelector.addToSelected"}),[s,i]=m(!1),[e,b]=m(null),{lists:R}=ai(),{isEnabled:A}=li(),{alert:h,setAlert:O,handleRequisitionListAlert:U}=si(),[w,M]=m({isOpen:!1,isLoading:!1});f(()=>{const t=q.on("requisitionList/alert",U);return()=>{t==null||t.off()}},[U]);const I=_(()=>{M({isOpen:!0,isLoading:!1})},[]),g=_(()=>{M({isOpen:!1,isLoading:!1}),b(null),i(!1),O(null)},[O]),C=_(async t=>{try{const T={sku:o,quantity:u,...c&&c.length>0?{selected_options:c}:{}};await ci(t,[T])}catch(T){throw console.error("Error adding product to list:",T),T}},[o,u,c]),S=_(async t=>{try{await C(t),q.emit("requisitionList/alert",{action:"add",type:"success",context:"product",skus:[o]})}catch{q.emit("requisitionList/alert",{action:"add",type:"error",context:"product",skus:[o]})}finally{setTimeout(()=>{g()},2e3)}},[o,C,g]),Q=_(t=>{t.preventDefault(),e&&S(e)},[e,S]),G=_(()=>{if(!r){I();return}Promise.resolve(r()).then(()=>{I()}).catch(()=>{})},[r,I]),y=D(()=>[...(R==null?void 0:R.map(t=>({value:t.uid,text:t.name})))??[]],[R]),j=D(()=>n("div",{className:"requisition-list-selector__available-lists",children:y.map(t=>p(v,{variant:e===t.value?"primary":"secondary",onClick:()=>{b(t.value)},children:[n(E,{source:P}),n("span",{children:t.text})]},t.value))}),[y,e]),z=y.length>0?s?p("button",{type:"button","aria-label":"Select a requisition list",role:"button",className:"requisition-list-actions","data-testid":"requisition-list-actions-button",onClick:()=>i(!1),children:[n("span",{className:"requisition-list-actions__title","data-testid":"requisition-list-actions-button-text",children:a.addToRequisitionList}),n(E,{source:di,size:"32"})]}):n(v,{variant:"secondary",children:p("form",{onSubmit:Q,className:"requisition-list-selector__form",children:[j,n("div",{className:"requisition-list-form__actions",children:n(F,{type:"submit",disabled:!e,children:a.addToSelected})})]})}):n(ei,{textContent:a.emptyList}),W=s?n(v,{variant:"secondary",children:n(Z,{mode:"create",onSuccess:async t=>{await S(t.uid)},onError:()=>{q.emit("requisitionList/alert",{action:"add",type:"error",context:"product",skus:[o]})},onCancel:()=>{i(!1)}})}):n(oi,{onAddNew:()=>{i(!0)}}),B=p(x,{children:[h&&n(V,{id:`requisition-list-selector__alert__${o}`,className:"requisition-list-selector__alert",heading:h.description,type:h.type,variant:"primary"},`requisition-list-selector__alert__${o}`),!h&&p(x,{children:[z,d&&W]})]});return A===null||!A?null:p("div",{className:"requisition-list-selector",children:[n(F,{"aria-label":a.addToRequisitionList,"data-testid":"requisition-list-selector",size:"medium",variant:"tertiary",icon:n(E,{source:P}),onClick:G}),w.isOpen&&n(ni,{isOpen:!0,isLoading:w.isLoading,title:a.addToRequisitionList,modalContent:B,handleModalOnClose:g})]})};export{Ai as RequisitionListSelector,Ai as default};
22
+ `,ui=async(d,o)=>{var s;const u=o.map(i=>{const e={sku:i.sku,quantity:i.quantity};return i.parent_sku&&(e.parent_sku=i.parent_sku),i.selected_options&&i.selected_options.length>0&&(e.selected_options=i.selected_options),i.entered_options&&i.entered_options.length>0&&(e.entered_options=i.entered_options),e}),{errors:c,data:r}=await K(ci,{variables:{requisitionListUid:d,requisitionListItems:u}});if(c)return X(c);if(!((s=r==null?void 0:r.addProductsToRequisitionList)!=null&&s.requisition_list))return null;const a=Y(r.addProductsToRequisitionList.requisition_list);return q.emit("requisitionList/data",a),a},di=d=>k.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...d},k.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"})),Ai=({canCreate:d=!0,sku:o,selectedOptions:u,quantity:c=1,beforeAddProdToReqList:r})=>{const a=ri({createTitle:"RequisitionList.RequisitionListForm.createTitle",addToRequisitionList:"RequisitionList.RequisitionListForm.addToRequisitionList",emptyList:"RequisitionList.RequisitionListWrapper.emptyList",addToNewRequisitionList:"RequisitionList.RequisitionListSelector.addToNewRequisitionList",addToSelected:"RequisitionList.RequisitionListSelector.addToSelected"}),[s,i]=m(!1),[e,b]=m(null),{lists:R}=ai(),{isEnabled:A}=li(),{alert:h,setAlert:O,handleRequisitionListAlert:U}=si(),[w,M]=m({isOpen:!1,isLoading:!1});f(()=>{const t=q.on("requisitionList/alert",U);return()=>{t==null||t.off()}},[U]);const I=_(()=>{M({isOpen:!0,isLoading:!1})},[]),g=_(()=>{M({isOpen:!1,isLoading:!1}),b(null),i(!1),O(null)},[O]),C=_(async t=>{try{const T={sku:o,quantity:c,...u&&u.length>0?{selected_options:u}:{}};await ui(t,[T])}catch(T){throw console.error("Error adding product to list:",T),T}},[o,c,u]),S=_(async t=>{try{await C(t),q.emit("requisitionList/alert",{action:"add",type:"success",context:"product",skus:[o]})}catch{q.emit("requisitionList/alert",{action:"add",type:"error",context:"product",skus:[o]})}finally{setTimeout(()=>{g()},2e3)}},[o,C,g]),Q=_(t=>{t.preventDefault(),e&&S(e)},[e,S]),G=_(()=>{if(!r){I();return}Promise.resolve(r()).then(()=>{I()}).catch(()=>{})},[r,I]),v=D(()=>[...(R==null?void 0:R.map(t=>({value:t.uid,text:t.name})))??[]],[R]),j=D(()=>n("div",{className:"requisition-list-selector__available-lists",children:v.map(t=>p(y,{variant:e===t.value?"primary":"secondary",onClick:()=>{b(t.value)},children:[n(E,{source:P}),n("span",{children:t.text})]},t.value))}),[v,e]),z=v.length>0?s?p("button",{type:"button","aria-label":"Select a requisition list",role:"button",className:"requisition-list-actions","data-testid":"requisition-list-actions-button",onClick:()=>i(!1),children:[n("span",{className:"requisition-list-actions__title","data-testid":"requisition-list-actions-button-text",children:a.addToRequisitionList}),n(E,{source:di,size:"32"})]}):n(y,{variant:"secondary",children:p("form",{onSubmit:Q,className:"requisition-list-selector__form",children:[j,n("div",{className:"requisition-list-form__actions",children:n(F,{type:"submit",disabled:!e,children:a.addToSelected})})]})}):n(ei,{textContent:a.emptyList}),W=s?n(y,{variant:"secondary",children:n(Z,{mode:"create",onSuccess:async t=>{await S(t.uid)},onError:()=>{q.emit("requisitionList/alert",{action:"add",type:"error",context:"product",skus:[o]})},onCancel:()=>{i(!1)}})}):n(oi,{onAddNew:()=>{i(!0)}}),B=p(x,{children:[h&&n(V,{id:`requisition-list-selector__alert__${o}`,className:"requisition-list-selector__alert",heading:h.description,type:h.type,variant:"primary"},`requisition-list-selector__alert__${o}`),!h&&p(x,{children:[z,d&&W]})]});return A===null||!A?null:p("div",{className:"requisition-list-selector",children:[n(F,{"aria-label":a.addToRequisitionList,"data-testid":"requisition-list-selector",size:"medium",variant:"tertiary",icon:n(E,{source:P}),onClick:G}),w.isOpen&&n(ni,{isOpen:!0,isLoading:w.isLoading,title:a.addToRequisitionList,modalContent:B,handleModalOnClose:g})]})};export{Ai as RequisitionListSelector,Ai as default};
23
23
  //# sourceMappingURL=RequisitionListSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequisitionListSelector.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionLists.ts","/@dropins/storefront-requisition-list/src/hooks/useRequisitionListEnabled.ts","/@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/ChevronDown.svg","/@dropins/storefront-requisition-list/src/containers/RequisitionListSelector/RequisitionListSelector.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 { useEffect, useState } from 'preact/compat';\nimport {\n state,\n setRequisitionLists,\n setRequisitionListsLoading,\n updateRequisitionList,\n} from '@/requisitionList/lib/state';\nimport { getRequisitionLists } from '@/requisitionList/api';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nlet updateCounter = 0; // Counter to track updates across all hooks\n\nexport const useRequisitionLists = () => {\n const [lists, setLists] = useState<RequisitionList[]>(state.requisitionLists);\n const [loading, setLoading] = useState(state.requisitionListsLoading);\n const [lastUpdate, setLastUpdate] = useState(updateCounter);\n\n // Fetch lists if empty on mount\n useEffect(() => {\n if (state.requisitionLists.length === 0 && !state.requisitionListsLoading) {\n setRequisitionListsLoading(true);\n getRequisitionLists(1, 100)\n .then((res: { items: RequisitionList[] }) => {\n const newLists = res?.items || [];\n setRequisitionLists(newLists);\n updateCounter++;\n })\n .catch((error: any) => {\n console.error('Error fetching requisition lists:', error);\n setRequisitionLists([]);\n updateCounter++;\n })\n .finally(() => {\n setRequisitionListsLoading(false);\n });\n }\n }, []);\n\n // Listen to event bus updates\n useEffect(() => {\n const multiListListener = events.on(\n 'requisitionLists/data',\n (payload: RequisitionList[] | null) => {\n if (payload) {\n setRequisitionLists(payload);\n updateCounter++;\n setLastUpdate(updateCounter);\n setLists(state.requisitionLists);\n setLoading(state.requisitionListsLoading);\n }\n }\n );\n\n const singleListListener = events.on(\n 'requisitionList/data',\n (payload: RequisitionList | null) => {\n if (!payload) return;\n\n // Only the FIRST hook instance to receive this should update\n // Use the updateRequisitionList helper which handles both add and update\n updateRequisitionList(payload);\n updateCounter++;\n setLastUpdate(updateCounter);\n setLists([...state.requisitionLists]);\n setLoading(state.requisitionListsLoading);\n }\n );\n\n return () => {\n multiListListener?.off();\n singleListListener?.off();\n };\n }, []);\n\n // Sync with global state when it changes\n useEffect(() => {\n if (lastUpdate !== updateCounter) {\n setLists(state.requisitionLists);\n setLoading(state.requisitionListsLoading);\n setLastUpdate(updateCounter);\n }\n }, [lastUpdate]);\n\n return { lists, loading };\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 { useEffect, useState } from 'preact/compat';\nimport { state } from '@/requisitionList/lib/state';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const useRequisitionListEnabled = () => {\n const [isEnabled, setIsEnabled] = useState<boolean>(\n state.config?.is_requisition_list_active === '1' &&\n state.config?.company_enabled === true\n );\n\n useEffect(() => {\n // Listen for requisition list initialization via event bus\n const configListener = events.on('requisitionList/initialized', () => {\n setIsEnabled(\n state.config?.is_requisition_list_active === '1' &&\n state.config?.company_enabled === true\n );\n });\n\n return () => configListener?.off();\n }, []);\n\n return { isEnabled };\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 { 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 { events } from '@adobe-commerce/event-bus';\n\n// Correct type for GraphQL RequisitionListItemsInput\nexport type RequisitionListItemsInput = {\n sku: string;\n quantity: number;\n parent_sku?: string;\n selected_options?: string[];\n entered_options?: Array<{ uid: string; value: string }>;\n};\n\nexport const addProductsToRequisitionList = async (\n requisitionListUid: string,\n requisitionListItems: Array<RequisitionListItemsInput>\n): Promise<RequisitionList | null> => {\n // Clean items before performing the mutation - remove empty fields\n const cleanedItems = requisitionListItems.map((item) => {\n const cleaned: any = {\n sku: item.sku,\n quantity: item.quantity,\n };\n\n if (item.parent_sku) cleaned.parent_sku = item.parent_sku;\n if (item.selected_options && item.selected_options.length > 0) {\n cleaned.selected_options = item.selected_options;\n }\n if (item.entered_options && item.entered_options.length > 0) {\n cleaned.entered_options = item.entered_options;\n }\n\n return cleaned;\n });\n\n const { errors, data } = await fetchGraphQl(\n ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION,\n {\n variables: {\n requisitionListUid,\n requisitionListItems: cleanedItems,\n },\n }\n );\n\n if (errors) return handleFetchError(errors);\n\n if (!data?.addProductsToRequisitionList?.requisition_list) {\n return null;\n }\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 SvgChevronDown = (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\", { d: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronDown;\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 {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList } from '../../data/models/requisitionList.js';\nimport {\n Button,\n Card,\n Icon,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { addProductsToRequisitionList } from '@/requisitionList/api/addProductsToRequisitionList/addProductsToRequisitionList';\nimport {\n EmptyList,\n RequisitionListModal,\n RequisitionListActions,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ChevronDown, List } from '@adobe-commerce/elsie/icons';\nimport { JSX } from 'preact';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/containers/RequisitionListSelector/RequisitionListSelector.css';\nimport {\n useRequisitionLists,\n useRequisitionListAlert,\n useRequisitionListEnabled,\n} from '@/requisitionList/hooks';\n\nexport interface RequisitionListSelectorProps\n extends HTMLAttributes<HTMLDivElement> {\n canCreate?: boolean;\n sku: string;\n selectedOptions?: string[];\n quantity?: number;\n beforeAddProdToReqList?: () => Promise<void> | void;\n}\n\nexport const RequisitionListSelector: Container<\n RequisitionListSelectorProps\n> = ({\n canCreate = true,\n sku,\n selectedOptions,\n quantity = 1,\n beforeAddProdToReqList,\n}: RequisitionListSelectorProps) => {\n const translations = useText({\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n addToRequisitionList: `RequisitionList.RequisitionListForm.addToRequisitionList`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n addToNewRequisitionList: `RequisitionList.RequisitionListSelector.addToNewRequisitionList`,\n addToSelected: `RequisitionList.RequisitionListSelector.addToSelected`,\n });\n const [isAdding, setIsAdding] = useState(false);\n const [selectedReqListUid, setSelectedReqListUid] = useState<string | null>(\n null\n );\n const { lists } = useRequisitionLists();\n const { isEnabled } = useRequisitionListEnabled();\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n const [modal, setModal] = useState<{\n isOpen: boolean;\n isLoading: boolean;\n }>({\n isOpen: false,\n isLoading: false,\n });\n\n useEffect(() => {\n const alertListener = events.on(\n 'requisitionList/alert',\n handleRequisitionListAlert\n );\n\n return () => {\n alertListener?.off();\n };\n }, [handleRequisitionListAlert]);\n\n const handleOpenModal = useCallback(() => {\n setModal({ isOpen: true, isLoading: false });\n }, []);\n\n const handleCloseModal = useCallback(() => {\n setModal({ isOpen: false, isLoading: false });\n setSelectedReqListUid(null);\n setIsAdding(false);\n setAlert(null);\n }, [setAlert]);\n\n const handleAddProdToReqList = useCallback(\n async (requisitionListUid: string) => {\n try {\n // Build the object dynamically, omitting selected_options if not present\n const itemToAdd = {\n sku,\n quantity,\n ...(selectedOptions && selectedOptions.length > 0\n ? { selected_options: selectedOptions }\n : {}),\n };\n\n await addProductsToRequisitionList(requisitionListUid, [itemToAdd]);\n } catch (error) {\n console.error('Error adding product to list:', error);\n throw error;\n }\n },\n [sku, quantity, selectedOptions]\n );\n\n const handleAddProductAndEmitAlert = useCallback(\n async (requisitionListUid: string) => {\n try {\n await handleAddProdToReqList(requisitionListUid);\n\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'success',\n context: 'product',\n skus: [sku],\n });\n } catch {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'error',\n context: 'product',\n skus: [sku],\n });\n } finally {\n setTimeout(() => {\n handleCloseModal();\n }, 2000);\n }\n },\n [sku, handleAddProdToReqList, handleCloseModal]\n );\n\n const handleSubmit = useCallback(\n (event: JSX.TargetedEvent<HTMLFormElement, SubmitEvent>) => {\n event.preventDefault();\n if (!selectedReqListUid) return;\n handleAddProductAndEmitAlert(selectedReqListUid);\n },\n [selectedReqListUid, handleAddProductAndEmitAlert]\n );\n\n const handleOpenModalWithValidation = useCallback(() => {\n if (!beforeAddProdToReqList) {\n handleOpenModal();\n return;\n }\n\n Promise.resolve(beforeAddProdToReqList())\n .then(() => {\n handleOpenModal();\n })\n .catch(() => {\n // Validation failed - don't open modal\n });\n }, [beforeAddProdToReqList, handleOpenModal]);\n\n const reqListOptions = useMemo(\n () => [\n ...(lists?.map((reqList: RequisitionList) => ({\n value: reqList.uid,\n text: reqList.name,\n })) ?? []),\n ],\n [lists]\n );\n\n const availableReqLists = useMemo(\n () => (\n <div className=\"requisition-list-selector__available-lists\">\n {reqListOptions.map((option: { value: string; text: string }) => (\n <Card\n variant={\n selectedReqListUid === option.value ? 'primary' : 'secondary'\n }\n key={option.value}\n onClick={() => {\n setSelectedReqListUid(option.value);\n }}\n >\n <Icon source={List} />\n <span>{option.text}</span>\n </Card>\n ))}\n </div>\n ),\n [reqListOptions, selectedReqListUid]\n );\n\n const selectReqListSection =\n reqListOptions.length > 0 ? (\n isAdding ? (\n <button\n type=\"button\"\n aria-label=\"Select a requisition list\"\n role=\"button\"\n className=\"requisition-list-actions\"\n data-testid=\"requisition-list-actions-button\"\n onClick={() => setIsAdding(false)}\n >\n <span\n className=\"requisition-list-actions__title\"\n data-testid=\"requisition-list-actions-button-text\"\n >\n {translations.addToRequisitionList}\n </span>\n <Icon source={ChevronDown} size=\"32\" />\n </button>\n ) : (\n <Card variant=\"secondary\">\n <form\n onSubmit={handleSubmit}\n className=\"requisition-list-selector__form\"\n >\n {availableReqLists}\n <div className=\"requisition-list-form__actions\">\n <Button type=\"submit\" disabled={!selectedReqListUid}>\n {translations.addToSelected}\n </Button>\n </div>\n </form>\n </Card>\n )\n ) : (\n <EmptyList textContent={translations.emptyList} />\n );\n\n const createReqListSection = !isAdding ? (\n <RequisitionListActions\n onAddNew={() => {\n setIsAdding(true);\n }}\n />\n ) : (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async (newList: RequisitionList) => {\n await handleAddProductAndEmitAlert(newList.uid);\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'error',\n context: 'product',\n skus: [sku],\n });\n }}\n onCancel={() => {\n setIsAdding(false);\n }}\n />\n </Card>\n );\n\n const modalContent = (\n <>\n {alert && (\n <InLineAlert\n key={`requisition-list-selector__alert__${sku}`}\n id={`requisition-list-selector__alert__${sku}`}\n className=\"requisition-list-selector__alert\"\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n />\n )}\n {!alert && (\n <>\n {selectReqListSection}\n {canCreate && createReqListSection}\n </>\n )}\n </>\n );\n\n // Early return after all hooks have been called\n if (isEnabled === null || !isEnabled) {\n return null;\n }\n\n return (\n <div className=\"requisition-list-selector\">\n <Button\n aria-label={translations.addToRequisitionList}\n data-testid=\"requisition-list-selector\"\n size=\"medium\"\n variant=\"tertiary\"\n icon={<Icon source={List} />}\n onClick={handleOpenModalWithValidation}\n />\n {modal.isOpen && (\n <RequisitionListModal\n isOpen\n isLoading={modal.isLoading}\n title={translations.addToRequisitionList}\n modalContent={modalContent}\n handleModalOnClose={handleCloseModal}\n />\n )}\n </div>\n );\n};\n"],"names":["updateCounter","useRequisitionLists","lists","setLists","useState","state","loading","setLoading","lastUpdate","setLastUpdate","useEffect","setRequisitionListsLoading","getRequisitionLists","res","newLists","setRequisitionLists","error","multiListListener","events","payload","singleListListener","updateRequisitionList","useRequisitionListEnabled","isEnabled","setIsEnabled","_a","_b","configListener","ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION","REQUISITION_LIST_ITEMS_FRAGMENT","REQUISITION_LIST_FRAGMENT","addProductsToRequisitionList","requisitionListUid","requisitionListItems","cleanedItems","item","cleaned","errors","data","fetchGraphQl","handleFetchError","transformRequisitionList","SvgChevronDown","props","React","RequisitionListSelector","canCreate","sku","selectedOptions","quantity","beforeAddProdToReqList","translations","useText","isAdding","setIsAdding","selectedReqListUid","setSelectedReqListUid","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","modal","setModal","alertListener","handleOpenModal","useCallback","handleCloseModal","handleAddProdToReqList","itemToAdd","handleAddProductAndEmitAlert","handleSubmit","event","handleOpenModalWithValidation","reqListOptions","useMemo","reqList","availableReqLists","option","jsxs","Card","jsx","Icon","List","selectReqListSection","ChevronDown","Button","EmptyList","createReqListSection","RequisitionListForm","newList","RequisitionListActions","modalContent","Fragment","InLineAlert","RequisitionListModal"],"mappings":"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","x_google_ignoreList":[4]}
1
+ {"version":3,"file":"RequisitionListSelector.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionLists.ts","/@dropins/storefront-requisition-list/src/hooks/useRequisitionListEnabled.ts","/@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/ChevronDown.svg","/@dropins/storefront-requisition-list/src/containers/RequisitionListSelector/RequisitionListSelector.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 { useEffect, useState } from 'preact/compat';\nimport {\n state,\n setRequisitionLists,\n setRequisitionListsLoading,\n updateRequisitionList,\n} from '@/requisitionList/lib/state';\nimport { getRequisitionLists } from '@/requisitionList/api';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nlet updateCounter = 0; // Counter to track updates across all hooks\n\nexport const useRequisitionLists = () => {\n const [lists, setLists] = useState<RequisitionList[]>(state.requisitionLists);\n const [loading, setLoading] = useState(state.requisitionListsLoading);\n const [lastUpdate, setLastUpdate] = useState(updateCounter);\n\n // Fetch lists if empty on mount\n useEffect(() => {\n if (state.requisitionLists.length === 0 && !state.requisitionListsLoading) {\n setRequisitionListsLoading(true);\n getRequisitionLists(1, 100)\n .then((res: { items: RequisitionList[] }) => {\n const newLists = res?.items || [];\n setRequisitionLists(newLists);\n updateCounter++;\n })\n .catch((error: any) => {\n console.error('Error fetching requisition lists:', error);\n setRequisitionLists([]);\n updateCounter++;\n })\n .finally(() => {\n setRequisitionListsLoading(false);\n });\n }\n }, []);\n\n // Listen to event bus updates\n useEffect(() => {\n const multiListListener = events.on(\n 'requisitionLists/data',\n (payload: RequisitionList[] | null) => {\n if (payload) {\n setRequisitionLists(payload);\n updateCounter++;\n setLastUpdate(updateCounter);\n setLists(state.requisitionLists);\n setLoading(state.requisitionListsLoading);\n }\n }\n );\n\n const singleListListener = events.on(\n 'requisitionList/data',\n (payload: RequisitionList | null) => {\n if (!payload) return;\n\n // Only the FIRST hook instance to receive this should update\n // Use the updateRequisitionList helper which handles both add and update\n updateRequisitionList(payload);\n updateCounter++;\n setLastUpdate(updateCounter);\n setLists([...state.requisitionLists]);\n setLoading(state.requisitionListsLoading);\n }\n );\n\n return () => {\n multiListListener?.off();\n singleListListener?.off();\n };\n }, []);\n\n // Sync with global state when it changes\n useEffect(() => {\n if (lastUpdate !== updateCounter) {\n setLists(state.requisitionLists);\n setLoading(state.requisitionListsLoading);\n setLastUpdate(updateCounter);\n }\n }, [lastUpdate]);\n\n return { lists, loading };\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 { useEffect, useState } from 'preact/compat';\nimport { state } from '@/requisitionList/lib/state';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const useRequisitionListEnabled = () => {\n const [isEnabled, setIsEnabled] = useState<boolean>(\n state.config?.is_requisition_list_active === '1' &&\n state.config?.company_enabled === true\n );\n\n useEffect(() => {\n // Listen for requisition list initialization via event bus\n const configListener = events.on('requisitionList/initialized', () => {\n setIsEnabled(\n state.config?.is_requisition_list_active === '1' &&\n state.config?.company_enabled === true\n );\n });\n\n return () => configListener?.off();\n }, []);\n\n return { isEnabled };\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 { 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 { events } from '@adobe-commerce/event-bus';\n\n// Correct type for GraphQL RequisitionListItemsInput\nexport type RequisitionListItemsInput = {\n sku: string;\n quantity: number;\n parent_sku?: string;\n selected_options?: string[];\n entered_options?: Array<{ uid: string; value: string }>;\n};\n\nexport const addProductsToRequisitionList = async (\n requisitionListUid: string,\n requisitionListItems: Array<RequisitionListItemsInput>\n): Promise<RequisitionList | null> => {\n // Clean items before performing the mutation - remove empty fields\n const cleanedItems = requisitionListItems.map((item) => {\n const cleaned: any = {\n sku: item.sku,\n quantity: item.quantity,\n };\n\n if (item.parent_sku) cleaned.parent_sku = item.parent_sku;\n if (item.selected_options && item.selected_options.length > 0) {\n cleaned.selected_options = item.selected_options;\n }\n if (item.entered_options && item.entered_options.length > 0) {\n cleaned.entered_options = item.entered_options;\n }\n\n return cleaned;\n });\n\n const { errors, data } = await fetchGraphQl(\n ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION,\n {\n variables: {\n requisitionListUid,\n requisitionListItems: cleanedItems,\n },\n }\n );\n\n if (errors) return handleFetchError(errors);\n\n if (!data?.addProductsToRequisitionList?.requisition_list) {\n return null;\n }\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 SvgChevronDown = (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: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronDown;\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 {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList } from '../../data/models/requisitionList.js';\nimport {\n Button,\n Card,\n Icon,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { addProductsToRequisitionList } from '@/requisitionList/api/addProductsToRequisitionList/addProductsToRequisitionList';\nimport {\n EmptyList,\n RequisitionListModal,\n RequisitionListActions,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { ChevronDown, List } from '@adobe-commerce/elsie/icons';\nimport { JSX } from 'preact';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/containers/RequisitionListSelector/RequisitionListSelector.css';\nimport {\n useRequisitionLists,\n useRequisitionListAlert,\n useRequisitionListEnabled,\n} from '@/requisitionList/hooks';\n\nexport interface RequisitionListSelectorProps\n extends HTMLAttributes<HTMLDivElement> {\n canCreate?: boolean;\n sku: string;\n selectedOptions?: string[];\n quantity?: number;\n beforeAddProdToReqList?: () => Promise<void> | void;\n}\n\nexport const RequisitionListSelector: Container<\n RequisitionListSelectorProps\n> = ({\n canCreate = true,\n sku,\n selectedOptions,\n quantity = 1,\n beforeAddProdToReqList,\n}: RequisitionListSelectorProps) => {\n const translations = useText({\n createTitle: `RequisitionList.RequisitionListForm.createTitle`,\n addToRequisitionList: `RequisitionList.RequisitionListForm.addToRequisitionList`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n addToNewRequisitionList: `RequisitionList.RequisitionListSelector.addToNewRequisitionList`,\n addToSelected: `RequisitionList.RequisitionListSelector.addToSelected`,\n });\n const [isAdding, setIsAdding] = useState(false);\n const [selectedReqListUid, setSelectedReqListUid] = useState<string | null>(\n null\n );\n const { lists } = useRequisitionLists();\n const { isEnabled } = useRequisitionListEnabled();\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n const [modal, setModal] = useState<{\n isOpen: boolean;\n isLoading: boolean;\n }>({\n isOpen: false,\n isLoading: false,\n });\n\n useEffect(() => {\n const alertListener = events.on(\n 'requisitionList/alert',\n handleRequisitionListAlert\n );\n\n return () => {\n alertListener?.off();\n };\n }, [handleRequisitionListAlert]);\n\n const handleOpenModal = useCallback(() => {\n setModal({ isOpen: true, isLoading: false });\n }, []);\n\n const handleCloseModal = useCallback(() => {\n setModal({ isOpen: false, isLoading: false });\n setSelectedReqListUid(null);\n setIsAdding(false);\n setAlert(null);\n }, [setAlert]);\n\n const handleAddProdToReqList = useCallback(\n async (requisitionListUid: string) => {\n try {\n // Build the object dynamically, omitting selected_options if not present\n const itemToAdd = {\n sku,\n quantity,\n ...(selectedOptions && selectedOptions.length > 0\n ? { selected_options: selectedOptions }\n : {}),\n };\n\n await addProductsToRequisitionList(requisitionListUid, [itemToAdd]);\n } catch (error) {\n console.error('Error adding product to list:', error);\n throw error;\n }\n },\n [sku, quantity, selectedOptions]\n );\n\n const handleAddProductAndEmitAlert = useCallback(\n async (requisitionListUid: string) => {\n try {\n await handleAddProdToReqList(requisitionListUid);\n\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'success',\n context: 'product',\n skus: [sku],\n });\n } catch {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'error',\n context: 'product',\n skus: [sku],\n });\n } finally {\n setTimeout(() => {\n handleCloseModal();\n }, 2000);\n }\n },\n [sku, handleAddProdToReqList, handleCloseModal]\n );\n\n const handleSubmit = useCallback(\n (event: JSX.TargetedEvent<HTMLFormElement, SubmitEvent>) => {\n event.preventDefault();\n if (!selectedReqListUid) return;\n handleAddProductAndEmitAlert(selectedReqListUid);\n },\n [selectedReqListUid, handleAddProductAndEmitAlert]\n );\n\n const handleOpenModalWithValidation = useCallback(() => {\n if (!beforeAddProdToReqList) {\n handleOpenModal();\n return;\n }\n\n Promise.resolve(beforeAddProdToReqList())\n .then(() => {\n handleOpenModal();\n })\n .catch(() => {\n // Validation failed - don't open modal\n });\n }, [beforeAddProdToReqList, handleOpenModal]);\n\n const reqListOptions = useMemo(\n () => [\n ...(lists?.map((reqList: RequisitionList) => ({\n value: reqList.uid,\n text: reqList.name,\n })) ?? []),\n ],\n [lists]\n );\n\n const availableReqLists = useMemo(\n () => (\n <div className=\"requisition-list-selector__available-lists\">\n {reqListOptions.map((option: { value: string; text: string }) => (\n <Card\n variant={\n selectedReqListUid === option.value ? 'primary' : 'secondary'\n }\n key={option.value}\n onClick={() => {\n setSelectedReqListUid(option.value);\n }}\n >\n <Icon source={List} />\n <span>{option.text}</span>\n </Card>\n ))}\n </div>\n ),\n [reqListOptions, selectedReqListUid]\n );\n\n const selectReqListSection =\n reqListOptions.length > 0 ? (\n isAdding ? (\n <button\n type=\"button\"\n aria-label=\"Select a requisition list\"\n role=\"button\"\n className=\"requisition-list-actions\"\n data-testid=\"requisition-list-actions-button\"\n onClick={() => setIsAdding(false)}\n >\n <span\n className=\"requisition-list-actions__title\"\n data-testid=\"requisition-list-actions-button-text\"\n >\n {translations.addToRequisitionList}\n </span>\n <Icon source={ChevronDown} size=\"32\" />\n </button>\n ) : (\n <Card variant=\"secondary\">\n <form\n onSubmit={handleSubmit}\n className=\"requisition-list-selector__form\"\n >\n {availableReqLists}\n <div className=\"requisition-list-form__actions\">\n <Button type=\"submit\" disabled={!selectedReqListUid}>\n {translations.addToSelected}\n </Button>\n </div>\n </form>\n </Card>\n )\n ) : (\n <EmptyList textContent={translations.emptyList} />\n );\n\n const createReqListSection = !isAdding ? (\n <RequisitionListActions\n onAddNew={() => {\n setIsAdding(true);\n }}\n />\n ) : (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async (newList: RequisitionList) => {\n await handleAddProductAndEmitAlert(newList.uid);\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n action: 'add',\n type: 'error',\n context: 'product',\n skus: [sku],\n });\n }}\n onCancel={() => {\n setIsAdding(false);\n }}\n />\n </Card>\n );\n\n const modalContent = (\n <>\n {alert && (\n <InLineAlert\n key={`requisition-list-selector__alert__${sku}`}\n id={`requisition-list-selector__alert__${sku}`}\n className=\"requisition-list-selector__alert\"\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n />\n )}\n {!alert && (\n <>\n {selectReqListSection}\n {canCreate && createReqListSection}\n </>\n )}\n </>\n );\n\n // Early return after all hooks have been called\n if (isEnabled === null || !isEnabled) {\n return null;\n }\n\n return (\n <div className=\"requisition-list-selector\">\n <Button\n aria-label={translations.addToRequisitionList}\n data-testid=\"requisition-list-selector\"\n size=\"medium\"\n variant=\"tertiary\"\n icon={<Icon source={List} />}\n onClick={handleOpenModalWithValidation}\n />\n {modal.isOpen && (\n <RequisitionListModal\n isOpen\n isLoading={modal.isLoading}\n title={translations.addToRequisitionList}\n modalContent={modalContent}\n handleModalOnClose={handleCloseModal}\n />\n )}\n </div>\n );\n};\n"],"names":["updateCounter","useRequisitionLists","lists","setLists","useState","state","loading","setLoading","lastUpdate","setLastUpdate","useEffect","setRequisitionListsLoading","getRequisitionLists","res","newLists","setRequisitionLists","error","multiListListener","events","payload","singleListListener","updateRequisitionList","useRequisitionListEnabled","isEnabled","setIsEnabled","_a","_b","configListener","ADD_PRODUCTS_TO_REQUISITION_LIST_MUTATION","REQUISITION_LIST_ITEMS_FRAGMENT","REQUISITION_LIST_FRAGMENT","addProductsToRequisitionList","requisitionListUid","requisitionListItems","cleanedItems","item","cleaned","errors","data","fetchGraphQl","handleFetchError","transformRequisitionList","SvgChevronDown","props","React","RequisitionListSelector","canCreate","sku","selectedOptions","quantity","beforeAddProdToReqList","translations","useText","isAdding","setIsAdding","selectedReqListUid","setSelectedReqListUid","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","modal","setModal","alertListener","handleOpenModal","useCallback","handleCloseModal","handleAddProdToReqList","itemToAdd","handleAddProductAndEmitAlert","handleSubmit","event","handleOpenModalWithValidation","reqListOptions","useMemo","reqList","availableReqLists","option","jsxs","Card","jsx","Icon","List","selectReqListSection","ChevronDown","Button","EmptyList","createReqListSection","RequisitionListForm","newList","RequisitionListActions","modalContent","Fragment","InLineAlert","RequisitionListModal"],"mappings":"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","x_google_ignoreList":[4]}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as k,jsx as n,Fragment as de}from"@dropins/tools/preact-jsx-runtime.js";import*as l from"@dropins/tools/preact-compat.js";import{useState as P,useEffect as Y,useCallback as T}from"@dropins/tools/preact-compat.js";import{b as ke,a as ye,d as ve,u as Ce,g as G,i as Re}from"../chunks/addRequisitionListItemsToCart.js";import{Icon as j,Button as K,Price as me,Field as Se,Input as Ie,Image as Pe,Checkbox as Ae,Table as Ne,ProgressSpinner as Ee,InLineAlert as Te,Pagination as xe}from"@dropins/tools/components.js";import{events as b}from"@dropins/tools/event-bus.js";import{useState as pe,useCallback as U}from"@dropins/tools/preact-hooks.js";import{classes as ge,VComponent as Ve}from"@dropins/tools/lib.js";import{D as J}from"../chunks/RequisitionListForm.js";import"../chunks/state.js";import{u as Me,E as De}from"../chunks/RequisitionListView.js";import{h as He}from"@dropins/tools/preact.js";import{useText as ee}from"@dropins/tools/i18n.js";import{R as Be}from"../chunks/RequisitionListHeader.js";import{R as ze}from"../chunks/RequisitionListModal.js";import{P as Fe}from"../chunks/PageSizePicker.js";import"../chunks/updateRequisitionList.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/deleteRequisitionList.js";function We(){const[a,R]=pe(null),[p,d]=pe(new Set),y=U((f,S)=>{d(m=>{const w=new Set(m);return S?w.add(f):w.delete(f),w})},[]),v=U(()=>{var S;const f=(S=a==null?void 0:a.items)==null?void 0:S.map(m=>m.uid);d(new Set(f))},[a]),A=U(()=>{d(new Set)},[]);return{currentRequisitionList:a,setCurrentRequisitionList:R,selectedItems:p,setSelectedItems:d,handleItemSelection:y,handleSelectAll:v,handleSelectNone:A}}const $e=a=>l.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a},l.createElement("g",{clipPath:"url(#clip0_102_196)"},l.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"}),l.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M5.25 6.37L20.89 8.06L20.14 14.8H6.19",stroke:"currentColor",strokeLinejoin:"round"})),l.createElement("defs",null,l.createElement("clipPath",{id:"clip0_102_196"},l.createElement("rect",{vectorEffect:"non-scaling-stroke",width:19.29,height:19.5,fill:"white",transform:"translate(2.3501 2.25)"})))),je=a=>l.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a},l.createElement("path",{d:"M17.3332 11.75H6.6665",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke",fill:"none",stroke:"currentColor"})),Qe=a=>l.createElement("svg",{id:"Icon_Search_Base","data-name":"Icon \\u2013 Search \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 24 24",...a},l.createElement("g",{id:"Large"},l.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),l.createElement("g",{id:"Search_icon","data-name":"Search icon",transform:"translate(3.75 3.75)"},l.createElement("circle",{vectorEffect:"non-scaling-stroke",id:"Ellipse_186","data-name":"Ellipse 186",cx:6,cy:6,r:6,fill:"none",stroke:"currentColor"}),l.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_556","data-name":"Line 556",x2:6,y2:6,transform:"translate(10.5 10.5)",fill:"none",stroke:"currentColor"})))),he=a=>l.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...a},l.createElement("path",{d:"M1 5H23",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),l.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}),l.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}),l.createElement("path",{d:"M8.87402 8.58057L9.39348 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),l.createElement("path",{d:"M14.6673 8.58057L14.146 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10})),Ze=({className:a,title:R="404 - Not Found",message:p="The requisition list you are looking for does not exist.",actionLabel:d,onAction:y,...v})=>k("div",{className:ge(["not-found",a]),"data-testid":"not-found",...v,children:[n(j,{source:Qe,size:"64",stroke:"2"}),n("h2",{children:R}),p&&n("p",{children:p}),d&&y&&n(K,{variant:"primary",onClick:y,children:d})]}),Oe=({className:a,items:R,selectedItems:p,currentPage:d,pageSize:y,canEdit:v=!0,handleItemSelection:A,handleUpdateQuantity:f,onAddToCart:S,onDeleteItem:m,...w})=>{const g=ee({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"}),z=[{label:"#",key:"index"},{label:"item",key:"item"},{label:g.priceHeader,key:"price"},{label:g.quantityHeader,key:"quantity"},{label:g.subtotalHeader,key:"subtotal"}];v&&(z.unshift({label:"",key:"selector"}),z.push({label:g.actionsHeader,key:"actions"}));const Q=(e,s)=>{const u=e.target.checked;A(s.uid,u)},Z=e=>(d-1)*y+e+1,D=e=>{var s,u;return((s=e.configured_product)==null?void 0:s.name)||((u=e.product)==null?void 0:u.name)||e.sku},E=e=>{var s,u,L,I;return(s=e.configured_product)!=null&&s.images?(u=e.configured_product.images[0])==null?void 0:u.url:(L=e.product)!=null&&L.images?(I=e.product.images[0])==null?void 0:I.url:""},O=e=>{var s;return((s=e.product)==null?void 0:s.name)||e.sku},X=e=>{var s;return(s=e.configured_product)==null?void 0:s.name},F=e=>{var s;return((s=e.configured_product)==null?void 0:s.sku)||e.sku},W=e=>{var s,u,L,I,x,r,N,V;return((I=(L=(u=(s=e.configured_product)==null?void 0:s.price)==null?void 0:u.final)==null?void 0:L.amount)==null?void 0:I.value)||((V=(N=(r=(x=e.product)==null?void 0:x.price)==null?void 0:r.final)==null?void 0:N.amount)==null?void 0:V.value)||0},H=e=>{var s,u,L,I,x,r,N,V;return((I=(L=(u=(s=e.configured_product)==null?void 0:s.price)==null?void 0:u.final)==null?void 0:L.amount)==null?void 0:I.currency)||((V=(N=(r=(x=e.product)==null?void 0:x.price)==null?void 0:r.final)==null?void 0:N.amount)==null?void 0:V.currency)},B=e=>W(e)*e.quantity,$=R.map((e,s)=>({selector:n(Ae,{className:"requisition-list-view-product-list-table__checkbox",name:"itemSelected","data-testid":`item-checkbox-${e.sku}`,onChange:u=>Q(u,e),value:e.sku,checked:p.has(e.uid)}),index:n("div",{className:"requisition-list-view-product-list-table__index-container",children:Z(s)}),item:k("div",{className:"requisition-list-view-product-list-table__item-container",children:[n(Pe,{className:"requisition-list-view-product-list-table__thumbnail",alt:D(e),src:E(e)}),k("div",{className:"requisition-list-view-product-list-table__item-details",children:[n("div",{className:"requisition-list-view-product-list-table__product-name",children:O(e)}),n("span",{className:"requisition-list-view-product-list-table__product-configurable-name",children:X(e)}),n("div",{className:"requisition-list-view-product-list-table__sku",children:F(e)})]})]}),price:n(me,{className:"requisition-list-view-product-list-table__price",amount:W(e),currency:H(e)}),quantity:n("span",{className:"requisition-list-view-product-list-table__quantity",children:n(Se,{disabled:!1,children:n(Ie,{id:"requisition-list-item-quantity",name:"quantity",type:"text",value:e.quantity,onBlur:u=>{const L=Number.parseInt(u.target.value,10);f(e.uid,L)}})})}),subtotal:n(me,{className:"requisition-list-view-product-list-table__price",amount:B(e),currency:H(e)}),actions:k("div",{className:"requisition-list-view__bulk-actions",children:[n(K,{type:"button",onClick:()=>S([e.uid]),icon:n(j,{source:$e}),"data-testid":"product-list-table-add-to-cart-button"}),n(K,{type:"button",variant:"secondary",icon:n(j,{source:he}),onClick:()=>m([e.uid]),"data-testid":"product-list-table-delete-button"})]})})),t=n(Ne,{columns:z,rowData:$,"data-testid":"product-list-table",mobileLayout:"stacked"});return n(Ve,{node:He("div",{}),className:ge(["requisition-list-view-product-list-table-container",a]),"data-testid":"product-list-table-container",...w,children:t})},Je=({selectedItems:a,deletingItemId:R,addingToCartItemId:p,bulkAddingToCart:d,updatingQuantityItemId:y,onSelectAll:v,onSelectNone:A,onBulkAddToCart:f,onBulkDelete:S})=>{const m=ee({statusDeleting:"RequisitionList.RequisitionListView.statusDeleting",actionSelectAll:"RequisitionList.RequisitionListView.actionSelectAll",actionSelectNone:"RequisitionList.RequisitionListView.actionSelectNone",actionAddToCart:"RequisitionList.RequisitionListView.actionAddToCart",actionDeleteSelectedItems:"RequisitionList.RequisitionListView.actionDeleteSelectedItems",statusBulkAddingToCart:"RequisitionList.RequisitionListView.statusBulkAddingToCart"}),w=R!==null||p!==null||d||y!==null,g=a.size>0;return k("div",{className:"requisition-list-view__batch-actions",children:[k("div",{className:"requisition-list-view__batch-actions-left",children:[n("button",{"data-testid":"bulk-actions-select-toggle-btn",type:"button",className:`requisition-list-view__batch-actions-select-toggle ${g?"requisition-list-view__batch-actions-select-toggle--active":""}`,onClick:g?A:v,disabled:w,"aria-label":g?m.actionSelectNone:m.actionSelectAll,children:n(j,{source:je})}),n("button",{type:"button",className:"requisition-list-view__batch-actions-select-label",onClick:g?A:v,disabled:w,children:m.actionSelectAll})]}),g&&k("div",{className:"requisition-list-view__batch-actions-buttons",children:[n("span",{className:"requisition-list-view__batch-actions-count-badge","aria-label":`${a.size} items selected`,children:a.size}),n(K,{"data-testid":"bulk-actions-add-to-cart-btn",type:"button",variant:"secondary",onClick:f,disabled:w,children:d?m.statusBulkAddingToCart:m.actionAddToCart}),n("button",{"data-testid":"bulk-actions-delete-btn",type:"button",className:"requisition-list-view__batch-actions-delete-icon",onClick:S,disabled:w,"aria-label":m.actionDeleteSelectedItems,children:n(j,{source:he})})]})]})},pt=({requisitionListUid:a,skipProductLoading:R=!1,pageSize:p=J,routeRequisitionListGrid:d})=>{var oe,se,ae,re,ce,le;const[y,v]=P(!1),[A,f]=P(null),[S,m]=P(null),[w,g]=P(!1),[z,Q]=P(null),[Z,D]=P(!1),[E,O]=P(p),[X,F]=P(!0),[W,H]=P(!1),[B,$]=P([]),{currentRequisitionList:t,setCurrentRequisitionList:e,selectedItems:s,setSelectedItems:u,handleItemSelection:L,handleSelectAll:I,handleSelectNone:x}=We(),r=ee({emptyRequisitionList:"RequisitionList.RequisitionListView.emptyRequisitionList",errorLoadingProducts:"RequisitionList.RequisitionListView.errorLoadingProducts",errorLoadPage:"RequisitionList.RequisitionListView.errorLoadPage",notFoundTitle:"RequisitionList.RequisitionListView.notFoundTitle",notFoundMessage:"RequisitionList.RequisitionListView.notFoundMessage",notFoundActionLabel:"RequisitionList.RequisitionListView.notFoundActionLabel",show:"RequisitionList.RequisitionListView.show",itemsCounter:"RequisitionList.RequisitionListView.itemsCounter",deleteItemsTitle:"RequisitionList.RequisitionListView.deleteItemsTitle",deleteItemsMessage:"RequisitionList.RequisitionListView.deleteItemsMessage",confirmAction:"RequisitionList.RequisitionListView.confirmAction",cancelAction:"RequisitionList.RequisitionListView.cancelAction"}),{alert:N,setAlert:V,handleRequisitionListAlert:te}=Me();Y(()=>{const i=b.on("requisitionList/data",c=>{(c==null?void 0:c.uid)===a&&(e(c),u(new Set))}),o=b.on("requisitionList/alert",te);return()=>{i==null||i.off(),o==null||o.off()}},[te,a,e,u]),Y(()=>{O(p)},[p]);const q=T(async i=>{var c,_;const o=((c=i.items)==null?void 0:c.map(C=>C.sku))||[];if(o.length===0)return i;v(!0);try{const C=await ke(o);if(C){const M=new Map;return C.forEach(h=>{M.set(h.sku,h)}),{...i,items:(_=i.items)==null?void 0:_.map(h=>({...h,product:M.get(h.sku)||h.product}))}}return console.warn("No products found"),i}catch(C){return console.warn(C instanceof Error?C.message:r.errorLoadingProducts),i}finally{v(!1)}},[r.errorLoadingProducts]);Y(()=>{if(!a){F(!1);return}if(t&&t.uid===a)return;F(!0),(async()=>{try{const o=await G(a,1,p);if(o)if(R)e(o);else{const c=await q(o);e(c)}}catch(o){console.error("Failed to initialize requisition list from UID:",o)}finally{F(!1)}})()},[a,p,R,q,e,t]);const ie=T(async i=>{i&&i.length===1?(g(!1),m(i)):(g(!0),m(null));try{const o=await ye(t.uid,i);o&&o.length>0?b.emit("requisitionList/alert",{action:"move",type:"error",context:"product",message:o.map(c=>c.message)}):b.emit("requisitionList/alert",{action:"move",type:"success",context:"product"})}catch{b.emit("requisitionList/alert",{action:"move",type:"error",context:"product"})}finally{m(null),g(!1)}},[t]),ne=T(i=>{i&&i.length>0&&($(i),H(!0))},[]),fe=T(async()=>{B.length===1?f(B[0]):f("bulk");try{const i=await ve(t.uid,B,E,t.page_info.current_page);if(i){const o=await q(i);e(o),b.emit("requisitionList/alert",{action:"delete",type:"success",context:"product"})}else b.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}catch{b.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}finally{f(null),H(!1),$([])}},[B,t,E,q,e]),we=T(async(i,o)=>{var c;Q(i);try{const _=(c=t.items)==null?void 0:c.find(h=>h.uid===i);if(!_){b.emit("requisitionList/alert",{action:"update",type:"error",context:"product"});return}const C={item_id:_.uid,entered_options:_.entered_options,selected_options:_.selected_options,quantity:o},M=await Ce(t.uid,[C],E,t.page_info.current_page);if(M){const h=await q(M);e(h),b.emit("requisitionList/alert",{action:"update",type:"success",context:"product"})}else b.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}catch{b.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}finally{Q(null)}},[t,q,e,E]),Le=T(async i=>{D(!0);try{const o=await G(t.uid,i,E);if(o){const c=await q(o);e(c)}else console.warn(r.errorLoadPage)}catch(o){console.warn(o instanceof Error?o.message:r.errorLoadPage)}finally{D(!1)}},[t==null?void 0:t.uid,q,E,r,e]),qe=T(async i=>{O(i),D(!0);try{const o=await G(t.uid,1,i);if(o){const c=await q(o);e(c)}else console.warn(r.errorLoadPage)}catch{console.warn(r.errorLoadPage)}finally{D(!1)}},[t==null?void 0:t.uid,q,r,e]),_e=T(async i=>{const o=await q(i);e(o)},[e,q]),be=()=>{var h,ue;const i=((h=t.page_info)==null?void 0:h.page_size)??J,o=((ue=t.page_info)==null?void 0:ue.current_page)??1,c=i*o,_=(t==null?void 0:t.items_count)??0,C=c-i+1,M=c>_?_:c;return n("span",{className:"requisition-list-view__pagination-items",children:r.itemsCounter.replace("{from}",C.toString()).replace("{to}",M.toString()).replace("{total}",_.toString())})};return k("div",{className:"requisition-list-view__container",children:[X?n("div",{className:"requisition-list-view__loading",children:n(Ee,{stroke:"4",size:"large"})}):!t||!Re(t==null?void 0:t.uid)?n(Ze,{title:r.notFoundTitle,message:r.notFoundMessage,actionLabel:d?r.notFoundActionLabel:void 0,onAction:d?()=>{const i=d();i&&typeof i=="string"&&(window.location.href=i)}:void 0}):k(de,{children:[n(Be,{requisitionList:t,routeRequisitionListGrid:d,onUpdate:_e}),t.items_count===0?n(De,{textContent:`${t.name} ${r.emptyRequisitionList}`}):k(de,{children:[N&&n(Te,{heading:N.description,type:N.type,variant:"primary",onDismiss:()=>V(null)}),n(Je,{selectedItems:s,deletingItemId:A,addingToCartItemId:S,bulkAddingToCart:w,updatingQuantityItemId:z,onSelectAll:I,onSelectNone:x,onBulkAddToCart:()=>ie(Array.from(s)),onBulkDelete:()=>ne(Array.from(s))}),n(Oe,{items:t.items,selectedItems:s,currentPage:((oe=t.page_info)==null?void 0:oe.current_page)||1,pageSize:((se=t.page_info)==null?void 0:se.page_size)||J,handleItemSelection:L,handleUpdateQuantity:we,onAddToCart:ie,onDeleteItem:ne}),t.page_info&&k("div",{className:"requisition-list-view__pagination",children:[be(),(((ae=t.page_info)==null?void 0:ae.total_pages)||0)>1&&n(xe,{totalPages:((re=t.page_info)==null?void 0:re.total_pages)||1,currentPage:((ce=t.page_info)==null?void 0:ce.current_page)||1,onChange:Le,disabled:Z||y}),k("div",{className:"requisition-list-view__pagination-picker",children:[n("span",{children:r.show}),n(Fe,{currentPageSize:((le=t.page_info)==null?void 0:le.page_size)||J,onPageSizeChange:qe,disabled:Z||y})]})]})]})]}),W&&n(ze,{isOpen:W,isLoading:A!==null,title:r.deleteItemsTitle,modalContent:r.deleteItemsMessage,confirmBtnCaption:r.confirmAction,closeBtnCaption:r.cancelAction,handleModalOnClose:()=>{H(!1),$([])},handleModalOnConfirm:fe})]})};export{pt as RequisitionListView,pt as default};
3
+ import{jsxs as q,jsx as n,Fragment as pe}from"@dropins/tools/preact-jsx-runtime.js";import*as u from"@dropins/tools/preact-compat.js";import{useState as E,useEffect as ie,useCallback as V}from"@dropins/tools/preact-compat.js";import{b as be,a as ke,d as ve,u as ye,g as ne,i as Ce}from"../chunks/addRequisitionListItemsToCart.js";import{Icon as Z,Button as ee,Price as me,Field as Re,Input as Se,Image as Ie,Checkbox as Pe,Table as Ee,ProgressSpinner as Ae,InLineAlert as Ne,Pagination as xe}from"@dropins/tools/components.js";import{events as v}from"@dropins/tools/event-bus.js";import{useState as ge,useCallback as se}from"@dropins/tools/preact-hooks.js";import{classes as he,VComponent as Te}from"@dropins/tools/lib.js";import{D as U}from"../chunks/RequisitionListForm.js";import"../chunks/state.js";import{u as Ve,E as Me}from"../chunks/RequisitionListView.js";import{h as De}from"@dropins/tools/preact.js";import{useText as oe}from"@dropins/tools/i18n.js";import{R as He}from"../chunks/RequisitionListHeader.js";import{R as Be}from"../chunks/RequisitionListModal.js";import{P as ze}from"../chunks/PageSizePicker.js";import"../chunks/updateRequisitionList.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/deleteRequisitionList.js";function Fe(){const[o,S]=ge(null),[g,d]=ge(new Set),y=se((_,I)=>{d(m=>{const b=new Set(m);return I?b.add(_):b.delete(_),b})},[]),C=se(()=>{var I;const _=(I=o==null?void 0:o.items)==null?void 0:I.map(m=>m.uid);d(new Set(_))},[o]),A=se(()=>{d(new Set)},[]);return{currentRequisitionList:o,setCurrentRequisitionList:S,selectedItems:g,setSelectedItems:d,handleItemSelection:y,handleSelectAll:C,handleSelectNone:A}}const We=o=>u.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...o},u.createElement("g",{clipPath:"url(#clip0_102_196)"},u.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"}),u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M5.25 6.37L20.89 8.06L20.14 14.8H6.19",stroke:"currentColor",strokeLinejoin:"round"})),u.createElement("defs",null,u.createElement("clipPath",{id:"clip0_102_196"},u.createElement("rect",{vectorEffect:"non-scaling-stroke",width:19.29,height:19.5,fill:"white",transform:"translate(2.3501 2.25)"})))),$e=o=>u.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...o},u.createElement("path",{d:"M17.3332 11.75H6.6665",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke",fill:"none",stroke:"currentColor"})),je=o=>u.createElement("svg",{id:"Icon_Search_Base","data-name":"Icon \\u2013 Search \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 24 24",...o},u.createElement("g",{id:"Large"},u.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),u.createElement("g",{id:"Search_icon","data-name":"Search icon",transform:"translate(3.75 3.75)"},u.createElement("circle",{vectorEffect:"non-scaling-stroke",id:"Ellipse_186","data-name":"Ellipse 186",cx:6,cy:6,r:6,fill:"none",stroke:"currentColor"}),u.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_556","data-name":"Line 556",x2:6,y2:6,transform:"translate(10.5 10.5)",fill:"none",stroke:"currentColor"})))),fe=o=>u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...o},u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M1 5H23",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),u.createElement("path",{vectorEffect:"non-scaling-stroke",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,strokeMiterlimit:10}),u.createElement("path",{vectorEffect:"non-scaling-stroke",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,strokeMiterlimit:10}),u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M8.87402 8.58057L9.39348 17.682",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),u.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M14.6673 8.58057L14.146 17.682",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10})),Qe=({className:o,title:S="404 - Not Found",message:g="The requisition list you are looking for does not exist.",actionLabel:d,onAction:y,...C})=>q("div",{className:he(["not-found",o]),"data-testid":"not-found",...C,children:[n(Z,{source:je,size:"64",stroke:"2"}),n("h2",{children:S}),g&&n("p",{children:g}),d&&y&&n(ee,{variant:"primary",onClick:y,children:d})]}),Ze=({className:o,items:S,selectedItems:g,currentPage:d,pageSize:y,canEdit:C=!0,handleItemSelection:A,handleUpdateQuantity:_,onAddToCart:I,onDeleteItem:m,...b})=>{const h=oe({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"}),F=[{label:"#",key:"index"},{label:"item",key:"item"},{label:h.priceHeader,key:"price"},{label:h.quantityHeader,key:"quantity"},{label:h.subtotalHeader,key:"subtotal"}];C&&(F.unshift({label:"",key:"selector"}),F.push({label:h.actionsHeader,key:"actions"}));const O=(e,a)=>{const c=e.target.checked;A(a.uid,c)},J=e=>(d-1)*y+e+1,B=e=>{var a,c;return((a=e.configured_product)==null?void 0:a.name)||((c=e.product)==null?void 0:c.name)||e.sku},x=e=>{var a,c,f,P;return(a=e.configured_product)!=null&&a.images?(c=e.configured_product.images[0])==null?void 0:c.url:(f=e.product)!=null&&f.images?(P=e.product.images[0])==null?void 0:P.url:""},K=e=>{var a;return((a=e.product)==null?void 0:a.name)||e.sku},te=e=>{var a;return(a=e.configured_product)==null?void 0:a.name},W=e=>e.bundle_options?e.bundle_options.map((c,f)=>q("span",{className:"requisition-list-view-product-list-table__product-configurable-name",children:[c.values[0].label," x ",c.values[0].quantity]},c.values[0].label||f)):void 0,X=e=>{var a;return((a=e.configured_product)==null?void 0:a.sku)||e.sku},z=e=>{var a,c,f,P,r,N,D,T;return e.bundle_options?e.bundle_options.reduce((w,j)=>{var Q,Y,G;return w+(((Y=(Q=j.values[0])==null?void 0:Q.priceV2)==null?void 0:Y.value)||0)*(((G=j.values[0])==null?void 0:G.quantity)||0)},0):((P=(f=(c=(a=e.configured_product)==null?void 0:a.price)==null?void 0:c.final)==null?void 0:f.amount)==null?void 0:P.value)||((T=(D=(N=(r=e.product)==null?void 0:r.price)==null?void 0:N.final)==null?void 0:D.amount)==null?void 0:T.value)||0},M=e=>{var a,c,f,P,r,N,D,T;return((P=(f=(c=(a=e.configured_product)==null?void 0:a.price)==null?void 0:c.final)==null?void 0:f.amount)==null?void 0:P.currency)||((T=(D=(N=(r=e.product)==null?void 0:r.price)==null?void 0:N.final)==null?void 0:D.amount)==null?void 0:T.currency)},$=e=>z(e)*e.quantity,t=S.map((e,a)=>({selector:n(Pe,{className:"requisition-list-view-product-list-table__checkbox",name:"itemSelected","data-testid":`item-checkbox-${e.sku}`,onChange:c=>O(c,e),value:e.sku,checked:g.has(e.uid)}),index:n("div",{className:"requisition-list-view-product-list-table__index-container",children:J(a)}),item:q("div",{className:"requisition-list-view-product-list-table__item-container",children:[n(Ie,{className:"requisition-list-view-product-list-table__thumbnail",alt:B(e),src:x(e)}),q("div",{className:"requisition-list-view-product-list-table__item-details",children:[n("div",{className:"requisition-list-view-product-list-table__product-name",children:K(e)}),n("span",{className:"requisition-list-view-product-list-table__product-configurable-name",children:te(e)}),n("div",{className:"requisition-list-view-product-list-table__sku",children:X(e)}),W(e)]})]}),price:n(me,{className:"requisition-list-view-product-list-table__price",amount:z(e),currency:M(e)}),quantity:n("span",{className:"requisition-list-view-product-list-table__quantity",children:n(Re,{disabled:!1,children:n(Se,{id:"requisition-list-item-quantity",name:"quantity",type:"text",value:e.quantity,onBlur:c=>{const f=Number.parseInt(c.target.value,10);_(e.uid,f)}})})}),subtotal:n(me,{className:"requisition-list-view-product-list-table__price",amount:$(e),currency:M(e)}),actions:q("div",{className:"requisition-list-view__bulk-actions",children:[n(ee,{type:"button",onClick:()=>I([e.uid]),icon:n(Z,{source:We}),"data-testid":"product-list-table-add-to-cart-button"}),n(ee,{type:"button",variant:"secondary",icon:n(Z,{source:fe}),onClick:()=>m([e.uid]),"data-testid":"product-list-table-delete-button"})]})})),p=n(Ee,{columns:F,rowData:t,"data-testid":"product-list-table",mobileLayout:"stacked"});return n(Te,{node:De("div",{}),className:he(["requisition-list-view-product-list-table-container",o]),"data-testid":"product-list-table-container",...b,children:p})},Oe=({selectedItems:o,deletingItemId:S,addingToCartItemId:g,bulkAddingToCart:d,updatingQuantityItemId:y,onSelectAll:C,onSelectNone:A,onBulkAddToCart:_,onBulkDelete:I})=>{const m=oe({statusDeleting:"RequisitionList.RequisitionListView.statusDeleting",actionSelectAll:"RequisitionList.RequisitionListView.actionSelectAll",actionSelectNone:"RequisitionList.RequisitionListView.actionSelectNone",actionAddToCart:"RequisitionList.RequisitionListView.actionAddToCart",actionDeleteSelectedItems:"RequisitionList.RequisitionListView.actionDeleteSelectedItems",statusBulkAddingToCart:"RequisitionList.RequisitionListView.statusBulkAddingToCart"}),b=S!==null||g!==null||d||y!==null,h=o.size>0;return q("div",{className:"requisition-list-view__batch-actions",children:[q("div",{className:"requisition-list-view__batch-actions-left",children:[n("button",{"data-testid":"bulk-actions-select-toggle-btn",type:"button",className:`requisition-list-view__batch-actions-select-toggle ${h?"requisition-list-view__batch-actions-select-toggle--active":""}`,onClick:h?A:C,disabled:b,"aria-label":h?m.actionSelectNone:m.actionSelectAll,children:n(Z,{source:$e})}),n("button",{type:"button",className:"requisition-list-view__batch-actions-select-label",onClick:h?A:C,disabled:b,children:m.actionSelectAll})]}),h&&q("div",{className:"requisition-list-view__batch-actions-buttons",children:[n("span",{className:"requisition-list-view__batch-actions-count-badge","aria-label":`${o.size} items selected`,children:o.size}),n(ee,{"data-testid":"bulk-actions-add-to-cart-btn",type:"button",variant:"secondary",onClick:_,disabled:b,children:d?m.statusBulkAddingToCart:m.actionAddToCart}),n("button",{"data-testid":"bulk-actions-delete-btn",type:"button",className:"requisition-list-view__batch-actions-delete-icon",onClick:I,disabled:b,"aria-label":m.actionDeleteSelectedItems,children:n(Z,{source:fe})})]})]})},pt=({requisitionListUid:o,skipProductLoading:S=!1,pageSize:g=U,routeRequisitionListGrid:d})=>{var ae,re,ce,le,ue;const[y,C]=E(!1),[A,_]=E(null),[I,m]=E(null),[b,h]=E(!1),[F,O]=E(null),[J,B]=E(!1),[x,K]=E(g),[te,W]=E(!0),[X,z]=E(!1),[M,$]=E([]),{currentRequisitionList:t,setCurrentRequisitionList:p,selectedItems:e,setSelectedItems:a,handleItemSelection:c,handleSelectAll:f,handleSelectNone:P}=Fe(),r=oe({emptyRequisitionList:"RequisitionList.RequisitionListView.emptyRequisitionList",errorLoadingProducts:"RequisitionList.RequisitionListView.errorLoadingProducts",errorLoadPage:"RequisitionList.RequisitionListView.errorLoadPage",notFoundTitle:"RequisitionList.RequisitionListView.notFoundTitle",notFoundMessage:"RequisitionList.RequisitionListView.notFoundMessage",notFoundActionLabel:"RequisitionList.RequisitionListView.notFoundActionLabel",show:"RequisitionList.RequisitionListView.show",itemsCounter:"RequisitionList.RequisitionListView.itemsCounter",deleteItemsTitle:"RequisitionList.RequisitionListView.deleteItemsTitle",deleteItemsMessage:"RequisitionList.RequisitionListView.deleteItemsMessage",confirmAction:"RequisitionList.RequisitionListView.confirmAction",cancelAction:"RequisitionList.RequisitionListView.cancelAction"}),{alert:N,setAlert:D,handleRequisitionListAlert:T}=Ve();ie(()=>{const i=v.on("requisitionList/data",l=>{(l==null?void 0:l.uid)===o&&(p(l),a(new Set))}),s=v.on("requisitionList/alert",T);return()=>{i==null||i.off(),s==null||s.off()}},[T,o,p,a]),ie(()=>{K(g)},[g]);const w=V(async i=>{var l,k;const s=((l=i.items)==null?void 0:l.map(R=>R.sku))||[];if(s.length===0)return i;C(!0);try{const R=await be(s);if(R){const H=new Map;return R.forEach(L=>{H.set(L.sku,L)}),{...i,items:(k=i.items)==null?void 0:k.map(L=>({...L,product:H.get(L.sku)||L.product}))}}return console.warn("No products found"),i}catch(R){return console.warn(R instanceof Error?R.message:r.errorLoadingProducts),i}finally{C(!1)}},[r.errorLoadingProducts]);ie(()=>{if(!o){W(!1);return}if(t&&t.uid===o)return;W(!0),(async()=>{try{const s=await ne(o,1,g);if(s)if(S)p(s);else{const l=await w(s);p(l)}}catch(s){console.error("Failed to initialize requisition list from UID:",s)}finally{W(!1)}})()},[o,g,S,w,p,t]);const j=V(async i=>{i&&i.length===1?(h(!1),m(i)):(h(!0),m(null));try{const s=await ke(t.uid,i);s&&s.length>0?v.emit("requisitionList/alert",{action:"move",type:"error",context:"product",message:s.map(l=>l.message)}):v.emit("requisitionList/alert",{action:"move",type:"success",context:"product"})}catch{v.emit("requisitionList/alert",{action:"move",type:"error",context:"product"})}finally{m(null),h(!1)}},[t]),Q=V(i=>{i&&i.length>0&&($(i),z(!0))},[]),Y=V(async()=>{M.length===1?_(M[0]):_("bulk");try{const i=await ve(t.uid,M,x,t.page_info.current_page);if(i){const s=await w(i);p(s),v.emit("requisitionList/alert",{action:"delete",type:"success",context:"product"})}else v.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}catch{v.emit("requisitionList/alert",{action:"delete",type:"error",context:"product"})}finally{_(null),z(!1),$([])}},[M,t,x,w,p]),G=V(async(i,s)=>{var l;O(i);try{const k=(l=t.items)==null?void 0:l.find(L=>L.uid===i);if(!k){v.emit("requisitionList/alert",{action:"update",type:"error",context:"product"});return}const R={item_id:k.uid,entered_options:k.entered_options,selected_options:k.selected_options,quantity:s},H=await ye(t.uid,[R],x,t.page_info.current_page);if(H){const L=await w(H);p(L),v.emit("requisitionList/alert",{action:"update",type:"success",context:"product"})}else v.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}catch{v.emit("requisitionList/alert",{action:"update",type:"error",context:"product"})}finally{O(null)}},[t,w,p,x]),we=V(async i=>{B(!0);try{const s=await ne(t.uid,i,x);if(s){const l=await w(s);p(l)}else console.warn(r.errorLoadPage)}catch(s){console.warn(s instanceof Error?s.message:r.errorLoadPage)}finally{B(!1)}},[t==null?void 0:t.uid,w,x,r,p]),Le=V(async i=>{K(i),B(!0);try{const s=await ne(t.uid,1,i);if(s){const l=await w(s);p(l)}else console.warn(r.errorLoadPage)}catch{console.warn(r.errorLoadPage)}finally{B(!1)}},[t==null?void 0:t.uid,w,r,p]),qe=V(async i=>{const s=await w(i);p(s)},[p,w]),_e=()=>{var L,de;const i=((L=t.page_info)==null?void 0:L.page_size)??U,s=((de=t.page_info)==null?void 0:de.current_page)??1,l=i*s,k=(t==null?void 0:t.items_count)??0,R=l-i+1,H=l>k?k:l;return n("span",{className:"requisition-list-view__pagination-items",children:r.itemsCounter.replace("{from}",R.toString()).replace("{to}",H.toString()).replace("{total}",k.toString())})};return q("div",{className:"requisition-list-view__container",children:[te?n("div",{className:"requisition-list-view__loading",children:n(Ae,{stroke:"4",size:"large"})}):!t||!Ce(t==null?void 0:t.uid)?n(Qe,{title:r.notFoundTitle,message:r.notFoundMessage,actionLabel:d?r.notFoundActionLabel:void 0,onAction:d?()=>{const i=d();i&&typeof i=="string"&&(window.location.href=i)}:void 0}):q(pe,{children:[n(He,{requisitionList:t,routeRequisitionListGrid:d,onUpdate:qe}),t.items_count===0?n(Me,{textContent:`${t.name} ${r.emptyRequisitionList}`}):q(pe,{children:[N&&n(Ne,{heading:N.description,type:N.type,variant:"primary",onDismiss:()=>D(null)}),n(Oe,{selectedItems:e,deletingItemId:A,addingToCartItemId:I,bulkAddingToCart:b,updatingQuantityItemId:F,onSelectAll:f,onSelectNone:P,onBulkAddToCart:()=>j(Array.from(e)),onBulkDelete:()=>Q(Array.from(e))}),n(Ze,{items:t.items,selectedItems:e,currentPage:((ae=t.page_info)==null?void 0:ae.current_page)||1,pageSize:((re=t.page_info)==null?void 0:re.page_size)||U,handleItemSelection:c,handleUpdateQuantity:G,onAddToCart:j,onDeleteItem:Q}),t.page_info&&q("div",{className:"requisition-list-view__pagination",children:[_e(),(((ce=t.page_info)==null?void 0:ce.total_pages)||0)>1&&n(xe,{totalPages:t.page_info.total_pages,currentPage:((le=t.page_info)==null?void 0:le.current_page)||1,onChange:we,disabled:J||y}),q("div",{className:"requisition-list-view__pagination-picker",children:[n("span",{children:r.show}),n(ze,{currentPageSize:((ue=t.page_info)==null?void 0:ue.page_size)||U,onPageSizeChange:Le,disabled:J||y})]})]})]})]}),X&&n(Be,{isOpen:X,isLoading:A!==null,title:r.deleteItemsTitle,modalContent:r.deleteItemsMessage,confirmBtnCaption:r.confirmAction,closeBtnCaption:r.cancelAction,handleModalOnClose:()=>{z(!1),$([])},handleModalOnConfirm:Y})]})};export{pt as RequisitionListView,pt as default};
4
4
  //# sourceMappingURL=RequisitionListView.js.map