@dropins/storefront-requisition-list 1.0.0-beta1 → 1.0.0-beta2

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 +1 @@
1
- {"version":3,"file":"deleteRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/api/deleteRequisitionList/graphql/deleteRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/deleteRequisitionList/deleteRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\n\nexport const DELETE_REQUISITION_LIST_MUTATION = `\n mutation DELETE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n ) {\n deleteRequisitionList(\n requisitionListUid: $requisitionListUid\n ) {\n status\n requisition_lists {\n items {\n ...REQUISITION_LIST_FRAGMENT\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n total_count\n }\n }\n }\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 { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { DELETE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/deleteRequisitionList/graphql/deleteRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const deleteRequisitionList = async (\n requisitionListUid: string\n): Promise<{\n items: RequisitionList[];\n page_info: any;\n status: any;\n} | null> => {\n return fetchGraphQl(DELETE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n },\n }).then(({ errors, data }) => {\n if (!requisitionListUid) return null;\n if (errors) return handleFetchError(errors);\n\n if (!data?.deleteRequisitionList?.requisition_lists) {\n return null;\n }\n\n const reqLists =\n data.deleteRequisitionList.requisition_lists?.items?.map(\n (requisitionList: any) => transformRequisitionList(requisitionList)\n ) || [];\n\n events.emit('requisitionLists/data', reqLists);\n\n return {\n items: reqLists,\n page_info: data.deleteRequisitionList?.requisition_lists?.page_info,\n status: data.deleteRequisitionList?.status,\n };\n });\n};\n"],"names":["DELETE_REQUISITION_LIST_MUTATION","REQUISITION_LIST_FRAGMENT","deleteRequisitionList","requisitionListUid","fetchGraphQl","errors","data","handleFetchError","_a","reqLists","_c","_b","requisitionList","transformRequisitionList","events","_e","_d","_f"],"mappings":"yHAkBO,MAAMA,EAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqB9CC,CAAyB;AAAA,ECfdC,EAAwB,MACnCC,GAMOC,EAAaJ,EAAkC,CACpD,UAAW,CACT,mBAAAG,CAAA,CAEH,CAAA,EAAE,KAAK,CAAC,CAAE,OAAAE,EAAQ,KAAAC,KAAW,iBACxB,GAAA,CAACH,EAA2B,OAAA,KAC5B,GAAAE,EAAe,OAAAE,EAAiBF,CAAM,EAEtC,GAAA,GAACG,EAAAF,GAAA,YAAAA,EAAM,wBAAN,MAAAE,EAA6B,mBACzB,OAAA,KAGT,MAAMC,IACJC,GAAAC,EAAAL,EAAK,sBAAsB,oBAA3B,YAAAK,EAA8C,QAA9C,YAAAD,EAAqD,IAClDE,GAAyBC,EAAyBD,CAAe,KAC/D,CAAC,EAED,OAAAE,EAAA,KAAK,wBAAyBL,CAAQ,EAEtC,CACL,MAAOA,EACP,WAAWM,GAAAC,EAAAV,EAAK,wBAAL,YAAAU,EAA4B,oBAA5B,YAAAD,EAA+C,UAC1D,QAAQE,EAAAX,EAAK,wBAAL,YAAAW,EAA4B,MACtC,CAAA,CACD"}
1
+ {"version":3,"file":"deleteRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/api/deleteRequisitionList/graphql/deleteRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/deleteRequisitionList/deleteRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\n\nexport const DELETE_REQUISITION_LIST_MUTATION = `\n mutation DELETE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n ) {\n deleteRequisitionList(\n requisitionListUid: $requisitionListUid\n ) {\n status\n requisition_lists {\n items {\n ...REQUISITION_LIST_FRAGMENT\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n total_count\n }\n }\n }\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 { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { DELETE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/deleteRequisitionList/graphql/deleteRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const deleteRequisitionList = async (\n requisitionListUid: string\n): Promise<{\n items: RequisitionList[];\n page_info: any;\n status: any;\n} | null> => {\n return fetchGraphQl(DELETE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n },\n }).then(({ errors, data }) => {\n if (!requisitionListUid) return null;\n if (errors) return handleFetchError(errors);\n\n if (!data?.deleteRequisitionList?.requisition_lists) {\n return null;\n }\n\n const reqLists =\n data.deleteRequisitionList.requisition_lists?.items?.map(\n (requisitionList: any) => transformRequisitionList(requisitionList)\n ) || [];\n\n events.emit('requisitionLists/data', reqLists);\n\n return {\n items: reqLists,\n page_info: data.deleteRequisitionList?.requisition_lists?.page_info,\n status: data.deleteRequisitionList?.status,\n };\n });\n};\n"],"names":["DELETE_REQUISITION_LIST_MUTATION","REQUISITION_LIST_FRAGMENT","deleteRequisitionList","requisitionListUid","fetchGraphQl","errors","data","handleFetchError","_a","reqLists","_c","_b","requisitionList","transformRequisitionList","events","_e","_d","_f"],"mappings":"yHAkBO,MAAMA,EAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqB9CC,CAAyB;AAAA,ECfdC,EAAwB,MACnCC,GAMOC,EAAaJ,EAAkC,CACpD,UAAW,CACT,mBAAAG,CAAA,CACF,CACD,EAAE,KAAK,CAAC,CAAE,OAAAE,EAAQ,KAAAC,KAAW,iBAC5B,GAAI,CAACH,EAAoB,OAAO,KAChC,GAAIE,EAAQ,OAAOE,EAAiBF,CAAM,EAE1C,GAAI,GAACG,EAAAF,GAAA,YAAAA,EAAM,wBAAN,MAAAE,EAA6B,mBAChC,OAAO,KAGT,MAAMC,IACJC,GAAAC,EAAAL,EAAK,sBAAsB,oBAA3B,YAAAK,EAA8C,QAA9C,YAAAD,EAAqD,IAClDE,GAAyBC,EAAyBD,CAAe,KAC/D,CAAA,EAEP,OAAAE,EAAO,KAAK,wBAAyBL,CAAQ,EAEtC,CACL,MAAOA,EACP,WAAWM,GAAAC,EAAAV,EAAK,wBAAL,YAAAU,EAA4B,oBAA5B,YAAAD,EAA+C,UAC1D,QAAQE,EAAAX,EAAK,wBAAL,YAAAW,EAA4B,MAAA,CAExC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequisitionLists.js","sources":["/@dropins/storefront-requisition-list/src/api/getRequisitionLists/graphql/getRequisitionLists.ts","/@dropins/storefront-requisition-list/src/api/getRequisitionLists/getRequisitionLists.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\n\nexport const GET_REQUISITION_LISTS_QUERY = `\n query GET_REQUISITION_LISTS_QUERY(\n $currentPage: Int = 1\n $pageSize: Int = 10,\n ) {\n customer {\n requisition_lists(pageSize: $pageSize, currentPage: $currentPage) {\n items {\n ...REQUISITION_LIST_FRAGMENT\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n total_count\n }\n }\n }\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 { GET_REQUISITION_LISTS_QUERY } from '@/requisitionList/api/getRequisitionLists/graphql/getRequisitionLists';\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const getRequisitionLists = async (\n currentPage?: number,\n pageSize?: number\n): Promise<RequisitionList[] | null> => {\n return fetchGraphQl(GET_REQUISITION_LISTS_QUERY, {\n variables: {\n currentPage,\n pageSize,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.customer?.requisition_lists) {\n return null;\n }\n\n const reqLists = data.customer.requisition_lists.items.map(\n (requisitionList: any) => transformRequisitionList(requisitionList)\n );\n\n events.emit('requisitionLists/data', reqLists);\n\n return {\n items: reqLists,\n page_info: data.customer?.requisition_lists?.page_info,\n };\n });\n};\n"],"names":["GET_REQUISITION_LISTS_QUERY","REQUISITION_LIST_FRAGMENT","getRequisitionLists","currentPage","pageSize","fetchGraphQl","errors","data","handleFetchError","_a","reqLists","requisitionList","transformRequisitionList","events","_c","_b"],"mappings":"yHAkBO,MAAMA,EAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBzCC,CAAyB;AAAA,ECbdC,EAAsB,MACjCC,EACAC,IAEOC,EAAaL,EAA6B,CAC/C,UAAW,CACT,YAAAG,EACA,SAAAC,CAAA,CAEH,CAAA,EAAE,KAAK,CAAC,CAAE,OAAAE,EAAQ,KAAAC,KAAW,WACxB,GAAAD,EAAe,OAAAE,EAAiBF,CAAM,EAEtC,GAAA,GAACG,EAAAF,GAAA,YAAAA,EAAM,WAAN,MAAAE,EAAgB,mBACZ,OAAA,KAGT,MAAMC,EAAWH,EAAK,SAAS,kBAAkB,MAAM,IACpDI,GAAyBC,EAAyBD,CAAe,CACpE,EAEO,OAAAE,EAAA,KAAK,wBAAyBH,CAAQ,EAEtC,CACL,MAAOA,EACP,WAAWI,GAAAC,EAAAR,EAAK,WAAL,YAAAQ,EAAe,oBAAf,YAAAD,EAAkC,SAC/C,CAAA,CACD"}
1
+ {"version":3,"file":"getRequisitionLists.js","sources":["/@dropins/storefront-requisition-list/src/api/getRequisitionLists/graphql/getRequisitionLists.ts","/@dropins/storefront-requisition-list/src/api/getRequisitionLists/getRequisitionLists.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\n\nexport const GET_REQUISITION_LISTS_QUERY = `\n query GET_REQUISITION_LISTS_QUERY(\n $currentPage: Int = 1\n $pageSize: Int = 10,\n ) {\n customer {\n requisition_lists(pageSize: $pageSize, currentPage: $currentPage) {\n items {\n ...REQUISITION_LIST_FRAGMENT\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n total_count\n }\n }\n }\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 { GET_REQUISITION_LISTS_QUERY } from '@/requisitionList/api/getRequisitionLists/graphql/getRequisitionLists';\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const getRequisitionLists = async (\n currentPage?: number,\n pageSize?: number\n): Promise<RequisitionList[] | null> => {\n return fetchGraphQl(GET_REQUISITION_LISTS_QUERY, {\n variables: {\n currentPage,\n pageSize,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.customer?.requisition_lists) {\n return null;\n }\n\n const reqLists = data.customer.requisition_lists.items.map(\n (requisitionList: any) => transformRequisitionList(requisitionList)\n );\n\n events.emit('requisitionLists/data', reqLists);\n\n return {\n items: reqLists,\n page_info: data.customer?.requisition_lists?.page_info,\n };\n });\n};\n"],"names":["GET_REQUISITION_LISTS_QUERY","REQUISITION_LIST_FRAGMENT","getRequisitionLists","currentPage","pageSize","fetchGraphQl","errors","data","handleFetchError","_a","reqLists","requisitionList","transformRequisitionList","events","_c","_b"],"mappings":"yHAkBO,MAAMA,EAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBzCC,CAAyB;AAAA,ECbdC,EAAsB,MACjCC,EACAC,IAEOC,EAAaL,EAA6B,CAC/C,UAAW,CACT,YAAAG,EACA,SAAAC,CAAA,CACF,CACD,EAAE,KAAK,CAAC,CAAE,OAAAE,EAAQ,KAAAC,KAAW,WAC5B,GAAID,EAAQ,OAAOE,EAAiBF,CAAM,EAE1C,GAAI,GAACG,EAAAF,GAAA,YAAAA,EAAM,WAAN,MAAAE,EAAgB,mBACnB,OAAO,KAGT,MAAMC,EAAWH,EAAK,SAAS,kBAAkB,MAAM,IACpDI,GAAyBC,EAAyBD,CAAe,CAAA,EAGpE,OAAAE,EAAO,KAAK,wBAAyBH,CAAQ,EAEtC,CACL,MAAOA,EACP,WAAWI,GAAAC,EAAAR,EAAK,WAAL,YAAAQ,EAAe,oBAAf,YAAAD,EAAkC,SAAA,CAEjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sources":["/@dropins/storefront-requisition-list/src/lib/state.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\n\nexport type StoreConfig = {\n is_requisition_list_active?: string;\n company_enabled?: boolean;\n [key: string]: any; // Allow additional config properties\n};\n\ntype State = {\n authenticated: boolean;\n config: StoreConfig | undefined;\n requisitionLists: RequisitionList[];\n requisitionListsLoading: boolean;\n requisitionListsVersion: number;\n};\n\nconst _state: State = (() => {\n return {\n authenticated: false,\n config: undefined,\n requisitionLists: [],\n requisitionListsLoading: false,\n requisitionListsVersion: 0,\n };\n})();\n\n// Proxy state to allow reactivity\nexport const state = new Proxy(_state, {\n set(target, key, value) {\n return Reflect.set(target, key, value);\n },\n get(target, key) {\n return target[key as keyof State];\n },\n});\n\n// Helper functions for managing requisition lists\nexport const setRequisitionLists = (lists: RequisitionList[]) => {\n state.requisitionLists = lists;\n state.requisitionListsVersion++;\n};\n\nexport const addRequisitionList = (list: RequisitionList) => {\n state.requisitionLists = [...state.requisitionLists, list];\n state.requisitionListsVersion++;\n};\n\nexport const updateRequisitionList = (list: RequisitionList) => {\n const exists = state.requisitionLists.some(\n (l: RequisitionList) => l.uid === list.uid\n );\n\n if (exists) {\n state.requisitionLists = state.requisitionLists.map((l: RequisitionList) =>\n l.uid === list.uid ? list : l\n );\n } else {\n state.requisitionLists = [...state.requisitionLists, list];\n }\n state.requisitionListsVersion++;\n};\n\nexport const getRequisitionListsFromState = () => {\n return state.requisitionLists;\n};\n\nexport const setRequisitionListsLoading = (loading: boolean) => {\n state.requisitionListsLoading = loading;\n};\n"],"names":["_state","state","target","key","value","setRequisitionLists","lists","updateRequisitionList","list","l","setRequisitionListsLoading","loading"],"mappings":"AAiCA,MAAMA,EACG,CACL,cAAe,GACf,OAAQ,OACR,iBAAkB,CAAC,EACnB,wBAAyB,GACzB,wBAAyB,CAC3B,EAIWC,EAAQ,IAAI,MAAMD,EAAQ,CACrC,IAAIE,EAAQC,EAAKC,EAAO,CACtB,OAAO,QAAQ,IAAIF,EAAQC,EAAKC,CAAK,CACvC,EACA,IAAIF,EAAQC,EAAK,CACf,OAAOD,EAAOC,CAAkB,CAAA,CAEpC,CAAC,EAGYE,EAAuBC,GAA6B,CAC/DL,EAAM,iBAAmBK,EACnBL,EAAA,yBACR,EAOaM,EAAyBC,GAA0B,CAC/CP,EAAM,iBAAiB,KACnCQ,GAAuBA,EAAE,MAAQD,EAAK,GACzC,EAGQP,EAAA,iBAAmBA,EAAM,iBAAiB,IAAKQ,GACnDA,EAAE,MAAQD,EAAK,IAAMA,EAAOC,CAC9B,EAEAR,EAAM,iBAAmB,CAAC,GAAGA,EAAM,iBAAkBO,CAAI,EAErDP,EAAA,yBACR,EAMaS,EAA8BC,GAAqB,CAC9DV,EAAM,wBAA0BU,CAClC"}
1
+ {"version":3,"file":"state.js","sources":["/@dropins/storefront-requisition-list/src/lib/state.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\n\nexport type StoreConfig = {\n is_requisition_list_active?: string;\n company_enabled?: boolean;\n [key: string]: any; // Allow additional config properties\n};\n\ntype State = {\n authenticated: boolean;\n config: StoreConfig | undefined;\n requisitionLists: RequisitionList[];\n requisitionListsLoading: boolean;\n requisitionListsVersion: number;\n};\n\nconst _state: State = (() => {\n return {\n authenticated: false,\n config: undefined,\n requisitionLists: [],\n requisitionListsLoading: false,\n requisitionListsVersion: 0,\n };\n})();\n\n// Proxy state to allow reactivity\nexport const state = new Proxy(_state, {\n set(target, key, value) {\n return Reflect.set(target, key, value);\n },\n get(target, key) {\n return target[key as keyof State];\n },\n});\n\n// Helper functions for managing requisition lists\nexport const setRequisitionLists = (lists: RequisitionList[]) => {\n state.requisitionLists = lists;\n state.requisitionListsVersion++;\n};\n\nexport const addRequisitionList = (list: RequisitionList) => {\n state.requisitionLists = [...state.requisitionLists, list];\n state.requisitionListsVersion++;\n};\n\nexport const updateRequisitionList = (list: RequisitionList) => {\n const exists = state.requisitionLists.some(\n (l: RequisitionList) => l.uid === list.uid\n );\n\n if (exists) {\n state.requisitionLists = state.requisitionLists.map((l: RequisitionList) =>\n l.uid === list.uid ? list : l\n );\n } else {\n state.requisitionLists = [...state.requisitionLists, list];\n }\n state.requisitionListsVersion++;\n};\n\nexport const getRequisitionListsFromState = () => {\n return state.requisitionLists;\n};\n\nexport const setRequisitionListsLoading = (loading: boolean) => {\n state.requisitionListsLoading = loading;\n};\n"],"names":["_state","state","target","key","value","setRequisitionLists","lists","updateRequisitionList","list","l","setRequisitionListsLoading","loading"],"mappings":"AAiCA,MAAMA,EACG,CACL,cAAe,GACf,OAAQ,OACR,iBAAkB,CAAA,EAClB,wBAAyB,GACzB,wBAAyB,CAAA,EAKhBC,EAAQ,IAAI,MAAMD,EAAQ,CACrC,IAAIE,EAAQC,EAAKC,EAAO,CACtB,OAAO,QAAQ,IAAIF,EAAQC,EAAKC,CAAK,CACvC,EACA,IAAIF,EAAQC,EAAK,CACf,OAAOD,EAAOC,CAAkB,CAClC,CACF,CAAC,EAGYE,EAAuBC,GAA6B,CAC/DL,EAAM,iBAAmBK,EACzBL,EAAM,yBACR,EAOaM,EAAyBC,GAA0B,CAC/CP,EAAM,iBAAiB,KACnCQ,GAAuBA,EAAE,MAAQD,EAAK,GAAA,EAIvCP,EAAM,iBAAmBA,EAAM,iBAAiB,IAAKQ,GACnDA,EAAE,MAAQD,EAAK,IAAMA,EAAOC,CAAA,EAG9BR,EAAM,iBAAmB,CAAC,GAAGA,EAAM,iBAAkBO,CAAI,EAE3DP,EAAM,yBACR,EAMaS,EAA8BC,GAAqB,CAC9DV,EAAM,wBAA0BU,CAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/lib/fetch-error.ts","/@dropins/storefront-requisition-list/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListFragment.graphql.ts","/@dropins/storefront-requisition-list/src/data/transforms/transform-requisition-list.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListItemsFragment.graphql.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/graphql/updateRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/updateRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (errors: Array<{ message: string }>) => {\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_FRAGMENT = `\nfragment REQUISITION_LIST_FRAGMENT on RequisitionList {\n uid\n name\n description\n items_count\n updated_at\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { RequisitionList } from '../models/requisitionList';\nimport {\n Item,\n ConfiguredProduct,\n Link,\n Sample,\n BundleOption,\n ConfigurableOption,\n CustomizableOption,\n GiftCardOption,\n} from '@/requisitionList/data/models/item';\n\n// Interface for raw API response data for a requisition list\nexport interface RawRequisitionListData {\n name: string;\n description: string;\n uid: string;\n updated_at: string;\n items_count: number;\n items: {\n items: RawItemData[];\n page_info: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n };\n}\n\nexport function transformRequisitionList(\n data: RawRequisitionListData\n): RequisitionList | null {\n if (!data) {\n return null;\n }\n\n return {\n uid: data.uid,\n name: data.name,\n description: data.description,\n updated_at: data.updated_at,\n items_count: data.items_count,\n items: transformItems(data.items?.items),\n page_info: data.items?.page_info,\n };\n}\n\n// Interface for raw item data\ninterface RawItemData {\n uid: string;\n product: {\n sku: string;\n };\n quantity: number;\n customizable_options?: CustomizableOption[];\n bundle_options?: BundleOption[];\n configurable_options?: ConfigurableOption[];\n configured_product?: ConfiguredProduct;\n links?: Link[];\n samples?: Sample[];\n gift_card_options?: GiftCardOption;\n}\n\nfunction transformItems(items: RawItemData[]): Item[] {\n if (!items?.length) return [];\n\n return items.map((item: RawItemData) => {\n const transformedItem = {\n uid: item.uid,\n sku: item.product?.sku,\n quantity: item.quantity,\n customizable_options: item.customizable_options\n ? item.customizable_options.map((option) => ({\n uid: option.customizable_option_uid,\n is_required: option.is_required,\n label: option.label,\n sort_order: option.sort_order,\n type: option.type,\n values: option.values.map((value) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n price: value.price,\n value: value.value,\n })),\n }))\n : [],\n bundle_options: item.bundle_options || [],\n configurable_options: item.configurable_options\n ? item.configurable_options.map((option) => ({\n option_uid: option.configurable_product_option_uid,\n option_label: option.option_label,\n value_uid: option.configurable_product_option_value_uid,\n value_label: option.value_label,\n }))\n : [],\n samples: item.samples\n ? item.samples.map((sample) => ({\n url: sample.sample_url,\n sort_order: sample.sort_order,\n title: sample.title,\n }))\n : [],\n gift_card_options: item.gift_card_options || {},\n };\n\n if (item.configured_product?.name) {\n return {\n ...transformedItem,\n configured_product: item.configured_product,\n };\n }\n return transformedItem;\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_ITEMS_FRAGMENT = `\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on BundleRequisitionListItem {\n bundle_options {\n uid\n type\n label\n values {\n uid\n label\n quantity\n priceV2 {\n value\n currency\n }\n original_price {\n value\n currency\n }\n }\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const UPDATE_REQUISITION_LIST_MUTATION = `\n mutation UPDATE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n $name: String!,\n $description: String,\n $pageSize: Int,\n $currentPage: Int\n ) {\n updateRequisitionList(\n requisitionListUid: $requisitionListUid\n input: {\n name: $name\n description: $description\n }\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items(pageSize: $pageSize, currentPage: $currentPage) {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_FRAGMENT}\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { UPDATE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/updateRequisitionList/graphql/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const updateRequisitionList = async (\n requisitionListUid: string,\n name: string,\n description?: string,\n pageSize?: number,\n currentPage?: number\n): Promise<RequisitionList | null> => {\n return fetchGraphQl(UPDATE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n name,\n description,\n pageSize,\n currentPage,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.updateRequisitionList?.requisition_list) {\n return null;\n }\n\n const payload = transformRequisitionList(\n data.updateRequisitionList.requisition_list\n );\n\n events.emit('requisitionList/data', payload);\n\n return payload;\n });\n};\n"],"names":["handleFetchError","errors","errorMessage","e","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","REQUISITION_LIST_FRAGMENT","transformRequisitionList","data","transformItems","_a","_b","items","item","transformedItem","option","value","sample","REQUISITION_LIST_ITEMS_FRAGMENT","UPDATE_REQUISITION_LIST_MUTATION","updateRequisitionList","requisitionListUid","name","description","pageSize","currentPage","payload","events"],"mappings":"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"}
1
+ {"version":3,"file":"updateRequisitionList.js","sources":["/@dropins/storefront-requisition-list/src/lib/fetch-error.ts","/@dropins/storefront-requisition-list/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListFragment.graphql.ts","/@dropins/storefront-requisition-list/src/data/transforms/transform-requisition-list.ts","/@dropins/storefront-requisition-list/src/api/fragments/RequisitionListItemsFragment.graphql.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/graphql/updateRequisitionList.ts","/@dropins/storefront-requisition-list/src/api/updateRequisitionList/updateRequisitionList.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (errors: Array<{ message: string }>) => {\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_FRAGMENT = `\nfragment REQUISITION_LIST_FRAGMENT on RequisitionList {\n uid\n name\n description\n items_count\n updated_at\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { RequisitionList } from '../models/requisitionList';\nimport {\n Item,\n ConfiguredProduct,\n Link,\n Sample,\n BundleOption,\n ConfigurableOption,\n CustomizableOption,\n GiftCardOption,\n} from '@/requisitionList/data/models/item';\n\n// Interface for raw API response data for a requisition list\nexport interface RawRequisitionListData {\n name: string;\n description: string;\n uid: string;\n updated_at: string;\n items_count: number;\n items: {\n items: RawItemData[];\n page_info: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n };\n}\n\nexport function transformRequisitionList(\n data: RawRequisitionListData\n): RequisitionList | null {\n if (!data) {\n return null;\n }\n\n return {\n uid: data.uid,\n name: data.name,\n description: data.description,\n updated_at: data.updated_at,\n items_count: data.items_count,\n items: transformItems(data.items?.items),\n page_info: data.items?.page_info,\n };\n}\n\n// Interface for raw item data\ninterface RawItemData {\n uid: string;\n product: {\n sku: string;\n };\n quantity: number;\n customizable_options?: CustomizableOption[];\n bundle_options?: BundleOption[];\n configurable_options?: ConfigurableOption[];\n configured_product?: ConfiguredProduct;\n links?: Link[];\n samples?: Sample[];\n gift_card_options?: GiftCardOption;\n}\n\nfunction transformItems(items: RawItemData[]): Item[] {\n if (!items?.length) return [];\n\n return items.map((item: RawItemData) => {\n const transformedItem = {\n uid: item.uid,\n sku: item.product?.sku,\n quantity: item.quantity,\n customizable_options: item.customizable_options\n ? item.customizable_options.map((option) => ({\n uid: option.customizable_option_uid,\n is_required: option.is_required,\n label: option.label,\n sort_order: option.sort_order,\n type: option.type,\n values: option.values.map((value) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n price: value.price,\n value: value.value,\n })),\n }))\n : [],\n bundle_options: item.bundle_options || [],\n configurable_options: item.configurable_options\n ? item.configurable_options.map((option) => ({\n option_uid: option.configurable_product_option_uid,\n option_label: option.option_label,\n value_uid: option.configurable_product_option_value_uid,\n value_label: option.value_label,\n }))\n : [],\n samples: item.samples\n ? item.samples.map((sample) => ({\n url: sample.sample_url,\n sort_order: sample.sort_order,\n title: sample.title,\n }))\n : [],\n gift_card_options: item.gift_card_options || {},\n };\n\n if (item.configured_product?.name) {\n return {\n ...transformedItem,\n configured_product: item.configured_product,\n };\n }\n return transformedItem;\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const REQUISITION_LIST_ITEMS_FRAGMENT = `\nfragment REQUISITION_LIST_ITEMS_FRAGMENT on RequistionListItems {\n items {\n uid\n quantity\n product {\n sku\n }\n customizable_options {\n customizable_option_uid\n is_required\n label\n sort_order\n type\n values {\n customizable_option_value_uid\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n ... on ConfigurableRequisitionListItem {\n configurable_options {\n configurable_product_option_uid\n configurable_product_option_value_uid\n option_label\n value_label\n }\n }\n ... on DownloadableRequisitionListItem {\n links {\n price\n sample_url\n sort_order\n title\n uid\n }\n samples {\n sample_url\n sort_order\n title\n }\n }\n ... on BundleRequisitionListItem {\n bundle_options {\n uid\n type\n label\n values {\n uid\n label\n quantity\n priceV2 {\n value\n currency\n }\n original_price {\n value\n currency\n }\n }\n }\n }\n ... on GiftCardRequisitionListItem {\n gift_card_options {\n amount {\n currency\n value\n }\n custom_giftcard_amount {\n currency\n value\n }\n message\n recipient_email\n recipient_name\n sender_name\n sender_email\n }\n }\n }\n page_info {\n page_size\n current_page\n total_pages\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { REQUISITION_LIST_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListFragment.graphql';\nimport { REQUISITION_LIST_ITEMS_FRAGMENT } from '@/requisitionList/api/fragments/RequisitionListItemsFragment.graphql';\n\nexport const UPDATE_REQUISITION_LIST_MUTATION = `\n mutation UPDATE_REQUISITION_LIST_MUTATION(\n $requisitionListUid: ID!,\n $name: String!,\n $description: String,\n $pageSize: Int,\n $currentPage: Int\n ) {\n updateRequisitionList(\n requisitionListUid: $requisitionListUid\n input: {\n name: $name\n description: $description\n }\n ) {\n requisition_list {\n ...REQUISITION_LIST_FRAGMENT\n items(pageSize: $pageSize, currentPage: $currentPage) {\n ...REQUISITION_LIST_ITEMS_FRAGMENT\n }\n }\n }\n }\n${REQUISITION_LIST_FRAGMENT}\n${REQUISITION_LIST_ITEMS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { transformRequisitionList } from '@/requisitionList/data/transforms';\nimport { fetchGraphQl } from '@/requisitionList/api';\nimport { handleFetchError } from '@/requisitionList/lib/fetch-error';\nimport { RequisitionList } from '@/requisitionList/data/models/requisitionList';\nimport { UPDATE_REQUISITION_LIST_MUTATION } from '@/requisitionList/api/updateRequisitionList/graphql/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const updateRequisitionList = async (\n requisitionListUid: string,\n name: string,\n description?: string,\n pageSize?: number,\n currentPage?: number\n): Promise<RequisitionList | null> => {\n return fetchGraphQl(UPDATE_REQUISITION_LIST_MUTATION, {\n variables: {\n requisitionListUid,\n name,\n description,\n pageSize,\n currentPage,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n if (!data?.updateRequisitionList?.requisition_list) {\n return null;\n }\n\n const payload = transformRequisitionList(\n data.updateRequisitionList.requisition_list\n );\n\n events.emit('requisitionList/data', payload);\n\n return payload;\n });\n};\n"],"names":["handleFetchError","errors","errorMessage","e","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","REQUISITION_LIST_FRAGMENT","transformRequisitionList","data","transformItems","_a","_b","items","item","transformedItem","option","value","sample","REQUISITION_LIST_ITEMS_FRAGMENT","UPDATE_REQUISITION_LIST_MUTATION","updateRequisitionList","requisitionListUid","name","description","pageSize","currentPage","payload","events"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as w,jsx as n,Fragment as D}from"@dropins/tools/preact-jsx-runtime.js";import{useState as M,useCallback as m,useMemo as W,useEffect as S}from"@dropins/tools/preact-compat.js";import{Button as b,Header as G,InLineAlert as U,Table as V,Pagination as B,Card as j}from"@dropins/tools/components.js";import{Slot as Z,classes as v,VComponent as $}from"@dropins/tools/lib.js";import{D as N,R as J}from"../chunks/RequisitionListForm.js";import"@dropins/tools/preact-hooks.js";import{R as K}from"../chunks/RequisitionListForm2.js";import"../chunks/state.js";import{events as g}from"@dropins/tools/event-bus.js";import{u as Q,E as X}from"../chunks/RequisitionListView.js";import"@dropins/tools/preact.js";import{R as Y}from"../chunks/RequisitionListActions.js";import{R as z}from"../chunks/RequisitionListModal.js";import{P as I}from"../chunks/PageSizePicker.js";import{useText as x}from"@dropins/tools/i18n.js";import{u as ii}from"../chunks/updateRequisitionList.js";import{d as ei}from"../chunks/deleteRequisitionList.js";import{g as E}from"../chunks/getRequisitionLists.js";import"@dropins/tools/fetch-graphql.js";function ti(c,l,t){const d=x({actionRename:"RequisitionList.RequisitionListView.actionRename",actionDeleteList:"RequisitionList.RequisitionListView.actionDeleteList"}),[e,o]=M(null),[h,L]=M(!1),[C,R]=M(!1),q=m(()=>{t&&t(),L(!0)},[t]),f=m(()=>L(!1),[]),u=W(()=>{if(c)return{handleOpenRenameModal:i=>{L(s=>s&&!1),c.handleOpenRenameModal(i)},handleOpenDeleteModal:i=>{L(s=>s&&!1),c.handleOpenDeleteModal(i)}}},[c]),a=m(async(i,s)=>{var r,_,P;R(!0);try{const p=await E(i,s),T=((r=p==null?void 0:p.page_info)==null?void 0:r.current_page)??1,F=((_=p==null?void 0:p.page_info)==null?void 0:_.total_pages)??0;if(!((((P=p==null?void 0:p.items)==null?void 0:P.length)??0)>0)&&T>1&&F>=T-1){const H=T-1,k=await E(H,s);o(k)}else o(p)}finally{R(!1)}},[]);S(()=>{const i=g.on("requisitionLists/data",s=>{s&&s.items&&o(s)},{eager:!0});return()=>{i==null||i.off()}},[]),S(()=>{e||a(1,N)},[e,a]);const O=m(i=>{var _,P;const s=i??((_=e==null?void 0:e.page_info)==null?void 0:_.current_page)??1,r=((P=e==null?void 0:e.page_info)==null?void 0:P.page_size)??N;return a(s,r)},[a,e]),A=m(async i=>{await a(1,i)},[a]);return{rows:W(()=>((e==null?void 0:e.items)??[]).map(i=>({name:w("div",{className:"requisition-list-grid-wrapper__name",children:[n("div",{className:"requisition-list-grid-wrapper__name__title",children:n("a",{href:"#",onClick:s=>{if(s.preventDefault(),l){const r=l(i.uid);typeof r=="string"&&(window.location.href=r)}},children:i.name})}),i.description&&n("div",{className:"requisition-list-grid-wrapper__name__description",children:i.description})]}),items_count:i.items_count,last_updated:new Date(i.updated_at).toLocaleString(),actions:w("div",{className:"requisition-list-grid-wrapper__actions",children:[n(b,{variant:"tertiary",type:"button","data-testid":"rename-button",onClick:()=>u==null?void 0:u.handleOpenRenameModal(i),children:d.actionRename}),n(b,{variant:"tertiary",type:"button","data-testid":"delete-button",onClick:()=>u==null?void 0:u.handleOpenDeleteModal(i),children:d.actionDeleteList})]})})),[e==null?void 0:e.items,d.actionRename,d.actionDeleteList,u,l]),isLoading:C||!e,pageInfo:e==null?void 0:e.page_info,handlePageChange:O,handlePageSizeChange:A,isAdding:h,handleAddNew:q,handleCancelCreate:f}}const Oi=({routeRequisitionListDetails:c,slots:l})=>{const[t,d]=M({type:null,isOpen:!1,isLoading:!1,requisitionList:null}),e=m(()=>{d({type:null,isOpen:!1,isLoading:!1,requisitionList:null})},[]),o=m(r=>{d({type:"rename",isOpen:!0,isLoading:!1,requisitionList:r})},[]),h=m(r=>{d({type:"delete",isOpen:!0,isLoading:!1,requisitionList:r})},[]),{rows:L,isLoading:C,pageInfo:R,handlePageChange:q,handlePageSizeChange:f,isAdding:u,handleAddNew:a,handleCancelCreate:O}=ti({handleOpenRenameModal:o,handleOpenDeleteModal:h},c,e),A=m(async r=>{if(t.requisitionList)try{await ii(t.requisitionList.uid,r.name,r.description),g.emit("requisitionList/alert",{action:"update",type:"success",context:"requisitionList"}),await q(),e()}catch{g.emit("requisitionList/alert",{action:"update",type:"error",context:"requisitionList"})}},[t.requisitionList,q,e]),y=async()=>{t.requisitionList&&(d({...t,isLoading:!0}),await ei(t.requisitionList.uid).then(async()=>{g.emit("requisitionList/alert",{type:"success",action:"delete",context:"requisitionList"})}).catch(()=>{g.emit("requisitionList/alert",{type:"error",action:"delete",context:"requisitionList"})}).finally(async()=>{await q(),e()}))},i=x({containerTitle:"RequisitionList.containerTitle",updateTitle:"RequisitionList.RequisitionListForm.updateTitle",deleteRequisitionListTitle:"RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle",deleteRequisitionListMessage:"RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage",cancelAction:"RequisitionList.RequisitionListWrapper.cancelAction",confirmAction:"RequisitionList.RequisitionListWrapper.confirmAction"}),s=m(()=>l!=null&&l.Header?n(Z,{name:"Header","aria-label":i.containerTitle,title:i.containerTitle,slot:l.Header}):n(G,{"aria-label":i.containerTitle,role:"region",title:i.containerTitle}),[l,i.containerTitle]);return w(D,{children:[n(ni,{header:s(),rows:L,skeletonRowCount:10,isLoading:C,pageInfo:R,handlePageChange:q,handlePageSizeChange:f,defaultPageSize:10,isAdding:u,handleAddNew:a,handleCancelCreate:O}),t.type==="rename"&&t.isOpen&&t.requisitionList&&n(z,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.updateTitle,modalContent:n(J,{mode:"update",defaultValues:{name:t.requisitionList.name,description:t.requisitionList.description||""},onSubmit:A,onCancel:e}),handleModalOnClose:e}),t.type==="delete"&&t.isOpen&&n(z,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.deleteRequisitionListTitle,modalContent:i.deleteRequisitionListMessage,confirmBtnCaption:i.confirmAction,closeBtnCaption:i.cancelAction,handleModalOnClose:e,handleModalOnConfirm:y})]})},ni=({className:c,isLoading:l=!1,header:t,rows:d=[],skeletonRowCount:e=10,pageInfo:o,handlePageChange:h,handlePageSizeChange:L,defaultPageSize:C=10,isAdding:R,handleAddNew:q,handleCancelCreate:f,...u})=>{const a=x({name:"RequisitionList.RequisitionListWrapper.name",itemsCount:"RequisitionList.RequisitionListWrapper.itemsCount",lastUpdated:"RequisitionList.RequisitionListWrapper.lastUpdated",actions:"RequisitionList.RequisitionListWrapper.actions",emptyList:"RequisitionList.RequisitionListWrapper.emptyList"}),O=((o==null?void 0:o.total_pages)??0)>0,A=!l&&d.length===0&&!O,{alert:y,setAlert:i,handleRequisitionListAlert:s}=Q();return S(()=>{g.on("requisitionList/alert",s)},[s]),w("div",{...u,className:v(["requisition-list-grid-wrapper",c]),"data-testid":"requisition-list-grid-wrapper",children:[t&&n("div",{className:v(["requisition-list-grid-wrapper__header",c]),"data-testid":"requisition-list-grid-wrapper-header",children:n($,{node:t})}),y&&n(D,{children:n(U,{heading:y.description,type:y.type,variant:"primary",onDismiss:()=>i(null)})}),A?n(X,{textContent:a.emptyList}):w(D,{children:[n(V,{columns:[{key:"name",label:a.name},{key:"items_count",label:a.itemsCount},{key:"last_updated",label:a.lastUpdated},{key:"actions",label:a.actions}],rowData:d,loading:l,skeletonRowCount:e}),n("div",{className:v(["requisition-list-grid-wrapper__pagination",c]),children:w("div",{className:"requisition-list-grid-wrapper__pagination-controls",children:[n(I,{currentPageSize:(o==null?void 0:o.page_size)||C,onPageSizeChange:L||(()=>Promise.resolve()),disabled:l}),o&&o.total_pages>1&&n(B,{totalPages:o.total_pages,currentPage:o.current_page,onChange:h})]})})]}),n("div",{className:v(["requisition-list-grid-wrapper__add-new",c]),children:R?n(j,{variant:"secondary",children:n(K,{mode:"create",onSuccess:async()=>{await h(),f(),g.emit("requisitionList/alert",{type:"success",action:"create",context:"requisitionList"})},onError:()=>{g.emit("requisitionList/alert",{type:"error",action:"create",context:"requisitionList"})},onCancel:f})}):n(Y,{onAddNew:q})})]})};export{Oi as RequisitionListGrid,Oi as default};
3
+ import{jsxs as C,jsx as s,Fragment as F}from"@dropins/tools/preact-jsx-runtime.js";import{useState as M,useCallback as L,useMemo as x,useEffect as T}from"@dropins/tools/preact-compat.js";import{Button as N,Header as G,InLineAlert as U,Table as V,Pagination as B,Card as j}from"@dropins/tools/components.js";import{Slot as J,classes as v,VComponent as Z}from"@dropins/tools/lib.js";import{D as W,R as $}from"../chunks/RequisitionListForm.js";import"@dropins/tools/preact-hooks.js";import{R as K}from"../chunks/RequisitionListForm2.js";import"../chunks/state.js";import{events as w}from"@dropins/tools/event-bus.js";import{u as Q,E as X}from"../chunks/RequisitionListView.js";import"@dropins/tools/preact.js";import{R as Y}from"../chunks/RequisitionListActions.js";import{R as b}from"../chunks/RequisitionListModal.js";import{P as I}from"../chunks/PageSizePicker.js";import{useText as D}from"@dropins/tools/i18n.js";import{u as ii}from"../chunks/updateRequisitionList.js";import{d as ei}from"../chunks/deleteRequisitionList.js";import{g as z}from"../chunks/getRequisitionLists.js";import"@dropins/tools/fetch-graphql.js";function ti(c,l,t){const d=D({actionRename:"RequisitionList.RequisitionListView.actionRename",actionDeleteList:"RequisitionList.RequisitionListView.actionDeleteList"}),[e,a]=M(null),[f,g]=M(!1),[A,R]=M(!1),q=L(()=>{t&&t(),g(!0)},[t]),y=L(()=>g(!1),[]),u=x(()=>{if(c)return{handleOpenRenameModal:i=>{g(n=>n&&!1),c.handleOpenRenameModal(i)},handleOpenDeleteModal:i=>{g(n=>n&&!1),c.handleOpenDeleteModal(i)}}},[c]),r=L(async(i,n)=>{var o,p,h;R(!0);try{const m=await z(i,n),S=((o=m==null?void 0:m.page_info)==null?void 0:o.current_page)??1,E=((p=m==null?void 0:m.page_info)==null?void 0:p.total_pages)??0;if(!((((h=m==null?void 0:m.items)==null?void 0:h.length)??0)>0)&&S>1&&E>=S-1){const H=S-1,k=await z(H,n);a(k)}else a(m)}finally{R(!1)}},[]);T(()=>{const i=w.on("requisitionLists/data",n=>{n&&n.items&&a(n)},{eager:!0});return()=>{i==null||i.off()}},[]),T(()=>{e||r(1,W)},[e,r]);const O=L(i=>{var p,h;const n=i??((p=e==null?void 0:e.page_info)==null?void 0:p.current_page)??1,o=((h=e==null?void 0:e.page_info)==null?void 0:h.page_size)??W;return r(n,o)},[r,e]),P=L(async i=>{await r(1,i)},[r]);return{rows:x(()=>((e==null?void 0:e.items)??[]).map(i=>({name:C("div",{className:"requisition-list-grid-wrapper__name",children:[s("div",{className:"requisition-list-grid-wrapper__name__title",children:s("a",{href:"#",onClick:n=>{if(n.preventDefault(),l){const o=l(i.uid);typeof o=="string"&&(window.location.href=o)}},children:i.name})}),i.description&&s("div",{className:"requisition-list-grid-wrapper__name__description",children:i.description})]}),items_count:i.items_count,last_updated:new Date(i.updated_at).toLocaleString(),actions:C("div",{className:"requisition-list-grid-wrapper__actions",children:[s(N,{variant:"tertiary",type:"button","data-testid":"rename-button",onClick:()=>u==null?void 0:u.handleOpenRenameModal(i),children:d.actionRename}),s(N,{variant:"tertiary",type:"button","data-testid":"delete-button",onClick:()=>u==null?void 0:u.handleOpenDeleteModal(i),children:d.actionDeleteList})]})})),[e==null?void 0:e.items,d.actionRename,d.actionDeleteList,u,l]),isLoading:A||!e,pageInfo:e==null?void 0:e.page_info,handlePageChange:O,handlePageSizeChange:P,isAdding:f,handleAddNew:q,handleCancelCreate:y}}const Ai=({routeRequisitionListDetails:c,slots:l})=>{const[t,d]=M({type:null,isOpen:!1,isLoading:!1,requisitionList:null}),e=L(()=>{d({type:null,isOpen:!1,isLoading:!1,requisitionList:null})},[]),a=L(o=>{d({type:"rename",isOpen:!0,isLoading:!1,requisitionList:o})},[]),f=L(o=>{d({type:"delete",isOpen:!0,isLoading:!1,requisitionList:o})},[]),{rows:g,isLoading:A,pageInfo:R,handlePageChange:q,handlePageSizeChange:y,isAdding:u,handleAddNew:r,handleCancelCreate:O}=ti({handleOpenRenameModal:a,handleOpenDeleteModal:f},c,e),P=L(async o=>{if(t.requisitionList)try{await ii(t.requisitionList.uid,o.name,o.description),w.emit("requisitionList/alert",{action:"update",type:"success",context:"requisitionList"}),await q(),e()}catch{w.emit("requisitionList/alert",{action:"update",type:"error",context:"requisitionList"})}},[t.requisitionList,q,e]),_=async()=>{t.requisitionList&&(d({...t,isLoading:!0}),await ei(t.requisitionList.uid).then(async()=>{w.emit("requisitionList/alert",{type:"success",action:"delete",context:"requisitionList"})}).catch(()=>{w.emit("requisitionList/alert",{type:"error",action:"delete",context:"requisitionList"})}).finally(async()=>{await q(),e()}))},i=D({containerTitle:"RequisitionList.containerTitle",updateTitle:"RequisitionList.RequisitionListForm.updateTitle",deleteRequisitionListTitle:"RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle",deleteRequisitionListMessage:"RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage",cancelAction:"RequisitionList.RequisitionListWrapper.cancelAction",confirmAction:"RequisitionList.RequisitionListWrapper.confirmAction"}),n=L(()=>l!=null&&l.Header?s(J,{name:"Header","aria-label":i.containerTitle,title:i.containerTitle,slot:l.Header}):s(G,{"aria-label":i.containerTitle,role:"region",title:i.containerTitle}),[l,i.containerTitle]);return C(F,{children:[s(ni,{header:n(),rows:g,skeletonRowCount:10,isLoading:A,pageInfo:R,handlePageChange:q,handlePageSizeChange:y,defaultPageSize:10,isAdding:u,handleAddNew:r,handleCancelCreate:O}),t.type==="rename"&&t.isOpen&&t.requisitionList&&s(b,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.updateTitle,modalContent:s($,{mode:"update",defaultValues:{name:t.requisitionList.name,description:t.requisitionList.description||""},onSubmit:P,onCancel:e}),handleModalOnClose:e}),t.type==="delete"&&t.isOpen&&s(b,{isOpen:t.isOpen,isLoading:t.isLoading,title:i.deleteRequisitionListTitle,modalContent:i.deleteRequisitionListMessage,confirmBtnCaption:i.confirmAction,closeBtnCaption:i.cancelAction,handleModalOnClose:e,handleModalOnConfirm:_})]})},ni=({className:c,isLoading:l=!1,header:t,rows:d=[],skeletonRowCount:e=10,pageInfo:a,handlePageChange:f,handlePageSizeChange:g,defaultPageSize:A=10,isAdding:R,handleAddNew:q,handleCancelCreate:y,...u})=>{const r=D({name:"RequisitionList.RequisitionListWrapper.name",itemsCount:"RequisitionList.RequisitionListWrapper.itemsCount",lastUpdated:"RequisitionList.RequisitionListWrapper.lastUpdated",actions:"RequisitionList.RequisitionListWrapper.actions",emptyList:"RequisitionList.RequisitionListWrapper.emptyList"}),O=((a==null?void 0:a.total_pages)??0)>0,P=!l&&d.length===0&&!O,{alert:_,setAlert:i,handleRequisitionListAlert:n}=Q();return T(()=>{const o=w.on("requisitionList/alert",n);try{const p=localStorage.getItem("requisitionListPendingAlert");if(p){const h=JSON.parse(p);n(h),localStorage.removeItem("requisitionListPendingAlert")}}catch{}return()=>{o==null||o.off()}},[n]),C("div",{...u,className:v(["requisition-list-grid-wrapper",c]),"data-testid":"requisition-list-grid-wrapper",children:[t&&s("div",{className:v(["requisition-list-grid-wrapper__header",c]),"data-testid":"requisition-list-grid-wrapper-header",children:s(Z,{node:t})}),_&&s("div",{className:"requisition-list__alert-wrapper",children:s(U,{heading:_.description,type:_.type,variant:"primary",onDismiss:()=>i(null)})}),P?s(X,{textContent:r.emptyList}):C(F,{children:[s(V,{columns:[{key:"name",label:r.name},{key:"items_count",label:r.itemsCount},{key:"last_updated",label:r.lastUpdated},{key:"actions",label:r.actions}],rowData:d,loading:l,skeletonRowCount:e}),s("div",{className:v(["requisition-list-grid-wrapper__pagination",c]),children:C("div",{className:"requisition-list-grid-wrapper__pagination-controls",children:[s(I,{currentPageSize:(a==null?void 0:a.page_size)||A,onPageSizeChange:g||(()=>Promise.resolve()),disabled:l}),a&&a.total_pages>1&&s(B,{totalPages:a.total_pages,currentPage:a.current_page,onChange:f})]})})]}),s("div",{className:v(["requisition-list-grid-wrapper__add-new",c]),children:R?s(j,{variant:"secondary",children:s(K,{mode:"create",onSuccess:async()=>{await f(),y(),n({type:"success",action:"create",context:"requisitionList"})},onError:()=>{n({type:"error",action:"create",context:"requisitionList"})},onCancel:y})}):s(Y,{onAddNew:q})})]})};export{Ai as RequisitionListGrid,Ai as default};
4
4
  //# sourceMappingURL=RequisitionListGrid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequisitionListGrid.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListGrid/RequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/components/RequisitionListGridWrapper/RequisitionListGridWrapper.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo, useState, useCallback, useEffect } from 'preact/compat';\nimport { VNode } from 'preact';\nimport { Button } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { getRequisitionLists } from '@/requisitionList/api/getRequisitionLists';\nimport { RequisitionLists } from '@/requisitionList/data/models/requisitionLists';\nimport { events } from '@adobe-commerce/event-bus';\nimport { DEFAULT_PAGE_SIZE } from '@/requisitionList/lib/constants';\n\ntype Row = Record<string, VNode | string | number | undefined>;\ntype Callbacks = {\n handleOpenRenameModal: (rl: RequisitionListModel) => void;\n handleOpenDeleteModal: (rl: RequisitionListModel) => void;\n};\n\nexport function useRequisitionListGrid(\n callbacks?: Callbacks,\n routeRequisitionListDetails?: (uid: string) => string | void,\n closeModal?: () => void\n) {\n const translations = useText({\n actionRename: 'RequisitionList.RequisitionListView.actionRename',\n actionDeleteList: 'RequisitionList.RequisitionListView.actionDeleteList',\n });\n\n const [reqLists, setReqLists] = useState<RequisitionLists | null>(null);\n const [isAdding, setIsAdding] = useState(false);\n const [isFetching, setIsFetching] = useState(false);\n\n const handleAddNew = useCallback(() => {\n // Close any open modal before opening create form\n if (closeModal) {\n closeModal();\n }\n setIsAdding(true);\n }, [closeModal]);\n\n const handleCancelCreate = useCallback(() => setIsAdding(false), []);\n\n // Wrap callbacks to close create form when opening modals\n const wrappedCallbacks = useMemo(() => {\n if (!callbacks) return undefined;\n\n return {\n handleOpenRenameModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenRenameModal(rl);\n },\n handleOpenDeleteModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenDeleteModal(rl);\n },\n };\n }, [callbacks]);\n\n const fetchPage = useCallback(async (page: number, pageSize: number) => {\n setIsFetching(true);\n try {\n const data = await getRequisitionLists(page, pageSize);\n const currentPage = data?.page_info?.current_page ?? 1;\n const totalPages = data?.page_info?.total_pages ?? 0;\n const hasRows = (data?.items?.length ?? 0) > 0;\n\n if (!hasRows && currentPage > 1 && totalPages >= currentPage - 1) {\n const prev = currentPage - 1;\n const prevData = await getRequisitionLists(prev, pageSize);\n setReqLists(prevData);\n } else {\n setReqLists(data);\n }\n } finally {\n setIsFetching(false);\n }\n }, []);\n\n useEffect(() => {\n const requisitionListsEvent = events.on(\n 'requisitionLists/data',\n (data: RequisitionLists) => {\n if (data && data.items) {\n setReqLists(data);\n }\n },\n { eager: true }\n );\n return () => {\n requisitionListsEvent?.off();\n };\n }, []);\n\n useEffect(() => {\n if (!reqLists) {\n void fetchPage(1, DEFAULT_PAGE_SIZE);\n }\n }, [reqLists, fetchPage]);\n\n const handlePageChange = useCallback(\n (page?: number) => {\n const currentPage = page ?? reqLists?.page_info?.current_page ?? 1;\n const currentPageSize =\n reqLists?.page_info?.page_size ?? DEFAULT_PAGE_SIZE;\n return fetchPage(currentPage, currentPageSize);\n },\n [fetchPage, reqLists]\n );\n\n const handlePageSizeChange = useCallback(\n async (pageSize: number) => {\n // Reset to page 1 when changing page size\n await fetchPage(1, pageSize);\n },\n [fetchPage]\n );\n\n const rows: Row[] = useMemo(\n () =>\n (reqLists?.items ?? []).map((rl: RequisitionListModel) => {\n return {\n name: (\n <div className=\"requisition-list-grid-wrapper__name\">\n <div className=\"requisition-list-grid-wrapper__name__title\">\n <a\n href=\"#\"\n onClick={(e: Event): void => {\n e.preventDefault();\n if (routeRequisitionListDetails) {\n const result = routeRequisitionListDetails(rl.uid);\n if (typeof result === 'string') {\n window.location.href = result;\n }\n }\n }}\n >\n {rl.name}\n </a>\n </div>\n {rl.description && (\n <div className=\"requisition-list-grid-wrapper__name__description\">\n {rl.description}\n </div>\n )}\n </div>\n ),\n items_count: rl.items_count,\n last_updated: new Date(rl.updated_at).toLocaleString(),\n actions: (\n <div className=\"requisition-list-grid-wrapper__actions\">\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"rename-button\"\n onClick={() => wrappedCallbacks?.handleOpenRenameModal(rl)}\n >\n {translations.actionRename}\n </Button>\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"delete-button\"\n onClick={() => wrappedCallbacks?.handleOpenDeleteModal(rl)}\n >\n {translations.actionDeleteList}\n </Button>\n </div>\n ),\n };\n }),\n [\n reqLists?.items,\n translations.actionRename,\n translations.actionDeleteList,\n wrappedCallbacks,\n routeRequisitionListDetails,\n ]\n );\n\n return {\n rows,\n isLoading: isFetching || !reqLists,\n pageInfo: reqLists?.page_info,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useState, useCallback } from 'preact/compat';\nimport { Header } from '@adobe-commerce/elsie/components';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n RequisitionListGridWrapper,\n RequisitionListModal,\n RequisitionListForm,\n} from '@/requisitionList/components';\nimport { useRequisitionListGrid } from '@/requisitionList/hooks';\nimport { deleteRequisitionList } from '@/requisitionList/api/deleteRequisitionList/deleteRequisitionList';\nimport { updateRequisitionList } from '@/requisitionList/api/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport interface RequisitionListGridProps\n extends HTMLAttributes<HTMLDivElement> {\n routeRequisitionListDetails?: (uid: string) => string | void;\n slots?: {\n Header?: SlotProps;\n };\n}\n\nexport const RequisitionListGrid: Container<RequisitionListGridProps> = ({\n routeRequisitionListDetails,\n slots,\n}: RequisitionListGridProps) => {\n const [modal, setModal] = useState<{\n type: 'rename' | 'delete' | null;\n isOpen: boolean;\n isLoading: boolean;\n requisitionList: RequisitionListModel | null;\n }>({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n\n const closeModal = useCallback(() => {\n setModal({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n }, []);\n\n const handleOpenRenameModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'rename',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const handleOpenDeleteModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'delete',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const {\n rows,\n isLoading,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n } = useRequisitionListGrid(\n { handleOpenRenameModal, handleOpenDeleteModal },\n routeRequisitionListDetails,\n closeModal\n );\n\n const handleRenameSubmit = useCallback(\n async (values: { name: string; description?: string }) => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n\n try {\n await updateRequisitionList(\n modal.requisitionList.uid,\n values.name,\n values.description\n );\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'success',\n context: 'requisitionList',\n });\n await handlePageChange();\n closeModal();\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'requisitionList',\n });\n }\n },\n [modal.requisitionList, handlePageChange, closeModal]\n );\n\n const handleDeleteConfirm = async () => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n setModal({ ...modal, isLoading: true });\n await deleteRequisitionList(modal.requisitionList.uid)\n .then(async () => {\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .catch(() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .finally(async () => {\n await handlePageChange();\n closeModal();\n });\n };\n\n const translations = useText({\n containerTitle: `RequisitionList.containerTitle`,\n updateTitle: `RequisitionList.RequisitionListForm.updateTitle`,\n deleteRequisitionListTitle:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle',\n deleteRequisitionListMessage:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage',\n cancelAction: 'RequisitionList.RequisitionListWrapper.cancelAction',\n confirmAction: 'RequisitionList.RequisitionListWrapper.confirmAction',\n });\n\n const getHeader = useCallback(() => {\n if (slots?.Header) {\n return (\n <Slot\n name=\"Header\"\n aria-label={translations.containerTitle}\n title={translations.containerTitle}\n slot={slots.Header}\n />\n );\n }\n return (\n <Header\n aria-label={translations.containerTitle}\n role=\"region\"\n title={translations.containerTitle}\n />\n );\n }, [slots, translations.containerTitle]);\n\n return (\n <>\n <RequisitionListGridWrapper\n header={getHeader()}\n rows={rows}\n skeletonRowCount={10}\n isLoading={isLoading}\n pageInfo={pageInfo}\n handlePageChange={handlePageChange}\n handlePageSizeChange={handlePageSizeChange}\n defaultPageSize={10}\n isAdding={isAdding}\n handleAddNew={handleAddNew}\n handleCancelCreate={handleCancelCreate}\n />\n\n {/* Rename Modal */}\n {modal.type === 'rename' && modal.isOpen && modal.requisitionList && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.updateTitle}\n modalContent={\n <RequisitionListForm\n mode=\"update\"\n defaultValues={{\n name: modal.requisitionList.name,\n description: modal.requisitionList.description || '',\n }}\n onSubmit={handleRenameSubmit}\n onCancel={closeModal}\n />\n }\n handleModalOnClose={closeModal}\n />\n )}\n\n {/* Delete Confirmation Modal */}\n {modal.type === 'delete' && modal.isOpen && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.deleteRequisitionListTitle}\n modalContent={translations.deleteRequisitionListMessage}\n confirmBtnCaption={translations.confirmAction}\n closeBtnCaption={translations.cancelAction}\n handleModalOnClose={closeModal}\n handleModalOnConfirm={handleDeleteConfirm}\n />\n )}\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListActions,\n EmptyList,\n PageSizePicker,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport {\n Pagination,\n Card,\n Table,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/components/RequisitionListGridWrapper/RequisitionListGridWrapper.css';\nimport { useRequisitionListAlert } from '@/requisitionList/hooks';\n\nexport interface RequisitionListGridWrapperProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n isLoading?: boolean;\n header?: VNode;\n rows: Array<Record<string, VNode | string | number | undefined>>;\n skeletonRowCount: number;\n pageInfo?: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n handlePageChange: (page?: number) => Promise<void>;\n handlePageSizeChange?: (pageSize: number) => Promise<void>;\n defaultPageSize?: number;\n isAdding: boolean;\n handleAddNew: () => void;\n handleCancelCreate: () => void;\n}\n\nexport const RequisitionListGridWrapper: FunctionComponent<\n RequisitionListGridWrapperProps\n> = ({\n className,\n isLoading = false,\n header,\n rows = [],\n skeletonRowCount = 10,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n defaultPageSize = 10,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n ...props\n}) => {\n const translations = useText({\n name: `RequisitionList.RequisitionListWrapper.name`,\n itemsCount: `RequisitionList.RequisitionListWrapper.itemsCount`,\n lastUpdated: `RequisitionList.RequisitionListWrapper.lastUpdated`,\n actions: `RequisitionList.RequisitionListWrapper.actions`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n });\n\n const hasAnyItems = (pageInfo?.total_pages ?? 0) > 0;\n const showEmptyList = !isLoading && rows.length === 0 && !hasAnyItems;\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n useEffect(() => {\n events.on('requisitionList/alert', handleRequisitionListAlert);\n }, [handleRequisitionListAlert]);\n\n return (\n <div\n {...props}\n className={classes(['requisition-list-grid-wrapper', className])}\n data-testid=\"requisition-list-grid-wrapper\"\n >\n {/* Requisition List Header */}\n {header && (\n <div\n className={classes([\n 'requisition-list-grid-wrapper__header',\n className,\n ])}\n data-testid=\"requisition-list-grid-wrapper-header\"\n >\n <VComponent node={header} />\n </div>\n )}\n {/* Requisition List alerts go here */}\n {alert && (\n <>\n <InLineAlert\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n onDismiss={() => setAlert(null)}\n />\n </>\n )}\n\n {showEmptyList ? (\n <EmptyList textContent={translations.emptyList} />\n ) : (\n <>\n {/* Requisition Lists Table */}\n <Table\n columns={[\n { key: 'name', label: translations.name },\n { key: 'items_count', label: translations.itemsCount },\n { key: 'last_updated', label: translations.lastUpdated },\n { key: 'actions', label: translations.actions },\n ]}\n rowData={rows}\n loading={isLoading}\n skeletonRowCount={skeletonRowCount}\n />\n <div\n className={classes([\n 'requisition-list-grid-wrapper__pagination',\n className,\n ])}\n >\n <div className=\"requisition-list-grid-wrapper__pagination-controls\">\n <PageSizePicker\n currentPageSize={pageInfo?.page_size || defaultPageSize}\n onPageSizeChange={\n handlePageSizeChange || (() => Promise.resolve())\n }\n disabled={isLoading}\n />\n {pageInfo && pageInfo.total_pages > 1 && (\n <Pagination\n totalPages={pageInfo.total_pages}\n currentPage={pageInfo.current_page}\n onChange={handlePageChange}\n />\n )}\n </div>\n </div>\n </>\n )}\n\n {/* Requisition Lists Form */}\n <div\n className={classes([\n 'requisition-list-grid-wrapper__add-new',\n className,\n ])}\n >\n {isAdding ? (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async () => {\n await handlePageChange();\n handleCancelCreate();\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onError={() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onCancel={handleCancelCreate}\n />\n </Card>\n ) : (\n <RequisitionListActions onAddNew={handleAddNew} />\n )}\n </div>\n </div>\n );\n};\n"],"names":["useRequisitionListGrid","callbacks","routeRequisitionListDetails","closeModal","translations","useText","reqLists","setReqLists","useState","isAdding","setIsAdding","isFetching","setIsFetching","handleAddNew","useCallback","handleCancelCreate","wrappedCallbacks","useMemo","rl","current","fetchPage","page","pageSize","data","getRequisitionLists","currentPage","_a","totalPages","_b","_c","prev","prevData","useEffect","requisitionListsEvent","events","DEFAULT_PAGE_SIZE","handlePageChange","currentPageSize","handlePageSizeChange","jsxs","jsx","e","result","Button","RequisitionListGrid","slots","modal","setModal","handleOpenRenameModal","handleOpenDeleteModal","rows","isLoading","pageInfo","handleRenameSubmit","values","updateRequisitionList","handleDeleteConfirm","deleteRequisitionList","getHeader","Slot","Header","Fragment","RequisitionListGridWrapper","RequisitionListModal","RequisitionListForm","className","header","skeletonRowCount","defaultPageSize","props","hasAnyItems","showEmptyList","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","classes","VComponent","InLineAlert","EmptyList","Table","PageSizePicker","Pagination","Card","RequisitionListActions"],"mappings":"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"}
