@dropins/storefront-purchase-order 0.0.1-alpha2 → 0.0.1-alpha3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/index.d.ts +0 -1
- package/api.js +15 -60
- package/api.js.map +1 -1
- package/chunks/PurchaseOrdersTableActions.js +1 -1
- package/chunks/PurchaseOrdersTableActions.js.map +1 -1
- package/chunks/useCustomerRolePermissions.js +4 -0
- package/chunks/useCustomerRolePermissions.js.map +1 -0
- package/components/PurchaseOrdersHeader/PurchaseOrdersHeader.d.ts +1 -0
- package/containers/CompanyPurchaseOrders.js +1 -1
- package/containers/CompanyPurchaseOrders.js.map +1 -1
- package/containers/CustomerPurchaseOrders.js +1 -1
- package/containers/CustomerPurchaseOrders.js.map +1 -1
- package/containers/RequireApprovalPurchaseOrders.js +1 -1
- package/containers/RequireApprovalPurchaseOrders.js.map +1 -1
- package/data/transforms/transform-customer-role-permissions.d.ts +17 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/useCustomerRolePermissions.d.ts +18 -0
- package/hooks/usePurchaseOrders.d.ts +1 -1
- package/i18n/en_US.json.d.ts +10 -9
- package/package.json +1 -1
- package/render.js +2 -2
- package/render.js.map +1 -1
- package/types/api/api.enums.types.d.ts +1 -1
- package/types/components/purchaseOrdersTable.types.d.ts +12 -5
- package/types/containers/companyPurchaseOrders.types.d.ts +1 -0
- package/types/containers/customerPurchaseOrders.types.d.ts +1 -0
- package/types/containers/requireApprovalPurchaseOrders.types.d.ts +1 -0
- package/types/hooks/usePurchaseOrders.types.d.ts +7 -3
- package/api/getCustomerRolePermissions/getCustomerRolePermissions.d.ts +0 -4
- package/api/getCustomerRolePermissions/graphql/getCustomerRolePermissions.d.ts +0 -16
- package/api/getCustomerRolePermissions/index.d.ts +0 -18
- package/api/initialize/lib/getPermissions.d.ts +0 -19
- package/api/initialize/lib/index.d.ts +0 -18
- package/chunks/usePurchaseOrders.js +0 -4
- package/chunks/usePurchaseOrders.js.map +0 -1
|
@@ -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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"}
|