@gusto/embedded-react-sdk 0.57.3 → 0.58.0

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 (264) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/components/Common/DataView/DataCards/DataCards.js +98 -66
  3. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  4. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +11 -9
  5. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
  6. package/dist/components/Common/DataView/DataTable/DataTable.js +86 -75
  7. package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
  8. package/dist/components/Common/DataView/DataView.js.map +1 -1
  9. package/dist/components/Common/DataView/getSortControls.js +22 -0
  10. package/dist/components/Common/DataView/getSortControls.js.map +1 -0
  11. package/dist/components/Common/DataView/useDataView.js +30 -24
  12. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  13. package/dist/components/Common/UI/Table/Table.js +65 -25
  14. package/dist/components/Common/UI/Table/Table.js.map +1 -1
  15. package/dist/components/Common/UI/Table/Table.module.scss.js +8 -4
  16. package/dist/components/Common/UI/Table/Table.module.scss.js.map +1 -1
  17. package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
  19. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  20. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
  21. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  22. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
  23. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  24. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
  25. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  26. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  27. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  28. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
  29. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  30. package/dist/components/Company/Industry/Context.js +6 -7
  31. package/dist/components/Company/Industry/Context.js.map +1 -1
  32. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
  33. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  34. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
  35. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  36. package/dist/components/Company/OnboardingOverview/context.js +3 -4
  37. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  38. package/dist/components/Company/PaySchedule/PaySchedule.js +30 -45
  39. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  40. package/dist/components/Company/PaySchedule/PayScheduleComponents.js +11 -12
  41. package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
  42. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
  43. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
  44. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +78 -83
  45. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  46. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
  47. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  48. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
  49. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  50. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
  51. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  52. package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +45 -54
  53. package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
  54. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +17 -22
  55. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
  56. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +1 -0
  57. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
  58. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +122 -113
  59. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
  60. package/dist/components/Contractor/ContractorList/shared/useContractorList.js +63 -54
  61. package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
  62. package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js +39 -48
  63. package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
  64. package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +76 -69
  65. package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
  66. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +27 -29
  67. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
  68. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +14 -12
  69. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  70. package/dist/components/Contractor/shared/hourlyRate.js +14 -0
  71. package/dist/components/Contractor/shared/hourlyRate.js.map +1 -0
  72. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +63 -63
  73. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  74. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  75. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  76. package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +65 -74
  77. package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
  78. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +16 -16
  79. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  80. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
  81. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  82. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +84 -82
  83. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  84. package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js +8 -0
  85. package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js.map +1 -0
  86. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +91 -88
  87. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  88. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +16 -16
  89. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  90. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +146 -134
  91. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  92. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js +14 -12
  93. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js.map +1 -1
  94. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +34 -33
  95. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  96. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +49 -48
  97. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  98. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  99. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +0 -4
  100. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  101. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
  102. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +51 -38
  103. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  104. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +121 -102
  105. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  106. package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
  107. package/dist/components/Payroll/PayrollList/PayrollList.js +79 -74
  108. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  109. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +92 -83
  110. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  111. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +23 -27
  112. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  113. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +82 -75
  114. package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
  115. package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js +416 -0
  116. package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js.map +1 -0
  117. package/dist/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js → RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js} +1 -1
  118. package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js.map +1 -0
  119. package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js +97 -0
  120. package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js.map +1 -0
  121. package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js +106 -0
  122. package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js.map +1 -0
  123. package/dist/components/Payroll/{TransitionCreation/TransitionCreationPresentation.module.scss.js → TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js} +1 -1
  124. package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js.map +1 -0
  125. package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js +10 -0
  126. package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js.map +1 -0
  127. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +86 -64
  128. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  129. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +126 -77
  130. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  131. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js +8 -0
  132. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js.map +1 -0
  133. package/dist/components/Payroll/index.js +16 -20
  134. package/dist/components/Payroll/index.js.map +1 -1
  135. package/dist/components/Payroll/usePreparedPayrollData.js +2 -3
  136. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  137. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +11 -14
  138. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  139. package/dist/contexts/ApiProvider/ApiProvider.js +18 -17
  140. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  141. package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js +31 -0
  142. package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js.map +1 -0
  143. package/dist/contexts/FeaturesProvider/FeaturesProvider.js +14 -0
  144. package/dist/contexts/FeaturesProvider/FeaturesProvider.js.map +1 -0
  145. package/dist/contexts/FeaturesProvider/useFeature.js +7 -0
  146. package/dist/contexts/FeaturesProvider/useFeature.js.map +1 -0
  147. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +32 -30
  148. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  149. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
  150. package/dist/i18n/I18n.js +2 -3
  151. package/dist/i18n/I18n.js.map +1 -1
  152. package/dist/i18n/en/Contractor.Profile.json.js +1 -1
  153. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -23
  154. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  155. package/dist/i18n/en/Payroll.PayrollLanding.json.js +1 -1
  156. package/dist/i18n/en/{Payroll.UNSTABLE_PayrollEditEmployee.json.js → Payroll.RropPayrollEditEmployee.json.js} +42 -38
  157. package/dist/i18n/en/Payroll.RropPayrollEditEmployee.json.js.map +1 -0
  158. package/dist/i18n/en/Payroll.TransitionConfiguration.json.js +28 -0
  159. package/dist/i18n/en/Payroll.TransitionConfiguration.json.js.map +1 -0
  160. package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +16 -12
  161. package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -1
  162. package/dist/i18n/en/common.json.js +1 -1
  163. package/dist/package.json.js +1 -1
  164. package/dist/partner-hook-utils/form/composeSubmitHandler.js +55 -48
  165. package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
  166. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +31 -29
  167. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  168. package/dist/shared/constants.js +2 -1
  169. package/dist/shared/constants.js.map +1 -1
  170. package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +3 -1
  171. package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +3 -1
  172. package/dist/src/components/Common/DataView/DataView.d.ts +2 -0
  173. package/dist/src/components/Common/DataView/getSortControls.d.ts +24 -0
  174. package/dist/src/components/Common/DataView/useDataView.d.ts +22 -1
  175. package/dist/src/components/Common/UI/Table/TableTypes.d.ts +71 -2
  176. package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -9
  177. package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +0 -1
  178. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +1 -1
  179. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -1
  180. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -14
  181. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +2 -2
  182. package/dist/src/components/Contractor/ContractorList/shared/index.d.ts +1 -1
  183. package/dist/src/components/Contractor/ContractorList/shared/useContractorList.d.ts +38 -0
  184. package/dist/src/components/Contractor/shared/hourlyRate.d.ts +23 -0
  185. package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.d.ts +9 -0
  186. package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +3 -1
  187. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +2 -0
  188. package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +8 -6
  189. package/dist/src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +0 -8
  190. package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +5 -3
  191. package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +2 -3
  192. package/dist/src/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -1
  193. package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +18 -5
  194. package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +11 -5
  195. package/dist/src/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts → RropPayrollEditEmployee/RropPayrollEditEmployee.d.ts} +9 -5
  196. package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfiguration.d.ts +55 -0
  197. package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.d.ts +9 -0
  198. package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.d.ts +52 -0
  199. package/dist/src/components/Payroll/TransitionConfiguration/index.d.ts +2 -0
  200. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +5 -2
  201. package/dist/src/components/Payroll/index.d.ts +2 -6
  202. package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.d.ts +14 -0
  203. package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.test.d.ts +1 -0
  204. package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -1
  205. package/dist/src/contexts/FeaturesProvider/FeaturesProvider.d.ts +21 -0
  206. package/dist/src/contexts/FeaturesProvider/useFeature.d.ts +53 -0
  207. package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +3 -0
  208. package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +38 -10
  209. package/dist/src/contexts/index.d.ts +1 -0
  210. package/dist/src/i18n/en/common.json.d.ts +5 -1
  211. package/dist/src/i18n/types.d.ts +113 -66
  212. package/dist/src/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +9 -7
  213. package/dist/src/shared/constants.d.ts +4 -2
  214. package/dist/src/test-utils/renderWithProviders.d.ts +2 -0
  215. package/dist/style.css +1 -1
  216. package/docs/guides/endpoint-inventory.json +24 -27
  217. package/package.json +15 -14
  218. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +0 -29
  219. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +0 -1
  220. package/dist/components/Payroll/Transition/TransitionFlow.js +0 -60
  221. package/dist/components/Payroll/Transition/TransitionFlow.js.map +0 -1
  222. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +0 -31
  223. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +0 -1
  224. package/dist/components/Payroll/Transition/transitionStateMachine.js +0 -49
  225. package/dist/components/Payroll/Transition/transitionStateMachine.js.map +0 -1
  226. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +0 -100
  227. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +0 -1
  228. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +0 -110
  229. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +0 -1
  230. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +0 -1
  231. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +0 -21
  232. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +0 -1
  233. package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js +0 -48
  234. package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js.map +0 -1
  235. package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js +0 -35
  236. package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js.map +0 -1
  237. package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js +0 -23
  238. package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js.map +0 -1
  239. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +0 -29
  240. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +0 -1
  241. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +0 -411
  242. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +0 -1
  243. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +0 -1
  244. package/dist/i18n/en/Payroll.Transition.json.js +0 -8
  245. package/dist/i18n/en/Payroll.Transition.json.js.map +0 -1
  246. package/dist/i18n/en/Payroll.TransitionCreation.json.js +0 -26
  247. package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +0 -1
  248. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +0 -1
  249. package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +0 -7
  250. package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +0 -55
  251. package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +0 -52
  252. package/dist/src/components/Payroll/Transition/index.d.ts +0 -2
  253. package/dist/src/components/Payroll/Transition/transitionStateMachine.d.ts +0 -29
  254. package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +0 -22
  255. package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +0 -9
  256. package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +0 -57
  257. package/dist/src/components/Payroll/TransitionCreation/index.d.ts +0 -2
  258. package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +0 -55
  259. package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +0 -24
  260. package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollTypes.d.ts +0 -23
  261. package/dist/src/components/Payroll/TransitionPayroll/index.d.ts +0 -2
  262. package/dist/src/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.d.ts +0 -15
  263. package/dist/src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.d.ts +0 -28
  264. /package/dist/src/components/{Payroll/Transition/transitionStateMachine.test.d.ts → Common/DataView/getSortControls.test.d.ts} +0 -0
