@dropins/storefront-purchase-order 0.0.1-alpha2 → 0.0.1-alpha4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/api/index.d.ts +0 -1
  2. package/api.js +15 -60
  3. package/api.js.map +1 -1
  4. package/chunks/PurchaseOrdersTableActions.js +1 -1
  5. package/chunks/PurchaseOrdersTableActions.js.map +1 -1
  6. package/chunks/useCustomerRolePermissions.js +4 -0
  7. package/chunks/useCustomerRolePermissions.js.map +1 -0
  8. package/containers/CompanyPurchaseOrders.js +1 -1
  9. package/containers/CompanyPurchaseOrders.js.map +1 -1
  10. package/containers/CustomerPurchaseOrders.js +1 -1
  11. package/containers/CustomerPurchaseOrders.js.map +1 -1
  12. package/containers/RequireApprovalPurchaseOrders.js +1 -1
  13. package/containers/RequireApprovalPurchaseOrders.js.map +1 -1
  14. package/data/transforms/transform-customer-role-permissions.d.ts +17 -1
  15. package/hooks/index.d.ts +1 -0
  16. package/hooks/useCustomerRolePermissions.d.ts +18 -0
  17. package/hooks/usePurchaseOrders.d.ts +1 -1
  18. package/i18n/en_US.json.d.ts +10 -9
  19. package/package.json +1 -1
  20. package/render.js +2 -2
  21. package/render.js.map +1 -1
  22. package/types/api/api.enums.types.d.ts +1 -1
  23. package/types/components/purchaseOrdersTable.types.d.ts +12 -5
  24. package/types/containers/companyPurchaseOrders.types.d.ts +1 -0
  25. package/types/containers/customerPurchaseOrders.types.d.ts +1 -0
  26. package/types/containers/requireApprovalPurchaseOrders.types.d.ts +1 -0
  27. package/types/hooks/usePurchaseOrders.types.d.ts +6 -3
  28. package/api/getCustomerRolePermissions/getCustomerRolePermissions.d.ts +0 -4
  29. package/api/getCustomerRolePermissions/graphql/getCustomerRolePermissions.d.ts +0 -16
  30. package/api/getCustomerRolePermissions/index.d.ts +0 -18
  31. package/api/initialize/lib/getPermissions.d.ts +0 -19
  32. package/api/initialize/lib/index.d.ts +0 -18
  33. package/chunks/usePurchaseOrders.js +0 -4
  34. package/chunks/usePurchaseOrders.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/CompanyPurchaseOrders/CompanyPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n PurchaseOrdersTableActions,\n} from '@/b2b-purchase-order/components';\nimport { usePurchaseOrders } from '@/b2b-purchase-order/hooks/usePurchaseOrders';\nimport { CompanyPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { EnumPurchaseOrderType } from '@/b2b-purchase-order/types/api';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\n\nexport const CompanyPurchaseOrders: Container<CompanyPurchaseOrdersProps> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n skeletonRowCount = 10,\n}) => {\n const type = EnumPurchaseOrderType.COMPANY_PURCHASE_ORDERS;\n\n const t = useText({\n headerText: 'PurchaseOrders.companyPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n noPurchaseOrders: 'PurchaseOrders.companyPurchaseOrders.noPurchaseOrders',\n });\n\n const {\n totalCount,\n loading,\n tableConfig,\n paginationConfig,\n pageSizeConfig,\n selectedOrderIds,\n handleRejectSelected,\n handleApproveSelected,\n isAdmin,\n alertMessageConfig,\n } = usePurchaseOrders({\n type,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n t,\n });\n\n return (\n <div\n className={classes(['company-purchase-orders', className])}\n data-testid=\"company-purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n header={\n isAdmin ? (\n <PurchaseOrdersTableActions\n loading={loading}\n selectedCount={selectedOrderIds.length}\n handleRejectSelected={handleRejectSelected}\n handleApproveSelected={handleApproveSelected}\n />\n ) : (\n <></>\n )\n }\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n />\n </div>\n );\n};\n"],"names":["CompanyPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","skeletonRowCount","type","EnumPurchaseOrderType","t","useText","totalCount","loading","tableConfig","paginationConfig","pageSizeConfig","selectedOrderIds","handleRejectSelected","handleApproveSelected","isAdmin","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable","PurchaseOrdersTableActions","Fragment"],"mappings":"8fA6BO,MAAMA,EAA+D,CAAC,CAC3E,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,iBAAAC,EAAmB,EACrB,IAAM,CACJ,MAAMC,EAAOC,EAAsB,wBAE7BC,EAAIC,EAAQ,CAChB,WAAY,sDACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,iBAAkB,uDAAA,CACnB,EAEK,CACJ,WAAAC,EACA,QAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,QAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAd,EACA,0BAAAN,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,EAAAU,CAAA,CACD,EAED,OACEa,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,0BAA2BnB,CAAS,CAAC,EACzD,cAAY,oCAEX,SAAA,CAAAC,EAAamB,EAACC,EAAA,CAAqB,WAAYhB,EAAE,WAAY,EAAK,KACnEe,EAACE,EAAA,CACC,OACEP,EACEK,EAACG,EAAA,CACC,QAAAf,EACA,cAAeI,EAAiB,OAChC,qBAAAC,EACA,sBAAAC,CAAA,CAAA,EAGFM,EAAAI,EAAA,EAAE,EAGN,WAAAjB,EACA,QAASE,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAC,EACA,QAAAF,EACA,iBAAAN,EACA,eAAAS,EACA,WAAYN,EAAE,iBACd,mBAAAW,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"CompanyPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/CompanyPurchaseOrders/CompanyPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n PurchaseOrdersTableActions,\n} from '@/b2b-purchase-order/components';\nimport {\n usePurchaseOrders,\n useCustomerRolePermissions,\n} from '@/b2b-purchase-order/hooks';\nimport { CompanyPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { EnumPurchaseOrdersView } from '@/b2b-purchase-order/types/api';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\n\nexport const CompanyPurchaseOrders: Container<CompanyPurchaseOrdersProps> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n withWrapper = true,\n skeletonRowCount = 5,\n}) => {\n const view = EnumPurchaseOrdersView.COMPANY_PURCHASE_ORDERS;\n\n const t = useText({\n headerText: 'PurchaseOrders.companyPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n selectAllAriaLabel:\n 'PurchaseOrders.purchaseOrdersTable.tableColumns.selectAllAriaLabel',\n noPurchaseOrders: 'PurchaseOrders.companyPurchaseOrders.noPurchaseOrders',\n });\n\n const { permissions, loadingPermissions } = useCustomerRolePermissions();\n const {\n totalCount,\n loading,\n tableConfig,\n paginationConfig,\n pageSizeConfig,\n selectedOrderIds,\n handleRejectSelected,\n handleApproveSelected,\n isAdmin,\n alertMessageConfig,\n } = usePurchaseOrders({\n view,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n permissions,\n loadingPermissions,\n t,\n });\n\n return (\n <div\n className={classes(['company-purchase-orders', className])}\n data-testid=\"company-purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n header={\n isAdmin ? (\n <PurchaseOrdersTableActions\n loading={loading}\n selectedCount={selectedOrderIds.length}\n handleRejectSelected={handleRejectSelected}\n handleApproveSelected={handleApproveSelected}\n />\n ) : null\n }\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n withWrapper={withWrapper}\n />\n </div>\n );\n};\n"],"names":["CompanyPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","withWrapper","skeletonRowCount","view","EnumPurchaseOrdersView","t","useText","permissions","loadingPermissions","useCustomerRolePermissions","totalCount","loading","tableConfig","paginationConfig","pageSizeConfig","selectedOrderIds","handleRejectSelected","handleApproveSelected","isAdmin","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable","PurchaseOrdersTableActions"],"mappings":"ggBAgCO,MAAMA,EAA+D,CAAC,CAC3E,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,YAAAC,EAAc,GACd,iBAAAC,EAAmB,CACrB,IAAM,CACJ,MAAMC,EAAOC,EAAuB,wBAE9BC,EAAIC,EAAQ,CAChB,WAAY,sDACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,mBACE,qEACF,iBAAkB,uDAAA,CACnB,EAEK,CAAE,YAAAC,EAAa,mBAAAC,CAAA,EAAuBC,EAAA,EACtC,CACJ,WAAAC,EACA,QAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,QAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAjB,EACA,0BAAAP,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,YAAAa,EACA,mBAAAC,EACA,EAAAH,CAAA,CACD,EAED,OACEgB,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,0BAA2BvB,CAAS,CAAC,EACzD,cAAY,oCAEX,SAAA,CAAAC,EAAauB,EAACC,EAAA,CAAqB,WAAYnB,EAAE,WAAY,EAAK,KACnEkB,EAACE,EAAA,CACC,OACEP,EACEK,EAACG,EAAA,CACC,QAAAf,EACA,cAAeI,EAAiB,OAChC,qBAAAC,EACA,sBAAAC,CAAA,CAAA,EAEA,KAEN,WAAAP,EACA,QAASE,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAC,EACA,QAAAF,EACA,iBAAAT,EACA,eAAAY,EACA,WAAYT,EAAE,iBACd,mBAAAc,EACA,YAAAlB,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as P,jsx as s}from"@dropins/tools/preact-jsx-runtime.js";import{classes as b}from"@dropins/tools/lib.js";import{E as T,u as C,P as f,a as g,d as x}from"../chunks/usePurchaseOrders.js";import"@dropins/tools/components.js";import{useText as y}from"@dropins/tools/i18n.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"../chunks/getPurchaseOrders.js";import"@dropins/tools/fetch-graphql.js";const H=({initialPageSize:a=x,routePurchaseOrderDetails:t,setColumns:u,setRowsData:o,className:d="",withHeader:c=!0,skeletonRowCount:l=10})=>{const n=T.CUSTOMER_PURCHASE_ORDERS,e=y({headerText:"PurchaseOrders.customerPurchaseOrders.containerTitle",actionView:"PurchaseOrders.purchaseOrdersTable.actionView",poNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber",orderNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber",createdDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate",updatedDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate",createdBy:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy",status:"PurchaseOrders.purchaseOrdersTable.tableColumns.status",total:"PurchaseOrders.purchaseOrdersTable.tableColumns.total",action:"PurchaseOrders.purchaseOrdersTable.tableColumns.action",noPurchaseOrders:"PurchaseOrders.customerPurchaseOrders.noPurchaseOrders"}),{pageSizeConfig:h,loading:m,paginationConfig:i,tableConfig:r,totalCount:O,alertMessageConfig:p}=C({type:n,routePurchaseOrderDetails:t,setColumns:u,setRowsData:o,initialPageSize:a,t:e});return P("div",{className:b(["purchase-orders",d]),"data-testid":"purchase-orders-container",children:[c?s(f,{headerText:e.headerText}):null,s(g,{totalCount:O,columns:r.columns,rows:r.rows,paginationConfig:i,loading:m,skeletonRowCount:l,pageSizeConfig:h,emptyTitle:e.noPurchaseOrders,alertMessageConfig:p})]})};export{H as CustomerPurchaseOrders,H as default};
3
+ import{jsxs as T,jsx as s}from"@dropins/tools/preact-jsx-runtime.js";import{classes as f}from"@dropins/tools/lib.js";import{E as g,u as x,a as w,P as D,b as E,d as N}from"../chunks/useCustomerRolePermissions.js";import"@dropins/tools/components.js";import{useText as R}from"@dropins/tools/i18n.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"../chunks/getPurchaseOrders.js";import"@dropins/tools/fetch-graphql.js";const U=({initialPageSize:a=N,routePurchaseOrderDetails:t,setColumns:o,setRowsData:u,className:d="",withHeader:c=!0,withWrapper:l=!0,skeletonRowCount:n=5})=>{const i=g.CUSTOMER_PURCHASE_ORDERS,e=R({headerText:"PurchaseOrders.customerPurchaseOrders.containerTitle",actionView:"PurchaseOrders.purchaseOrdersTable.actionView",poNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber",orderNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber",createdDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate",updatedDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate",createdBy:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy",status:"PurchaseOrders.purchaseOrdersTable.tableColumns.status",total:"PurchaseOrders.purchaseOrdersTable.tableColumns.total",action:"PurchaseOrders.purchaseOrdersTable.tableColumns.action",noPurchaseOrders:"PurchaseOrders.customerPurchaseOrders.noPurchaseOrders"}),{permissions:m,loadingPermissions:h}=x(),{pageSizeConfig:O,loading:p,paginationConfig:P,tableConfig:r,totalCount:b,alertMessageConfig:C}=w({view:i,routePurchaseOrderDetails:t,setColumns:o,setRowsData:u,initialPageSize:a,permissions:m,loadingPermissions:h,t:e});return T("div",{className:f(["purchase-orders",d]),"data-testid":"purchase-orders-container",children:[c?s(D,{headerText:e.headerText}):null,s(E,{totalCount:b,columns:r.columns,rows:r.rows,paginationConfig:P,loading:p,skeletonRowCount:n,pageSizeConfig:O,emptyTitle:e.noPurchaseOrders,alertMessageConfig:C,withWrapper:l})]})};export{U as CustomerPurchaseOrders,U as default};
4
4
  //# sourceMappingURL=CustomerPurchaseOrders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/CustomerPurchaseOrders/CustomerPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n} from '@/b2b-purchase-order/components';\nimport { usePurchaseOrders } from '@/b2b-purchase-order/hooks';\nimport { CustomerPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\nimport { EnumPurchaseOrderType } from '@/b2b-purchase-order/types/api';\n\nexport const CustomerPurchaseOrders: Container<CustomerPurchaseOrdersProps> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n skeletonRowCount = 10,\n}) => {\n const type = EnumPurchaseOrderType.CUSTOMER_PURCHASE_ORDERS;\n const t = useText({\n headerText: 'PurchaseOrders.customerPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n noPurchaseOrders: 'PurchaseOrders.customerPurchaseOrders.noPurchaseOrders',\n });\n\n const {\n pageSizeConfig,\n loading,\n paginationConfig,\n tableConfig,\n totalCount,\n alertMessageConfig,\n } = usePurchaseOrders({\n type,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n t,\n });\n\n return (\n <div\n className={classes(['purchase-orders', className])}\n data-testid=\"purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n />\n </div>\n );\n};\n"],"names":["CustomerPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","skeletonRowCount","type","EnumPurchaseOrderType","t","useText","pageSizeConfig","loading","paginationConfig","tableConfig","totalCount","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable"],"mappings":"obA4BO,MAAMA,EAAiE,CAAC,CAC7E,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,iBAAAC,EAAmB,EACrB,IAAM,CACJ,MAAMC,EAAOC,EAAsB,yBAC7BC,EAAIC,EAAQ,CAChB,WAAY,uDACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,iBAAkB,wDAAA,CACnB,EAEK,CACJ,eAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,WAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAV,EACA,0BAAAN,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,EAAAU,CAAA,CACD,EAED,OACES,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,kBAAmBf,CAAS,CAAC,EACjD,cAAY,4BAEX,SAAA,CAAAC,EAAae,EAACC,EAAA,CAAqB,WAAYZ,EAAE,WAAY,EAAK,KACnEW,EAACE,EAAA,CACC,WAAAP,EACA,QAASD,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAD,EACA,QAAAD,EACA,iBAAAN,EACA,eAAAK,EACA,WAAYF,EAAE,iBACd,mBAAAO,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"CustomerPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/CustomerPurchaseOrders/CustomerPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n} from '@/b2b-purchase-order/components';\nimport {\n usePurchaseOrders,\n useCustomerRolePermissions,\n} from '@/b2b-purchase-order/hooks';\nimport { CustomerPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\nimport { EnumPurchaseOrdersView } from '@/b2b-purchase-order/types/api';\n\nexport const CustomerPurchaseOrders: Container<CustomerPurchaseOrdersProps> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n withWrapper = true,\n skeletonRowCount = 5,\n}) => {\n const view = EnumPurchaseOrdersView.CUSTOMER_PURCHASE_ORDERS;\n\n const t = useText({\n headerText: 'PurchaseOrders.customerPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n noPurchaseOrders: 'PurchaseOrders.customerPurchaseOrders.noPurchaseOrders',\n });\n\n const { permissions, loadingPermissions } = useCustomerRolePermissions();\n const {\n pageSizeConfig,\n loading,\n paginationConfig,\n tableConfig,\n totalCount,\n alertMessageConfig,\n } = usePurchaseOrders({\n view,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n permissions,\n loadingPermissions,\n t,\n });\n\n return (\n <div\n className={classes(['purchase-orders', className])}\n data-testid=\"purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n withWrapper={withWrapper}\n />\n </div>\n );\n};\n"],"names":["CustomerPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","withWrapper","skeletonRowCount","view","EnumPurchaseOrdersView","t","useText","permissions","loadingPermissions","useCustomerRolePermissions","pageSizeConfig","loading","paginationConfig","tableConfig","totalCount","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable"],"mappings":"ocA+BO,MAAMA,EAAiE,CAAC,CAC7E,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,YAAAC,EAAc,GACd,iBAAAC,EAAmB,CACrB,IAAM,CACJ,MAAMC,EAAOC,EAAuB,yBAE9BC,EAAIC,EAAQ,CAChB,WAAY,uDACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,iBAAkB,wDAAA,CACnB,EAEK,CAAE,YAAAC,EAAa,mBAAAC,CAAA,EAAuBC,EAAA,EACtC,CACJ,eAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,WAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAb,EACA,0BAAAP,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,YAAAa,EACA,mBAAAC,EACA,EAAAH,CAAA,CACD,EAED,OACEY,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,kBAAmBnB,CAAS,CAAC,EACjD,cAAY,4BAEX,SAAA,CAAAC,EAAamB,EAACC,EAAA,CAAqB,WAAYf,EAAE,WAAY,EAAK,KACnEc,EAACE,EAAA,CACC,WAAAP,EACA,QAASD,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAD,EACA,QAAAD,EACA,iBAAAT,EACA,eAAAQ,EACA,WAAYL,EAAE,iBACd,mBAAAU,EACA,YAAAd,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsxs as f,jsx as e,Fragment as t}from"@dropins/tools/preact-jsx-runtime.js";import{classes as v}from"@dropins/tools/lib.js";import{E as A,u as R,P as D,a as M,d as j}from"../chunks/usePurchaseOrders.js";import{P as x}from"../chunks/PurchaseOrdersTableActions.js";import{useText as E}from"@dropins/tools/i18n.js";import"@dropins/tools/components.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"../chunks/getPurchaseOrders.js";import"@dropins/tools/fetch-graphql.js";const U=({initialPageSize:o=j,routePurchaseOrderDetails:d,setColumns:c,setRowsData:u,className:l="",withHeader:p=!0,skeletonRowCount:i=10})=>{const h=A.CUSTOMER_APPROVAL_PURCHASE_ORDERS,r=E({headerText:"PurchaseOrders.requireApprovalPurchaseOrders.containerTitle",actionView:"PurchaseOrders.purchaseOrdersTable.actionView",poNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber",orderNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber",createdDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate",updatedDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate",createdBy:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy",status:"PurchaseOrders.purchaseOrdersTable.tableColumns.status",total:"PurchaseOrders.purchaseOrdersTable.tableColumns.total",action:"PurchaseOrders.purchaseOrdersTable.tableColumns.action",noPurchaseOrders:"PurchaseOrders.requireApprovalPurchaseOrders.noPurchaseOrders",alertHeaderApprove:"PurchaseOrders.alertMessages.header.approve",alertHeaderReject:"PurchaseOrders.alertMessages.header.reject",alertHeaderError:"PurchaseOrders.alertMessages.header.error",alertDescriptionApprove:"PurchaseOrders.alertMessages.description.approve",alertDescriptionReject:"PurchaseOrders.alertMessages.description.reject",alertDescriptionError:"PurchaseOrders.alertMessages.description.error"}),{totalCount:n,loading:s,tableConfig:a,paginationConfig:O,pageSizeConfig:P,selectedOrderIds:m,handleRejectSelected:b,handleApproveSelected:T,isApproval:g,alertMessageConfig:C}=R({type:h,routePurchaseOrderDetails:d,setColumns:c,setRowsData:u,initialPageSize:o,t:r});return f("div",{className:v(["require-approval-purchase-orders",l]),"data-testid":"require-approval-purchase-orders-container",children:[p?e(D,{headerText:r.headerText}):null,e(M,{header:e(t,{children:g?e(x,{loading:s,selectedCount:m.length,handleRejectSelected:b,handleApproveSelected:T}):e(t,{})}),totalCount:n,columns:a.columns,rows:a.rows,paginationConfig:O,loading:s,skeletonRowCount:i,pageSizeConfig:P,emptyTitle:r.noPurchaseOrders,alertMessageConfig:C})]})};export{U as RequireApprovalPurchaseOrders,U as default};
3
+ import{jsxs as f,jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{classes as R}from"@dropins/tools/lib.js";import{E as D,u as M,a as j,P as w,b as x,d as E}from"../chunks/useCustomerRolePermissions.js";import{P as S}from"../chunks/PurchaseOrdersTableActions.js";import{useText as q}from"@dropins/tools/i18n.js";import"@dropins/tools/components.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/preact-hooks.js";import"../chunks/getPurchaseOrders.js";import"@dropins/tools/fetch-graphql.js";const k=({initialPageSize:o=E,routePurchaseOrderDetails:l,setColumns:d,setRowsData:u,className:c="",withHeader:i=!0,withWrapper:p=!0,skeletonRowCount:n=5})=>{const h=D.CUSTOMER_APPROVAL_PURCHASE_ORDERS,e=q({headerText:"PurchaseOrders.requireApprovalPurchaseOrders.containerTitle",actionView:"PurchaseOrders.purchaseOrdersTable.actionView",poNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber",orderNumber:"PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber",createdDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate",updatedDate:"PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate",createdBy:"PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy",status:"PurchaseOrders.purchaseOrdersTable.tableColumns.status",total:"PurchaseOrders.purchaseOrdersTable.tableColumns.total",action:"PurchaseOrders.purchaseOrdersTable.tableColumns.action",selectAllAriaLabel:"PurchaseOrders.purchaseOrdersTable.tableColumns.selectAllAriaLabel",noPurchaseOrders:"PurchaseOrders.requireApprovalPurchaseOrders.noPurchaseOrders",alertHeaderApprove:"PurchaseOrders.alertMessages.header.approve",alertHeaderReject:"PurchaseOrders.alertMessages.header.reject",alertHeaderError:"PurchaseOrders.alertMessages.header.error",alertDescriptionApprove:"PurchaseOrders.alertMessages.description.approve",alertDescriptionReject:"PurchaseOrders.alertMessages.description.reject",alertDescriptionError:"PurchaseOrders.alertMessages.description.error"}),{permissions:O,loadingPermissions:P}=M(),{totalCount:s,loading:a,tableConfig:t,paginationConfig:m,pageSizeConfig:b,selectedOrderIds:C,handleRejectSelected:T,handleApproveSelected:g,isRequireApprovalPOsView:A,alertMessageConfig:v}=j({view:h,routePurchaseOrderDetails:l,setColumns:d,setRowsData:u,initialPageSize:o,permissions:O,loadingPermissions:P,t:e});return f("div",{className:R(["require-approval-purchase-orders",c]),"data-testid":"require-approval-purchase-orders-container",children:[i?r(w,{headerText:e.headerText}):null,r(x,{header:A&&s>0?r(S,{loading:a,selectedCount:C.length,handleRejectSelected:T,handleApproveSelected:g}):null,totalCount:s,columns:t.columns,rows:t.rows,paginationConfig:m,loading:a,skeletonRowCount:n,pageSizeConfig:b,emptyTitle:e.noPurchaseOrders,alertMessageConfig:v,withWrapper:p})]})};export{k as RequireApprovalPurchaseOrders,k as default};
4
4
  //# sourceMappingURL=RequireApprovalPurchaseOrders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequireApprovalPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/RequireApprovalPurchaseOrders/RequireApprovalPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n PurchaseOrdersTableActions,\n} from '@/b2b-purchase-order/components';\nimport { usePurchaseOrders } from '@/b2b-purchase-order/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\nimport { EnumPurchaseOrderType } from '@/b2b-purchase-order/types/api';\nimport { RequireApprovalPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\n\nexport const RequireApprovalPurchaseOrders: Container<\n RequireApprovalPurchaseOrdersProps\n> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n skeletonRowCount = 10,\n}) => {\n const type = EnumPurchaseOrderType.CUSTOMER_APPROVAL_PURCHASE_ORDERS;\n const t = useText({\n headerText: 'PurchaseOrders.requireApprovalPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n noPurchaseOrders:\n 'PurchaseOrders.requireApprovalPurchaseOrders.noPurchaseOrders',\n alertHeaderApprove: 'PurchaseOrders.alertMessages.header.approve',\n alertHeaderReject: 'PurchaseOrders.alertMessages.header.reject',\n alertHeaderError: 'PurchaseOrders.alertMessages.header.error',\n alertDescriptionApprove: 'PurchaseOrders.alertMessages.description.approve',\n alertDescriptionReject: 'PurchaseOrders.alertMessages.description.reject',\n alertDescriptionError: 'PurchaseOrders.alertMessages.description.error',\n });\n\n const {\n totalCount,\n loading,\n tableConfig,\n paginationConfig,\n pageSizeConfig,\n selectedOrderIds,\n handleRejectSelected,\n handleApproveSelected,\n isApproval,\n alertMessageConfig,\n } = usePurchaseOrders({\n type,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n t,\n });\n\n return (\n <div\n className={classes(['require-approval-purchase-orders', className])}\n data-testid=\"require-approval-purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n header={\n <>\n {isApproval ? (\n <PurchaseOrdersTableActions\n loading={loading}\n selectedCount={selectedOrderIds.length}\n handleRejectSelected={handleRejectSelected}\n handleApproveSelected={handleApproveSelected}\n />\n ) : (\n <></>\n )}\n </>\n }\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n />\n </div>\n );\n};\n"],"names":["RequireApprovalPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","skeletonRowCount","type","EnumPurchaseOrderType","t","useText","totalCount","loading","tableConfig","paginationConfig","pageSizeConfig","selectedOrderIds","handleRejectSelected","handleApproveSelected","isApproval","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable","PurchaseOrdersTableActions"],"mappings":"8fA6BO,MAAMA,EAET,CAAC,CACH,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,iBAAAC,EAAmB,EACrB,IAAM,CACJ,MAAMC,EAAOC,EAAsB,kCAC7BC,EAAIC,EAAQ,CAChB,WAAY,8DACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,iBACE,gEACF,mBAAoB,8CACpB,kBAAmB,6CACnB,iBAAkB,4CAClB,wBAAyB,mDACzB,uBAAwB,kDACxB,sBAAuB,gDAAA,CACxB,EAEK,CACJ,WAAAC,EACA,QAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,WAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAd,EACA,0BAAAN,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,EAAAU,CAAA,CACD,EAED,OACEa,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,mCAAoCnB,CAAS,CAAC,EAClE,cAAY,6CAEX,SAAA,CAAAC,EAAamB,EAACC,EAAA,CAAqB,WAAYhB,EAAE,WAAY,EAAK,KACnEe,EAACE,EAAA,CACC,YAEK,SAAAP,EACCK,EAACG,EAAA,CACC,QAAAf,EACA,cAAeI,EAAiB,OAChC,qBAAAC,EACA,sBAAAC,CAAA,CAAA,QAGA,EAEN,EAEF,WAAAP,EACA,QAASE,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAC,EACA,QAAAF,EACA,iBAAAN,EACA,eAAAS,EACA,WAAYN,EAAE,iBACd,mBAAAW,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"RequireApprovalPurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/containers/RequireApprovalPurchaseOrders/RequireApprovalPurchaseOrders.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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport {\n PurchaseOrdersTable,\n PurchaseOrdersHeader,\n PurchaseOrdersTableActions,\n} from '@/b2b-purchase-order/components';\nimport {\n usePurchaseOrders,\n useCustomerRolePermissions,\n} from '@/b2b-purchase-order/hooks';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\nimport { EnumPurchaseOrdersView } from '@/b2b-purchase-order/types/api';\nimport { RequireApprovalPurchaseOrdersProps } from '@/b2b-purchase-order/types/containers';\n\nexport const RequireApprovalPurchaseOrders: Container<\n RequireApprovalPurchaseOrdersProps\n> = ({\n initialPageSize = defaultPageSizeConfig,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n withWrapper = true,\n skeletonRowCount = 5,\n}) => {\n const view = EnumPurchaseOrdersView.CUSTOMER_APPROVAL_PURCHASE_ORDERS;\n\n const t = useText({\n headerText: 'PurchaseOrders.requireApprovalPurchaseOrders.containerTitle',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n poNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.poNumber',\n orderNumber: 'PurchaseOrders.purchaseOrdersTable.tableColumns.orderNumber',\n createdDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdDate',\n updatedDate: 'PurchaseOrders.purchaseOrdersTable.tableColumns.updatedDate',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n total: 'PurchaseOrders.purchaseOrdersTable.tableColumns.total',\n action: 'PurchaseOrders.purchaseOrdersTable.tableColumns.action',\n selectAllAriaLabel:\n 'PurchaseOrders.purchaseOrdersTable.tableColumns.selectAllAriaLabel',\n noPurchaseOrders:\n 'PurchaseOrders.requireApprovalPurchaseOrders.noPurchaseOrders',\n alertHeaderApprove: 'PurchaseOrders.alertMessages.header.approve',\n alertHeaderReject: 'PurchaseOrders.alertMessages.header.reject',\n alertHeaderError: 'PurchaseOrders.alertMessages.header.error',\n alertDescriptionApprove: 'PurchaseOrders.alertMessages.description.approve',\n alertDescriptionReject: 'PurchaseOrders.alertMessages.description.reject',\n alertDescriptionError: 'PurchaseOrders.alertMessages.description.error',\n });\n\n const { permissions, loadingPermissions } = useCustomerRolePermissions();\n const {\n totalCount,\n loading,\n tableConfig,\n paginationConfig,\n pageSizeConfig,\n selectedOrderIds,\n handleRejectSelected,\n handleApproveSelected,\n isRequireApprovalPOsView,\n alertMessageConfig,\n } = usePurchaseOrders({\n view,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n initialPageSize,\n permissions,\n loadingPermissions,\n t,\n });\n\n return (\n <div\n className={classes(['require-approval-purchase-orders', className])}\n data-testid=\"require-approval-purchase-orders-container\"\n >\n {withHeader ? <PurchaseOrdersHeader headerText={t.headerText} /> : null}\n <PurchaseOrdersTable\n header={\n isRequireApprovalPOsView && totalCount > 0 ? (\n <PurchaseOrdersTableActions\n loading={loading}\n selectedCount={selectedOrderIds.length}\n handleRejectSelected={handleRejectSelected}\n handleApproveSelected={handleApproveSelected}\n />\n ) : null\n }\n totalCount={totalCount}\n columns={tableConfig.columns}\n rows={tableConfig.rows}\n paginationConfig={paginationConfig}\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.noPurchaseOrders}\n alertMessageConfig={alertMessageConfig}\n withWrapper={withWrapper}\n />\n </div>\n );\n};\n"],"names":["RequireApprovalPurchaseOrders","initialPageSize","defaultPageSizeConfig","routePurchaseOrderDetails","setColumns","setRowsData","className","withHeader","withWrapper","skeletonRowCount","view","EnumPurchaseOrdersView","t","useText","permissions","loadingPermissions","useCustomerRolePermissions","totalCount","loading","tableConfig","paginationConfig","pageSizeConfig","selectedOrderIds","handleRejectSelected","handleApproveSelected","isRequireApprovalPOsView","alertMessageConfig","usePurchaseOrders","jsxs","classes","jsx","PurchaseOrdersHeader","PurchaseOrdersTable","PurchaseOrdersTableActions"],"mappings":"ggBAgCO,MAAMA,EAET,CAAC,CACH,gBAAAC,EAAkBC,EAClB,0BAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,YAAAC,EAAc,GACd,iBAAAC,EAAmB,CACrB,IAAM,CACJ,MAAMC,EAAOC,EAAuB,kCAE9BC,EAAIC,EAAQ,CAChB,WAAY,8DACZ,WAAY,gDACZ,SAAU,2DACV,YAAa,8DACb,YAAa,8DACb,YAAa,8DACb,UAAW,4DACX,OAAQ,yDACR,MAAO,wDACP,OAAQ,yDACR,mBACE,qEACF,iBACE,gEACF,mBAAoB,8CACpB,kBAAmB,6CACnB,iBAAkB,4CAClB,wBAAyB,mDACzB,uBAAwB,kDACxB,sBAAuB,gDAAA,CACxB,EAEK,CAAE,YAAAC,EAAa,mBAAAC,CAAA,EAAuBC,EAAA,EACtC,CACJ,WAAAC,EACA,QAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,yBAAAC,EACA,mBAAAC,CAAA,EACEC,EAAkB,CACpB,KAAAjB,EACA,0BAAAP,EACA,WAAAC,EACA,YAAAC,EACA,gBAAAJ,EACA,YAAAa,EACA,mBAAAC,EACA,EAAAH,CAAA,CACD,EAED,OACEgB,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,mCAAoCvB,CAAS,CAAC,EAClE,cAAY,6CAEX,SAAA,CAAAC,EAAauB,EAACC,EAAA,CAAqB,WAAYnB,EAAE,WAAY,EAAK,KACnEkB,EAACE,EAAA,CACC,OACEP,GAA4BR,EAAa,EACvCa,EAACG,EAAA,CACC,QAAAf,EACA,cAAeI,EAAiB,OAChC,qBAAAC,EACA,sBAAAC,CAAA,CAAA,EAEA,KAEN,WAAAP,EACA,QAASE,EAAY,QACrB,KAAMA,EAAY,KAClB,iBAAAC,EACA,QAAAF,EACA,iBAAAT,EACA,eAAAY,EACA,WAAYT,EAAE,iBACd,mBAAAc,EACA,YAAAlB,CAAA,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,4 +1,20 @@
1
1
  import { CustomerRolePermissionsModel } from '../models/customer-role-permissions-model';
2
2
 
3
- export declare const transformCustomerRolePermissions: (response: any) => CustomerRolePermissionsModel;
3
+ type PermissionsPayload = {
4
+ admin?: boolean;
5
+ [key: string]: boolean | undefined;
6
+ };
7
+ /**
8
+ * Transforms flat permissions object from auth/permissions event into CustomerRolePermissionsModel
9
+ *
10
+ * Permission Logic:
11
+ * - true: Permission granted
12
+ * - false: Permission disabled (overrides admin privileges - indicates PO feature is disabled)
13
+ * - Default: Admins get access, regular users don't
14
+ *
15
+ * @param permissionsData - Flat object with permission keys and admin flag
16
+ * @returns CustomerRolePermissionsModel
17
+ */
18
+ export declare const transformPermissions: (permissionsData: PermissionsPayload | null | undefined) => CustomerRolePermissionsModel;
19
+ export {};
4
20
  //# sourceMappingURL=transform-customer-role-permissions.d.ts.map
package/hooks/index.d.ts CHANGED
@@ -15,4 +15,5 @@
15
15
  * from Adobe.
16
16
  *******************************************************************/
17
17
  export * from './usePurchaseOrders';
18
+ export * from './useCustomerRolePermissions';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,18 @@
1
+ import { CustomerRolePermissionsModel } from '../data/models';
2
+
3
+ /**
4
+ * Hook to consume customer role permissions from the auth/permissions event
5
+ *
6
+ * Initializes with last payload and subscribes to real-time updates.
7
+ * Transforms permissions data where:
8
+ * - true: Permission granted
9
+ * - false: Permission disabled (overrides admin - PO feature disabled)
10
+ * - Default: Admins get access, regular users don't
11
+ *
12
+ * @returns {permissions: CustomerRolePermissionsModel, loadingPermissions: boolean}
13
+ */
14
+ export declare const useCustomerRolePermissions: () => {
15
+ permissions: CustomerRolePermissionsModel;
16
+ loadingPermissions: boolean;
17
+ };
18
+ //# sourceMappingURL=useCustomerRolePermissions.d.ts.map
@@ -1,4 +1,4 @@
1
1
  import { UsePurchaseOrdersParams, UsePurchaseOrdersReturn } from '../types/hooks';
2
2
 
3
- export declare const usePurchaseOrders: ({ type, initialPageSize, routePurchaseOrderDetails, setColumns, setRowsData, t, }: UsePurchaseOrdersParams) => UsePurchaseOrdersReturn;
3
+ export declare const usePurchaseOrders: ({ view, initialPageSize, routePurchaseOrderDetails, setColumns, setRowsData, t, permissions, loadingPermissions, }: UsePurchaseOrdersParams) => UsePurchaseOrdersReturn;
4
4
  //# sourceMappingURL=usePurchaseOrders.d.ts.map
@@ -1,20 +1,20 @@
1
1
  declare const _default: {
2
2
  "PurchaseOrders": {
3
3
  "customerPurchaseOrders": {
4
- "containerTitle": "Purchase orders",
5
- "noPurchaseOrders": "No my purchase orders found."
4
+ "containerTitle": "My purchase orders",
5
+ "noPurchaseOrders": "No purchase orders found."
6
6
  },
7
7
  "companyPurchaseOrders": {
8
- "containerTitle": "Company Purchase orders",
8
+ "containerTitle": "Company purchase orders",
9
9
  "noPurchaseOrders": "No company purchase orders found."
10
10
  },
11
11
  "requireApprovalPurchaseOrders": {
12
- "containerTitle": "Requires My Approval",
12
+ "containerTitle": "Requires my approval",
13
13
  "noPurchaseOrders": "No purchase orders requiring my approval found."
14
14
  },
15
15
  "approvalRulesList": {
16
16
  "containerTitle": "Approval Rules",
17
- "buttons":{
17
+ "buttons": {
18
18
  "newRule": "Add New Rule"
19
19
  }
20
20
  },
@@ -25,9 +25,9 @@ declare const _default: {
25
25
  "error": "Error"
26
26
  },
27
27
  "description": {
28
- "approve": "Purchase orders approved successfully",
29
- "reject": "Purchase orders rejected successfully",
30
- "error": "There was an error processing your request. Please try again."
28
+ "approve": "The selected purchase orders were approved successfully.",
29
+ "reject": "The selected purchase orders were rejected successfully.",
30
+ "error": "An error occurred while processing your request."
31
31
  }
32
32
  },
33
33
  "purchaseOrdersTable": {
@@ -79,7 +79,8 @@ declare const _default: {
79
79
  "ruleName": "Rule Name",
80
80
  "ruleType": "Rule Type",
81
81
  "appliesTo": "Applies To",
82
- "approver": "Approver"
82
+ "approver": "Approver",
83
+ "selectAllAriaLabel": "Select all not approved purchase orders"
83
84
  }
84
85
  }
85
86
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-purchase-order", "version": "0.0.1-alpha2", "@dropins/tools": "1.5.0-alpha3002", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-purchase-order", "version": "0.0.1-alpha4", "@dropins/tools": "1.5.1", "license": "SEE LICENSE IN LICENSE.md"}
package/render.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- (function(n,t){try{if(typeof document<"u"){const e=document.createElement("style"),s=t.styleId;for(const a in t.attributes)e.setAttribute(a,t.attributes[a]);e.setAttribute("data-dropin",s),e.appendChild(document.createTextNode(n));const r=document.querySelector('style[data-dropin="sdk"]');if(r)r.after(e);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(e):document.head.append(e)}}}catch(e){console.error("dropin-styles (injectCodeFunction)",e)}})('.b2b-purchase-order-purchase-orders-table a{cursor:pointer}.b2b-purchase-order-purchase-orders-table .purchase-orders-table__item--skeleton{max-width:200px}.purchase-orders-table__empty-state{text-align:center;color:var(--color-neutral-600);font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.purchase-orders-table__pagination-wrapper{display:flex;justify-content:space-between;align-items:center}.purchase-orders-table__pagination-page-size{display:flex;align-items:center;gap:var(--spacing-small)}.purchase-orders-table__pagination-counter,.purchase-orders-table__pagination-page-size{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@media (max-width: 783px){.purchase-orders-table__pagination-wrapper{display:grid;grid-template-areas:"counter page-size" "pagination pagination";grid-template-columns:auto auto;gap:var(--spacing-small)}.purchase-orders-table__pagination-counter{grid-area:counter}.purchase-orders-table__pagination-page-size{grid-area:page-size}.purchase-orders-table__pagination{grid-area:pagination;justify-self:center}}@media (max-width: 600px){.purchase-orders-table__pagination-wrapper{grid-template-areas:"counter" "page-size" "pagination";grid-template-columns:1fr;justify-items:center}.purchase-orders-table__pagination-counter{grid-area:counter}.purchase-orders-table__pagination-page-size{grid-area:page-size}.purchase-orders-table__pagination{grid-area:pagination}}.purchase-orders-header{margin-bottom:var(--spacing-medium)}.b2b-purchase-order-purchase-orders-table-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.b2b-purchase-order-purchase-orders-table-actions__buttons{display:flex;gap:10px;justify-content:space-between}',{styleId:"b2b-purchase-order"});
4
- import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{Render as d}from"@dropins/tools/lib.js";import{useState as n,useEffect as p}from"@dropins/tools/preact-hooks.js";import{UIProvider as u}from"@dropins/tools/components.js";import{events as l}from"@dropins/tools/event-bus.js";const c={customerPurchaseOrders:{containerTitle:"Purchase orders",noPurchaseOrders:"No my purchase orders found."},companyPurchaseOrders:{containerTitle:"Company Purchase orders",noPurchaseOrders:"No company purchase orders found."},requireApprovalPurchaseOrders:{containerTitle:"Requires My Approval",noPurchaseOrders:"No purchase orders requiring my approval found."},approvalRulesList:{containerTitle:"Approval Rules",buttons:{newRule:"Add New Rule"}},alertMessages:{header:{approve:"Approve Purchase Orders",reject:"Reject Purchase Orders",error:"Error"},description:{approve:"Purchase orders approved successfully",reject:"Purchase orders rejected successfully",error:"There was an error processing your request. Please try again."}},purchaseOrdersTable:{noPurchaseOrders:{default:"No purchase orders found."},pagination:{status:"Items {{from}} to {{to}} of {{total}} total",pageSizeLabel:{start:"Show",end:"per page"}},loading:"Loading purchase orders...",actionView:"View",actionEdit:"Edit",actionDelete:"Delete",rulesStatus:{enabled:"Enabled",disabled:"Disabled"},ruleTypes:{grand_total:"Grand Total",number_of_skus:"Number of SKUs",any_item:"Any Item",all_items:"All Items"},appliesToAll:"All",statusOrder:{order_placed:"Order placed",order_failed:"Order failed",pending:"Pending",approved:"Approved",rejected:"Rejected",canceled:"Canceled",order_in_progress:"Order in progress",approval_required:"Approval required",approved_pending_payment:"Approved pending Payment"},tableColumns:{poNumber:"PO #",orderNumber:"Order #",createdDate:"Created",updatedDate:"Updated",createdBy:"Created By",status:"Status",total:"Total",action:"Action",ruleName:"Rule Name",ruleType:"Rule Type",appliesTo:"Applies To",approver:"Approver"}}},i={PurchaseOrders:c},m={default:i},f=({children:a})=>{const[o,s]=n("en_US");return p(()=>{const e=l.on("locale",t=>{s(t)},{eager:!0});return()=>{e==null||e.off()}},[]),r(u,{lang:o,langDefinitions:m,children:a})},O=new d(r(f,{}));export{O as render};
3
+ (function(s,t){try{if(typeof document<"u"){const e=document.createElement("style"),n=t.styleId;for(const a in t.attributes)e.setAttribute(a,t.attributes[a]);e.setAttribute("data-dropin",n),e.appendChild(document.createTextNode(s));const r=document.querySelector('style[data-dropin="sdk"]');if(r)r.after(e);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(e):document.head.append(e)}}}catch(e){console.error("dropin-styles (injectCodeFunction)",e)}})('.b2b-purchase-order-purchase-orders-table{display:flex;flex-direction:column;gap:var(--spacing-medium)}.b2b-purchase-order-purchase-orders-table a{cursor:pointer}.b2b-purchase-order-purchase-orders-table .purchase-orders-table__item--skeleton{max-width:200px}.purchase-orders-table__empty-state{text-align:center;color:var(--color-neutral-600);font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.purchase-orders-table__pagination-wrapper{display:flex;justify-content:space-between;align-items:center}.purchase-orders-table__pagination-page-size{display:flex;align-items:center;gap:var(--spacing-small)}.purchase-orders-table__pagination-counter,.purchase-orders-table__pagination-page-size{color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}@media (max-width: 783px){.purchase-orders-table__pagination-wrapper{display:grid;grid-template-areas:"counter page-size" "pagination pagination";grid-template-columns:auto auto;gap:var(--spacing-small)}.purchase-orders-table__pagination-counter{grid-area:counter}.purchase-orders-table__pagination-page-size{grid-area:page-size}.purchase-orders-table__pagination{grid-area:pagination;justify-self:center}}@media (max-width: 600px){.purchase-orders-table__pagination-wrapper{grid-template-areas:"counter" "page-size" "pagination";grid-template-columns:1fr;justify-items:center}.purchase-orders-table__pagination-counter{grid-area:counter}.purchase-orders-table__pagination-page-size{grid-area:page-size}.purchase-orders-table__pagination{grid-area:pagination}}.purchase-orders-header{margin-bottom:var(--spacing-medium)}.b2b-purchase-order-purchase-orders-table-actions{display:flex;justify-content:space-between;align-items:center}.b2b-purchase-order-purchase-orders-table-actions__buttons{display:flex;gap:10px;justify-content:space-between}',{styleId:"b2b-purchase-order"});
4
+ import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{Render as d}from"@dropins/tools/lib.js";import{useState as p,useEffect as n}from"@dropins/tools/preact-hooks.js";import{UIProvider as l}from"@dropins/tools/components.js";import{events as u}from"@dropins/tools/event-bus.js";const c={customerPurchaseOrders:{containerTitle:"My purchase orders",noPurchaseOrders:"No purchase orders found."},companyPurchaseOrders:{containerTitle:"Company purchase orders",noPurchaseOrders:"No company purchase orders found."},requireApprovalPurchaseOrders:{containerTitle:"Requires my approval",noPurchaseOrders:"No purchase orders requiring my approval found."},approvalRulesList:{containerTitle:"Approval Rules",buttons:{newRule:"Add New Rule"}},alertMessages:{header:{approve:"Approve Purchase Orders",reject:"Reject Purchase Orders",error:"Error"},description:{approve:"The selected purchase orders were approved successfully.",reject:"The selected purchase orders were rejected successfully.",error:"An error occurred while processing your request."}},purchaseOrdersTable:{noPurchaseOrders:{default:"No purchase orders found."},pagination:{status:"Items {{from}} to {{to}} of {{total}} total",pageSizeLabel:{start:"Show",end:"per page"}},loading:"Loading purchase orders...",actionView:"View",actionEdit:"Edit",actionDelete:"Delete",rulesStatus:{enabled:"Enabled",disabled:"Disabled"},ruleTypes:{grand_total:"Grand Total",number_of_skus:"Number of SKUs",any_item:"Any Item",all_items:"All Items"},appliesToAll:"All",statusOrder:{order_placed:"Order placed",order_failed:"Order failed",pending:"Pending",approved:"Approved",rejected:"Rejected",canceled:"Canceled",order_in_progress:"Order in progress",approval_required:"Approval required",approved_pending_payment:"Approved pending Payment"},tableColumns:{poNumber:"PO #",orderNumber:"Order #",createdDate:"Created",updatedDate:"Updated",createdBy:"Created By",status:"Status",total:"Total",action:"Action",ruleName:"Rule Name",ruleType:"Rule Type",appliesTo:"Applies To",approver:"Approver",selectAllAriaLabel:"Select all not approved purchase orders"}}},i={PurchaseOrders:c},m={default:i},h=({children:a})=>{const[o,s]=p("en_US");return n(()=>{const e=u.on("locale",t=>{s(t)},{eager:!0});return()=>{e==null||e.off()}},[]),r(l,{lang:o,langDefinitions:m,children:a})},A=new d(r(h,{}));export{A as render};
5
5
  //# sourceMappingURL=render.js.map
package/render.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["/@dropins/storefront-purchase-order/src/render/Provider.tsx","/@dropins/storefront-purchase-order/src/render/render.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CartProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CartProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};\n","import { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"2/DASMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAiD,CAAC,CAC7D,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
1
+ {"version":3,"file":"render.js","sources":["/@dropins/storefront-purchase-order/src/render/Provider.tsx","/@dropins/storefront-purchase-order/src/render/render.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CartProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CartProviderProps> = ({\n children,\n}) => {\n const [lang, setLang] = useState<Lang>('en_US');\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (locale: string) => {\n setLang(locale as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, []);\n\n return (\n <UIProvider lang={lang} langDefinitions={langDefinitions}>\n {children}\n </UIProvider>\n );\n};\n","import { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","lang","setLang","useState","useEffect","localeEvent","events","locale","jsx","UIProvider","render","Render"],"mappings":"ilEASMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAiD,CAAC,CAC7D,SAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAe,OAAO,EAG9C,OAAAC,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAmB,CAClBL,EAAQK,CAAc,CACxB,EACA,CAAE,MAAO,EAAA,CAAK,EAEhB,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CACF,EAAG,CAAA,CAAE,EAGHG,EAACC,EAAA,CAAW,KAAAR,EAAY,gBAAAJ,EACrB,SAAAG,CAAA,CACH,CAEJ,ECtCaU,EAAS,IAAIC,EAAOH,EAACT,IAAS,CAAE"}
@@ -13,7 +13,7 @@ export declare enum PurchaseOrderApprovalRuleConditionOperator {
13
13
  MORE_THAN_OR_EQUAL_TO = "MORE_THAN_OR_EQUAL_TO",
14
14
  LESS_THAN_OR_EQUAL_TO = "LESS_THAN_OR_EQUAL_TO"
15
15
  }
16
- export declare enum EnumPurchaseOrderType {
16
+ export declare enum EnumPurchaseOrdersView {
17
17
  CUSTOMER_PURCHASE_ORDERS = "customerPurchaseOrders",
18
18
  COMPANY_PURCHASE_ORDERS = "companyPurchaseOrders",
19
19
  CUSTOMER_APPROVAL_PURCHASE_ORDERS = "customerApprovalPurchaseOrders"
@@ -1,11 +1,17 @@
1
1
  import { VNode } from 'preact';
2
+ import { HTMLAttributes } from 'preact/compat';
2
3
  import { PageSizeListProps, PaginationState } from '.';
3
4
  import { AlertMessageConfigType } from '../hooks';
4
5
 
5
- export interface Column {
6
+ export type Column = {
7
+ label: string;
6
8
  key: string;
7
- label: string | VNode;
8
- }
9
+ ariaLabel?: string;
10
+ } | {
11
+ label: VNode<HTMLAttributes<HTMLElement>>;
12
+ key: string;
13
+ ariaLabel: string;
14
+ };
9
15
  export interface Row {
10
16
  [key: string]: VNode | string | number | undefined;
11
17
  _rowDetails?: VNode | string;
@@ -24,8 +30,9 @@ export interface PurchaseOrdersTableProps {
24
30
  emptyTitle?: string;
25
31
  variant?: 'primary' | 'secondary';
26
32
  skeletonRowCount?: number | string;
27
- footer?: VNode | string;
28
- header?: VNode | string;
33
+ footer?: VNode | string | null;
34
+ header?: VNode | string | null;
29
35
  alertMessageConfig: AlertMessageConfigType;
36
+ withWrapper?: boolean;
30
37
  }
31
38
  //# sourceMappingURL=purchaseOrdersTable.types.d.ts.map
@@ -7,6 +7,7 @@ export interface CompanyPurchaseOrdersProps {
7
7
  setRowsData?: (defaultRows: Row[]) => Row[];
8
8
  className?: string;
9
9
  withHeader?: boolean;
10
+ withWrapper?: boolean;
10
11
  skeletonRowCount?: number;
11
12
  }
12
13
  //# sourceMappingURL=companyPurchaseOrders.types.d.ts.map
@@ -7,6 +7,7 @@ export interface CustomerPurchaseOrdersProps {
7
7
  setRowsData?: (defaultRows: Row[]) => Row[];
8
8
  className?: string;
9
9
  withHeader?: boolean;
10
+ withWrapper?: boolean;
10
11
  skeletonRowCount?: number;
11
12
  }
12
13
  //# sourceMappingURL=customerPurchaseOrders.types.d.ts.map
@@ -7,6 +7,7 @@ export interface RequireApprovalPurchaseOrdersProps {
7
7
  setRowsData?: (defaultRows: Row[]) => Row[];
8
8
  className?: string;
9
9
  withHeader?: boolean;
10
+ withWrapper?: boolean;
10
11
  skeletonRowCount?: number;
11
12
  }
12
13
  //# sourceMappingURL=requireApprovalPurchaseOrders.types.d.ts.map
@@ -1,6 +1,7 @@
1
1
  import { PageSizeListProps, PaginationState } from '../components/pagination.types';
2
2
  import { Column, Row } from '../components/purchaseOrdersTable.types';
3
- import { EnumPurchaseOrderType } from '../api';
3
+ import { EnumPurchaseOrdersView } from '../api';
4
+ import { CustomerRolePermissionsModel } from '../../data/models';
4
5
 
5
6
  export type AlertMessageConfigType = {
6
7
  heading: string;
@@ -13,10 +14,12 @@ export interface UsePurchaseOrdersParams {
13
14
  setColumns?: (defaultColumns: Column[]) => Column[];
14
15
  setRowsData?: (defaultRows: Row[]) => Row[];
15
16
  t: Record<string, string>;
16
- type: EnumPurchaseOrderType;
17
+ view: EnumPurchaseOrdersView;
18
+ permissions: CustomerRolePermissionsModel;
19
+ loadingPermissions: boolean;
17
20
  }
18
21
  export interface UsePurchaseOrdersReturn {
19
- isApproval: boolean;
22
+ isRequireApprovalPOsView: boolean;
20
23
  isAdmin: boolean;
21
24
  totalCount: number;
22
25
  loading: boolean;
@@ -1,4 +0,0 @@
1
- import { CustomerRolePermissionsModel } from '../../data/models';
2
-
3
- export declare const getCustomerRolePermissions: () => Promise<CustomerRolePermissionsModel>;
4
- //# sourceMappingURL=getCustomerRolePermissions.d.ts.map
@@ -1,16 +0,0 @@
1
- /********************************************************************
2
- *
3
- * Copyright 2025 Adobe
4
- * All Rights Reserved.
5
- *
6
- * NOTICE: All information contained herein is, and remains
7
- * the property of Adobe and its suppliers, if any. The intellectual
8
- * and technical concepts contained herein are proprietary to Adobe
9
- * and its suppliers and are protected by all applicable intellectual
10
- * property laws, including trade secret and copyright laws.
11
- * Dissemination of this information or reproduction of this material
12
- * is strictly forbidden unless prior written permission is obtained
13
- * from Adobe.
14
- *******************************************************************/
15
- export declare const GET_CUSTOMER_ROLE_PERMISSIONS = "\n query GET_CUSTOMER_ROLE_PERMISSIONS {\n customer {\n purchase_orders_enabled\n role {\n id\n name\n permissions {\n id\n text\n sort_order\n children {\n # 2\n id\n text\n sort_order\n children {\n # 3\n id\n text\n sort_order\n children {\n # 4\n id\n text\n sort_order\n children {\n # 5\n id\n text\n sort_order\n children {\n # 6\n id\n text\n sort_order\n }\n }\n }\n }\n }\n }\n }\n }\n }\n";
16
- //# sourceMappingURL=getCustomerRolePermissions.d.ts.map
@@ -1,18 +0,0 @@
1
- /********************************************************************
2
- * ADOBE CONFIDENTIAL
3
- * __________________
4
- *
5
- * Copyright 2025 Adobe
6
- * All Rights Reserved.
7
- *
8
- * NOTICE: All information contained herein is, and remains
9
- * the property of Adobe and its suppliers, if any. The intellectual
10
- * and technical concepts contained herein are proprietary to Adobe
11
- * and its suppliers and are protected by all applicable intellectual
12
- * property laws, including trade secret and copyright laws.
13
- * Dissemination of this information or reproduction of this material
14
- * is strictly forbidden unless prior written permission is obtained
15
- * from Adobe.
16
- *******************************************************************/
17
- export * from './getCustomerRolePermissions';
18
- //# sourceMappingURL=index.d.ts.map
@@ -1,19 +0,0 @@
1
- /********************************************************************
2
- * ADOBE CONFIDENTIAL
3
- * __________________
4
- *
5
- * Copyright 2025 Adobe
6
- * All Rights Reserved.
7
- *
8
- * NOTICE: All information contained herein is, and remains
9
- * the property of Adobe and its suppliers, if any. The intellectual
10
- * and technical concepts contained herein are proprietary to Adobe
11
- * and its suppliers and are protected by all applicable intellectual
12
- * property laws, including trade secret and copyright laws.
13
- * Dissemination of this information or reproduction of this material
14
- * is strictly forbidden unless prior written permission is obtained
15
- * from Adobe.
16
- *******************************************************************/
17
- export declare const getPermissions: () => Promise<any>;
18
- export declare const clearPermissionsCache: () => void;
19
- //# sourceMappingURL=getPermissions.d.ts.map
@@ -1,18 +0,0 @@
1
- /********************************************************************
2
- * ADOBE CONFIDENTIAL
3
- * __________________
4
- *
5
- * Copyright 2025 Adobe
6
- * All Rights Reserved.
7
- *
8
- * NOTICE: All information contained herein is, and remains
9
- * the property of Adobe and its suppliers, if any. The intellectual
10
- * and technical concepts contained herein are proprietary to Adobe
11
- * and its suppliers and are protected by all applicable intellectual
12
- * property laws, including trade secret and copyright laws.
13
- * Dissemination of this information or reproduction of this material
14
- * is strictly forbidden unless prior written permission is obtained
15
- * from Adobe.
16
- *******************************************************************/
17
- export * from './getPermissions';
18
- //# sourceMappingURL=index.d.ts.map
@@ -1,4 +0,0 @@
1
- /*! Copyright 2025 Adobe
2
- All Rights Reserved. */
3
- import{jsxs as $,jsx as c}from"@dropins/tools/preact-jsx-runtime.js";import{Card as te,InLineAlert as se,Table as ae,Pagination as ne,Picker as ce,Header as oe}from"@dropins/tools/components.js";import{classes as ie}from"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import{useText as le,Text as L}from"@dropins/tools/i18n.js";import{useState as S,useEffect as F,useCallback as A,useMemo as U}from"@dropins/tools/preact-hooks.js";import{g as de,r as ue,a as he}from"./getPurchaseOrders.js";const pe=s=>{try{return new URL(s,window.location.origin).origin===window.location.origin}catch{return s.startsWith("/")||s.startsWith("./")||s.startsWith("../")}},J=(s,i="en-US")=>{try{const o=new Date(s);return isNaN(o.getTime())?s:o.toLocaleString(i,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0})}catch{return s}},ge=(s,i,o)=>{if(o<=0)return{from:0,to:0,total:0};const u=Math.max(1,Math.ceil(o/i)),p=Math.min(Math.max(s,1),u),n=(p-1)*i+1,l=Math.min(p*i,o);return{from:n,to:l,total:o}},Ae=({pageSizeConfig:s,totalCount:i=0,columns:o=[],rows:u=[],paginationConfig:p,alertMessageConfig:n={heading:"",description:"",type:"success"},loading:l=!1,className:d="",variant:h="secondary",skeletonRowCount:_=10,emptyTitle:g,header:v,footer:m})=>{var N,k;const M=le({title:"PurchaseOrders.purchaseOrdersTable.noPurchaseOrders.default"}),{heading:I,description:f,type:V}=n,{currentPage:E,totalPages:y,handlePageChange:C}=p,{pageSizeOptionsList:P,onChange:H}=s,{from:z,to:j,total:R}=ge(E,+((N=P.find(T=>T.selected))==null?void 0:N.value)||0,i);return $(te,{variant:h,"data-testid":"addressCard",className:ie(["b2b-purchase-order-purchase-orders-table",d]),children:[I||f?c(se,{heading:I,description:f,type:V}):null,v?c("div",{className:"purchase-orders-table__header",children:v}):null,c(ae,{className:"purchase-orders-table__table-wrapper",mobileLayout:"stacked",columns:o,rowData:u,loading:l,skeletonRowCount:+_}),!l&&u.length===0&&c("div",{className:"purchase-orders-table__empty-state",role:"status","aria-live":"polite",children:c("p",{children:g||M.title})}),$("div",{className:"purchase-orders-table__pagination-wrapper",children:[i?c("div",{className:"purchase-orders-table__pagination-counter",children:c(L,{id:"PurchaseOrders.purchaseOrdersTable.pagination.status",fields:{from:z,to:j,total:R}})}):null,y>1&&c(ne,{className:"purchase-orders-table__pagination",currentPage:E,totalPages:y,onChange:C}),P.length?$("div",{className:"purchase-orders-table__pagination-page-size",children:[c(L,{id:"PurchaseOrders.purchaseOrdersTable.pagination.pageSizeLabel.start"}),c(ce,{disabled:l,handleSelect:H,options:P,value:((k=P.find(T=>T.selected))==null?void 0:k.value)||""}),c(L,{id:"PurchaseOrders.purchaseOrdersTable.pagination.pageSizeLabel.end"})]}):null]}),m?c("div",{className:"purchase-orders-table__footer",children:m}):null]})},_e=({headerText:s})=>c(oe,{title:s,divider:!1,className:"purchase-orders-header","data-testid":"purchase-orders-header"});var B=(s=>(s.CUSTOMER_PURCHASE_ORDERS="customerPurchaseOrders",s.COMPANY_PURCHASE_ORDERS="companyPurchaseOrders",s.CUSTOMER_APPROVAL_PURCHASE_ORDERS="customerApprovalPurchaseOrders",s))(B||{});const ve=[{text:"10",value:"10",selected:!1},{text:"20",value:"20",selected:!0},{text:"30",value:"30",selected:!1},{text:"50",value:"50",selected:!1}],K=[{key:"poNumber",label:"PO #"},{key:"orderNumber",label:"Order #"},{key:"createdDate",label:"Created"},{key:"updatedDate",label:"Updated"},{key:"createdBy",label:"Created By"},{key:"status",label:"Status"},{key:"total",label:"Total"},{key:"action",label:"Action"}],me=[{key:"checkboxView",label:""},...K],Se=({type:s,initialPageSize:i,routePurchaseOrderDetails:o,setColumns:u,setRowsData:p,t:n})=>{const l=s===B.COMPANY_PURCHASE_ORDERS,d=s===B.CUSTOMER_APPROVAL_PURCHASE_ORDERS,[h,_]=S([]),[g,v]=S([]),[m,M]=S(i),[I,f]=S(!0),[V,E]=S({currentPage:1,totalPages:1,totalCount:0}),[y,C]=S({heading:"",description:"",type:"success"}),{currentPage:P,totalPages:H,totalCount:z}=V;F(()=>{if(y.heading||y.description){const r=setTimeout(()=>{C({heading:"",description:"",type:"success"})},7e3);return()=>clearTimeout(r)}},[y]);const j=A(r=>{const t=r.target.value;M(e=>e.map(a=>({...a,selected:a.value===t})))},[]),R=U(()=>{const r=sessionStorage.getItem("b2b-po-permissions");if(!r)return!1;const t=JSON.parse(r);return t==null?void 0:t.isAdmin},[]),N=U(()=>{let r={};return l&&(r={companyPurchaseOrders:!0}),d&&(r={requireMyApproval:!0}),r},[l,d]);F(()=>{var t;f(!0);const r=(t=m==null?void 0:m.find(e=>e.selected))==null?void 0:t.value;de(N,parseInt(r||"20",10),P).then(e=>{var w,x;const a=(e==null?void 0:e.purchaseOrderItems)??[],b=(w=e==null?void 0:e.pageInfo)==null?void 0:w.currentPage,O=(x=e==null?void 0:e.pageInfo)==null?void 0:x.totalPages,D=e==null?void 0:e.totalCount;E({currentPage:b,totalPages:O,totalCount:D}),v(a)}).catch(e=>{console.error("Failed to fetch purchase orders:",e)}).finally(()=>{f(!1)})},[P,m,N]);const k=A(r=>{const t=o==null?void 0:o(r);return pe(t??"")?t:"#"},[o]),T=A(r=>{E(t=>({...t,currentPage:r}))},[]),q=A(r=>{const t=r.target.value,e=r.target.checked;_(a=>e?[...a,t]:a.filter(b=>b!==t))},[]),G=A(r=>{const t=r.target.checked;_(()=>t?g.filter(e=>["PENDING","APPROVAL_REQUIRED"].includes(e.status)).map(e=>e.uid??""):[])},[g]),X=A(()=>{ue(h).then(r=>{const t=(r==null?void 0:r.purchaseOrders)??[];v(e=>e.map(a=>t.find(O=>O.uid===a.uid)??a)),C({heading:n.alertHeaderReject,description:n.alertDescriptionReject,type:"success"}),_([])}).catch(r=>{C({heading:n.alertHeaderError,description:n.alertDescriptionError,type:"error"}),console.error(r)}).finally(()=>{f(!1)})},[h,n]),Z=A(()=>{f(!0),he(h).then(r=>{const t=(r==null?void 0:r.purchaseOrders)??[];v(e=>e.map(a=>t.find(O=>O.uid===a.uid)??a)),C({heading:n.alertHeaderApprove,description:n.alertDescriptionApprove,type:"success"}),_([])}).catch(r=>{C({heading:n.alertHeaderError,description:n.alertDescriptionError,type:"error"}),console.error(r)}).finally(()=>{f(!1)})},[h,n]),ee=U(()=>{const r=l||d?me:K;return(u==null?void 0:u(r))??r.map(e=>e.key==="checkboxView"&&(R||d)?{...e,label:c("input",{type:"checkbox",name:"selectAll",disabled:g.every(a=>!["PENDING","APPROVAL_REQUIRED"].includes(a.status)),onChange:G})}:{...e,label:n[e.key]||e.label})},[n,R,l,d,u,g,G]),re=U(()=>{const r=g.map(e=>{var b,O,D,w,x,Q,W,Y;const a=e.number??"";return{...R||d?{checkboxView:c("input",{type:"checkbox",name:a,value:e.uid,checked:h.includes(e.uid),onChange:q,disabled:!["PENDING","APPROVAL_REQUIRED"].includes(e.status)})}:{},poNumber:a,orderNumber:e.order.orderNumber,createdDate:J(e.createdAt),updatedDate:J(e.updatedAt),createdBy:`${((b=e.createdBy)==null?void 0:b.firstname)??""} ${((O=e.createdBy)==null?void 0:O.lastname)??""}`.trim(),status:c(L,{id:`PurchaseOrders.purchaseOrdersTable.statusOrder.${e.status.toLowerCase()}`}),total:`${(x=(w=(D=e==null?void 0:e.quote)==null?void 0:D.prices)==null?void 0:w.grandTotal)==null?void 0:x.value} ${(Y=(W=(Q=e==null?void 0:e.quote)==null?void 0:Q.prices)==null?void 0:W.grandTotal)==null?void 0:Y.currency}`,action:c("a",{href:k(a),"aria-label":`View purchase order ${a}`,children:n.actionView})}});let t=r;if(p){const e=p(r);e!==void 0&&Array.isArray(e)&&(t=e)}return t},[g,p,R,d,h,q,k,n.actionView]);return{totalCount:z,loading:I,tableConfig:{columns:ee,rows:re},paginationConfig:{currentPage:P,totalPages:H,handlePageChange:T},pageSizeConfig:{pageSizeOptionsList:m,onChange:j},selectedOrderIds:h,handleRejectSelected:X,handleApproveSelected:Z,isAdmin:R,isApproval:d,alertMessageConfig:y}};export{B as E,_e as P,Ae as a,ve as d,Se as u};
4
- //# sourceMappingURL=usePurchaseOrders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePurchaseOrders.js","sources":["/@dropins/storefront-purchase-order/src/lib/isValidUrl.ts","/@dropins/storefront-purchase-order/src/lib/formatDate.ts","/@dropins/storefront-purchase-order/src/lib/getRange.ts","/@dropins/storefront-purchase-order/src/components/PurchaseOrdersTable/PurchaseOrdersTable.tsx","/@dropins/storefront-purchase-order/src/components/PurchaseOrdersHeader/PurchaseOrdersHeader.tsx","/@dropins/storefront-purchase-order/src/types/api/api.enums.types.ts","/@dropins/storefront-purchase-order/src/configs/pageSize.config.ts","/@dropins/storefront-purchase-order/src/configs/customerPurchaseOrders.config.ts","/@dropins/storefront-purchase-order/src/configs/companyPurchaseOrders.config.ts","/@dropins/storefront-purchase-order/src/hooks/usePurchaseOrders.tsx"],"sourcesContent":["export const isValidUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url, window.location.origin);\n // Only allow relative paths or same-origin URLs\n return parsed.origin === window.location.origin;\n } catch {\n // If it's not a valid URL, check if it's a relative path\n return url.startsWith('/') || url.startsWith('./') || url.startsWith('../');\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\n/**\n * Format a date string to a localized format like \"Sep 8, 2025 6:32:13 AM\"\n * @param dateString - ISO date string or date string\n * @param locale - Locale for formatting (defaults to 'en-US')\n * @returns Formatted date string\n */\nexport const formatDate = (\n dateString: string,\n locale: string = 'en-US'\n): string => {\n try {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return dateString; // Return original if invalid\n }\n\n return date.toLocaleString(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n hour12: true,\n });\n } catch (error) {\n return dateString; // Return original on error\n }\n};\n","export const getRange = (\n currentPage: number,\n pageSize: number,\n total: number\n) => {\n if (total <= 0) return { from: 0, to: 0, total: 0 };\n const maxPage = Math.max(1, Math.ceil(total / pageSize));\n const p = Math.min(Math.max(currentPage, 1), maxPage);\n const from = (p - 1) * pageSize + 1;\n const to = Math.min(p * pageSize, total);\n\n return { from, to, total };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n Table,\n Pagination,\n Card,\n Picker,\n InLineAlert,\n} from '@adobe-commerce/elsie/components';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { PurchaseOrdersTableProps } from '@/b2b-purchase-order/types/components';\nimport { Text, useText } from '@adobe-commerce/elsie/i18n';\nimport { getRange } from '@/b2b-purchase-order/lib';\nimport '@/b2b-purchase-order/components/PurchaseOrdersTable/PurchaseOrdersTable.css';\n\nexport const PurchaseOrdersTable: FunctionComponent<\n PurchaseOrdersTableProps\n> = ({\n pageSizeConfig,\n totalCount = 0,\n columns = [],\n rows = [],\n paginationConfig,\n alertMessageConfig = {\n heading: '',\n description: '',\n type: 'success',\n },\n loading = false,\n className = '',\n variant = 'secondary',\n skeletonRowCount = 10,\n emptyTitle,\n header,\n footer,\n}) => {\n const t = useText({\n title: 'PurchaseOrders.purchaseOrdersTable.noPurchaseOrders.default',\n });\n\n const { heading, description, type } = alertMessageConfig;\n const { currentPage, totalPages, handlePageChange } = paginationConfig;\n const { pageSizeOptionsList, onChange } = pageSizeConfig;\n const { from, to, total } = getRange(\n currentPage,\n +pageSizeOptionsList.find((option) => option.selected)?.value! || 0,\n totalCount\n );\n\n return (\n <Card\n variant={variant}\n data-testid=\"addressCard\"\n className={classes([\n 'b2b-purchase-order-purchase-orders-table',\n className,\n ])}\n >\n {heading || description ? (\n <InLineAlert heading={heading} description={description} type={type} />\n ) : null}\n {header ? (\n <div className=\"purchase-orders-table__header\">{header}</div>\n ) : null}\n <Table\n className=\"purchase-orders-table__table-wrapper\"\n mobileLayout=\"stacked\"\n columns={columns}\n rowData={rows}\n loading={loading}\n skeletonRowCount={+skeletonRowCount}\n />\n {!loading && rows.length === 0 && (\n <div\n className=\"purchase-orders-table__empty-state\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <p>{emptyTitle || t.title}</p>\n </div>\n )}\n <div className=\"purchase-orders-table__pagination-wrapper\">\n {totalCount ? (\n <div className=\"purchase-orders-table__pagination-counter\">\n <Text\n id=\"PurchaseOrders.purchaseOrdersTable.pagination.status\"\n fields={{\n from,\n to,\n total,\n }}\n />\n </div>\n ) : null}\n {totalPages > 1 && (\n <Pagination\n className=\"purchase-orders-table__pagination\"\n currentPage={currentPage}\n totalPages={totalPages}\n onChange={handlePageChange}\n />\n )}\n {pageSizeOptionsList.length ? (\n <div className=\"purchase-orders-table__pagination-page-size\">\n <Text id=\"PurchaseOrders.purchaseOrdersTable.pagination.pageSizeLabel.start\" />\n <Picker\n disabled={loading}\n handleSelect={onChange}\n options={pageSizeOptionsList}\n value={\n pageSizeOptionsList.find((option) => option.selected)?.value ||\n ''\n }\n />\n <Text id=\"PurchaseOrders.purchaseOrdersTable.pagination.pageSizeLabel.end\" />\n </div>\n ) : null}\n </div>\n {footer ? (\n <div className=\"purchase-orders-table__footer\">{footer}</div>\n ) : null}\n </Card>\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 { Header } from '@adobe-commerce/elsie/components';\nimport { FunctionComponent } from 'preact';\nimport '@/b2b-purchase-order/components/PurchaseOrdersHeader/PurchaseOrdersHeader.css';\n\nexport const PurchaseOrdersHeader: FunctionComponent<{\n headerText: string;\n}> = ({ headerText }) => {\n return (\n <Header\n title={headerText}\n divider={false}\n className={'purchase-orders-header'}\n data-testid=\"purchase-orders-header\"\n />\n );\n};\n","export enum PurchaseOrderApprovalRuleStatus {\n ENABLED = 'ENABLED',\n DISABLED = 'DISABLED',\n}\n\nexport enum PurchaseOrderApprovalRuleType {\n GRAND_TOTAL = 'GRAND_TOTAL',\n SHIPPING_INCL_TAX = 'SHIPPING_INCL_TAX',\n NUMBER_OF_SKUS = 'NUMBER_OF_SKUS',\n}\n\nexport enum PurchaseOrderApprovalRuleConditionOperator {\n MORE_THAN = 'MORE_THAN',\n LESS_THAN = 'LESS_THAN',\n MORE_THAN_OR_EQUAL_TO = 'MORE_THAN_OR_EQUAL_TO',\n LESS_THAN_OR_EQUAL_TO = 'LESS_THAN_OR_EQUAL_TO',\n}\n\nexport enum EnumPurchaseOrderType {\n CUSTOMER_PURCHASE_ORDERS = 'customerPurchaseOrders',\n COMPANY_PURCHASE_ORDERS = 'companyPurchaseOrders',\n CUSTOMER_APPROVAL_PURCHASE_ORDERS = 'customerApprovalPurchaseOrders',\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 defaultPageSizeConfig = [\n {\n text: '10',\n value: '10',\n selected: false,\n },\n {\n text: '20',\n value: '20',\n selected: true,\n },\n {\n text: '30',\n value: '30',\n selected: false,\n },\n {\n text: '50',\n value: '50',\n selected: false,\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 { Column } from '@/b2b-purchase-order/types/components';\n\nexport const defaultColumns: Column[] = [\n { key: 'poNumber', label: 'PO #' },\n { key: 'orderNumber', label: 'Order #' },\n { key: 'createdDate', label: 'Created' },\n { key: 'updatedDate', label: 'Updated' },\n {\n key: 'createdBy',\n label: 'Created By',\n },\n { key: 'status', label: 'Status' },\n { key: 'total', label: 'Total' },\n { key: 'action', label: 'Action' },\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 { Column } from '@/b2b-purchase-order/types/components';\nimport { defaultColumns } from '@/b2b-purchase-order/configs/customerPurchaseOrders.config';\n\nexport const defaultCompanyColumns: Column[] = [\n {\n key: 'checkboxView',\n label: '',\n },\n ...defaultColumns,\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 React from 'preact/compat';\nimport { useState, useEffect, useCallback, useMemo } from 'preact/hooks';\nimport { isValidUrl, formatDate } from '@/b2b-purchase-order/lib';\nimport {\n AlertMessageConfigType,\n UsePurchaseOrdersParams,\n UsePurchaseOrdersReturn,\n} from '@/b2b-purchase-order/types/hooks';\nimport { EnumPurchaseOrderType } from '@/b2b-purchase-order/types/api';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport {\n approvePurchaseOrders,\n getPurchaseOrders,\n rejectPurchaseOrders,\n} from '@/b2b-purchase-order/api';\nimport {\n defaultColumns,\n defaultCompanyColumns,\n} from '@/b2b-purchase-order/configs';\nimport { Text } from '@adobe-commerce/elsie/i18n';\n\nexport const usePurchaseOrders = ({\n type,\n initialPageSize,\n routePurchaseOrderDetails,\n setColumns,\n setRowsData,\n t,\n}: UsePurchaseOrdersParams): UsePurchaseOrdersReturn => {\n const isCompany = type === EnumPurchaseOrderType.COMPANY_PURCHASE_ORDERS;\n const isApproval =\n type === EnumPurchaseOrderType.CUSTOMER_APPROVAL_PURCHASE_ORDERS;\n const [selectedOrderIds, setSelectedOrderIds] = useState<string[]>([]);\n const [purchaseOrders, setPurchaseOrders] = useState<PurchaseOrderModel[]>(\n []\n );\n const [pageSizeOptionsList, setPageSizeOptionsList] =\n useState(initialPageSize);\n const [loading, setLoading] = useState<boolean>(true);\n const [pagination, setPagination] = useState({\n currentPage: 1,\n totalPages: 1,\n totalCount: 0,\n });\n const [alertMessageConfig, setAlertMessageConfig] =\n useState<AlertMessageConfigType>({\n heading: '',\n description: '',\n type: 'success',\n });\n\n // Derive pagination values\n const { currentPage, totalPages, totalCount } = pagination;\n\n // Auto-clear alert after 7 seconds\n useEffect(() => {\n if (alertMessageConfig.heading || alertMessageConfig.description) {\n const timeoutId = setTimeout(() => {\n setAlertMessageConfig({\n heading: '',\n description: '',\n type: 'success',\n });\n }, 7000); // 7 seconds\n\n return () => clearTimeout(timeoutId);\n }\n }, [alertMessageConfig]);\n\n const handleChangePageSize = useCallback((event: Event) => {\n const size = (event.target as HTMLSelectElement).value;\n\n setPageSizeOptionsList((prev) => {\n return prev.map((option) => ({\n ...option,\n selected: option.value === size,\n }));\n });\n }, []);\n\n const isAdmin = useMemo(() => {\n const b2bPoPermissions = sessionStorage.getItem('b2b-po-permissions');\n if (!b2bPoPermissions) return false;\n\n const parsedPermissions = JSON.parse(b2bPoPermissions);\n\n return parsedPermissions?.isAdmin;\n }, []);\n\n const filterConfig = useMemo(() => {\n let config = {};\n\n if (isCompany) {\n config = { companyPurchaseOrders: true };\n }\n\n if (isApproval) {\n config = { requireMyApproval: true };\n }\n\n return config;\n }, [isCompany, isApproval]);\n\n useEffect(() => {\n setLoading(true);\n const pageSize = pageSizeOptionsList?.find(\n (option) => option.selected\n )?.value;\n\n getPurchaseOrders(filterConfig, parseInt(pageSize || '20', 10), currentPage)\n .then((data) => {\n const purchaseOrders = data?.purchaseOrderItems ?? [];\n const responsePage = data?.pageInfo?.currentPage;\n const responseTotalPages = data?.pageInfo?.totalPages;\n const responseTotalCount = data?.totalCount;\n\n setPagination({\n currentPage: responsePage,\n totalPages: responseTotalPages,\n totalCount: responseTotalCount,\n });\n setPurchaseOrders(purchaseOrders);\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error('Failed to fetch purchase orders:', error);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [currentPage, pageSizeOptionsList, filterConfig]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handlePurchaseOrderDetailsRedirect = useCallback(\n (poNumber: string): string => {\n const url = routePurchaseOrderDetails?.(poNumber) as string;\n\n if (!isValidUrl(url ?? '')) return '#';\n\n return url;\n },\n [routePurchaseOrderDetails]\n );\n\n const handlePageChange = useCallback((page: number) => {\n setPagination((prev) => ({ ...prev, currentPage: page }));\n }, []);\n\n const handleSelectedOrderId = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const uid = (event.target as HTMLInputElement).value;\n const isChecked = (event.target as HTMLInputElement).checked;\n\n setSelectedOrderIds((prevSelected) => {\n if (isChecked) {\n return [...prevSelected, uid];\n }\n return prevSelected.filter((po) => po !== uid);\n });\n },\n []\n );\n\n const handleSelectedOrderIds = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const isChecked = (event.target as HTMLInputElement).checked;\n setSelectedOrderIds(() =>\n isChecked\n ? purchaseOrders\n .filter((po) =>\n ['PENDING', 'APPROVAL_REQUIRED'].includes(po.status)\n )\n .map((po) => po.uid ?? '')\n : []\n );\n },\n [purchaseOrders]\n );\n\n const handleRejectSelected = useCallback(() => {\n rejectPurchaseOrders(selectedOrderIds)\n .then((data) => {\n const purchaseOrders = data?.purchaseOrders ?? [];\n setPurchaseOrders((prev) => {\n return prev.map((po) => {\n const updatedPo = purchaseOrders.find(\n (updated) => updated.uid === po.uid\n );\n return updatedPo ?? po;\n });\n });\n setAlertMessageConfig({\n heading: t.alertHeaderReject,\n description: t.alertDescriptionReject,\n type: 'success',\n });\n setSelectedOrderIds([]);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n setAlertMessageConfig({\n heading: t.alertHeaderError,\n description: t.alertDescriptionError,\n type: 'error',\n });\n console.error(err);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [selectedOrderIds, t]);\n\n const handleApproveSelected = useCallback(() => {\n setLoading(true);\n approvePurchaseOrders(selectedOrderIds)\n .then((data) => {\n const purchaseOrders = data?.purchaseOrders ?? [];\n setPurchaseOrders((prev) => {\n return prev.map((po) => {\n const updatedPo = purchaseOrders.find(\n (updated) => updated.uid === po.uid\n );\n return updatedPo ?? po;\n });\n });\n setAlertMessageConfig({\n heading: t.alertHeaderApprove,\n description: t.alertDescriptionApprove,\n type: 'success',\n });\n setSelectedOrderIds([]);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n setAlertMessageConfig({\n heading: t.alertHeaderError,\n description: t.alertDescriptionError,\n type: 'error',\n });\n console.error(err);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [selectedOrderIds, t]);\n\n const columns = useMemo(() => {\n const currentColumns =\n isCompany || isApproval ? defaultCompanyColumns : defaultColumns;\n\n const result =\n setColumns?.(currentColumns) ??\n currentColumns.map((col) => {\n if (col.key === 'checkboxView' && (isAdmin || isApproval)) {\n return {\n ...col,\n label: (\n <input\n type=\"checkbox\"\n name={'selectAll'}\n disabled={purchaseOrders.every(\n (po) => !['PENDING', 'APPROVAL_REQUIRED'].includes(po.status)\n )}\n onChange={handleSelectedOrderIds}\n />\n ),\n };\n }\n\n return {\n ...col,\n label: t[col.key as keyof typeof t] || col.label,\n };\n });\n\n return result;\n }, [\n t,\n isAdmin,\n isCompany,\n isApproval,\n setColumns,\n purchaseOrders,\n handleSelectedOrderIds,\n ]);\n\n const rows = useMemo(() => {\n const formattedPurchaseOrders = purchaseOrders.map((po) => {\n const poNumber = po.number ?? '';\n\n return {\n ...(isAdmin || isApproval\n ? {\n checkboxView: (\n <input\n type=\"checkbox\"\n name={poNumber}\n value={po.uid}\n checked={selectedOrderIds.includes(po.uid)}\n onChange={handleSelectedOrderId}\n disabled={\n !['PENDING', 'APPROVAL_REQUIRED'].includes(po.status)\n }\n />\n ),\n }\n : {}),\n poNumber,\n orderNumber: po.order.orderNumber,\n createdDate: formatDate(po.createdAt),\n updatedDate: formatDate(po.updatedAt),\n createdBy: `${po.createdBy?.firstname ?? ''} ${\n po.createdBy?.lastname ?? ''\n }`.trim(),\n status: (\n <Text\n id={`PurchaseOrders.purchaseOrdersTable.statusOrder.${po.status.toLowerCase()}`}\n />\n ),\n total: `${po?.quote?.prices?.grandTotal?.value} ${po?.quote?.prices?.grandTotal?.currency}`,\n action: (\n <a\n href={handlePurchaseOrderDetailsRedirect(poNumber)}\n aria-label={`View purchase order ${poNumber}`}\n >\n {t.actionView}\n </a>\n ),\n };\n });\n\n let finalRows = formattedPurchaseOrders;\n\n if (setRowsData) {\n const customRows = setRowsData(formattedPurchaseOrders);\n // If setRowsData returns something, use it, otherwise keep original data\n if (customRows !== undefined && Array.isArray(customRows)) {\n finalRows = customRows as typeof formattedPurchaseOrders;\n }\n }\n\n return finalRows;\n }, [\n purchaseOrders,\n setRowsData,\n isAdmin,\n isApproval,\n selectedOrderIds,\n handleSelectedOrderId,\n handlePurchaseOrderDetailsRedirect,\n t.actionView,\n ]);\n\n return {\n totalCount,\n loading,\n tableConfig: {\n columns,\n rows,\n },\n paginationConfig: {\n currentPage,\n totalPages,\n handlePageChange,\n },\n pageSizeConfig: {\n pageSizeOptionsList,\n onChange: handleChangePageSize,\n },\n selectedOrderIds,\n handleRejectSelected,\n handleApproveSelected,\n isAdmin,\n isApproval,\n alertMessageConfig,\n };\n};\n"],"names":["isValidUrl","url","formatDate","dateString","locale","date","getRange","currentPage","pageSize","total","maxPage","from","to","PurchaseOrdersTable","pageSizeConfig","totalCount","columns","rows","paginationConfig","alertMessageConfig","loading","className","variant","skeletonRowCount","emptyTitle","header","footer","t","useText","heading","description","type","totalPages","handlePageChange","pageSizeOptionsList","onChange","_a","option","jsxs","Card","classes","jsx","InLineAlert","Table","Text","Pagination","Picker","_b","PurchaseOrdersHeader","headerText","Header","EnumPurchaseOrderType","defaultPageSizeConfig","defaultColumns","defaultCompanyColumns","usePurchaseOrders","initialPageSize","routePurchaseOrderDetails","setColumns","setRowsData","isCompany","isApproval","selectedOrderIds","setSelectedOrderIds","useState","purchaseOrders","setPurchaseOrders","setPageSizeOptionsList","setLoading","pagination","setPagination","setAlertMessageConfig","useEffect","timeoutId","handleChangePageSize","useCallback","event","size","prev","isAdmin","useMemo","b2bPoPermissions","parsedPermissions","filterConfig","config","getPurchaseOrders","data","responsePage","responseTotalPages","responseTotalCount","error","handlePurchaseOrderDetailsRedirect","poNumber","page","handleSelectedOrderId","uid","isChecked","prevSelected","po","handleSelectedOrderIds","handleRejectSelected","rejectPurchaseOrders","updated","err","handleApproveSelected","approvePurchaseOrders","currentColumns","col","formattedPurchaseOrders","_e","_d","_c","_h","_g","_f","finalRows","customRows"],"mappings":"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"}