@dropins/storefront-purchase-order 0.0.4-alpha1 → 0.0.4-alpha2

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 (105) hide show
  1. package/api/currencyInfo/currencyInfo.d.ts +24 -0
  2. package/api/currencyInfo/graphql/currencyInfo.graphql.d.ts +18 -0
  3. package/{containers/PurchaseOrderApprovalRulesList → api/currencyInfo}/index.d.ts +1 -2
  4. package/api/getPurchaseOrderApprovalRule/getPurchaseOrderApprovalRule.d.ts +4 -0
  5. package/api/getPurchaseOrderApprovalRule/graphql/getPurchaseOrderApprovalRule.graphql.d.ts +18 -0
  6. package/api/getPurchaseOrderApprovalRule/index.d.ts +18 -0
  7. package/api/index.d.ts +2 -0
  8. package/api.js +11 -124
  9. package/api.js.map +1 -1
  10. package/chunks/FormLoader.js +4 -0
  11. package/chunks/FormLoader.js.map +1 -0
  12. package/chunks/FormLoader2.js +4 -0
  13. package/chunks/FormLoader2.js.map +1 -0
  14. package/chunks/PurchaseOrdersHeader.js +4 -0
  15. package/chunks/PurchaseOrdersHeader.js.map +1 -0
  16. package/chunks/PurchaseOrdersTableActions.js +1 -1
  17. package/chunks/PurchaseOrdersTableActions.js.map +1 -1
  18. package/chunks/case-converter.js +4 -0
  19. package/chunks/case-converter.js.map +1 -0
  20. package/chunks/currencyInfo.js +124 -0
  21. package/chunks/currencyInfo.js.map +1 -0
  22. package/chunks/fetch-error.js +4 -0
  23. package/chunks/fetch-error.js.map +1 -0
  24. package/chunks/fetch-graphql.js +1 -1
  25. package/chunks/fetch-graphql.js.map +1 -1
  26. package/chunks/getPurchaseOrderApprovalRule.js +45 -0
  27. package/chunks/getPurchaseOrderApprovalRule.js.map +1 -0
  28. package/chunks/getPurchaseOrderApprovalRules.js +3 -3
  29. package/chunks/getPurchaseOrderApprovalRules.js.map +1 -1
  30. package/chunks/getPurchaseOrders.js +8 -8
  31. package/chunks/getPurchaseOrders.js.map +1 -1
  32. package/chunks/pageSize.config.js +4 -0
  33. package/chunks/pageSize.config.js.map +1 -0
  34. package/chunks/transform-purchase-order-approval-rule.js +4 -0
  35. package/chunks/transform-purchase-order-approval-rule.js.map +1 -0
  36. package/chunks/useCustomerRolePermissions.js +1 -1
  37. package/chunks/useCustomerRolePermissions.js.map +1 -1
  38. package/chunks/usePurchaseOrders.js +1 -1
  39. package/chunks/usePurchaseOrders.js.map +1 -1
  40. package/components/ApprovalRuleDetailsContent/ApprovalRuleDetailsContent.d.ts +5 -0
  41. package/components/ApprovalRuleDetailsContent/index.d.ts +11 -0
  42. package/components/ApprovalRuleForm/ApprovalRuleForm.d.ts +5 -0
  43. package/components/ApprovalRuleForm/blocks/ErrorMessage.d.ts +9 -0
  44. package/components/ApprovalRuleForm/blocks/Form.d.ts +40 -0
  45. package/components/ApprovalRuleForm/blocks/index.d.ts +19 -0
  46. package/components/ApprovalRuleForm/index.d.ts +11 -0
  47. package/components/FormLoader/FormLoader.d.ts +8 -0
  48. package/components/FormLoader/index.d.ts +19 -0
  49. package/components/index.d.ts +3 -0
  50. package/configs/approvalRuleForm.config.d.ts +74 -0
  51. package/configs/index.d.ts +2 -0
  52. package/containers/ApprovalRuleDetails/ApprovalRuleDetails.d.ts +5 -0
  53. package/containers/ApprovalRuleDetails/index.d.ts +11 -0
  54. package/containers/ApprovalRuleDetails.d.ts +3 -0
  55. package/containers/ApprovalRuleDetails.js +4 -0
  56. package/containers/ApprovalRuleDetails.js.map +1 -0
  57. package/containers/ApprovalRuleForm/ApprovalRuleForm.d.ts +5 -0
  58. package/containers/ApprovalRuleForm/index.d.ts +11 -0
  59. package/containers/ApprovalRuleForm.d.ts +3 -0
  60. package/containers/ApprovalRuleForm.js +4 -0
  61. package/containers/ApprovalRuleForm.js.map +1 -0
  62. package/containers/ApprovalRulesList/ApprovalRulesList.d.ts +5 -0
  63. package/containers/ApprovalRulesList/index.d.ts +19 -0
  64. package/containers/ApprovalRulesList.d.ts +3 -0
  65. package/containers/ApprovalRulesList.js +4 -0
  66. package/containers/ApprovalRulesList.js.map +1 -0
  67. package/containers/CompanyPurchaseOrders.js +1 -1
  68. package/containers/CompanyPurchaseOrders.js.map +1 -1
  69. package/containers/CustomerPurchaseOrders.js +1 -1
  70. package/containers/CustomerPurchaseOrders.js.map +1 -1
  71. package/containers/PurchaseOrderConfirmation.js +1 -1
  72. package/containers/PurchaseOrderConfirmation.js.map +1 -1
  73. package/containers/RequireApprovalPurchaseOrders.js +1 -1
  74. package/containers/RequireApprovalPurchaseOrders.js.map +1 -1
  75. package/containers/index.d.ts +3 -1
  76. package/data/models/purchase-order-approval-rule-model.d.ts +5 -0
  77. package/hooks/index.d.ts +2 -0
  78. package/hooks/useApprovalRuleDetails.d.ts +14 -0
  79. package/hooks/useApprovalRuleForm.d.ts +4 -0
  80. package/i18n/en_US.json.d.ts +84 -0
  81. package/lib/cleanAndDeep.d.ts +8 -0
  82. package/lib/formValidation.d.ts +22 -0
  83. package/lib/index.d.ts +4 -0
  84. package/lib/transformToFormValues.d.ts +9 -0
  85. package/lib/updateFormFieldValue.d.ts +4 -0
  86. package/mocks/index.d.ts +67 -0
  87. package/mocks/storybook/events-data.d.ts +12 -0
  88. package/mocks/storybook/index.d.ts +2 -0
  89. package/package.json +1 -1
  90. package/render.js +3 -2
  91. package/render.js.map +1 -1
  92. package/types/components/approvalRuleDetailsContentProps.types.d.ts +9 -0
  93. package/types/components/approvalRuleForm.types.d.ts +12 -0
  94. package/types/components/index.d.ts +2 -0
  95. package/types/containers/approvalRuleDetailsProps.types.d.ts +8 -0
  96. package/types/containers/approvalRuleForm.types.d.ts +12 -0
  97. package/types/containers/{purchaseOrderApprovalRulesList.types.d.ts → approvalRulesList.types.d.ts} +2 -2
  98. package/types/containers/index.d.ts +3 -1
  99. package/types/hooks/index.d.ts +2 -0
  100. package/types/hooks/useApprovalRuleDetails.types.d.ts +5 -0
  101. package/types/hooks/useApprovalRuleForm.types.d.ts +121 -0
  102. package/containers/PurchaseOrderApprovalRulesList/PurchaseOrderApprovalRulesList.d.ts +0 -5
  103. package/containers/PurchaseOrderApprovalRulesList.d.ts +0 -3
  104. package/containers/PurchaseOrderApprovalRulesList.js +0 -4
  105. package/containers/PurchaseOrderApprovalRulesList.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PurchaseOrderApprovalRulesList.js","sources":["/@dropins/storefront-purchase-order/src/configs/purchaseOrderApprovalRules.config.ts","/@dropins/storefront-purchase-order/src/hooks/useApprovalRulesList.tsx","/@dropins/storefront-purchase-order/src/containers/PurchaseOrderApprovalRulesList/PurchaseOrderApprovalRulesList.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 { Column } from '@/b2b-purchase-order/types/components';\n\nexport const defaultApprovalRulesColumns: Column[] = [\n { key: 'action', label: 'Action' },\n { key: 'ruleName', label: 'Rule Name' },\n { key: 'status', label: 'Status' },\n { key: 'ruleType', label: 'Rule Type' },\n {\n key: 'createdBy',\n label: 'Created By',\n },\n {\n key: 'appliesTo',\n label: 'Applies To',\n },\n { key: 'approver', label: 'Approver' },\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 {\n UseApprovalRulesList,\n UseApprovalRulesListReturn,\n} from '@/b2b-purchase-order/types/hooks';\nimport { useCallback, useState, useEffect, useMemo } from 'preact/hooks';\nimport { isValidUrl } from '@/b2b-purchase-order/lib';\nimport { Text } from '@adobe-commerce/elsie/i18n';\nimport { defaultApprovalRulesColumns } from '@/b2b-purchase-order/configs';\nimport {\n deletePurchaseOrderApprovalRule,\n getPurchaseOrderApprovalRules,\n} from '@/b2b-purchase-order/api';\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models';\n\nconst DEFAULT_PAGE_SIZE = 20;\n\nexport const useApprovalRulesList = ({\n routeApprovalRuleDetails,\n routeCreateApprovalRule,\n routeEditApprovalRule,\n setColumns,\n setRowsData,\n initialPageSize,\n permissions,\n t,\n}: UseApprovalRulesList): UseApprovalRulesListReturn => {\n const [approvalRules, setApprovalRules] = useState<\n PurchaseOrderApprovalRuleModel[]\n >([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [pageSizeOptionsList, setPageSizeOptionsList] =\n useState(initialPageSize);\n const [pagination, setPagination] = useState({\n currentPage: 1,\n totalPages: 1,\n totalCount: 0,\n });\n\n // Derive pagination values\n const { currentPage, totalPages, totalCount } = pagination;\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 handlePageChange = useCallback((page: number) => {\n setPagination((prev) => ({ ...prev, currentPage: page }));\n }, []);\n\n useEffect(() => {\n const pageSize = pageSizeOptionsList?.find(\n (option) => option.selected\n )?.value;\n const selectedPageSize = parseInt(\n pageSize ?? DEFAULT_PAGE_SIZE.toString(),\n 10\n );\n\n setLoading(true);\n getPurchaseOrderApprovalRules(currentPage, selectedPageSize)\n .then((data) => {\n if (data?.pageInfo) {\n setPagination({\n currentPage: data.pageInfo.currentPage,\n totalPages: data.pageInfo.totalPages,\n totalCount: data.totalCount,\n });\n }\n\n setApprovalRules(data?.items);\n })\n .catch((error) => {\n console.error('Error fetching approval rules:', error);\n setApprovalRules([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [currentPage, pageSizeOptionsList, pagination.totalPages, totalPages]);\n\n const handleCreateUrl = useCallback(\n (id: string, type: 'edit' | 'new' | 'view'): string => {\n let url = '';\n\n switch (type) {\n case 'new': {\n url = routeCreateApprovalRule?.(id) as string;\n break;\n }\n case 'edit': {\n url = routeEditApprovalRule?.(id) as string;\n break;\n }\n case 'view': {\n url = routeApprovalRuleDetails?.(id) as string;\n break;\n }\n }\n\n if (!isValidUrl(url ?? '')) return '#';\n\n return url;\n },\n [routeCreateApprovalRule, routeEditApprovalRule, routeApprovalRuleDetails]\n );\n\n const columns = useMemo(() => {\n return (\n setColumns?.(defaultApprovalRulesColumns) ??\n defaultApprovalRulesColumns.map((col) => ({\n ...col,\n label: t[col.key as keyof typeof t] || col.label,\n }))\n );\n }, [setColumns, t]);\n\n const handleDeleteRule = useCallback((e: Event, id: string) => {\n e.preventDefault();\n setLoading(true);\n deletePurchaseOrderApprovalRule(id)\n .then(() => {\n setApprovalRules((prev) => prev.filter((rule) => rule.uid !== id));\n })\n .finally(() => {\n setLoading(false);\n });\n }, []);\n\n const rows = useMemo(() => {\n const modifiedApprovalRules = approvalRules?.map((ar) => {\n const {\n isAdmin,\n permissions: { manageApprovalRules },\n } = permissions;\n\n return {\n ruleName: ar.name,\n createdBy: ar.createdBy,\n ruleType: (\n <Text\n id={`PurchaseOrders.purchaseOrdersTable.ruleTypes.${ar.condition?.attribute?.toLocaleLowerCase()}`}\n />\n ),\n status: (\n <Text\n id={`PurchaseOrders.purchaseOrdersTable.rulesStatus.${ar.status?.toLocaleLowerCase()}`}\n />\n ),\n appliesTo:\n ar?.appliesToRoles?.length <= 0\n ? t.appliesToAll\n : ar?.appliesToRoles?.map((role) => role.name).join(', '),\n approver: (\n <>\n {ar?.approverRoles?.map((role, idx) => (\n <div key={idx}>{role?.name}</div>\n ))}\n </>\n ),\n action:\n isAdmin || manageApprovalRules ? (\n <>\n <div style={{ display: 'flex', gap: '8px' }}>\n <a\n href={handleCreateUrl(ar.uid, 'edit')}\n aria-label={t.ariaLabelEditRule.replace(\n '{{ruleName}}',\n ar.name\n )}\n data-testid={`edit-approval-rule-${ar.uid}`}\n >\n {t.actionEdit}\n </a>\n <a\n data-testid={`delete-approval-rule-${ar.uid}`}\n href=\"#\"\n aria-label={t.ariaLabelDeleteRule.replace(\n '{{ruleName}}',\n ar.name\n )}\n onClick={(e) => handleDeleteRule(e, ar.uid)}\n >\n {t.actionDelete}\n </a>\n </div>\n </>\n ) : (\n <a\n data-testid={`view-approval-rule-${ar.uid}`}\n href={handleCreateUrl(ar.uid, 'view')}\n aria-label={t.ariaLabelViewRule.replace('{{ruleName}}', ar.name)}\n >\n {t.actionView}\n </a>\n ),\n };\n });\n\n return setRowsData\n ? setRowsData(modifiedApprovalRules)\n : modifiedApprovalRules;\n }, [\n approvalRules,\n setRowsData,\n permissions,\n t,\n handleCreateUrl,\n handleDeleteRule,\n ]);\n\n return {\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 totalCount,\n loading,\n handleCreateUrl,\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 { classes, Container } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n PurchaseOrdersHeader,\n PurchaseOrdersTable,\n} from '@/b2b-purchase-order/components';\nimport { PurchaseOrderApprovalRulesListProps } from '@/b2b-purchase-order/types/containers';\nimport {\n useApprovalRulesList,\n useCustomerRolePermissions,\n} from '@/b2b-purchase-order/hooks';\nimport {\n Button,\n Skeleton,\n SkeletonRow,\n} from '@adobe-commerce/elsie/components';\nimport { defaultPageSizeConfig } from '@/b2b-purchase-order/configs';\n\nexport const PurchaseOrderApprovalRulesList: Container<\n PurchaseOrderApprovalRulesListProps\n> = ({\n routeCreateApprovalRule,\n routeEditApprovalRule,\n routeApprovalRuleDetails,\n setColumns,\n setRowsData,\n className = '',\n withHeader = true,\n withWrapper = true,\n skeletonRowCount = 5,\n initialPageSize = defaultPageSizeConfig,\n}) => {\n const t = useText({\n headerText: 'PurchaseOrders.approvalRulesList.containerTitle',\n ruleName: 'PurchaseOrders.purchaseOrdersTable.tableColumns.ruleName',\n ruleType: 'PurchaseOrders.purchaseOrdersTable.tableColumns.ruleType',\n appliesTo: 'PurchaseOrders.purchaseOrdersTable.tableColumns.appliesTo',\n approver: 'PurchaseOrders.purchaseOrdersTable.tableColumns.approver',\n createdBy: 'PurchaseOrders.purchaseOrdersTable.tableColumns.createdBy',\n status: 'PurchaseOrders.purchaseOrdersTable.tableColumns.status',\n actionEdit: 'PurchaseOrders.purchaseOrdersTable.actionEdit',\n actionDelete: 'PurchaseOrders.purchaseOrdersTable.actionDelete',\n addNewRule: 'PurchaseOrders.approvalRulesList.buttons.newRule',\n actionView: 'PurchaseOrders.purchaseOrdersTable.actionView',\n appliesToAll: 'PurchaseOrders.purchaseOrdersTable.appliesToAll',\n emptyTitle: 'PurchaseOrders.approvalRulesList.emptyTitle',\n ariaLabelEditRule: 'PurchaseOrders.approvalRulesList.ariaLabel.editRule',\n ariaLabelDeleteRule:\n 'PurchaseOrders.approvalRulesList.ariaLabel.deleteRule',\n ariaLabelViewRule: 'PurchaseOrders.approvalRulesList.ariaLabel.viewRule',\n });\n\n const { permissions, loadingPermissions } = useCustomerRolePermissions();\n const {\n loading,\n tableConfig,\n paginationConfig,\n totalCount,\n pageSizeConfig,\n handleCreateUrl,\n } = useApprovalRulesList({\n routeCreateApprovalRule,\n routeEditApprovalRule,\n routeApprovalRuleDetails,\n setColumns,\n setRowsData,\n permissions,\n initialPageSize,\n t,\n });\n\n const {\n isAdmin,\n permissions: { manageApprovalRules },\n } = permissions;\n\n const renderFooterButton =\n isAdmin || manageApprovalRules ? (\n <Button\n variant=\"primary\"\n onClick={() => {\n window.location.href = handleCreateUrl('', 'new');\n }}\n data-testid=\"add-new-rule-button\"\n >\n {t.addNewRule}\n </Button>\n ) : null;\n\n const footerContent =\n loading || loadingPermissions ? (\n <Skeleton data-testid=\"approval-rules-skeleton\">\n <SkeletonRow variant=\"row\" size=\"small\" />\n </Skeleton>\n ) : (\n renderFooterButton\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 || loadingPermissions}\n skeletonRowCount={skeletonRowCount}\n pageSizeConfig={pageSizeConfig}\n emptyTitle={t.emptyTitle}\n withWrapper={withWrapper}\n footer={footerContent}\n />\n </div>\n );\n};\n"],"names":["defaultApprovalRulesColumns","DEFAULT_PAGE_SIZE","useApprovalRulesList","routeApprovalRuleDetails","routeCreateApprovalRule","routeEditApprovalRule","setColumns","setRowsData","initialPageSize","permissions","approvalRules","setApprovalRules","useState","loading","setLoading","pageSizeOptionsList","setPageSizeOptionsList","pagination","setPagination","currentPage","totalPages","totalCount","handleChangePageSize","useCallback","event","size","prev","option","handlePageChange","page","useEffect","pageSize","_a","selectedPageSize","getPurchaseOrderApprovalRules","data","error","handleCreateUrl","id","type","url","isValidUrl","columns","useMemo","col","handleDeleteRule","e","deletePurchaseOrderApprovalRule","rule","rows","modifiedApprovalRules","ar","isAdmin","manageApprovalRules","jsx","Text","_b","_c","_d","_e","role","Fragment","_f","idx","jsxs","PurchaseOrderApprovalRulesList","className","withHeader","withWrapper","skeletonRowCount","defaultPageSizeConfig","t","useText","loadingPermissions","useCustomerRolePermissions","tableConfig","paginationConfig","pageSizeConfig","renderFooterButton","Button","footerContent","Skeleton","SkeletonRow","classes","PurchaseOrdersHeader","PurchaseOrdersTable"],"mappings":"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"}