1
+ {"version":3,"file":"RequisitionListGrid.js","sources":["/@dropins/storefront-requisition-list/src/hooks/useRequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/containers/RequisitionListGrid/RequisitionListGrid.tsx","/@dropins/storefront-requisition-list/src/components/RequisitionListGridWrapper/RequisitionListGridWrapper.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useMemo, useState, useCallback, useEffect } from 'preact/compat';\nimport { VNode } from 'preact';\nimport { Button } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { getRequisitionLists } from '@/requisitionList/api/getRequisitionLists';\nimport { RequisitionLists } from '@/requisitionList/data/models/requisitionLists';\nimport { events } from '@adobe-commerce/event-bus';\nimport { DEFAULT_PAGE_SIZE } from '@/requisitionList/lib/constants';\n\ntype Row = Record<string, VNode | string | number | undefined>;\ntype Callbacks = {\n handleOpenRenameModal: (rl: RequisitionListModel) => void;\n handleOpenDeleteModal: (rl: RequisitionListModel) => void;\n};\n\nexport function useRequisitionListGrid(\n callbacks?: Callbacks,\n routeRequisitionListDetails?: (uid: string) => string | void,\n closeModal?: () => void\n) {\n const translations = useText({\n actionRename: 'RequisitionList.RequisitionListView.actionRename',\n actionDeleteList: 'RequisitionList.RequisitionListView.actionDeleteList',\n });\n\n const [reqLists, setReqLists] = useState<RequisitionLists | null>(null);\n const [isAdding, setIsAdding] = useState(false);\n const [isFetching, setIsFetching] = useState(false);\n\n const handleAddNew = useCallback(() => {\n // Close any open modal before opening create form\n if (closeModal) {\n closeModal();\n }\n setIsAdding(true);\n }, [closeModal]);\n\n const handleCancelCreate = useCallback(() => setIsAdding(false), []);\n\n // Wrap callbacks to close create form when opening modals\n const wrappedCallbacks = useMemo(() => {\n if (!callbacks) return undefined;\n\n return {\n handleOpenRenameModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenRenameModal(rl);\n },\n handleOpenDeleteModal: (rl: RequisitionListModel) => {\n // Close create form if open - use functional update to avoid dependency on isAdding\n setIsAdding((current) => {\n if (current) return false;\n return current;\n });\n callbacks.handleOpenDeleteModal(rl);\n },\n };\n }, [callbacks]);\n\n const fetchPage = useCallback(async (page: number, pageSize: number) => {\n setIsFetching(true);\n try {\n const data = await getRequisitionLists(page, pageSize);\n const currentPage = data?.page_info?.current_page ?? 1;\n const totalPages = data?.page_info?.total_pages ?? 0;\n const hasRows = (data?.items?.length ?? 0) > 0;\n\n if (!hasRows && currentPage > 1 && totalPages >= currentPage - 1) {\n const prev = currentPage - 1;\n const prevData = await getRequisitionLists(prev, pageSize);\n setReqLists(prevData);\n } else {\n setReqLists(data);\n }\n } finally {\n setIsFetching(false);\n }\n }, []);\n\n useEffect(() => {\n const requisitionListsEvent = events.on(\n 'requisitionLists/data',\n (data: RequisitionLists) => {\n if (data && data.items) {\n setReqLists(data);\n }\n },\n { eager: true }\n );\n return () => {\n requisitionListsEvent?.off();\n };\n }, []);\n\n useEffect(() => {\n if (!reqLists) {\n void fetchPage(1, DEFAULT_PAGE_SIZE);\n }\n }, [reqLists, fetchPage]);\n\n const handlePageChange = useCallback(\n (page?: number) => {\n const currentPage = page ?? reqLists?.page_info?.current_page ?? 1;\n const currentPageSize =\n reqLists?.page_info?.page_size ?? DEFAULT_PAGE_SIZE;\n return fetchPage(currentPage, currentPageSize);\n },\n [fetchPage, reqLists]\n );\n\n const handlePageSizeChange = useCallback(\n async (pageSize: number) => {\n // Reset to page 1 when changing page size\n await fetchPage(1, pageSize);\n },\n [fetchPage]\n );\n\n const rows: Row[] = useMemo(\n () =>\n (reqLists?.items ?? []).map((rl: RequisitionListModel) => {\n return {\n name: (\n <div className=\"requisition-list-grid-wrapper__name\">\n <div className=\"requisition-list-grid-wrapper__name__title\">\n <a\n href=\"#\"\n onClick={(e: Event): void => {\n e.preventDefault();\n if (routeRequisitionListDetails) {\n const result = routeRequisitionListDetails(rl.uid);\n if (typeof result === 'string') {\n window.location.href = result;\n }\n }\n }}\n >\n {rl.name}\n </a>\n </div>\n {rl.description && (\n <div className=\"requisition-list-grid-wrapper__name__description\">\n {rl.description}\n </div>\n )}\n </div>\n ),\n items_count: rl.items_count,\n last_updated: new Date(rl.updated_at).toLocaleString(),\n actions: (\n <div className=\"requisition-list-grid-wrapper__actions\">\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"rename-button\"\n onClick={() => wrappedCallbacks?.handleOpenRenameModal(rl)}\n >\n {translations.actionRename}\n </Button>\n <Button\n variant=\"tertiary\"\n type=\"button\"\n data-testid=\"delete-button\"\n onClick={() => wrappedCallbacks?.handleOpenDeleteModal(rl)}\n >\n {translations.actionDeleteList}\n </Button>\n </div>\n ),\n };\n }),\n [\n reqLists?.items,\n translations.actionRename,\n translations.actionDeleteList,\n wrappedCallbacks,\n routeRequisitionListDetails,\n ]\n );\n\n return {\n rows,\n isLoading: isFetching || !reqLists,\n pageInfo: reqLists?.page_info,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useState, useCallback } from 'preact/compat';\nimport { Header } from '@adobe-commerce/elsie/components';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { RequisitionList as RequisitionListModel } from '@/requisitionList/data/models/requisitionList';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n RequisitionListGridWrapper,\n RequisitionListModal,\n RequisitionListForm,\n} from '@/requisitionList/components';\nimport { useRequisitionListGrid } from '@/requisitionList/hooks';\nimport { deleteRequisitionList } from '@/requisitionList/api/deleteRequisitionList/deleteRequisitionList';\nimport { updateRequisitionList } from '@/requisitionList/api/updateRequisitionList';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport interface RequisitionListGridProps\n extends HTMLAttributes<HTMLDivElement> {\n routeRequisitionListDetails?: (uid: string) => string | void;\n slots?: {\n Header?: SlotProps;\n };\n}\n\nexport const RequisitionListGrid: Container<RequisitionListGridProps> = ({\n routeRequisitionListDetails,\n slots,\n}: RequisitionListGridProps) => {\n const [modal, setModal] = useState<{\n type: 'rename' | 'delete' | null;\n isOpen: boolean;\n isLoading: boolean;\n requisitionList: RequisitionListModel | null;\n }>({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n\n const closeModal = useCallback(() => {\n setModal({\n type: null,\n isOpen: false,\n isLoading: false,\n requisitionList: null,\n });\n }, []);\n\n const handleOpenRenameModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'rename',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const handleOpenDeleteModal = useCallback((rl: RequisitionListModel) => {\n setModal({\n type: 'delete',\n isOpen: true,\n isLoading: false,\n requisitionList: rl,\n });\n }, []);\n\n const {\n rows,\n isLoading,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n } = useRequisitionListGrid(\n { handleOpenRenameModal, handleOpenDeleteModal },\n routeRequisitionListDetails,\n closeModal\n );\n\n const handleRenameSubmit = useCallback(\n async (values: { name: string; description?: string }) => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n\n try {\n await updateRequisitionList(\n modal.requisitionList.uid,\n values.name,\n values.description\n );\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'success',\n context: 'requisitionList',\n });\n await handlePageChange();\n closeModal();\n } catch (error) {\n events.emit('requisitionList/alert', {\n action: 'update',\n type: 'error',\n context: 'requisitionList',\n });\n }\n },\n [modal.requisitionList, handlePageChange, closeModal]\n );\n\n const handleDeleteConfirm = async () => {\n /* istanbul ignore next: Defensive check - modal.requisitionList should always be set when this function is called */\n if (!modal.requisitionList) return;\n setModal({ ...modal, isLoading: true });\n await deleteRequisitionList(modal.requisitionList.uid)\n .then(async () => {\n events.emit('requisitionList/alert', {\n type: 'success',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .catch(() => {\n events.emit('requisitionList/alert', {\n type: 'error',\n action: 'delete',\n context: 'requisitionList',\n });\n })\n .finally(async () => {\n await handlePageChange();\n closeModal();\n });\n };\n\n const translations = useText({\n containerTitle: `RequisitionList.containerTitle`,\n updateTitle: `RequisitionList.RequisitionListForm.updateTitle`,\n deleteRequisitionListTitle:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListTitle',\n deleteRequisitionListMessage:\n 'RequisitionList.RequisitionListWrapper.deleteRequisitionListMessage',\n cancelAction: 'RequisitionList.RequisitionListWrapper.cancelAction',\n confirmAction: 'RequisitionList.RequisitionListWrapper.confirmAction',\n });\n\n const getHeader = useCallback(() => {\n if (slots?.Header) {\n return (\n <Slot\n name=\"Header\"\n aria-label={translations.containerTitle}\n title={translations.containerTitle}\n slot={slots.Header}\n />\n );\n }\n return (\n <Header\n aria-label={translations.containerTitle}\n role=\"region\"\n title={translations.containerTitle}\n />\n );\n }, [slots, translations.containerTitle]);\n\n return (\n <>\n <RequisitionListGridWrapper\n header={getHeader()}\n rows={rows}\n skeletonRowCount={10}\n isLoading={isLoading}\n pageInfo={pageInfo}\n handlePageChange={handlePageChange}\n handlePageSizeChange={handlePageSizeChange}\n defaultPageSize={10}\n isAdding={isAdding}\n handleAddNew={handleAddNew}\n handleCancelCreate={handleCancelCreate}\n />\n\n {/* Rename Modal */}\n {modal.type === 'rename' && modal.isOpen && modal.requisitionList && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.updateTitle}\n modalContent={\n <RequisitionListForm\n mode=\"update\"\n defaultValues={{\n name: modal.requisitionList.name,\n description: modal.requisitionList.description || '',\n }}\n onSubmit={handleRenameSubmit}\n onCancel={closeModal}\n />\n }\n handleModalOnClose={closeModal}\n />\n )}\n\n {/* Delete Confirmation Modal */}\n {modal.type === 'delete' && modal.isOpen && (\n <RequisitionListModal\n isOpen={modal.isOpen}\n isLoading={modal.isLoading}\n title={translations.deleteRequisitionListTitle}\n modalContent={translations.deleteRequisitionListMessage}\n confirmBtnCaption={translations.confirmAction}\n closeBtnCaption={translations.cancelAction}\n handleModalOnClose={closeModal}\n handleModalOnConfirm={handleDeleteConfirm}\n />\n )}\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { HTMLAttributes, useEffect } from 'preact/compat';\nimport { FunctionComponent, VNode } from 'preact';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport {\n RequisitionListActions,\n EmptyList,\n PageSizePicker,\n} from '@/requisitionList/components';\nimport { RequisitionListForm } from '@/requisitionList/containers';\nimport {\n Pagination,\n Card,\n Table,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport '@/requisitionList/components/RequisitionListGridWrapper/RequisitionListGridWrapper.css';\nimport { useRequisitionListAlert } from '@/requisitionList/hooks';\n\nexport interface RequisitionListGridWrapperProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n isLoading?: boolean;\n header?: VNode;\n rows: Array<Record<string, VNode | string | number | undefined>>;\n skeletonRowCount: number;\n pageInfo?: {\n total_pages: number;\n current_page: number;\n page_size: number;\n };\n handlePageChange: (page?: number) => Promise<void>;\n handlePageSizeChange?: (pageSize: number) => Promise<void>;\n defaultPageSize?: number;\n isAdding: boolean;\n handleAddNew: () => void;\n handleCancelCreate: () => void;\n}\n\nexport const RequisitionListGridWrapper: FunctionComponent<\n RequisitionListGridWrapperProps\n> = ({\n className,\n isLoading = false,\n header,\n rows = [],\n skeletonRowCount = 10,\n pageInfo,\n handlePageChange,\n handlePageSizeChange,\n defaultPageSize = 10,\n isAdding,\n handleAddNew,\n handleCancelCreate,\n ...props\n}) => {\n const translations = useText({\n name: `RequisitionList.RequisitionListWrapper.name`,\n itemsCount: `RequisitionList.RequisitionListWrapper.itemsCount`,\n lastUpdated: `RequisitionList.RequisitionListWrapper.lastUpdated`,\n actions: `RequisitionList.RequisitionListWrapper.actions`,\n emptyList: `RequisitionList.RequisitionListWrapper.emptyList`,\n });\n\n const hasAnyItems = (pageInfo?.total_pages ?? 0) > 0;\n const showEmptyList = !isLoading && rows.length === 0 && !hasAnyItems;\n\n const { alert, setAlert, handleRequisitionListAlert } =\n useRequisitionListAlert();\n\n useEffect(() => {\n const alertEvent = events.on('requisitionList/alert', handleRequisitionListAlert);\n\n // Check for pending alert in localStorage (e.g., after redirect from deletion)\n try {\n const pendingAlert = localStorage.getItem('requisitionListPendingAlert');\n if (pendingAlert) {\n const alertPayload = JSON.parse(pendingAlert);\n handleRequisitionListAlert(alertPayload);\n localStorage.removeItem('requisitionListPendingAlert');\n }\n } catch (e) {\n // Ignore localStorage errors (e.g., in private browsing mode)\n }\n\n return () => {\n alertEvent?.off();\n };\n }, [handleRequisitionListAlert]);\n\n return (\n <div\n {...props}\n className={classes(['requisition-list-grid-wrapper', className])}\n data-testid=\"requisition-list-grid-wrapper\"\n >\n {/* Requisition List Header */}\n {header && (\n <div\n className={classes([\n 'requisition-list-grid-wrapper__header',\n className,\n ])}\n data-testid=\"requisition-list-grid-wrapper-header\"\n >\n <VComponent node={header} />\n </div>\n )}\n {/* Requisition List alerts go here */}\n {alert && (\n <div className=\"requisition-list__alert-wrapper\">\n <InLineAlert\n heading={alert.description}\n type={alert.type}\n variant=\"primary\"\n onDismiss={() => setAlert(null)}\n />\n </div>\n )}\n\n {showEmptyList ? (\n <EmptyList textContent={translations.emptyList} />\n ) : (\n <>\n {/* Requisition Lists Table */}\n <Table\n columns={[\n { key: 'name', label: translations.name },\n { key: 'items_count', label: translations.itemsCount },\n { key: 'last_updated', label: translations.lastUpdated },\n { key: 'actions', label: translations.actions },\n ]}\n rowData={rows}\n loading={isLoading}\n skeletonRowCount={skeletonRowCount}\n />\n <div\n className={classes([\n 'requisition-list-grid-wrapper__pagination',\n className,\n ])}\n >\n <div className=\"requisition-list-grid-wrapper__pagination-controls\">\n <PageSizePicker\n currentPageSize={pageInfo?.page_size || defaultPageSize}\n onPageSizeChange={\n handlePageSizeChange || (() => Promise.resolve())\n }\n disabled={isLoading}\n />\n {pageInfo && pageInfo.total_pages > 1 && (\n <Pagination\n totalPages={pageInfo.total_pages}\n currentPage={pageInfo.current_page}\n onChange={handlePageChange}\n />\n )}\n </div>\n </div>\n </>\n )}\n\n {/* Requisition Lists Form */}\n <div\n className={classes([\n 'requisition-list-grid-wrapper__add-new',\n className,\n ])}\n >\n {isAdding ? (\n <Card variant=\"secondary\">\n <RequisitionListForm\n mode=\"create\"\n onSuccess={async () => {\n await handlePageChange();\n handleCancelCreate();\n handleRequisitionListAlert({\n type: 'success',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onError={() => {\n handleRequisitionListAlert({\n type: 'error',\n action: 'create',\n context: 'requisitionList',\n });\n }}\n onCancel={handleCancelCreate}\n />\n </Card>\n ) : (\n <RequisitionListActions onAddNew={handleAddNew} />\n )}\n </div>\n </div>\n );\n};\n"],"names":["useRequisitionListGrid","callbacks","routeRequisitionListDetails","closeModal","translations","useText","reqLists","setReqLists","useState","isAdding","setIsAdding","isFetching","setIsFetching","handleAddNew","useCallback","handleCancelCreate","wrappedCallbacks","useMemo","rl","current","fetchPage","page","pageSize","data","getRequisitionLists","currentPage","_a","totalPages","_b","_c","prev","prevData","useEffect","requisitionListsEvent","events","DEFAULT_PAGE_SIZE","handlePageChange","currentPageSize","handlePageSizeChange","jsxs","jsx","e","result","Button","RequisitionListGrid","slots","modal","setModal","handleOpenRenameModal","handleOpenDeleteModal","rows","isLoading","pageInfo","handleRenameSubmit","values","updateRequisitionList","handleDeleteConfirm","deleteRequisitionList","getHeader","Slot","Header","Fragment","RequisitionListGridWrapper","RequisitionListModal","RequisitionListForm","className","header","skeletonRowCount","defaultPageSize","props","hasAnyItems","showEmptyList","alert","setAlert","handleRequisitionListAlert","useRequisitionListAlert","alertEvent","pendingAlert","alertPayload","classes","VComponent","InLineAlert","EmptyList","Table","PageSizePicker","Pagination","Card","RequisitionListActions"],"mappings":"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"}
@@ -5,6 +5,11 @@ export interface RequisitionListHeaderProps {
5
5
  requisitionList: RequisitionList;
6
6
  routeRequisitionListGrid?: () => string | void;
7
7
  onUpdate?: (updatedList: RequisitionList) => void | Promise<void>;
8
+ onAlert?: (payload: {
9
+ action: string;
10
+ type: string;
11
+ context: string;
12
+ }) => void;
8
13
  }