@@ -1,43 +1,46 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { useId as T, useState as E } from "react";
3
- import F from "classnames";
4
- import { useTranslation as S } from "react-i18next";
5
- import { useSelectionState as A } from "../useSelectionState.js";
6
- import h from "./DataTable.module.scss.js";
7
- import { useComponentContext as B } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
2
+ import { useId as E, useState as F } from "react";
3
+ import A from "classnames";
4
+ import { useTranslation as B } from "react-i18next";
5
+ import { useSelectionState as G } from "../useSelectionState.js";
6
+ import { getSortControls as J } from "../getSortControls.js";
7
+ import b from "./DataTable.module.scss.js";
8
+ import { useComponentContext as K } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
8
9
  import { VisuallyHidden as m } from "../../VisuallyHidden/VisuallyHidden.js";
9
- function d(r, o) {
10
- return !o || o === "start" ? r : /* @__PURE__ */ a("div", { className: h.cellEnd, children: r });
10
+ function i(n, o) {
11
+ return !o || o === "start" ? n : /* @__PURE__ */ a("div", { className: b.cellEnd, children: n });
11
12
  }
12
- function G(r, o) {
13
+ function W(n, o) {
13
14
  if (o.render)
14
- return o.render(r);
15
+ return o.render(n);
15
16
  if (o.key) {
16
- const i = o.key;
17
- return String(r[i] ?? "");
17
+ const c = o.key;
18
+ return String(n[c] ?? "");
18
19
  }
19
20
  return "";
20
21
  }
21
- const Y = ({
22
- label: r,
22
+ const I = ({
23
+ label: n,
23
24
  data: o,
24
- columns: i,
25
- itemMenu: u,
25
+ columns: c,
26
+ itemMenu: y,
26
27
  onSelect: l,
27
- onSelectAll: R,
28
- getIsItemSelected: p,
29
- hideSelectAll: v,
30
- emptyState: b,
31
- footer: k,
32
- isWithinBox: D,
28
+ onSelectAll: v,
29
+ getIsItemSelected: f,
30
+ hideSelectAll: D,
31
+ emptyState: k,
32
+ footer: h,
33
+ isWithinBox: $,
33
34
  selectionMode: C = "multiple",
34
- isFetching: g
35
+ isFetching: g,
36
+ sortDescriptor: w,
37
+ onSortChange: R
35
38
  }) => {
36
- const y = B(), { t: c } = S("common"), $ = T(), [w, H] = E(null), { allSelected: L } = A(o, p), x = [
39
+ const p = K(), { t: d } = B("common"), H = E(), [L, j] = F(null), { allSelected: x } = G(o, f), N = [
37
40
  ...l ? [
38
41
  {
39
42
  key: "select-header",
40
- content: C === "multiple" && p && !v && o.length > 0 ? (
43
+ content: C === "multiple" && f && !D && o.length > 0 ? (
41
44
  // Stop propagation so the surrounding react-aria-components
42
45
  // <Column> press handler doesn't intercept the checkbox click
43
46
  // and desync the controlled DOM state. The inner <input> is
@@ -57,78 +60,86 @@ const Y = ({
57
60
  e.stopPropagation();
58
61
  },
59
62
  children: /* @__PURE__ */ a(
60
- y.Checkbox,
63
+ p.Checkbox,
61
64
  {
62
- value: L,
63
- onChange: (e) => R?.(e, o),
64
- label: c("table.selectAllRowsLabel"),
65
+ value: x,
66
+ onChange: (e) => v?.(e, o),
67
+ label: d("table.selectAllRowsLabel"),
65
68
  shouldVisuallyHideLabel: !0
66
69
  }
67
70
  )
68
71
  }
69
72
  )
70
- ) : /* @__PURE__ */ a(m, { children: c("table.selectRowHeader") })
73
+ ) : /* @__PURE__ */ a(m, { children: d("table.selectRowHeader") })
71
74
  }
72
75
  ] : [],
73
- ...i.map((e, t) => ({
74
- key: typeof e.key == "string" ? e.key : `header-${t}`,
75
- content: d(e.title, e.justify)
76
- })),
77
- ...u ? [
76
+ // A sortable column with nothing listening would render a header that looks interactive and
77
+ // does nothing, so the sort affordance is gated on there being a handler to receive it.
78
+ ...c.map(
79
+ (e, t) => e.isSortable && R ? {
80
+ key: e.key,
81
+ content: i(e.title, e.justify),
82
+ ...J(e.key, w, R)
83
+ } : {
84
+ key: typeof e.key == "string" ? e.key : `header-${t}`,
85
+ content: i(e.title, e.justify)
86
+ }
87
+ ),
88
+ ...y ? [
78
89
  {
79
90
  key: "actions-header",
80
- content: d(
81
- /* @__PURE__ */ a(m, { children: c("table.actionsColumnHeader") }),
91
+ content: i(
92
+ /* @__PURE__ */ a(m, { children: d("table.actionsColumnHeader") }),
82
93
  "end"
83
94
  )
84
95
  }
85
96
  ] : []
86
- ], N = (e, t) => {
87
- H(t), l?.(e, !0);
88
- }, P = (e, t) => {
97
+ ], P = (e, t) => {
98
+ j(t), l?.(e, !0);
99
+ }, V = (e, t) => {
89
100
  if (C === "single") {
90
- const n = p?.(e) ?? w === t;
101
+ const r = f?.(e) ?? L === t;
91
102
  return /* @__PURE__ */ a(
92
- y.Radio,
103
+ p.Radio,
93
104
  {
94
- name: $,
95
- value: n,
105
+ name: H,
106
+ value: r,
96
107
  onChange: () => {
97
- N(e, t);
108
+ P(e, t);
98
109
  },
99
- label: c("table.selectRowLabel"),
110
+ label: d("table.selectRowLabel"),
100
111
  shouldVisuallyHideLabel: !0
101
112
  }
102
113
  );
103
114
  }
104
- const s = p?.(e) ?? !1;
115
+ const s = f?.(e) ?? !1;
105
116
  return /* @__PURE__ */ a(
106
- y.Checkbox,
117
+ p.Checkbox,
107
118
  {
108
119
  value: s,
109
- onChange: (n) => {
110
- l?.(e, n);
120
+ onChange: (r) => {
121
+ l?.(e, r);
111
122
  },
112
- label: c("table.selectRowLabel"),
123
+ label: d("table.selectRowLabel"),
113
124
  shouldVisuallyHideLabel: !0
114
125
  }
115
126
  );
116
- }, V = o.map((e, t) => {
127
+ }, S = o.map((e, t) => {
117
128
  const s = [
118
129
  ...l ? [
119
130
  {
120
131
  key: `select-${t}`,
121
- content: P(e, t)
132
+ content: V(e, t)
122
133
  }
123
134
  ] : [],
124
- ...i.map((n, f) => ({
125
- key: typeof n.key == "string" ? n.key : `cell-${f}`,
126
- content: d(G(e, n), n.justify)
135
+ ...c.map((r, u) => ({
136
+ key: typeof r.key == "string" ? r.key : `cell-${u}`,
137
+ content: i(W(e, r), r.justify)
127
138
  })),
128
- ...u ? [
139
+ ...y ? [
129
140
  {
130
141
  key: `menu-${t}`,
131
- content: d(u(e), "end")
142
+ content: i(y(e), "end")
132
143
  }
133
144
  ] : []
134
145
  ];
@@ -136,19 +147,19 @@ const Y = ({
136
147
  key: `row-${t}`,
137
148
  data: s
138
149
  };
139
- }), j = (() => {
140
- if (!k) return;
141
- const e = k(), t = [];
150
+ }), T = (() => {
151
+ if (!h) return;
152
+ const e = h(), t = [];
142
153
  return l && t.push({
143
154
  key: "footer-select",
144
155
  content: ""
145
- }), i.forEach((s, n) => {
146
- const f = typeof s.key == "string" ? s.key : `column-${n}`;
156
+ }), c.forEach((s, r) => {
157
+ const u = typeof s.key == "string" ? s.key : `column-${r}`;
147
158
  t.push({
148
- key: `footer-${f}`,
149
- content: d(e[f] || "", s.justify)
159
+ key: `footer-${u}`,
160
+ content: i(e[u] || "", s.justify)
150
161
  });
151
- }), u && t.push({
162
+ }), y && t.push({
152
163
  key: "footer-actions",
153
164
  content: ""
154
165
  }), t;
@@ -156,18 +167,18 @@ const Y = ({
156
167
  return /* @__PURE__ */ a(
157
168
  "div",
158
169
  {
159
- className: F(h.tableWrapper, g && h.isFetching),
170
+ className: A(b.tableWrapper, g && b.isFetching),
160
171
  "aria-busy": !!g,
161
172
  children: /* @__PURE__ */ a(
162
- y.Table,
173
+ p.Table,
163
174
  {
164
- "aria-label": r,
175
+ "aria-label": n,
165
176
  "data-testid": "data-table",
166
- headers: x,
167
- rows: V,
168
- footer: j,
169
- emptyState: b ? b() : void 0,
170
- isWithinBox: D,
177
+ headers: N,
178
+ rows: S,
179
+ footer: T,
180
+ emptyState: k ? k() : void 0,
181
+ isWithinBox: $,
171
182
  hasCheckboxColumn: !!l
172
183
  }
173
184
  )
@@ -175,6 +186,6 @@ const Y = ({
175
186
  );
176
187
  };
177
188
  export {
178
- Y as DataTable
189
+ I as DataTable
179
190
  };
180
191
  //# sourceMappingURL=DataTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":["../../../../../src/components/Common/DataView/DataTable/DataTable.tsx"],"sourcesContent":["import { useId, useState } from 'react'\nimport cn from 'classnames'\nimport { useTranslation } from 'react-i18next'\nimport type { useDataViewPropReturn, SelectionMode } from '../useDataView'\nimport { useSelectionState } from '../useSelectionState'\nimport type { TableData, TableRow, TableProps } from '../../UI/Table/TableTypes'\nimport { VisuallyHidden } from '../../VisuallyHidden'\nimport styles from './DataTable.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nfunction withJustify(content: React.ReactNode, justify?: 'start' | 'end') {\n if (!justify || justify === 'start') return content\n return <div className={styles.cellEnd}>{content}</div>\n}\n\n/** @internal */\nexport type DataTableProps<T> = {\n label: string\n columns: useDataViewPropReturn<T>['columns']\n data: useDataViewPropReturn<T>['data']\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n footer?: useDataViewPropReturn<T>['footer']\n isWithinBox?: TableProps['isWithinBox']\n selectionMode?: SelectionMode\n isFetching?: useDataViewPropReturn<T>['isFetching']\n}\n\nfunction getCellContent<T>(\n item: T,\n column: { key?: string | keyof T; render?: (item: T) => React.ReactNode },\n) {\n if (column.render) {\n return column.render(item)\n }\n\n if (column.key) {\n const key = column.key as keyof T\n return String(item[key] ?? '')\n }\n\n return ''\n}\n\n/** @internal */\nexport const DataTable = <T,>({\n label,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isWithinBox,\n selectionMode = 'multiple',\n isFetching,\n}: DataTableProps<T>) => {\n const Components = useComponentContext()\n const { t } = useTranslation('common')\n const radioGroupName = useId()\n const [selectedRadioIndex, setSelectedRadioIndex] = useState<number | null>(null)\n const { allSelected } = useSelectionState(data, getIsItemSelected)\n\n const headers: TableData[] = [\n ...(onSelect\n ? [\n {\n key: 'select-header',\n content:\n selectionMode === 'multiple' &&\n getIsItemSelected &&\n !hideSelectAll &&\n data.length > 0 ? (\n // Stop propagation so the surrounding react-aria-components\n // <Column> press handler doesn't intercept the checkbox click\n // and desync the controlled DOM state. The inner <input> is\n // the actual interactive element; this span is a propagation\n // shield, not a click target itself.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <span\n onClick={e => {\n e.stopPropagation()\n }}\n onPointerDown={e => {\n e.stopPropagation()\n }}\n onMouseDown={e => {\n e.stopPropagation()\n }}\n >\n <Components.Checkbox\n value={allSelected}\n onChange={(checked: boolean) => onSelectAll?.(checked, data)}\n label={t('table.selectAllRowsLabel')}\n shouldVisuallyHideLabel\n />\n </span>\n ) : (\n <VisuallyHidden>{t('table.selectRowHeader')}</VisuallyHidden>\n ),\n },\n ]\n : []),\n ...columns.map((column, index) => ({\n key: typeof column.key === 'string' ? column.key : `header-${index}`,\n content: withJustify(column.title, column.justify),\n })),\n ...(itemMenu\n ? [\n {\n key: 'actions-header',\n content: withJustify(\n <VisuallyHidden>{t('table.actionsColumnHeader')}</VisuallyHidden>,\n 'end',\n ),\n },\n ]\n : []),\n ]\n\n const handleRadioSelect = (item: T, rowIndex: number) => {\n setSelectedRadioIndex(rowIndex)\n onSelect?.(item, true)\n }\n\n const renderSelectionControl = (item: T, rowIndex: number) => {\n if (selectionMode === 'single') {\n const isSelected = getIsItemSelected?.(item) ?? selectedRadioIndex === rowIndex\n return (\n <Components.Radio\n name={radioGroupName}\n value={isSelected}\n onChange={() => {\n handleRadioSelect(item, rowIndex)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const isSelected = getIsItemSelected?.(item) ?? false\n return (\n <Components.Checkbox\n value={isSelected}\n onChange={(checked: boolean) => {\n onSelect?.(item, checked)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const rows: TableRow[] = data.map((item, rowIndex) => {\n const rowData: TableData[] = [\n ...(onSelect\n ? [\n {\n key: `select-${rowIndex}`,\n content: renderSelectionControl(item, rowIndex),\n },\n ]\n : []),\n ...columns.map((column, colIndex) => {\n return {\n key: typeof column.key === 'string' ? column.key : `cell-${colIndex}`,\n content: withJustify(getCellContent(item, column), column.justify),\n }\n }),\n ...(itemMenu\n ? [\n {\n key: `menu-${rowIndex}`,\n content: withJustify(itemMenu(item), 'end'),\n },\n ]\n : []),\n ]\n\n return {\n key: `row-${rowIndex}`,\n data: rowData,\n }\n })\n\n const buildFooterData = () => {\n if (!footer) return undefined\n\n const footerContent = footer()\n const footerCells: TableData[] = []\n\n // Add select column footer (empty)\n if (onSelect) {\n footerCells.push({\n key: 'footer-select',\n content: '',\n })\n }\n\n // Add data column footers\n columns.forEach((column, index) => {\n const columnKey = typeof column.key === 'string' ? column.key : `column-${index}`\n footerCells.push({\n key: `footer-${columnKey}`,\n content: withJustify(footerContent[columnKey] || '', column.justify),\n })\n })\n\n // Add actions column footer (empty)\n if (itemMenu) {\n footerCells.push({\n key: 'footer-actions',\n content: '',\n })\n }\n\n return footerCells\n }\n\n const footerData = buildFooterData()\n\n return (\n <div\n className={cn(styles.tableWrapper, isFetching && styles.isFetching)}\n aria-busy={Boolean(isFetching)}\n >\n <Components.Table\n aria-label={label}\n data-testid=\"data-table\"\n headers={headers}\n rows={rows}\n footer={footerData}\n emptyState={emptyState ? emptyState() : undefined}\n isWithinBox={isWithinBox}\n hasCheckboxColumn={!!onSelect}\n />\n </div>\n )\n}\n"],"names":["withJustify","content","justify","jsx","styles","getCellContent","item","column","key","DataTable","label","data","columns","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","emptyState","footer","isWithinBox","selectionMode","isFetching","Components","useComponentContext","t","useTranslation","radioGroupName","useId","selectedRadioIndex","setSelectedRadioIndex","useState","allSelected","useSelectionState","headers","checked","VisuallyHidden","index","handleRadioSelect","rowIndex","renderSelectionControl","isSelected","rows","rowData","colIndex","footerData","footerContent","footerCells","columnKey","cn"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sources":["../../../../../src/components/Common/DataView/DataTable/DataTable.tsx"],"sourcesContent":["import { useId, useState } from 'react'\nimport cn from 'classnames'\nimport { useTranslation } from 'react-i18next'\nimport type { useDataViewPropReturn, SelectionMode } from '../useDataView'\nimport { useSelectionState } from '../useSelectionState'\nimport { getSortControls } from '../getSortControls'\nimport type { TableData, TableHeaderData, TableRow, TableProps } from '../../UI/Table/TableTypes'\nimport { VisuallyHidden } from '../../VisuallyHidden'\nimport styles from './DataTable.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nfunction withJustify(content: React.ReactNode, justify?: 'start' | 'end') {\n if (!justify || justify === 'start') return content\n return <div className={styles.cellEnd}>{content}</div>\n}\n\n/** @internal */\nexport type DataTableProps<T> = {\n label: string\n columns: useDataViewPropReturn<T>['columns']\n data: useDataViewPropReturn<T>['data']\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n footer?: useDataViewPropReturn<T>['footer']\n isWithinBox?: TableProps['isWithinBox']\n selectionMode?: SelectionMode\n isFetching?: useDataViewPropReturn<T>['isFetching']\n sortDescriptor?: useDataViewPropReturn<T>['sortDescriptor']\n onSortChange?: useDataViewPropReturn<T>['onSortChange']\n}\n\nfunction getCellContent<T>(\n item: T,\n column: { key?: string | keyof T; render?: (item: T) => React.ReactNode },\n) {\n if (column.render) {\n return column.render(item)\n }\n\n if (column.key) {\n const key = column.key as keyof T\n return String(item[key] ?? '')\n }\n\n return ''\n}\n\n/** @internal */\nexport const DataTable = <T,>({\n label,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isWithinBox,\n selectionMode = 'multiple',\n isFetching,\n sortDescriptor,\n onSortChange,\n}: DataTableProps<T>) => {\n const Components = useComponentContext()\n const { t } = useTranslation('common')\n const radioGroupName = useId()\n const [selectedRadioIndex, setSelectedRadioIndex] = useState<number | null>(null)\n const { allSelected } = useSelectionState(data, getIsItemSelected)\n\n const headers: TableHeaderData[] = [\n ...(onSelect\n ? [\n {\n key: 'select-header',\n content:\n selectionMode === 'multiple' &&\n getIsItemSelected &&\n !hideSelectAll &&\n data.length > 0 ? (\n // Stop propagation so the surrounding react-aria-components\n // <Column> press handler doesn't intercept the checkbox click\n // and desync the controlled DOM state. The inner <input> is\n // the actual interactive element; this span is a propagation\n // shield, not a click target itself.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <span\n onClick={e => {\n e.stopPropagation()\n }}\n onPointerDown={e => {\n e.stopPropagation()\n }}\n onMouseDown={e => {\n e.stopPropagation()\n }}\n >\n <Components.Checkbox\n value={allSelected}\n onChange={(checked: boolean) => onSelectAll?.(checked, data)}\n label={t('table.selectAllRowsLabel')}\n shouldVisuallyHideLabel\n />\n </span>\n ) : (\n <VisuallyHidden>{t('table.selectRowHeader')}</VisuallyHidden>\n ),\n },\n ]\n : []),\n // A sortable column with nothing listening would render a header that looks interactive and\n // does nothing, so the sort affordance is gated on there being a handler to receive it.\n ...columns.map((column, index) =>\n column.isSortable && onSortChange\n ? {\n key: column.key,\n content: withJustify(column.title, column.justify),\n ...getSortControls(column.key, sortDescriptor, onSortChange),\n }\n : {\n key: typeof column.key === 'string' ? column.key : `header-${index}`,\n content: withJustify(column.title, column.justify),\n },\n ),\n ...(itemMenu\n ? [\n {\n key: 'actions-header',\n content: withJustify(\n <VisuallyHidden>{t('table.actionsColumnHeader')}</VisuallyHidden>,\n 'end',\n ),\n },\n ]\n : []),\n ]\n\n const handleRadioSelect = (item: T, rowIndex: number) => {\n setSelectedRadioIndex(rowIndex)\n onSelect?.(item, true)\n }\n\n const renderSelectionControl = (item: T, rowIndex: number) => {\n if (selectionMode === 'single') {\n const isSelected = getIsItemSelected?.(item) ?? selectedRadioIndex === rowIndex\n return (\n <Components.Radio\n name={radioGroupName}\n value={isSelected}\n onChange={() => {\n handleRadioSelect(item, rowIndex)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const isSelected = getIsItemSelected?.(item) ?? false\n return (\n <Components.Checkbox\n value={isSelected}\n onChange={(checked: boolean) => {\n onSelect?.(item, checked)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const rows: TableRow[] = data.map((item, rowIndex) => {\n const rowData: TableData[] = [\n ...(onSelect\n ? [\n {\n key: `select-${rowIndex}`,\n content: renderSelectionControl(item, rowIndex),\n },\n ]\n : []),\n ...columns.map((column, colIndex) => {\n return {\n key: typeof column.key === 'string' ? column.key : `cell-${colIndex}`,\n content: withJustify(getCellContent(item, column), column.justify),\n }\n }),\n ...(itemMenu\n ? [\n {\n key: `menu-${rowIndex}`,\n content: withJustify(itemMenu(item), 'end'),\n },\n ]\n : []),\n ]\n\n return {\n key: `row-${rowIndex}`,\n data: rowData,\n }\n })\n\n const buildFooterData = () => {\n if (!footer) return undefined\n\n const footerContent = footer()\n const footerCells: TableData[] = []\n\n // Add select column footer (empty)\n if (onSelect) {\n footerCells.push({\n key: 'footer-select',\n content: '',\n })\n }\n\n // Add data column footers\n columns.forEach((column, index) => {\n const columnKey = typeof column.key === 'string' ? column.key : `column-${index}`\n footerCells.push({\n key: `footer-${columnKey}`,\n content: withJustify(footerContent[columnKey] || '', column.justify),\n })\n })\n\n // Add actions column footer (empty)\n if (itemMenu) {\n footerCells.push({\n key: 'footer-actions',\n content: '',\n })\n }\n\n return footerCells\n }\n\n const footerData = buildFooterData()\n\n return (\n <div\n className={cn(styles.tableWrapper, isFetching && styles.isFetching)}\n aria-busy={Boolean(isFetching)}\n >\n <Components.Table\n aria-label={label}\n data-testid=\"data-table\"\n headers={headers}\n rows={rows}\n footer={footerData}\n emptyState={emptyState ? emptyState() : undefined}\n isWithinBox={isWithinBox}\n hasCheckboxColumn={!!onSelect}\n />\n </div>\n )\n}\n"],"names":["withJustify","content","justify","jsx","styles","getCellContent","item","column","key","DataTable","label","data","columns","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","emptyState","footer","isWithinBox","selectionMode","isFetching","sortDescriptor","onSortChange","Components","useComponentContext","t","useTranslation","radioGroupName","useId","selectedRadioIndex","setSelectedRadioIndex","useState","allSelected","useSelectionState","headers","checked","VisuallyHidden","index","getSortControls","handleRadioSelect","rowIndex","renderSelectionControl","isSelected","rows","rowData","colIndex","footerData","footerContent","footerCells","columnKey","cn"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DataView.js","sources":["../../../../src/components/Common/DataView/DataView.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { PaginationControl } from '../PaginationControl/PaginationControl'\nimport type { TableProps } from '../UI/Table/TableTypes'\nimport styles from './DataView.module.scss'\nimport { DataTable } from './DataTable/DataTable'\nimport type { useDataViewPropReturn, SelectionMode } from './useDataView'\nimport { DataCards } from './DataCards/DataCards'\nimport type { useContainerBreakpointsProps } from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\n/** @internal */\nexport type DataViewProps<T> = {\n columns: useDataViewPropReturn<T>['columns']\n data: T[]\n pagination?: useDataViewPropReturn<T>['pagination']\n label: string\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: useDataViewPropReturn<T>['onSelectAll']\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n breakAt?: string\n breakpoints?: useContainerBreakpointsProps['breakpoints']\n footer?: useDataViewPropReturn<T>['footer']\n isFetching?: boolean\n isWithinBox?: TableProps['isWithinBox']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n selectionMode?: SelectionMode\n}\n\n/** @internal */\nexport const DataView = <T,>({\n pagination,\n isFetching,\n breakAt = 'small',\n breakpoints: customBreakpoints,\n footer,\n isWithinBox,\n emptyState,\n selectionMode,\n onSelectAll,\n ...dataViewProps\n}: DataViewProps<T>) => {\n const containerRef = useRef<HTMLElement | null>(null)\n const breakpoints = useContainerBreakpoints({\n ref: containerRef,\n breakpoints: customBreakpoints,\n })\n\n // Wait for breakpoints to be detected before rendering\n const isBreakpointsDetected = breakpoints.length > 0\n const isMobile = !breakpoints.includes(breakAt)\n\n const Component = useMemo(() => {\n return isMobile ? DataCards : DataTable\n }, [isMobile])\n\n return (\n <div\n data-testid=\"data-view\"\n className={styles.dataViewContainer}\n ref={ref => {\n containerRef.current = ref\n }}\n >\n {isBreakpointsDetected && (\n <Component\n {...dataViewProps}\n onSelectAll={onSelectAll}\n footer={footer}\n isWithinBox={isWithinBox}\n emptyState={emptyState}\n selectionMode={selectionMode}\n isFetching={isFetching}\n />\n )}\n {pagination && <PaginationControl {...pagination} isFetching={isFetching} />}\n </div>\n )\n}\n"],"names":["DataView","pagination","isFetching","breakAt","customBreakpoints","footer","isWithinBox","emptyState","selectionMode","onSelectAll","dataViewProps","containerRef","useRef","breakpoints","useContainerBreakpoints","isBreakpointsDetected","isMobile","Component","useMemo","DataCards","DataTable","jsxs","styles","ref","jsx","PaginationControl"],"mappings":";;;;;;;AA+BO,MAAMA,IAAW,CAAK;AAAA,EAC3B,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,aAAaC;AAAA,EACb,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAwB;AACtB,QAAMC,IAAeC,EAA2B,IAAI,GAC9CC,IAAcC,EAAwB;AAAA,IAC1C,KAAKH;AAAA,IACL,aAAaP;AAAA,EAAA,CACd,GAGKW,IAAwBF,EAAY,SAAS,GAC7CG,IAAW,CAACH,EAAY,SAASV,CAAO,GAExCc,IAAYC,EAAQ,MACjBF,IAAWG,IAAYC,GAC7B,CAACJ,CAAQ,CAAC;AAEb,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAWC,EAAO;AAAA,MAClB,KAAK,CAAAC,MAAO;AACV,QAAAZ,EAAa,UAAUY;AAAA,MACzB;AAAA,MAEC,UAAA;AAAA,QAAAR,KACC,gBAAAS;AAAA,UAACP;AAAA,UAAA;AAAA,YACE,GAAGP;AAAA,YACJ,aAAAD;AAAA,YACA,QAAAJ;AAAA,YACA,aAAAC;AAAA,YACA,YAAAC;AAAA,YACA,eAAAC;AAAA,YACA,YAAAN;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHD,KAAc,gBAAAuB,EAACC,GAAA,EAAmB,GAAGxB,GAAY,YAAAC,EAAA,CAAwB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhF;"}
1
+ {"version":3,"file":"DataView.js","sources":["../../../../src/components/Common/DataView/DataView.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { PaginationControl } from '../PaginationControl/PaginationControl'\nimport type { TableProps } from '../UI/Table/TableTypes'\nimport styles from './DataView.module.scss'\nimport { DataTable } from './DataTable/DataTable'\nimport type { useDataViewPropReturn, SelectionMode } from './useDataView'\nimport { DataCards } from './DataCards/DataCards'\nimport type { useContainerBreakpointsProps } from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\n/** @internal */\nexport type DataViewProps<T> = {\n columns: useDataViewPropReturn<T>['columns']\n data: T[]\n pagination?: useDataViewPropReturn<T>['pagination']\n label: string\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: useDataViewPropReturn<T>['onSelectAll']\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n breakAt?: string\n breakpoints?: useContainerBreakpointsProps['breakpoints']\n footer?: useDataViewPropReturn<T>['footer']\n isFetching?: boolean\n isWithinBox?: TableProps['isWithinBox']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n selectionMode?: SelectionMode\n sortDescriptor?: useDataViewPropReturn<T>['sortDescriptor']\n onSortChange?: useDataViewPropReturn<T>['onSortChange']\n}\n\n/** @internal */\nexport const DataView = <T,>({\n pagination,\n isFetching,\n breakAt = 'small',\n breakpoints: customBreakpoints,\n footer,\n isWithinBox,\n emptyState,\n selectionMode,\n onSelectAll,\n ...dataViewProps\n}: DataViewProps<T>) => {\n const containerRef = useRef<HTMLElement | null>(null)\n const breakpoints = useContainerBreakpoints({\n ref: containerRef,\n breakpoints: customBreakpoints,\n })\n\n // Wait for breakpoints to be detected before rendering\n const isBreakpointsDetected = breakpoints.length > 0\n const isMobile = !breakpoints.includes(breakAt)\n\n const Component = useMemo(() => {\n return isMobile ? DataCards : DataTable\n }, [isMobile])\n\n return (\n <div\n data-testid=\"data-view\"\n className={styles.dataViewContainer}\n ref={ref => {\n containerRef.current = ref\n }}\n >\n {isBreakpointsDetected && (\n <Component\n {...dataViewProps}\n onSelectAll={onSelectAll}\n footer={footer}\n isWithinBox={isWithinBox}\n emptyState={emptyState}\n selectionMode={selectionMode}\n isFetching={isFetching}\n />\n )}\n {pagination && <PaginationControl {...pagination} isFetching={isFetching} />}\n </div>\n )\n}\n"],"names":["DataView","pagination","isFetching","breakAt","customBreakpoints","footer","isWithinBox","emptyState","selectionMode","onSelectAll","dataViewProps","containerRef","useRef","breakpoints","useContainerBreakpoints","isBreakpointsDetected","isMobile","Component","useMemo","DataCards","DataTable","jsxs","styles","ref","jsx","PaginationControl"],"mappings":";;;;;;;AAiCO,MAAMA,IAAW,CAAK;AAAA,EAC3B,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,aAAaC;AAAA,EACb,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAwB;AACtB,QAAMC,IAAeC,EAA2B,IAAI,GAC9CC,IAAcC,EAAwB;AAAA,IAC1C,KAAKH;AAAA,IACL,aAAaP;AAAA,EAAA,CACd,GAGKW,IAAwBF,EAAY,SAAS,GAC7CG,IAAW,CAACH,EAAY,SAASV,CAAO,GAExCc,IAAYC,EAAQ,MACjBF,IAAWG,IAAYC,GAC7B,CAACJ,CAAQ,CAAC;AAEb,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAWC,EAAO;AAAA,MAClB,KAAK,CAAAC,MAAO;AACV,QAAAZ,EAAa,UAAUY;AAAA,MACzB;AAAA,MAEC,UAAA;AAAA,QAAAR,KACC,gBAAAS;AAAA,UAACP;AAAA,UAAA;AAAA,YACE,GAAGP;AAAA,YACJ,aAAAD;AAAA,YACA,QAAAJ;AAAA,YACA,aAAAC;AAAA,YACA,YAAAC;AAAA,YACA,eAAAC;AAAA,YACA,YAAAN;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHD,KAAc,gBAAAuB,EAACC,GAAA,EAAmB,GAAGxB,GAAY,YAAAC,EAAA,CAAwB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhF;"}
@@ -0,0 +1,22 @@
1
+ const r = {
2
+ none: "ascending",
3
+ ascending: "descending",
4
+ descending: "none"
5
+ };
6
+ function c(o, e, i) {
7
+ const t = e?.columnKey === o ? e.direction : "none", n = (s) => () => {
8
+ i(s === "none" ? void 0 : { columnKey: o, direction: s });
9
+ };
10
+ return {
11
+ isSortable: !0,
12
+ sortDirection: t,
13
+ onSort: n(r[t]),
14
+ onSortAscending: n("ascending"),
15
+ onSortDescending: n("descending"),
16
+ onClearSort: n("none")
17
+ };
18
+ }
19
+ export {
20
+ c as getSortControls
21
+ };
22
+ //# sourceMappingURL=getSortControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSortControls.js","sources":["../../../../src/components/Common/DataView/getSortControls.ts"],"sourcesContent":["import type { TableSortControls, TableSortDirection } from '../UI/Table/TableTypes'\n\n/**\n * Which column a `DataView` is sorted by, and in which direction. Absent while the data is in its\n * default order.\n *\n * @internal\n */\nexport interface TableSortDescriptor {\n /** `key` of the column the data is currently sorted by. */\n columnKey: string\n /** Direction the sorted column is ordered in. */\n direction: TableSortDirection\n}\n\nconst NEXT_DIRECTION = {\n none: 'ascending',\n ascending: 'descending',\n descending: 'none',\n} as const satisfies Record<TableSortDirection | 'none', TableSortDirection | 'none'>\n\n/**\n * Builds the sort state and handlers for one sortable column, so the desktop table, the mobile\n * cards, and a partner's own table all cycle through the same sorts in the same order.\n *\n * @param columnKey - `key` of the column these controls belong to.\n * @param current - The sort currently applied to the data, if any.\n * @param onSortChange - Receives the sort to move to, or `undefined` to return to the default order.\n * @returns Controls to hand to the column's header cell.\n * @internal\n */\nexport function getSortControls(\n columnKey: string,\n current: TableSortDescriptor | undefined,\n onSortChange: (sortDescriptor: TableSortDescriptor | undefined) => void,\n): TableSortControls {\n const sortDirection = current?.columnKey === columnKey ? current.direction : 'none'\n const sortTo = (direction: TableSortDirection | 'none') => () => {\n onSortChange(direction === 'none' ? undefined : { columnKey, direction })\n }\n\n return {\n isSortable: true,\n sortDirection,\n onSort: sortTo(NEXT_DIRECTION[sortDirection]),\n onSortAscending: sortTo('ascending'),\n onSortDescending: sortTo('descending'),\n onClearSort: sortTo('none'),\n }\n}\n"],"names":["NEXT_DIRECTION","getSortControls","columnKey","current","onSortChange","sortDirection","sortTo","direction"],"mappings":"AAeA,MAAMA,IAAiB;AAAA,EACrB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,YAAY;AACd;AAYO,SAASC,EACdC,GACAC,GACAC,GACmB;AACnB,QAAMC,IAAgBF,GAAS,cAAcD,IAAYC,EAAQ,YAAY,QACvEG,IAAS,CAACC,MAA2C,MAAM;AAC/D,IAAAH,EAAaG,MAAc,SAAS,SAAY,EAAE,WAAAL,GAAW,WAAAK,GAAW;AAAA,EAC1E;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,eAAAF;AAAA,IACA,QAAQC,EAAON,EAAeK,CAAa,CAAC;AAAA,IAC5C,iBAAiBC,EAAO,WAAW;AAAA,IACnC,kBAAkBA,EAAO,YAAY;AAAA,IACrC,aAAaA,EAAO,MAAM;AAAA,EAAA;AAE9B;"}
@@ -1,45 +1,51 @@
1
- import { useMemo as j } from "react";
2
- const q = ({
1
+ import { useMemo as v } from "react";
2
+ const D = ({
3
3
  columns: r,
4
4
  data: w,
5
5
  itemMenu: V,
6
- onSelect: p,
7
- onSelectAll: s,
8
- getIsItemSelected: u,
9
- hideSelectAll: P,
6
+ onSelect: u,
7
+ onSelectAll: P,
8
+ getIsItemSelected: p,
9
+ hideSelectAll: x,
10
10
  pagination: a,
11
- emptyState: x,
12
- footer: D,
13
- isFetching: b,
14
- selectionMode: f
15
- }) => j(() => ({
11
+ emptyState: b,
12
+ footer: f,
13
+ isFetching: j,
14
+ selectionMode: k,
15
+ sortDescriptor: q,
16
+ onSortChange: s
17
+ }) => v(() => ({
16
18
  pagination: a,
17
19
  data: w,
18
20
  columns: r,
19
21
  itemMenu: V,
20
- onSelect: p,
21
- onSelectAll: s,
22
- getIsItemSelected: u,
23
- hideSelectAll: P,
24
- emptyState: x,
25
- footer: D,
26
- isFetching: b,
27
- selectionMode: f
22
+ onSelect: u,
23
+ onSelectAll: P,
24
+ getIsItemSelected: p,
25
+ hideSelectAll: x,
26
+ emptyState: b,
27
+ footer: f,
28
+ isFetching: j,
29
+ selectionMode: k,
30
+ sortDescriptor: q,
31
+ onSortChange: s
28
32
  }), [
29
33
  a,
30
34
  w,
31
35
  r,
32
36
  V,
33
- p,
34
- s,
35
37
  u,
36
38
  P,
39
+ p,
37
40
  x,
38
- D,
39
41
  b,
40
- f
42
+ f,
43
+ j,
44
+ k,
45
+ q,
46
+ s
41
47
  ]);
42
48
  export {
43
- q as useDataView
49
+ D as useDataView
44
50
  };
45
51
  //# sourceMappingURL=useDataView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDataView.js","sources":["../../../../src/components/Common/DataView/useDataView.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/** @internal */\nexport type SelectionMode = 'multiple' | 'single'\n\ntype DataViewColumn<T> =\n | {\n key: keyof T\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n }\n | {\n key?: string\n title: string | React.ReactNode\n render: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n }\n\ntype FooterKeys<T> = keyof T | string\n\ntype BaseDataViewProps<T> = {\n columns: DataViewColumn<T>[]\n data: T[]\n pagination?: PaginationControlProps\n itemMenu?: (item: T) => React.ReactNode\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n /**\n * When true, hides the select-all header checkbox (DataTable) and the\n * select-all row (DataCards). Only meaningful with `selectionMode: 'multiple'`.\n * Per-row checkboxes are unaffected.\n */\n hideSelectAll?: boolean\n}\n\ntype NoSelectionProps = {\n onSelect?: undefined\n onSelectAll?: undefined\n getIsItemSelected?: undefined\n selectionMode?: undefined\n}\n\ntype SingleSelectionProps<T> = {\n selectionMode: 'single'\n onSelect: (item: T, checked: boolean) => void\n onSelectAll?: undefined\n getIsItemSelected?: (item: T) => boolean\n}\n\ntype MultipleSelectionProps<T> = {\n selectionMode?: 'multiple'\n onSelect: (item: T, checked: boolean) => void\n /**\n * Called when the select-all checkbox is toggled.\n * The header checkbox state reflects only the currently visible `data` array.\n * With pagination, consumers decide whether to select all data or only the visible page.\n * `visibleData` is the current page's data array for reference.\n */\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n /**\n * Required for multi-select. Returns whether a given item is currently selected.\n * Use a stable identifier from the item (e.g. item.id) rather than array index.\n */\n getIsItemSelected: (item: T) => boolean\n}\n\n/** @internal */\nexport type useDataViewProp<T> = BaseDataViewProps<T> &\n (NoSelectionProps | SingleSelectionProps<T> | MultipleSelectionProps<T>)\n\n/** @internal */\nexport type useDataViewPropReturn<T> = {\n pagination?: PaginationControlProps\n data: T[]\n columns: DataViewColumn<T>[]\n itemMenu?: (item: T) => React.ReactNode\n onSelect?: (item: T, checked: boolean) => void\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: boolean\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n selectionMode?: SelectionMode\n}\n\n/** @internal */\nexport const useDataView = <T>({\n columns,\n data,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n pagination,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n}: useDataViewProp<T>): useDataViewPropReturn<T> => {\n const dataViewProps = useMemo(() => {\n return {\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n }\n }, [\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n ])\n\n return dataViewProps\n}\n"],"names":["useDataView","columns","data","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","pagination","emptyState","footer","isFetching","selectionMode","useMemo"],"mappings":";AA0FO,MAAMA,IAAc,CAAI;AAAA,EAC7B,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AACF,MACwBC,EAAQ,OACrB;AAAA,EACL,YAAAL;AAAA,EACA,MAAAN;AAAA,EACA,SAAAD;AAAA,EACA,UAAAE;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAE;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,IAED;AAAA,EACDJ;AAAA,EACAN;AAAA,EACAD;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,CACD;"}
1
+ {"version":3,"file":"useDataView.js","sources":["../../../../src/components/Common/DataView/useDataView.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { TableSortDescriptor } from './getSortControls'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/** @internal */\nexport type SelectionMode = 'multiple' | 'single'\n\n// A sortable column's `key` is reported back as the sort's `columnKey`, so it has to be a real\n// string the consumer chose -- never DataTable's `header-<index>` fallback.\ntype DataViewColumn<T> =\n | {\n key: keyof T\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable?: false\n }\n | {\n key: string\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable: true\n }\n | {\n key?: string\n title: string | React.ReactNode\n render: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable?: false\n }\n\ntype FooterKeys<T> = keyof T | string\n\ntype BaseDataViewProps<T> = {\n columns: DataViewColumn<T>[]\n data: T[]\n pagination?: PaginationControlProps\n itemMenu?: (item: T) => React.ReactNode\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n /**\n * When true, hides the select-all header checkbox (DataTable) and the\n * select-all row (DataCards). Only meaningful with `selectionMode: 'multiple'`.\n * Per-row checkboxes are unaffected.\n */\n hideSelectAll?: boolean\n /**\n * Column the data is currently sorted by. Omit while it is in its default order.\n */\n sortDescriptor?: TableSortDescriptor\n /**\n * Called when the user picks a new sort, from a column header (DataTable) or the\n * sort control above the cards (DataCards), with `undefined` when they return the data to its\n * default order. Omit to leave columns unsortable.\n */\n onSortChange?: (sortDescriptor: TableSortDescriptor | undefined) => void\n}\n\ntype NoSelectionProps = {\n onSelect?: undefined\n onSelectAll?: undefined\n getIsItemSelected?: undefined\n selectionMode?: undefined\n}\n\ntype SingleSelectionProps<T> = {\n selectionMode: 'single'\n onSelect: (item: T, checked: boolean) => void\n onSelectAll?: undefined\n getIsItemSelected?: (item: T) => boolean\n}\n\ntype MultipleSelectionProps<T> = {\n selectionMode?: 'multiple'\n onSelect: (item: T, checked: boolean) => void\n /**\n * Called when the select-all checkbox is toggled.\n * The header checkbox state reflects only the currently visible `data` array.\n * With pagination, consumers decide whether to select all data or only the visible page.\n * `visibleData` is the current page's data array for reference.\n */\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n /**\n * Required for multi-select. Returns whether a given item is currently selected.\n * Use a stable identifier from the item (e.g. item.id) rather than array index.\n */\n getIsItemSelected: (item: T) => boolean\n}\n\n/** @internal */\nexport type useDataViewProp<T> = BaseDataViewProps<T> &\n (NoSelectionProps | SingleSelectionProps<T> | MultipleSelectionProps<T>)\n\n/** @internal */\nexport type useDataViewPropReturn<T> = {\n pagination?: PaginationControlProps\n data: T[]\n columns: DataViewColumn<T>[]\n itemMenu?: (item: T) => React.ReactNode\n onSelect?: (item: T, checked: boolean) => void\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: boolean\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n selectionMode?: SelectionMode\n sortDescriptor?: TableSortDescriptor\n onSortChange?: (sortDescriptor: TableSortDescriptor | undefined) => void\n}\n\n/** @internal */\nexport const useDataView = <T>({\n columns,\n data,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n pagination,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n}: useDataViewProp<T>): useDataViewPropReturn<T> => {\n const dataViewProps = useMemo(() => {\n return {\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n }\n }, [\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n ])\n\n return dataViewProps\n}\n"],"names":["useDataView","columns","data","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","pagination","emptyState","footer","isFetching","selectionMode","sortDescriptor","onSortChange","useMemo"],"mappings":";AAkHO,MAAMA,IAAc,CAAI;AAAA,EAC7B,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,MACwBC,EAAQ,OACrB;AAAA,EACL,YAAAP;AAAA,EACA,MAAAN;AAAA,EACA,SAAAD;AAAA,EACA,UAAAE;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAE;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,IAED;AAAA,EACDN;AAAA,EACAN;AAAA,EACAD;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,CACD;"}
@@ -1,29 +1,69 @@
1
- import { jsx as e, jsxs as m } from "react/jsx-runtime";
2
- import { Table as y, TableHeader as T, Row as i, Column as x, TableBody as k, Cell as t } from "react-aria-components";
3
- import v from "classnames";
4
- import { Text as s } from "../Text/Text.js";
5
- import { TableDefaults as w } from "./TableTypes.js";
6
- import z from "./Table.module.scss.js";
7
- import { applyMissingDefaults as C } from "../../../../helpers/applyMissingDefaults.js";
8
- function M(p) {
9
- const h = C(p, w), { className: f, headers: o, rows: l, footer: n, emptyState: c, isWithinBox: g, hasCheckboxColumn: b, ...u } = h;
10
- return /* @__PURE__ */ e("div", { className: z.root, "data-within-box": g || void 0, children: /* @__PURE__ */ m(y, { ...u, className: v("react-aria-Table", f), children: [
11
- /* @__PURE__ */ e(T, { children: /* @__PURE__ */ e(i, { children: o.map((a, r) => /* @__PURE__ */ e(x, { isRowHeader: r === 0, children: /* @__PURE__ */ e(s, { as: "span", weight: "semibold", size: "xs", children: a.content }) }, a.key)) }) }),
12
- /* @__PURE__ */ m(k, { children: [
13
- l.length === 0 && c ? /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e(t, { colSpan: o.length, children: c }) }) : l.map((a) => /* @__PURE__ */ e(i, { children: a.data.map((r, d) => /* @__PURE__ */ e(t, { children: /* @__PURE__ */ e(
14
- s,
15
- {
16
- as: "span",
17
- variant: b ? d === 1 ? "leading" : "supporting" : d === 0 ? "leading" : "supporting",
18
- size: "sm",
19
- children: r.content
20
- }
21
- ) }, r.key)) }, a.key)),
22
- n && n.length > 0 && /* @__PURE__ */ e(i, { "data-footer": "true", children: n.length === 1 && n[0] ? /* @__PURE__ */ e(t, { colSpan: o.length, children: /* @__PURE__ */ e(s, { as: "span", variant: "leading", size: "sm", children: n[0].content }) }, n[0].key) : n.map((a) => /* @__PURE__ */ e(t, { children: /* @__PURE__ */ e(s, { as: "span", variant: "leading", size: "sm", children: a.content }) }, a.key)) }, "table-footer")
23
- ] })
24
- ] }) });
1
+ import { jsx as o, jsxs as m } from "react/jsx-runtime";
2
+ import { Table as v, TableHeader as k, Row as s, Column as D, TableBody as T, Cell as l } from "react-aria-components";
3
+ import g from "classnames";
4
+ import { Text as c } from "../Text/Text.js";
5
+ import { TableDefaults as x } from "./TableTypes.js";
6
+ import p from "./Table.module.scss.js";
7
+ import { applyMissingDefaults as w } from "../../../../helpers/applyMissingDefaults.js";
8
+ import C from "../../../../assets/icons/caret-down.svg.js";
9
+ function N(d) {
10
+ for (const n of d)
11
+ if (n.isSortable && n.sortDirection !== "none")
12
+ return { column: n.key, direction: n.sortDirection };
13
+ }
14
+ function P(d) {
15
+ const n = w(d, x), { className: u, headers: i, rows: h, footer: t, emptyState: f, isWithinBox: b, hasCheckboxColumn: S, ...y } = n;
16
+ return /* @__PURE__ */ o("div", { className: p.root, "data-within-box": b || void 0, children: /* @__PURE__ */ m(
17
+ v,
18
+ {
19
+ ...y,
20
+ className: g("react-aria-Table", u),
21
+ sortDescriptor: N(i),
22
+ onSortChange: (e) => {
23
+ const r = i.find((a) => a.key === String(e.column));
24
+ r?.isSortable && r.onSort();
25
+ },
26
+ children: [
27
+ /* @__PURE__ */ o(k, { children: /* @__PURE__ */ o(s, { children: i.map((e, r) => /* @__PURE__ */ o(
28
+ D,
29
+ {
30
+ id: e.key,
31
+ isRowHeader: r === 0,
32
+ allowsSorting: e.isSortable,
33
+ children: /* @__PURE__ */ m(c, { as: "span", weight: "semibold", size: "xs", children: [
34
+ e.content,
35
+ e.isSortable && /* @__PURE__ */ o(
36
+ C,
37
+ {
38
+ "aria-hidden": "true",
39
+ className: g(
40
+ p.sortIcon,
41
+ e.sortDirection === "ascending" && p.sortIconAscending
42
+ ),
43
+ "data-sorted": e.sortDirection === "none" ? void 0 : "true"
44
+ }
45
+ )
46
+ ] })
47
+ },
48
+ e.key
49
+ )) }) }),
50
+ /* @__PURE__ */ m(T, { children: [
51
+ h.length === 0 && f ? /* @__PURE__ */ o(s, { children: /* @__PURE__ */ o(l, { colSpan: i.length, children: f }) }) : h.map((e) => /* @__PURE__ */ o(s, { children: e.data.map((r, a) => /* @__PURE__ */ o(l, { children: /* @__PURE__ */ o(
52
+ c,
53
+ {
54
+ as: "span",
55
+ variant: S ? a === 1 ? "leading" : "supporting" : a === 0 ? "leading" : "supporting",
56
+ size: "sm",
57
+ children: r.content
58
+ }
59
+ ) }, r.key)) }, e.key)),
60
+ t && t.length > 0 && /* @__PURE__ */ o(s, { "data-footer": "true", children: t.length === 1 && t[0] ? /* @__PURE__ */ o(l, { colSpan: i.length, children: /* @__PURE__ */ o(c, { as: "span", variant: "leading", size: "sm", children: t[0].content }) }, t[0].key) : t.map((e) => /* @__PURE__ */ o(l, { children: /* @__PURE__ */ o(c, { as: "span", variant: "leading", size: "sm", children: e.content }) }, e.key)) }, "table-footer")
61
+ ] })
62
+ ]
63
+ }
64
+ ) });
25
65
  }
26
66
  export {
27
- M as Table
67
+ P as Table
28
68
  };
29
69
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../../../src/components/Common/UI/Table/Table.tsx"],"sourcesContent":["import {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Row,\n Column,\n Cell,\n} from 'react-aria-components'\nimport classnames from 'classnames'\nimport { Text } from '../Text/Text'\nimport type { TableProps } from './TableTypes'\nimport { TableDefaults } from './TableTypes'\nimport styles from './Table.module.scss'\nimport { applyMissingDefaults } from '@/helpers/applyMissingDefaults'\n\n/**\n * Data table with headers, rows, optional footer, and empty state.\n *\n * @param rawProps - Table configuration; see {@link TableProps}.\n * @returns The rendered table.\n * @public\n */\nexport function Table(rawProps: TableProps) {\n const resolvedProps = applyMissingDefaults(rawProps, TableDefaults)\n const { className, headers, rows, footer, emptyState, isWithinBox, hasCheckboxColumn, ...props } =\n resolvedProps\n return (\n <div className={styles.root} data-within-box={isWithinBox || undefined}>\n <AriaTable {...props} className={classnames('react-aria-Table', className)}>\n <AriaTableHeader>\n <Row>\n {headers.map((header, index) => (\n <Column key={header.key} isRowHeader={index === 0}>\n <Text as=\"span\" weight=\"semibold\" size=\"xs\">\n {header.content}\n </Text>\n </Column>\n ))}\n </Row>\n </AriaTableHeader>\n <AriaTableBody>\n {rows.length === 0 && emptyState ? (\n <Row>\n <Cell colSpan={headers.length}>{emptyState}</Cell>\n </Row>\n ) : (\n rows.map(row => (\n <Row key={row.key}>\n {row.data.map((cell, index) => (\n <Cell key={cell.key}>\n <Text\n as=\"span\"\n variant={\n hasCheckboxColumn\n ? index === 1\n ? 'leading'\n : 'supporting'\n : index === 0\n ? 'leading'\n : 'supporting'\n }\n size=\"sm\"\n >\n {cell.content}\n </Text>\n </Cell>\n ))}\n </Row>\n ))\n )}\n {footer && footer.length > 0 && (\n <Row key=\"table-footer\" data-footer=\"true\">\n {footer.length === 1 && footer[0] ? (\n <Cell key={footer[0].key} colSpan={headers.length}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {footer[0].content}\n </Text>\n </Cell>\n ) : (\n footer.map(cell => (\n <Cell key={cell.key}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {cell.content}\n </Text>\n </Cell>\n ))\n )}\n </Row>\n )}\n </AriaTableBody>\n </AriaTable>\n </div>\n )\n}\n"],"names":["Table","rawProps","resolvedProps","applyMissingDefaults","TableDefaults","className","headers","rows","footer","emptyState","isWithinBox","hasCheckboxColumn","props","styles","jsxs","AriaTable","classnames","jsx","AriaTableHeader","Row","header","index","Column","Text","AriaTableBody","Cell","row","cell"],"mappings":";;;;;;;AAsBO,SAASA,EAAMC,GAAsB;AAC1C,QAAMC,IAAgBC,EAAqBF,GAAUG,CAAa,GAC5D,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,QAAAC,GAAQ,YAAAC,GAAY,aAAAC,GAAa,mBAAAC,GAAmB,GAAGC,EAAA,IACvFV;AACF,2BACG,OAAA,EAAI,WAAWW,EAAO,MAAM,mBAAiBH,KAAe,QAC3D,UAAA,gBAAAI,EAACC,GAAA,EAAW,GAAGH,GAAO,WAAWI,EAAW,oBAAoBX,CAAS,GACvE,UAAA;AAAA,IAAA,gBAAAY,EAACC,GAAA,EACC,UAAA,gBAAAD,EAACE,GAAA,EACE,UAAAb,EAAQ,IAAI,CAACc,GAAQC,MACpB,gBAAAJ,EAACK,GAAA,EAAwB,aAAaD,MAAU,GAC9C,UAAA,gBAAAJ,EAACM,GAAA,EAAK,IAAG,QAAO,QAAO,YAAW,MAAK,MACpC,UAAAH,EAAO,QAAA,CACV,EAAA,GAHWA,EAAO,GAIpB,CACD,EAAA,CACH,GACF;AAAA,sBACCI,GAAA,EACE,UAAA;AAAA,MAAAjB,EAAK,WAAW,KAAKE,IACpB,gBAAAQ,EAACE,GAAA,EACC,4BAACM,GAAA,EAAK,SAASnB,EAAQ,QAAS,UAAAG,EAAA,CAAW,EAAA,CAC7C,IAEAF,EAAK,IAAI,CAAAmB,MACP,gBAAAT,EAACE,GAAA,EACE,UAAAO,EAAI,KAAK,IAAI,CAACC,GAAMN,MACnB,gBAAAJ,EAACQ,GAAA,EACC,UAAA,gBAAAR;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,IAAG;AAAA,UACH,SACEZ,IACIU,MAAU,IACR,YACA,eACFA,MAAU,IACR,YACA;AAAA,UAER,MAAK;AAAA,UAEJ,UAAAM,EAAK;AAAA,QAAA;AAAA,MAAA,KAdCA,EAAK,GAgBhB,CACD,EAAA,GAnBOD,EAAI,GAoBd,CACD;AAAA,MAEFlB,KAAUA,EAAO,SAAS,KACzB,gBAAAS,EAACE,GAAA,EAAuB,eAAY,QACjC,UAAAX,EAAO,WAAW,KAAKA,EAAO,CAAC,IAC9B,gBAAAS,EAACQ,GAAA,EAAyB,SAASnB,EAAQ,QACzC,UAAA,gBAAAW,EAACM,GAAA,EAAK,IAAG,QAAO,SAAQ,WAAU,MAAK,MACpC,UAAAf,EAAO,CAAC,EAAE,QAAA,CACb,EAAA,GAHSA,EAAO,CAAC,EAAE,GAIrB,IAEAA,EAAO,IAAI,CAAAmB,MACT,gBAAAV,EAACQ,GAAA,EACC,UAAA,gBAAAR,EAACM,GAAA,EAAK,IAAG,QAAO,SAAQ,WAAU,MAAK,MACpC,UAAAI,EAAK,QAAA,CACR,EAAA,GAHSA,EAAK,GAIhB,CACD,EAAA,GAdI,cAgBT;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"Table.js","sources":["../../../../../src/components/Common/UI/Table/Table.tsx"],"sourcesContent":["import {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Row,\n Column,\n Cell,\n} from 'react-aria-components'\nimport classnames from 'classnames'\nimport { Text } from '../Text/Text'\nimport type { TableProps } from './TableTypes'\nimport { TableDefaults } from './TableTypes'\nimport styles from './Table.module.scss'\nimport { applyMissingDefaults } from '@/helpers/applyMissingDefaults'\nimport CaretDown from '@/assets/icons/caret-down.svg?react'\n\nfunction getAriaSortDescriptor(headers: TableProps['headers']) {\n for (const header of headers) {\n if (header.isSortable && header.sortDirection !== 'none') {\n return { column: header.key, direction: header.sortDirection }\n }\n }\n return undefined\n}\n\n/**\n * Data table with headers, rows, optional footer, and empty state.\n *\n * @param rawProps - Table configuration; see {@link TableProps}.\n * @returns The rendered table.\n * @public\n */\nexport function Table(rawProps: TableProps) {\n const resolvedProps = applyMissingDefaults(rawProps, TableDefaults)\n const { className, headers, rows, footer, emptyState, isWithinBox, hasCheckboxColumn, ...props } =\n resolvedProps\n return (\n <div className={styles.root} data-within-box={isWithinBox || undefined}>\n <AriaTable\n {...props}\n className={classnames('react-aria-Table', className)}\n sortDescriptor={getAriaSortDescriptor(headers)}\n onSortChange={descriptor => {\n // The header owns its own cycle, so react-aria's suggested direction is discarded.\n const activatedHeader = headers.find(header => header.key === String(descriptor.column))\n if (activatedHeader?.isSortable) {\n activatedHeader.onSort()\n }\n }}\n >\n <AriaTableHeader>\n <Row>\n {headers.map((header, index) => (\n <Column\n key={header.key}\n id={header.key}\n isRowHeader={index === 0}\n allowsSorting={header.isSortable}\n >\n <Text as=\"span\" weight=\"semibold\" size=\"xs\">\n {header.content}\n {header.isSortable && (\n <CaretDown\n aria-hidden=\"true\"\n className={classnames(\n styles.sortIcon,\n header.sortDirection === 'ascending' && styles.sortIconAscending,\n )}\n data-sorted={header.sortDirection === 'none' ? undefined : 'true'}\n />\n )}\n </Text>\n </Column>\n ))}\n </Row>\n </AriaTableHeader>\n <AriaTableBody>\n {rows.length === 0 && emptyState ? (\n <Row>\n <Cell colSpan={headers.length}>{emptyState}</Cell>\n </Row>\n ) : (\n rows.map(row => (\n <Row key={row.key}>\n {row.data.map((cell, index) => (\n <Cell key={cell.key}>\n <Text\n as=\"span\"\n variant={\n hasCheckboxColumn\n ? index === 1\n ? 'leading'\n : 'supporting'\n : index === 0\n ? 'leading'\n : 'supporting'\n }\n size=\"sm\"\n >\n {cell.content}\n </Text>\n </Cell>\n ))}\n </Row>\n ))\n )}\n {footer && footer.length > 0 && (\n <Row key=\"table-footer\" data-footer=\"true\">\n {footer.length === 1 && footer[0] ? (\n <Cell key={footer[0].key} colSpan={headers.length}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {footer[0].content}\n </Text>\n </Cell>\n ) : (\n footer.map(cell => (\n <Cell key={cell.key}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {cell.content}\n </Text>\n </Cell>\n ))\n )}\n </Row>\n )}\n </AriaTableBody>\n </AriaTable>\n </div>\n )\n}\n"],"names":["getAriaSortDescriptor","headers","header","Table","rawProps","resolvedProps","applyMissingDefaults","TableDefaults","className","rows","footer","emptyState","isWithinBox","hasCheckboxColumn","props","styles","jsxs","AriaTable","classnames","descriptor","activatedHeader","jsx","AriaTableHeader","Row","index","Column","Text","CaretDown","AriaTableBody","Cell","row","cell"],"mappings":";;;;;;;;AAgBA,SAASA,EAAsBC,GAAgC;AAC7D,aAAWC,KAAUD;AACnB,QAAIC,EAAO,cAAcA,EAAO,kBAAkB;AAChD,aAAO,EAAE,QAAQA,EAAO,KAAK,WAAWA,EAAO,cAAA;AAIrD;AASO,SAASC,EAAMC,GAAsB;AAC1C,QAAMC,IAAgBC,EAAqBF,GAAUG,CAAa,GAC5D,EAAE,WAAAC,GAAW,SAAAP,GAAS,MAAAQ,GAAM,QAAAC,GAAQ,YAAAC,GAAY,aAAAC,GAAa,mBAAAC,GAAmB,GAAGC,EAAA,IACvFT;AACF,2BACG,OAAA,EAAI,WAAWU,EAAO,MAAM,mBAAiBH,KAAe,QAC3D,UAAA,gBAAAI;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,WAAWI,EAAW,oBAAoBV,CAAS;AAAA,MACnD,gBAAgBR,EAAsBC,CAAO;AAAA,MAC7C,cAAc,CAAAkB,MAAc;AAE1B,cAAMC,IAAkBnB,EAAQ,KAAK,CAAAC,MAAUA,EAAO,QAAQ,OAAOiB,EAAW,MAAM,CAAC;AACvF,QAAIC,GAAiB,cACnBA,EAAgB,OAAA;AAAA,MAEpB;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAC,EAACC,KACC,UAAA,gBAAAD,EAACE,GAAA,EACE,YAAQ,IAAI,CAACrB,GAAQsB,MACpB,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YAEC,IAAIvB,EAAO;AAAA,YACX,aAAasB,MAAU;AAAA,YACvB,eAAetB,EAAO;AAAA,YAEtB,4BAACwB,GAAA,EAAK,IAAG,QAAO,QAAO,YAAW,MAAK,MACpC,UAAA;AAAA,cAAAxB,EAAO;AAAA,cACPA,EAAO,cACN,gBAAAmB;AAAA,gBAACM;AAAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAWT;AAAAA,oBACTH,EAAO;AAAA,oBACPb,EAAO,kBAAkB,eAAea,EAAO;AAAA,kBAAA;AAAA,kBAEjD,eAAab,EAAO,kBAAkB,SAAS,SAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC7D,EAAA,CAEJ;AAAA,UAAA;AAAA,UAjBKA,EAAO;AAAA,QAAA,CAmBf,GACH,EAAA,CACF;AAAA,0BACC0B,GAAA,EACE,UAAA;AAAA,UAAAnB,EAAK,WAAW,KAAKE,IACpB,gBAAAU,EAACE,GAAA,EACC,4BAACM,GAAA,EAAK,SAAS5B,EAAQ,QAAS,UAAAU,EAAA,CAAW,EAAA,CAC7C,IAEAF,EAAK,IAAI,CAAAqB,MACP,gBAAAT,EAACE,GAAA,EACE,UAAAO,EAAI,KAAK,IAAI,CAACC,GAAMP,MACnB,gBAAAH,EAACQ,GAAA,EACC,UAAA,gBAAAR;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,SACEb,IACIW,MAAU,IACR,YACA,eACFA,MAAU,IACR,YACA;AAAA,cAER,MAAK;AAAA,cAEJ,UAAAO,EAAK;AAAA,YAAA;AAAA,UAAA,KAdCA,EAAK,GAgBhB,CACD,EAAA,GAnBOD,EAAI,GAoBd,CACD;AAAA,UAEFpB,KAAUA,EAAO,SAAS,KACzB,gBAAAW,EAACE,GAAA,EAAuB,eAAY,QACjC,UAAAb,EAAO,WAAW,KAAKA,EAAO,CAAC,IAC9B,gBAAAW,EAACQ,GAAA,EAAyB,SAAS5B,EAAQ,QACzC,UAAA,gBAAAoB,EAACK,GAAA,EAAK,IAAG,QAAO,SAAQ,WAAU,MAAK,MACpC,UAAAhB,EAAO,CAAC,EAAE,QAAA,CACb,EAAA,GAHSA,EAAO,CAAC,EAAE,GAIrB,IAEAA,EAAO,IAAI,CAAAqB,MACT,gBAAAV,EAACQ,GAAA,EACC,UAAA,gBAAAR,EAACK,GAAA,EAAK,IAAG,QAAO,SAAQ,WAAU,MAAK,MACpC,UAAAK,EAAK,QAAA,CACR,EAAA,GAHSA,EAAK,GAIhB,CACD,EAAA,GAdI,cAgBT;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}