9
14
  export declare const RequisitionListHeader: Container<RequisitionListHeaderProps>;
10
15
  //# sourceMappingURL=RequisitionListHeader.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{R as q}from"../chunks/RequisitionListHeader.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/event-bus.js";import"../chunks/RequisitionListModal.js";import"@dropins/tools/components.js";import"../chunks/RequisitionListForm.js";import"@dropins/tools/lib.js";import"@dropins/tools/i18n.js";import"../chunks/updateRequisitionList.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/deleteRequisitionList.js";export{q as RequisitionListHeader};
3
+ import{R as q}from"../chunks/RequisitionListHeader.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-hooks.js";import"../chunks/RequisitionListModal.js";import"@dropins/tools/components.js";import"../chunks/RequisitionListForm.js";import"@dropins/tools/lib.js";import"@dropins/tools/i18n.js";import"../chunks/updateRequisitionList.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/deleteRequisitionList.js";export{q as RequisitionListHeader};
4
4
  //# sourceMappingURL=RequisitionListHeader.js.map
@@ -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 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=`
3
+ import{jsx as e,jsxs as m,Fragment as x}from"@dropins/tools/preact-jsx-runtime.js";import*as k from"@dropins/tools/preact-compat.js";import{useState as q,useEffect as T,useCallback as p,useMemo as D}from"@dropins/tools/preact-compat.js";import{Card as E,Icon as N,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 I}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,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[u,o]=q(l.requisitionLists),[d,c]=q(l.requisitionListsLoading),[n,r]=q(L);return T(()=>{l.requisitionLists.length===0&&!l.requisitionListsLoading&&($(!0),ti(1,100).then(t=>{const i=(t==null?void 0:t.items)||[];b(i),L++}).catch(t=>{console.error("Error fetching requisition lists:",t),b([]),L++}).finally(()=>{$(!1)}))},[]),T(()=>{const t=I.on("requisitionLists/data",s=>{s&&(b(s),L++,r(L),o(l.requisitionLists),c(l.requisitionListsLoading))}),i=I.on("requisitionList/data",s=>{s&&(ii(s),L++,r(L),o([...l.requisitionLists]),c(l.requisitionListsLoading))});return()=>{t==null||t.off(),i==null||i.off()}},[]),T(()=>{n!==L&&(o(l.requisitionLists),c(l.requisitionListsLoading),r(L))},[n]),{lists:u,loading:d}},li=()=>{var d,c;const[u,o]=q(((d=l.config)==null?void 0:d.is_requisition_list_active)==="1"&&((c=l.config)==null?void 0:c.company_enabled)===!0);return T(()=>{const n=I.on("requisitionList/initialized",()=>{var r,t;o(((r=l.config)==null?void 0:r.is_requisition_list_active)==="1"&&((t=l.config)==null?void 0:t.company_enabled)===!0)});return()=>n==null?void 0:n.off()},[]),{isEnabled:u}},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
- `,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};
22
+ `,di=async(u,o)=>{var t;const d=o.map(i=>{const s={sku:i.sku,quantity:i.quantity};return i.parent_sku&&(s.parent_sku=i.parent_sku),i.selected_options&&i.selected_options.length>0&&(s.selected_options=i.selected_options),i.entered_options&&i.entered_options.length>0&&(s.entered_options=i.entered_options),s}),{errors:c,data:n}=await K(ci,{variables:{requisitionListUid:u,requisitionListItems:d}});if(c)return X(c);if(!((t=n==null?void 0:n.addProductsToRequisitionList)!=null&&t.requisition_list))return null;const r=Y(n.addProductsToRequisitionList.requisition_list);return I.emit("requisitionList/data",r),r},ui=u=>k.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...u},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:u=!0,sku:o,selectedOptions:d,quantity:c=1,beforeAddProdToReqList:n})=>{const r=ri({createTitle:"RequisitionList.RequisitionListForm.createTitle",addToRequisitionList:"RequisitionList.RequisitionListForm.addToRequisitionList",emptyList:"RequisitionList.RequisitionListWrapper.emptyList",addToNewRequisitionList:"RequisitionList.RequisitionListSelector.addToNewRequisitionList",addToSelected:"RequisitionList.RequisitionListSelector.addToSelected"}),[t,i]=q(!1),[s,A]=q(null),{lists:_}=ai(),{isEnabled:O}=li(),{alert:f,setAlert:w,handleRequisitionListAlert:R}=si(),[U,M]=q({isOpen:!1,isLoading:!1}),g=p(()=>{M({isOpen:!0,isLoading:!1})},[]),S=p(()=>{M({isOpen:!1,isLoading:!1}),A(null),i(!1),w(null)},[w]),C=p(async a=>{try{const h={sku:o,quantity:c,...d&&d.length>0?{selected_options:d}:{}};await di(a,[h])}catch(h){throw console.error("Error adding product to list:",h),h}},[o,c,d]),v=p(async a=>{try{await C(a),R({action:"add",type:"success",context:"product",skus:[o]})}catch{R({action:"add",type:"error",context:"product",skus:[o]})}finally{setTimeout(()=>{S()},2e3)}},[o,C,S,R]),Q=p(a=>{a.preventDefault(),s&&v(s)},[s,v]),G=p(()=>{if(!n){g();return}Promise.resolve(n()).then(()=>{g()}).catch(()=>{})},[n,g]),y=D(()=>[...(_==null?void 0:_.map(a=>({value:a.uid,text:a.name})))??[]],[_]),j=D(()=>e("div",{className:"requisition-list-selector__available-lists",children:y.map(a=>m(E,{variant:s===a.value?"primary":"secondary",onClick:()=>{A(a.value)},children:[e(N,{source:P}),e("span",{children:a.text})]},a.value))}),[y,s]),z=y.length>0?t?m("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:[e("span",{className:"requisition-list-actions__title","data-testid":"requisition-list-actions-button-text",children:r.addToRequisitionList}),e(N,{source:ui,size:"32"})]}):e(E,{variant:"secondary",children:m("form",{onSubmit:Q,className:"requisition-list-selector__form",children:[j,e("div",{className:"requisition-list-form__actions",children:e(F,{type:"submit",disabled:!s,children:r.addToSelected})})]})}):e(ei,{textContent:r.emptyList}),W=t?e(E,{variant:"secondary",children:e(Z,{mode:"create",onSuccess:async a=>{await v(a.uid)},onError:()=>{R({action:"add",type:"error",context:"product",skus:[o]})},onCancel:()=>{i(!1)}})}):e(oi,{onAddNew:()=>{i(!0)}}),B=m(x,{children:[f&&e("div",{className:"requisition-list__alert-wrapper",children:e(V,{id:`requisition-list-selector__alert__${o}`,heading:f.description,type:f.type,variant:"primary",className:"requisition-list-selector__alert"},`requisition-list-selector__alert__${o}`)}),!f&&m(x,{children:[z,u&&W]})]});return O===null||!O?null:m("div",{className:"requisition-list-selector",children:[e(F,{"aria-label":r.addToRequisitionList,"data-testid":"requisition-list-selector",size:"medium",variant:"tertiary",icon:e(N,{source:P}),onClick:G}),U.isOpen&&e(ni,{isOpen:!0,isLoading:U.isLoading,title:r.addToRequisitionList,modalContent:B,handleModalOnClose:S})]})};export{Ai as RequisitionListSelector,Ai as default};
23
23
  //# sourceMappingURL=RequisitionListSelector.js.map