@databiosphere/findable-ui 18.0.0 → 20.0.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.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +22 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +2 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js +29 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +6 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
- package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
- package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -0
- package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +1 -15
- package/lib/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.js +9 -10
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
- package/lib/components/Layout/components/Header/header.js +1 -1
- package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.js +23 -12
- package/lib/components/Login/components/Button/button.d.ts +2 -0
- package/lib/components/Login/components/Button/button.js +6 -0
- package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
- package/lib/components/Login/components/Button/button.styles.js +11 -0
- package/lib/components/Login/components/Button/constants.d.ts +2 -0
- package/lib/components/Login/components/Button/constants.js +6 -0
- package/lib/components/Login/components/Button/types.d.ts +3 -0
- package/lib/components/Login/components/Button/types.js +1 -0
- package/lib/components/Login/login.d.ts +2 -9
- package/lib/components/Login/login.js +9 -10
- package/lib/components/Login/types.d.ts +10 -0
- package/lib/components/Login/types.js +1 -0
- package/lib/components/Table/common/columnDef.js +1 -0
- package/lib/components/Table/common/gridTable.styles.js +5 -11
- package/lib/components/Table/common/utils.d.ts +3 -29
- package/lib/components/Table/common/utils.js +25 -60
- package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.d.ts +3 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.js +3 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.d.ts +8 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.js +18 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/types.d.ts +4 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/types.js +1 -0
- package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -2
- package/lib/components/Table/components/TableBody/tableBody.js +7 -28
- package/lib/components/Table/components/TableBody/utils.d.ts +12 -0
- package/lib/components/Table/components/TableBody/utils.js +17 -0
- package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.d.ts +3 -1
- package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.js +6 -14
- package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.d.ts +28 -0
- package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.js +52 -0
- package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.d.ts +21 -0
- package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.js +37 -0
- package/lib/components/Table/components/TableFeatures/RowSorting/utils.d.ts +29 -0
- package/lib/components/Table/components/TableFeatures/RowSorting/utils.js +68 -0
- package/lib/components/Table/components/TableHead/tableHead.d.ts +2 -6
- package/lib/components/Table/components/TableHead/tableHead.js +6 -4
- package/lib/components/Table/components/TableHead/types.d.ts +6 -0
- package/lib/components/Table/components/TableHead/types.js +1 -0
- package/lib/components/Table/components/TableHead/utils.d.ts +19 -0
- package/lib/components/Table/components/TableHead/utils.js +34 -0
- package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +1 -0
- package/lib/components/Table/components/TableRow/tableRow.styles.js +14 -2
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -2
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +8 -4
- package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.d.ts +9 -0
- package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.js +17 -0
- package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
- package/lib/components/Table/components/TableRows/tableRows.js +9 -5
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.d.ts +3 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.js +26 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.d.ts +2 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.js +16 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.d.ts +3 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.js +12 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.d.ts +7 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.js +1 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.d.ts +4 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.js +13 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.d.ts +4 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.js +1 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.d.ts +17 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.js +36 -0
- package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.d.ts +2 -3
- package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.js +3 -11
- package/lib/components/Table/components/TableToolbar/tableToolbar.js +4 -2
- package/lib/components/Table/features/RowPosition/constants.js +2 -2
- package/lib/components/Table/features/RowPosition/utils.d.ts +2 -2
- package/lib/components/Table/features/RowPosition/utils.js +12 -5
- package/lib/components/Table/options/updater.d.ts +10 -0
- package/lib/components/Table/options/updater.js +24 -0
- package/lib/components/Table/table.js +22 -17
- package/lib/components/TableCreator/common/constants.d.ts +2 -2
- package/lib/components/TableCreator/common/constants.js +2 -1
- package/lib/components/TableCreator/common/utils.d.ts +5 -2
- package/lib/components/TableCreator/common/utils.js +11 -4
- package/lib/components/TableCreator/options/expanded/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/expanded/constants.js +6 -0
- package/lib/components/TableCreator/options/expanded/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/expanded/hook.js +4 -0
- package/lib/components/TableCreator/options/grouping/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/grouping/constants.js +5 -0
- package/lib/components/TableCreator/options/grouping/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/grouping/hook.js +9 -0
- package/lib/components/TableCreator/options/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/hook.js +25 -0
- package/lib/components/TableCreator/options/rowSelection/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/rowSelection/constants.js +5 -0
- package/lib/components/TableCreator/options/rowSelection/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/rowSelection/hook.js +4 -0
- package/lib/components/TableCreator/options/sorting/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/sorting/constants.js +5 -0
- package/lib/components/TableCreator/options/sorting/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/sorting/hook.js +4 -0
- package/lib/components/TableCreator/tableCreator.d.ts +3 -5
- package/lib/components/TableCreator/tableCreator.js +4 -2
- package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
- package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
- package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
- package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
- package/lib/components/common/DropdownMenu/dropdownMenu.d.ts +2 -3
- package/lib/components/common/DropdownMenu/dropdownMenu.js +7 -7
- package/lib/components/common/DropdownMenu/dropdownMenu.styles.d.ts +1 -1
- package/lib/components/common/DropdownMenu/dropdownMenu.styles.js +1 -1
- package/lib/components/common/Menu/hooks/useMenu.d.ts +5 -6
- package/lib/config/entities.d.ts +28 -29
- package/lib/config/utils.d.ts +0 -7
- package/lib/config/utils.js +0 -12
- package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
- package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
- package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
- package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
- package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
- package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
- package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
- package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
- package/lib/hooks/authentication/profile/types.d.ts +5 -0
- package/lib/hooks/authentication/profile/types.js +1 -0
- package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
- package/lib/hooks/authentication/profile/useProfile.js +15 -0
- package/lib/hooks/authentication/providers/types.d.ts +6 -0
- package/lib/hooks/authentication/providers/types.js +1 -0
- package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
- package/lib/hooks/authentication/providers/useProviders.js +14 -0
- package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
- package/lib/hooks/authentication/session/useSessionActive.js +36 -0
- package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
- package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
- package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
- package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
- package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
- package/lib/hooks/authentication/token/types.d.ts +4 -0
- package/lib/hooks/authentication/token/types.js +1 -0
- package/lib/hooks/authentication/token/useToken.d.ts +2 -0
- package/lib/hooks/authentication/token/useToken.js +5 -0
- package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
- package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
- package/lib/hooks/useEntityList.js +2 -2
- package/lib/hooks/useFetchEntity.js +4 -3
- package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
- package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
- package/lib/hooks/useRequestFileLocation.js +2 -3
- package/lib/hooks/useRouteHistory.d.ts +14 -0
- package/lib/hooks/useRouteHistory.js +40 -0
- package/lib/hooks/useRouteRoot.d.ts +1 -0
- package/lib/hooks/useRouteRoot.js +8 -0
- package/lib/hooks/useSummary.js +3 -3
- package/lib/providers/authentication/auth/actions.d.ts +8 -0
- package/lib/providers/authentication/auth/actions.js +12 -0
- package/lib/providers/authentication/auth/constants.d.ts +2 -0
- package/lib/providers/authentication/auth/constants.js +5 -0
- package/lib/providers/authentication/auth/context.d.ts +2 -0
- package/lib/providers/authentication/auth/context.js +7 -0
- package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
- package/lib/providers/authentication/auth/dispatch.js +43 -0
- package/lib/providers/authentication/auth/hook.d.ts +6 -0
- package/lib/providers/authentication/auth/hook.js +9 -0
- package/lib/providers/authentication/auth/reducer.d.ts +8 -0
- package/lib/providers/authentication/auth/reducer.js +24 -0
- package/lib/providers/authentication/auth/types.d.ts +48 -0
- package/lib/providers/authentication/auth/types.js +11 -0
- package/lib/providers/authentication/authentication/actions.d.ts +8 -0
- package/lib/providers/authentication/authentication/actions.js +12 -0
- package/lib/providers/authentication/authentication/constants.d.ts +2 -0
- package/lib/providers/authentication/authentication/constants.js +5 -0
- package/lib/providers/authentication/authentication/context.d.ts +2 -0
- package/lib/providers/authentication/authentication/context.js +6 -0
- package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
- package/lib/providers/authentication/authentication/dispatch.js +42 -0
- package/lib/providers/authentication/authentication/hook.d.ts +6 -0
- package/lib/providers/authentication/authentication/hook.js +9 -0
- package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
- package/lib/providers/authentication/authentication/reducer.js +25 -0
- package/lib/providers/authentication/authentication/types.d.ts +47 -0
- package/lib/providers/authentication/authentication/types.js +11 -0
- package/lib/providers/authentication/authentication/utils.d.ts +12 -0
- package/lib/providers/authentication/authentication/utils.js +18 -0
- package/lib/providers/authentication/common/types.d.ts +1 -0
- package/lib/providers/authentication/common/types.js +1 -0
- package/lib/providers/authentication/common/utils.d.ts +6 -0
- package/lib/providers/authentication/common/utils.js +11 -0
- package/lib/providers/authentication/credentials/actions.d.ts +8 -0
- package/lib/providers/authentication/credentials/actions.js +12 -0
- package/lib/providers/authentication/credentials/constants.d.ts +2 -0
- package/lib/providers/authentication/credentials/constants.js +3 -0
- package/lib/providers/authentication/credentials/context.d.ts +2 -0
- package/lib/providers/authentication/credentials/context.js +6 -0
- package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
- package/lib/providers/authentication/credentials/dispatch.js +22 -0
- package/lib/providers/authentication/credentials/hook.d.ts +6 -0
- package/lib/providers/authentication/credentials/hook.js +9 -0
- package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
- package/lib/providers/authentication/credentials/reducer.js +22 -0
- package/lib/providers/authentication/credentials/types.d.ts +24 -0
- package/lib/providers/authentication/credentials/types.js +5 -0
- package/lib/providers/authentication/terra/context.d.ts +2 -0
- package/lib/providers/authentication/terra/context.js +7 -0
- package/lib/providers/authentication/terra/hook.d.ts +6 -0
- package/lib/providers/authentication/terra/hook.js +9 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
- package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
- package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
- package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
- package/lib/providers/authentication/terra/hooks/utils.js +19 -0
- package/lib/providers/authentication/terra/provider.d.ts +2 -0
- package/lib/providers/authentication/terra/provider.js +42 -0
- package/lib/providers/authentication/terra/types.d.ts +20 -0
- package/lib/providers/authentication/terra/types.js +6 -0
- package/lib/providers/authentication/terra/utils.d.ts +19 -0
- package/lib/providers/authentication/terra/utils.js +36 -0
- package/lib/providers/authentication/token/constants.d.ts +2 -0
- package/lib/providers/authentication/token/constants.js +4 -0
- package/lib/providers/authentication/token/dispatch.d.ts +12 -0
- package/lib/providers/authentication/token/dispatch.js +22 -0
- package/lib/providers/authentication/token/reducer.d.ts +8 -0
- package/lib/providers/authentication/token/reducer.js +22 -0
- package/lib/providers/authentication/token/types.d.ts +28 -0
- package/lib/providers/authentication/token/types.js +5 -0
- package/lib/providers/exploreState/actions/updateGrouping/action.d.ts +10 -0
- package/lib/providers/exploreState/actions/updateGrouping/action.js +16 -0
- package/lib/providers/exploreState/actions/updateGrouping/dispatch.d.ts +7 -0
- package/lib/providers/exploreState/actions/updateGrouping/dispatch.js +12 -0
- package/lib/providers/exploreState/actions/updateGrouping/types.d.ts +9 -0
- package/lib/providers/exploreState/actions/updateGrouping/types.js +1 -0
- package/lib/providers/exploreState/actions/updateGrouping/utils.d.ts +10 -0
- package/lib/providers/exploreState/actions/updateGrouping/utils.js +26 -0
- package/lib/providers/exploreState/entities.d.ts +3 -4
- package/lib/providers/exploreState/initializer/utils.js +41 -8
- package/lib/providers/exploreState/payloads/entities.d.ts +2 -1
- package/lib/providers/exploreState/utils.d.ts +6 -4
- package/lib/providers/exploreState/utils.js +7 -4
- package/lib/providers/exploreState.d.ts +3 -1
- package/lib/providers/exploreState.js +18 -10
- package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
- package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
- package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
- package/lib/providers/googleSignInAuthentication/constants.js +12 -0
- package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
- package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
- package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
- package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
- package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
- package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
- package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
- package/lib/providers/googleSignInAuthentication/provider.js +40 -0
- package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
- package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
- package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
- package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
- package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
- package/lib/providers/googleSignInAuthentication/types.js +1 -0
- package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
- package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
- package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
- package/lib/providers/nextAuthAuthentication/provider.js +30 -0
- package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
- package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
- package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
- package/lib/providers/nextAuthAuthentication/types.js +1 -0
- package/lib/routes/constants.d.ts +3 -0
- package/lib/routes/constants.js +3 -0
- package/lib/styles/common/mui/button.d.ts +3 -0
- package/lib/styles/common/mui/button.js +17 -0
- package/lib/styles/common/mui/paper.d.ts +2 -0
- package/lib/styles/common/mui/paper.js +9 -0
- package/lib/styles/common/mui/popover.d.ts +3 -0
- package/lib/styles/common/mui/popover.js +10 -0
- package/lib/theme/common/entities.d.ts +6 -0
- package/lib/theme/common/entities.js +1 -0
- package/lib/views/ExploreView/exploreView.js +2 -2
- package/lib/views/LoginView/loginView.d.ts +5 -1
- package/lib/views/LoginView/loginView.js +6 -4
- package/package.json +3 -2
- package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
- package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
- package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
- package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +2 -0
- package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +3 -18
- package/src/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.tsx +28 -32
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
- package/src/components/Layout/components/Header/header.tsx +1 -1
- package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +27 -13
- package/src/components/Login/components/Button/button.styles.ts +12 -0
- package/src/components/Login/components/Button/button.tsx +8 -0
- package/src/components/Login/components/Button/constants.ts +8 -0
- package/src/components/Login/components/Button/types.ts +4 -0
- package/src/components/Login/login.tsx +28 -28
- package/src/components/Login/types.ts +11 -0
- package/src/components/Table/common/columnDef.ts +1 -0
- package/src/components/Table/common/gridTable.styles.ts +5 -11
- package/src/components/Table/common/utils.ts +44 -107
- package/src/components/Table/components/TableBody/hooks/virtualizer/constants.ts +3 -0
- package/src/components/Table/components/TableBody/hooks/virtualizer/hook.ts +23 -0
- package/src/components/Table/components/TableBody/hooks/virtualizer/types.ts +5 -0
- package/src/components/Table/components/TableBody/tableBody.tsx +14 -30
- package/src/components/Table/components/TableBody/utils.ts +21 -0
- package/src/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.tsx +14 -15
- package/src/components/Table/components/TableFeatures/ColumnGrouping/utils.ts +70 -0
- package/src/components/Table/components/TableFeatures/ColumnVisibility/utils.ts +52 -0
- package/src/components/Table/components/TableFeatures/RowSorting/utils.ts +87 -0
- package/src/components/Table/components/TableHead/tableHead.tsx +21 -29
- package/src/components/Table/components/TableHead/types.ts +7 -0
- package/src/components/Table/components/TableHead/utils.ts +42 -0
- package/src/components/Table/components/TableRow/tableRow.styles.ts +19 -2
- package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -2
- package/src/components/Table/components/TableRows/components/CollapsableRows/hook.ts +20 -0
- package/src/components/Table/components/TableRows/tableRows.tsx +18 -15
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.ts +17 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.tsx +54 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.tsx +28 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.ts +8 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/constants.ts +17 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/types.ts +5 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/utils.ts +45 -0
- package/src/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.tsx +7 -20
- package/src/components/Table/components/TableToolbar/tableToolbar.tsx +8 -2
- package/src/components/Table/features/RowPosition/constants.ts +2 -2
- package/src/components/Table/features/RowPosition/utils.ts +10 -5
- package/src/components/Table/options/updater.ts +29 -0
- package/src/components/Table/table.tsx +43 -25
- package/src/components/TableCreator/common/constants.ts +4 -6
- package/src/components/TableCreator/common/utils.ts +14 -7
- package/src/components/TableCreator/options/expanded/constants.ts +14 -0
- package/src/components/TableCreator/options/expanded/hook.ts +6 -0
- package/src/components/TableCreator/options/grouping/constants.ts +6 -0
- package/src/components/TableCreator/options/grouping/hook.ts +17 -0
- package/src/components/TableCreator/options/hook.ts +31 -0
- package/src/components/TableCreator/options/rowSelection/constants.ts +10 -0
- package/src/components/TableCreator/options/rowSelection/hook.ts +8 -0
- package/src/components/TableCreator/options/sorting/constants.ts +10 -0
- package/src/components/TableCreator/options/sorting/hook.ts +6 -0
- package/src/components/TableCreator/tableCreator.tsx +4 -11
- package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
- package/src/components/common/CustomIcon/common/entities.ts +1 -4
- package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
- package/src/components/common/DropdownMenu/dropdownMenu.styles.ts +1 -1
- package/src/components/common/DropdownMenu/dropdownMenu.tsx +19 -17
- package/src/components/common/Menu/hooks/useMenu.ts +8 -9
- package/src/config/entities.ts +30 -34
- package/src/config/utils.ts +0 -14
- package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
- package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
- package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
- package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
- package/src/hooks/authentication/profile/types.ts +9 -0
- package/src/hooks/authentication/profile/useProfile.ts +21 -0
- package/src/hooks/authentication/providers/types.ts +7 -0
- package/src/hooks/authentication/providers/useProviders.ts +23 -0
- package/src/hooks/authentication/session/useSessionActive.ts +51 -0
- package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
- package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
- package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
- package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
- package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
- package/src/hooks/authentication/token/types.ts +5 -0
- package/src/hooks/authentication/token/useToken.ts +9 -0
- package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
- package/src/hooks/useEntityList.ts +2 -2
- package/src/hooks/useFetchEntity.tsx +3 -3
- package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
- package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
- package/src/hooks/useRequestFileLocation.ts +2 -3
- package/src/hooks/useRouteHistory.ts +65 -0
- package/src/hooks/useRouteRoot.ts +11 -0
- package/src/hooks/useSummary.ts +3 -3
- package/src/providers/authentication/auth/actions.ts +17 -0
- package/src/providers/authentication/auth/constants.ts +6 -0
- package/src/providers/authentication/auth/context.ts +9 -0
- package/src/providers/authentication/auth/dispatch.ts +58 -0
- package/src/providers/authentication/auth/hook.ts +11 -0
- package/src/providers/authentication/auth/reducer.ts +25 -0
- package/src/providers/authentication/auth/types.ts +63 -0
- package/src/providers/authentication/authentication/actions.ts +17 -0
- package/src/providers/authentication/authentication/constants.ts +6 -0
- package/src/providers/authentication/authentication/context.ts +8 -0
- package/src/providers/authentication/authentication/dispatch.ts +55 -0
- package/src/providers/authentication/authentication/hook.ts +11 -0
- package/src/providers/authentication/authentication/reducer.ts +34 -0
- package/src/providers/authentication/authentication/types.ts +64 -0
- package/src/providers/authentication/authentication/utils.ts +25 -0
- package/src/providers/authentication/common/types.ts +1 -0
- package/src/providers/authentication/common/utils.ts +11 -0
- package/src/providers/authentication/credentials/actions.ts +17 -0
- package/src/providers/authentication/credentials/constants.ts +5 -0
- package/src/providers/authentication/credentials/context.ts +8 -0
- package/src/providers/authentication/credentials/dispatch.ts +31 -0
- package/src/providers/authentication/credentials/hook.ts +11 -0
- package/src/providers/authentication/credentials/reducer.ts +30 -0
- package/src/providers/authentication/credentials/types.ts +33 -0
- package/src/providers/authentication/terra/context.ts +16 -0
- package/src/providers/authentication/terra/hook.ts +11 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
- package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
- package/src/providers/authentication/terra/hooks/utils.ts +29 -0
- package/src/providers/authentication/terra/provider.tsx +60 -0
- package/src/providers/authentication/terra/types.ts +23 -0
- package/src/providers/authentication/terra/utils.ts +49 -0
- package/src/providers/authentication/token/constants.ts +6 -0
- package/src/providers/authentication/token/dispatch.ts +29 -0
- package/src/providers/authentication/token/reducer.ts +26 -0
- package/src/providers/authentication/token/types.ts +36 -0
- package/src/providers/exploreState/actions/updateGrouping/action.ts +26 -0
- package/src/providers/exploreState/actions/updateGrouping/dispatch.ts +16 -0
- package/src/providers/exploreState/actions/updateGrouping/types.ts +11 -0
- package/src/providers/exploreState/actions/updateGrouping/utils.ts +33 -0
- package/src/providers/exploreState/entities.ts +3 -3
- package/src/providers/exploreState/initializer/utils.ts +58 -10
- package/src/providers/exploreState/payloads/entities.ts +2 -0
- package/src/providers/exploreState/utils.ts +10 -7
- package/src/providers/exploreState.tsx +32 -10
- package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
- package/src/providers/googleSignInAuthentication/constants.ts +17 -0
- package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
- package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
- package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
- package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
- package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
- package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
- package/src/providers/googleSignInAuthentication/types.ts +7 -0
- package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
- package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
- package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
- package/src/providers/nextAuthAuthentication/types.ts +9 -0
- package/src/routes/constants.ts +3 -0
- package/src/styles/common/mui/button.ts +20 -0
- package/src/styles/common/mui/paper.ts +11 -0
- package/src/styles/common/mui/popover.ts +19 -0
- package/src/theme/common/entities.ts +7 -0
- package/src/views/ExploreView/exploreView.tsx +1 -3
- package/src/views/LoginView/loginView.tsx +15 -9
- package/tests/getProfileStatus.test.ts +290 -0
- package/tests/terraProfileProvider.test.tsx +121 -0
- package/tests/transformRoute.test.ts +21 -0
- package/tests/useRouteHistory.test.ts +97 -0
- package/tests/useSessionActive.test.ts +107 -0
- package/types/data-explorer-ui.d.ts +8 -1
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
- package/lib/components/Login/login.stories.d.ts +0 -6
- package/lib/components/Login/login.stories.js +0 -31
- package/lib/components/TableCreator/common/entities.d.ts +0 -5
- package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
- package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
- package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
- package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
- package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
- package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
- package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
- package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
- package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
- package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
- package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
- package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
- package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
- package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
- package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
- package/lib/hooks/useAuthenticationConfig.js +0 -14
- package/lib/providers/authentication.d.ts +0 -51
- package/lib/providers/authentication.js +0 -110
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
- package/src/components/Login/login.stories.tsx +0 -43
- package/src/components/TableCreator/common/entities.ts +0 -6
- package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
- package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
- package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
- package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
- package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
- package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
- package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
- package/src/hooks/useAuthenticationConfig.ts +0 -18
- package/src/providers/authentication.tsx +0 -181
- package/tests/authentication.test.ts +0 -142
- package/tests/useAuthenticationStatus.test.ts +0 -155
- /package/lib/components/{TableCreator/common/entities.js → Authentication/components/SessionController/components/GoogleSessionController/types.js} +0 -0
- /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
- /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
- /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import SouthRoundedIcon from "@mui/icons-material/SouthRounded";
|
|
2
|
-
import { TableSortLabelProps } from "@mui/material";
|
|
3
1
|
import {
|
|
4
2
|
Cell,
|
|
5
3
|
Column,
|
|
6
4
|
ColumnFiltersState,
|
|
7
|
-
ColumnSort,
|
|
8
5
|
InitialTableState,
|
|
9
6
|
memo,
|
|
10
7
|
PaginationState,
|
|
11
8
|
Row,
|
|
12
9
|
RowData,
|
|
13
|
-
SortDirection,
|
|
14
10
|
sortingFns,
|
|
15
11
|
Table,
|
|
16
12
|
VisibilityState,
|
|
@@ -24,6 +20,7 @@ import {
|
|
|
24
20
|
import { EXPLORE_MODE, ExploreMode } from "../../../hooks/useExploreMode";
|
|
25
21
|
import { ACCESSOR_KEYS } from "../../TableCreator/common/constants";
|
|
26
22
|
import { CheckboxMenuListItem } from "../components/CheckboxMenu/checkboxMenu";
|
|
23
|
+
import { handleToggleVisibility } from "../components/TableFeatures/ColumnVisibility/utils";
|
|
27
24
|
|
|
28
25
|
/**
|
|
29
26
|
* Internal model of a category term count keyed by category term.
|
|
@@ -122,20 +119,6 @@ function formatDataToTSV(data: TableData[][]): string {
|
|
|
122
119
|
.join("\n");
|
|
123
120
|
}
|
|
124
121
|
|
|
125
|
-
/**
|
|
126
|
-
* Returns the column sort direction.
|
|
127
|
-
* @param sortDirection - Column sort direction.
|
|
128
|
-
* @returns the coumn sort direction.
|
|
129
|
-
*/
|
|
130
|
-
export function getColumnSortDirection(
|
|
131
|
-
sortDirection: false | SortDirection
|
|
132
|
-
): SortDirection | undefined {
|
|
133
|
-
if (!sortDirection) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
return sortDirection;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
122
|
/**
|
|
140
123
|
* Returns filtered entity results as a blob.
|
|
141
124
|
* @param rows - Table rows.
|
|
@@ -164,31 +147,27 @@ export function getEditColumnOptions<T extends RowData>(
|
|
|
164
147
|
const { getAllColumns, initialState } = table;
|
|
165
148
|
const { columnVisibility: initialVisibilityState } = initialState;
|
|
166
149
|
const allColumns = getAllColumns();
|
|
167
|
-
return allColumns.reduce(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
return acc;
|
|
189
|
-
},
|
|
190
|
-
[] as CheckboxMenuListItem[]
|
|
191
|
-
);
|
|
150
|
+
return allColumns.reduce((acc, column) => {
|
|
151
|
+
const {
|
|
152
|
+
columnDef: { header },
|
|
153
|
+
getCanHide,
|
|
154
|
+
getIsVisible,
|
|
155
|
+
id,
|
|
156
|
+
} = column;
|
|
157
|
+
if (getCanHide()) {
|
|
158
|
+
const option: CheckboxMenuListItem = {
|
|
159
|
+
checked: getIsVisible(),
|
|
160
|
+
disabled: initialVisibilityState[id], // TODO(cc) column visibility toggle should be disabled when table enableGrouping is false, and column is grouped.
|
|
161
|
+
label: header as string, // TODO revisit type assertion here
|
|
162
|
+
onChange: () => {
|
|
163
|
+
handleToggleVisibility(table, column);
|
|
164
|
+
},
|
|
165
|
+
value: id,
|
|
166
|
+
};
|
|
167
|
+
acc.push(option);
|
|
168
|
+
}
|
|
169
|
+
return acc;
|
|
170
|
+
}, [] as CheckboxMenuListItem[]);
|
|
192
171
|
}
|
|
193
172
|
|
|
194
173
|
/**
|
|
@@ -243,6 +222,7 @@ export function getGridTemplateColumns<T extends RowData>(
|
|
|
243
222
|
columns: Column<T>[]
|
|
244
223
|
): string {
|
|
245
224
|
return columns
|
|
225
|
+
.filter(filterGroupedColumn)
|
|
246
226
|
.map(({ columnDef: { meta } }) => {
|
|
247
227
|
const width = meta?.width;
|
|
248
228
|
if (isGridTrackMinMax(width)) {
|
|
@@ -256,35 +236,17 @@ export function getGridTemplateColumns<T extends RowData>(
|
|
|
256
236
|
/**
|
|
257
237
|
* Returns initial table state.
|
|
258
238
|
* @param columns - Column configuration.
|
|
259
|
-
* @param defaultSort - Column sort configuration.
|
|
260
239
|
* @returns initial table state.
|
|
261
240
|
*/
|
|
262
|
-
export function getInitialState(
|
|
263
|
-
columns: ColumnConfig[]
|
|
264
|
-
defaultSort: ColumnSort | undefined
|
|
241
|
+
export function getInitialState<T extends RowData>(
|
|
242
|
+
columns: ColumnConfig<T>[]
|
|
265
243
|
): InitialTableState {
|
|
266
244
|
const columnVisibility = getInitialTableColumnVisibility(columns);
|
|
267
|
-
const sorting = getInitialTableStateSorting(defaultSort);
|
|
268
245
|
return {
|
|
269
246
|
columnVisibility,
|
|
270
|
-
sorting,
|
|
271
247
|
};
|
|
272
248
|
}
|
|
273
249
|
|
|
274
|
-
/**
|
|
275
|
-
* Returns the initial table sorting state for the specified column sort configuration.
|
|
276
|
-
* @param defaultSort - Column sort configuration.
|
|
277
|
-
* @returns initial table sorting state.
|
|
278
|
-
*/
|
|
279
|
-
export function getInitialTableStateSorting(
|
|
280
|
-
defaultSort: ColumnSort | undefined
|
|
281
|
-
): ColumnSort[] {
|
|
282
|
-
if (!defaultSort) {
|
|
283
|
-
return [];
|
|
284
|
-
}
|
|
285
|
-
return [defaultSort];
|
|
286
|
-
}
|
|
287
|
-
|
|
288
250
|
/**
|
|
289
251
|
* Returns the pinned cell and its index tuple.
|
|
290
252
|
* @param row - Row.
|
|
@@ -296,7 +258,12 @@ export function getPinnedCellIndex<T extends RowData>(
|
|
|
296
258
|
const visibleCells = row.getVisibleCells();
|
|
297
259
|
let pinnedIndex = 0;
|
|
298
260
|
for (let i = 0; i < visibleCells.length; i++) {
|
|
299
|
-
|
|
261
|
+
const cell = visibleCells[i];
|
|
262
|
+
if (cell.getIsGrouped()) {
|
|
263
|
+
pinnedIndex = i;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
if (cell.column.columnDef.meta?.columnPinned) {
|
|
300
267
|
pinnedIndex = i;
|
|
301
268
|
break;
|
|
302
269
|
}
|
|
@@ -304,24 +271,6 @@ export function getPinnedCellIndex<T extends RowData>(
|
|
|
304
271
|
return [visibleCells[pinnedIndex], pinnedIndex];
|
|
305
272
|
}
|
|
306
273
|
|
|
307
|
-
/**
|
|
308
|
-
* Returns table sort label props.
|
|
309
|
-
* @param column - Table column.
|
|
310
|
-
* @returns table sort label props.
|
|
311
|
-
*/
|
|
312
|
-
export function getTableSortLabelProps<T extends RowData>(
|
|
313
|
-
column: Column<T>
|
|
314
|
-
): TableSortLabelProps {
|
|
315
|
-
const { getCanSort, getIsSorted, getToggleSortingHandler } = column;
|
|
316
|
-
return {
|
|
317
|
-
IconComponent: SouthRoundedIcon,
|
|
318
|
-
active: isColumnSortActive(getIsSorted()),
|
|
319
|
-
direction: getColumnSortDirection(getIsSorted()),
|
|
320
|
-
disabled: !getCanSort(),
|
|
321
|
-
onClick: getToggleSortingHandler(),
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
|
|
325
274
|
/**
|
|
326
275
|
* Returns table state pagination.
|
|
327
276
|
* @param pageIndex - Explore state page index.
|
|
@@ -364,21 +313,23 @@ function getRowsTableData<T extends RowData>(rows: Row<T>[]): TableData[][] {
|
|
|
364
313
|
);
|
|
365
314
|
}
|
|
366
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Returns true if the column is not grouped (filters out grouped columns).
|
|
318
|
+
* @param column - Table column.
|
|
319
|
+
* @returns true if the column is not grouped.
|
|
320
|
+
*/
|
|
321
|
+
function filterGroupedColumn<T extends RowData>(column: Column<T>): boolean {
|
|
322
|
+
return !column.getIsGrouped();
|
|
323
|
+
}
|
|
324
|
+
|
|
367
325
|
/**
|
|
368
326
|
* Returns true if any or all table rows are selected.
|
|
369
327
|
* @param table - Table.
|
|
370
328
|
* @returns true if a row is selected.
|
|
371
329
|
*/
|
|
372
330
|
export function isAnyRowSelected<T extends RowData>(table: Table<T>): boolean {
|
|
373
|
-
const {
|
|
374
|
-
|
|
375
|
-
getIsSomePageRowsSelected,
|
|
376
|
-
options: { enableRowSelection },
|
|
377
|
-
} = table;
|
|
378
|
-
return Boolean(
|
|
379
|
-
enableRowSelection &&
|
|
380
|
-
(getIsSomePageRowsSelected() || getIsAllPageRowsSelected())
|
|
381
|
-
);
|
|
331
|
+
const { getIsAllPageRowsSelected, getIsSomePageRowsSelected } = table;
|
|
332
|
+
return getIsSomePageRowsSelected() || getIsAllPageRowsSelected();
|
|
382
333
|
}
|
|
383
334
|
|
|
384
335
|
/**
|
|
@@ -404,20 +355,6 @@ export function isCollapsableRowDisabled<T extends RowData>(
|
|
|
404
355
|
return tableInstance.getVisibleLeafColumns().length === 1;
|
|
405
356
|
}
|
|
406
357
|
|
|
407
|
-
/**
|
|
408
|
-
* Returns true if column has a sort direction.
|
|
409
|
-
* @param sortDirection - Column sort direction.
|
|
410
|
-
* @returns true when column has a sort direction.
|
|
411
|
-
*/
|
|
412
|
-
export function isColumnSortActive(
|
|
413
|
-
sortDirection: false | SortDirection
|
|
414
|
-
): boolean {
|
|
415
|
-
if (!sortDirection) {
|
|
416
|
-
return sortDirection;
|
|
417
|
-
}
|
|
418
|
-
return true;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
358
|
/**
|
|
422
359
|
* Returns sort return value from the compare function. The compare function is dependent on the row value type:
|
|
423
360
|
* - row values of type "array" use a compare function based off React Table "basic" compare function,
|
|
@@ -465,8 +402,8 @@ function basicSort<TValue>(val0: TValue, val1: TValue): number {
|
|
|
465
402
|
* @param columns - Column configuration.
|
|
466
403
|
* @returns initial table visibility state.
|
|
467
404
|
*/
|
|
468
|
-
export function getInitialTableColumnVisibility(
|
|
469
|
-
columns: ColumnConfig[]
|
|
405
|
+
export function getInitialTableColumnVisibility<T extends RowData>(
|
|
406
|
+
columns: ColumnConfig<T>[]
|
|
470
407
|
): VisibilityState {
|
|
471
408
|
return columns.reduce((acc, { columnVisible = true, id }) => {
|
|
472
409
|
Object.assign(acc, { [id]: columnVisible });
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Row, RowData } from "@tanstack/react-table";
|
|
2
|
+
import { useWindowVirtualizer } from "@tanstack/react-virtual";
|
|
3
|
+
import { useCallback } from "react";
|
|
4
|
+
import { VIRTUALIZER_OPTIONS } from "./constants";
|
|
5
|
+
import { UseVirtualizer } from "./types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A hook to create and manage TanStack window virtualizer for table rows.
|
|
9
|
+
* @param rows - Rows.
|
|
10
|
+
* @returns An object containing the virtualizer instance, which manages the visible rows.
|
|
11
|
+
*/
|
|
12
|
+
export function useVirtualizer<T extends RowData>(
|
|
13
|
+
rows: Row<T>[]
|
|
14
|
+
): UseVirtualizer {
|
|
15
|
+
const estimateSize = useCallback(() => 100, []);
|
|
16
|
+
const count = rows.length;
|
|
17
|
+
const virtualizer = useWindowVirtualizer({
|
|
18
|
+
...VIRTUALIZER_OPTIONS,
|
|
19
|
+
count,
|
|
20
|
+
estimateSize,
|
|
21
|
+
});
|
|
22
|
+
return { virtualizer };
|
|
23
|
+
}
|
|
@@ -1,40 +1,38 @@
|
|
|
1
1
|
import { TableBody as MTableBody } from "@mui/material";
|
|
2
|
-
import { RowData, Table } from "@tanstack/react-table";
|
|
3
|
-
import
|
|
4
|
-
import React, { useCallback } from "react";
|
|
2
|
+
import { Row, RowData, Table } from "@tanstack/react-table";
|
|
3
|
+
import React from "react";
|
|
5
4
|
import { ROW_DIRECTION } from "../../common/entities";
|
|
6
5
|
import { CollapsableRows } from "../TableRows/components/CollapsableRows/collapsableRows";
|
|
7
6
|
import { VirtualizedRow } from "../TableRows/components/VirtualizedRow/virtualizedRow";
|
|
8
7
|
import { TableRows } from "../TableRows/tableRows";
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { useVirtualizer } from "./hooks/virtualizer/hook";
|
|
9
|
+
import { getAllVirtualizedRows } from "./utils";
|
|
11
10
|
|
|
12
11
|
export interface TableBodyProps<T extends RowData> {
|
|
13
12
|
rowDirection: ROW_DIRECTION;
|
|
13
|
+
rows: Row<T>[];
|
|
14
14
|
tableInstance: Table<T>;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export const TableBody = <T extends RowData>({
|
|
18
18
|
rowDirection,
|
|
19
|
+
rows,
|
|
19
20
|
tableInstance,
|
|
20
21
|
}: TableBodyProps<T>): JSX.Element => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
estimateSize,
|
|
28
|
-
measureElement,
|
|
29
|
-
overscan: OVERSCAN,
|
|
30
|
-
});
|
|
22
|
+
const virtualizedRows = getAllVirtualizedRows(
|
|
23
|
+
tableInstance,
|
|
24
|
+
rows,
|
|
25
|
+
rowDirection
|
|
26
|
+
);
|
|
27
|
+
const { virtualizer } = useVirtualizer(virtualizedRows);
|
|
31
28
|
return (
|
|
32
29
|
<MTableBody>
|
|
33
30
|
<VirtualizedRow isUpperRow={true} virtualizer={virtualizer} />
|
|
34
31
|
{rowDirection === ROW_DIRECTION.DEFAULT ? (
|
|
35
|
-
<TableRows
|
|
32
|
+
<TableRows rows={virtualizedRows} virtualizer={virtualizer} />
|
|
36
33
|
) : (
|
|
37
34
|
<CollapsableRows
|
|
35
|
+
rows={virtualizedRows}
|
|
38
36
|
tableInstance={tableInstance}
|
|
39
37
|
virtualizer={virtualizer}
|
|
40
38
|
/>
|
|
@@ -43,17 +41,3 @@ export const TableBody = <T extends RowData>({
|
|
|
43
41
|
</MTableBody>
|
|
44
42
|
);
|
|
45
43
|
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Measures the height of the element.
|
|
49
|
-
* @param element - Element to measure.
|
|
50
|
-
* @returns height of the element.
|
|
51
|
-
*/
|
|
52
|
-
function measureElement(element: Element): number {
|
|
53
|
-
// We select the first child element because the row is not a box element due to the "display: contents" style attribute.
|
|
54
|
-
const box = element.children[0];
|
|
55
|
-
if (!box) {
|
|
56
|
-
return 0;
|
|
57
|
-
}
|
|
58
|
-
return box.getBoundingClientRect().height;
|
|
59
|
-
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Row, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
import { ROW_DIRECTION } from "../../common/entities";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Filters and returns the appropriate rows for a virtualized table based on row direction
|
|
6
|
+
* and grouping state.
|
|
7
|
+
* Rows are filtered if `ROW_DIRECTION` is `VERTICAL` and the table is grouped.
|
|
8
|
+
* @param table - Table.
|
|
9
|
+
* @param rows - Rows.
|
|
10
|
+
* @param rowDirection - Row direction.
|
|
11
|
+
* @returns Rows based on the provided row direction and table grouping state.
|
|
12
|
+
*/
|
|
13
|
+
export function getAllVirtualizedRows<T extends RowData>(
|
|
14
|
+
table: Table<T>,
|
|
15
|
+
rows: Row<T>[],
|
|
16
|
+
rowDirection: ROW_DIRECTION
|
|
17
|
+
): Row<T>[] {
|
|
18
|
+
if (rowDirection === ROW_DIRECTION.DEFAULT) return rows;
|
|
19
|
+
if (table.getState().grouping.length === 0) return rows;
|
|
20
|
+
return rows.filter(({ getIsGrouped }) => getIsGrouped());
|
|
21
|
+
}
|
package/src/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Collapse, IconButton, Typography } from "@mui/material";
|
|
2
2
|
import { Cell, flexRender, Row, RowData } from "@tanstack/react-table";
|
|
3
|
-
import
|
|
3
|
+
import { Virtualizer } from "@tanstack/react-virtual";
|
|
4
|
+
import React from "react";
|
|
4
5
|
import { TEXT_BODY_400_2_LINES } from "../../../../../../theme/common/typography";
|
|
5
6
|
import { UnfoldMoreIcon } from "../../../../../common/CustomIcon/components/UnfoldMoreIcon/unfoldMoreIcon";
|
|
6
7
|
import { getPinnedCellIndex } from "../../../../common/utils";
|
|
@@ -14,35 +15,36 @@ import {
|
|
|
14
15
|
export interface CollapsableCellProps<T extends RowData> {
|
|
15
16
|
isDisabled?: boolean;
|
|
16
17
|
row: Row<T>;
|
|
18
|
+
virtualizer?: Virtualizer<Window, Element>;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export const CollapsableCell = <T extends RowData>({
|
|
20
22
|
isDisabled = false,
|
|
21
23
|
row,
|
|
24
|
+
virtualizer,
|
|
22
25
|
}: CollapsableCellProps<T>): JSX.Element => {
|
|
23
|
-
const [isExpanded, setIsExpanded] = useState<boolean>(false);
|
|
24
26
|
const [pinnedCell, pinnedIndex] = getPinnedCellIndex(row);
|
|
25
|
-
|
|
26
|
-
// Toggles open/close table cell.
|
|
27
|
-
const onToggleExpanded = (): void => {
|
|
28
|
-
setIsExpanded((expanded) => !expanded);
|
|
29
|
-
};
|
|
30
|
-
|
|
31
27
|
return (
|
|
32
|
-
<TableCell isExpanded={
|
|
28
|
+
<TableCell isExpanded={row.getIsExpanded()}>
|
|
33
29
|
<PinnedCell>
|
|
34
30
|
{flexRender(pinnedCell.column.columnDef.cell, pinnedCell.getContext())}
|
|
35
31
|
<IconButton
|
|
36
32
|
color="ink"
|
|
37
33
|
disabled={isDisabled}
|
|
38
34
|
edge="end"
|
|
39
|
-
onClick={
|
|
35
|
+
onClick={() => row.toggleExpanded()}
|
|
40
36
|
size="large"
|
|
41
37
|
>
|
|
42
38
|
<UnfoldMoreIcon fontSize="small" />
|
|
43
39
|
</IconButton>
|
|
44
40
|
</PinnedCell>
|
|
45
|
-
<Collapse
|
|
41
|
+
<Collapse
|
|
42
|
+
in={row.getIsExpanded()}
|
|
43
|
+
mountOnEnter
|
|
44
|
+
onEntered={() => virtualizer?.measure()} // Measure when cell is opened.
|
|
45
|
+
onExited={() => virtualizer?.measure()} // Measure when cell is closed.
|
|
46
|
+
unmountOnExit
|
|
47
|
+
>
|
|
46
48
|
<CollapsedContents>
|
|
47
49
|
{getRowVisibleCells(row).map((cell, i) => {
|
|
48
50
|
if (cell.getIsAggregated()) return null; // Display of aggregated cells is currently not supported.
|
|
@@ -80,10 +82,7 @@ function getRowVisibleCells<T extends RowData>(
|
|
|
80
82
|
row: Row<T>
|
|
81
83
|
): Cell<T, unknown>[] {
|
|
82
84
|
if (row.getIsGrouped()) {
|
|
83
|
-
return row
|
|
84
|
-
.getLeafRows()
|
|
85
|
-
.map((leafRow) => leafRow.getVisibleCells())
|
|
86
|
-
.flat();
|
|
85
|
+
return row.subRows.map(({ getVisibleCells }) => getVisibleCells()).flat();
|
|
87
86
|
}
|
|
88
87
|
return row.getVisibleCells();
|
|
89
88
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Column, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
import { buildColumnSort } from "../RowSorting/utils";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Clears the grouping state of the table and optionally resets the sorting state.
|
|
6
|
+
* ### Grouping State:
|
|
7
|
+
* - Grouping state is reset to `[]`.
|
|
8
|
+
* ### Sorting State:
|
|
9
|
+
* - Sorting state is reset to initial state (if sorting is enabled).
|
|
10
|
+
* @param table - Table.
|
|
11
|
+
*/
|
|
12
|
+
export function handleClearGroupingState<T extends RowData>(
|
|
13
|
+
table: Table<T>
|
|
14
|
+
): void {
|
|
15
|
+
const {
|
|
16
|
+
options: { enableSorting },
|
|
17
|
+
resetGrouping,
|
|
18
|
+
resetSorting,
|
|
19
|
+
} = table;
|
|
20
|
+
resetGrouping(true); // Clears grouping state to `[]`.
|
|
21
|
+
if (enableSorting) resetSorting(); // Resets sorting state to initial state.
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Toggles the grouping state for the given column.
|
|
26
|
+
* ### Grouping State
|
|
27
|
+
* - **Column grouping is not enabled**:
|
|
28
|
+
* - No grouping action (exit).
|
|
29
|
+
* - **Column grouping is enabled**:
|
|
30
|
+
* - Toggles the grouping state of the specified column.
|
|
31
|
+
* ### Sorting State
|
|
32
|
+
* - **Table sorting is not enabled**:
|
|
33
|
+
* - No sorting action (exit).
|
|
34
|
+
* - **Column sorting is not enabled**:
|
|
35
|
+
* - Resets sorting state to initial state.
|
|
36
|
+
* - **Column sorting is enabled**:
|
|
37
|
+
* - Sets new sorting state with the grouped column as the first sort key.
|
|
38
|
+
* @param table - Table.
|
|
39
|
+
* @param column - Column.
|
|
40
|
+
*/
|
|
41
|
+
export function handleToggleGrouping<T extends RowData>(
|
|
42
|
+
table: Table<T>,
|
|
43
|
+
column: Column<T>
|
|
44
|
+
): void {
|
|
45
|
+
const {
|
|
46
|
+
options: { enableSorting },
|
|
47
|
+
resetSorting,
|
|
48
|
+
setSorting,
|
|
49
|
+
} = table;
|
|
50
|
+
const { getCanGroup, getCanSort } = column;
|
|
51
|
+
|
|
52
|
+
// Column cannot be grouped.
|
|
53
|
+
if (!getCanGroup()) return;
|
|
54
|
+
|
|
55
|
+
// Toggle column grouping.
|
|
56
|
+
column.toggleGrouping(); // Grouping state currently only supports single-column grouping.
|
|
57
|
+
|
|
58
|
+
// Table sorting is not enabled.
|
|
59
|
+
if (!enableSorting) return;
|
|
60
|
+
|
|
61
|
+
// Column sorting is enabled.
|
|
62
|
+
if (getCanSort()) {
|
|
63
|
+
// Set new sorting state; grouped column is first sort.
|
|
64
|
+
setSorting([buildColumnSort(column)]);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Column sorting is not enabled; reset sorting state to initial state.
|
|
69
|
+
resetSorting();
|
|
70
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Column, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Toggles the visibility state for the given column.
|
|
5
|
+
* ### Column Visibility State
|
|
6
|
+
* - **Column visibility is not enabled**:
|
|
7
|
+
* - No column visibility action (exit).
|
|
8
|
+
* - **Column visibility is enabled**:
|
|
9
|
+
* - Toggles the visibility state of the specified column.
|
|
10
|
+
* ### Grouping and Sorting State
|
|
11
|
+
* - **Column is not visible**:
|
|
12
|
+
* - No grouping or sorting action (exit).
|
|
13
|
+
* - **Column is visible**:
|
|
14
|
+
* - **Column is grouped**:
|
|
15
|
+
* - Resets grouping state to `[]`.
|
|
16
|
+
* - Clears column from sorting state.
|
|
17
|
+
* - **Column is not grouped**:
|
|
18
|
+
* - No grouping or sorting action.
|
|
19
|
+
* @param table - Table.
|
|
20
|
+
* @param column - Column.
|
|
21
|
+
*/
|
|
22
|
+
export function handleToggleVisibility<T extends RowData>(
|
|
23
|
+
table: Table<T>,
|
|
24
|
+
column: Column<T>
|
|
25
|
+
): void {
|
|
26
|
+
const {
|
|
27
|
+
options: { enableGrouping },
|
|
28
|
+
resetGrouping,
|
|
29
|
+
} = table;
|
|
30
|
+
const {
|
|
31
|
+
clearSorting,
|
|
32
|
+
getCanHide,
|
|
33
|
+
getIsGrouped,
|
|
34
|
+
getIsVisible,
|
|
35
|
+
toggleVisibility,
|
|
36
|
+
} = column;
|
|
37
|
+
if (!getCanHide()) return;
|
|
38
|
+
|
|
39
|
+
// Toggle column visibility.
|
|
40
|
+
toggleVisibility();
|
|
41
|
+
|
|
42
|
+
// Column is not visible i.e. requesting column visibility and therefore no further action is needed.
|
|
43
|
+
if (!getIsVisible()) return;
|
|
44
|
+
|
|
45
|
+
// Column is visible.
|
|
46
|
+
// Table grouping is enabled, and column is grouped.
|
|
47
|
+
if (enableGrouping && getIsGrouped()) {
|
|
48
|
+
resetGrouping(true); // Clears grouping state to `[]`.
|
|
49
|
+
// Currently, only a grouped column's sorting state is cleared.
|
|
50
|
+
clearSorting(); // Clears column sorting.
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Column, ColumnSort, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
import { MouseEvent } from "react";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Constructs a `ColumnSort` object from a column.
|
|
6
|
+
* @param column - Column.
|
|
7
|
+
* @returns `ColumnSort` object with sorting direction and column ID.
|
|
8
|
+
*/
|
|
9
|
+
export function buildColumnSort<T extends RowData>(
|
|
10
|
+
column: Column<T>
|
|
11
|
+
): ColumnSort {
|
|
12
|
+
return { desc: column.getFirstSortDir() === "desc", id: column.id };
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Toggles the sorting state for the specified column.
|
|
17
|
+
* The sorting state of a table is modified based on user interaction, table grouping state, and
|
|
18
|
+
* its sorting configuration (single-sort or multi-sort modes).
|
|
19
|
+
* ### Sorting State:
|
|
20
|
+
* - **Ungrouped Table**:
|
|
21
|
+
* - Sorting is toggled normally, respecting single-sort or multi-sort modes.
|
|
22
|
+
* - **Grouped Table**:
|
|
23
|
+
* - **Multi-Sort Request**:
|
|
24
|
+
* - Sorting is toggled normally.
|
|
25
|
+
* - **Single-Sort Request**:
|
|
26
|
+
* - **Multi-Sort Mode**:
|
|
27
|
+
* - Grouped column is preserved as the first sort key, and the requested column is sorted as the second sort key.
|
|
28
|
+
* - **Single-Sort Mode**:
|
|
29
|
+
* - If the grouped column is already sorted, no action taken (the grouped column remains the primary sort key).
|
|
30
|
+
* - Otherwise, sorting is toggled normally.
|
|
31
|
+
* @param mouseEvent - Mouse event.
|
|
32
|
+
* @param table - Table.
|
|
33
|
+
* @param column - Column.
|
|
34
|
+
*/
|
|
35
|
+
export function handleToggleSorting<T extends RowData>(
|
|
36
|
+
mouseEvent: MouseEvent,
|
|
37
|
+
table: Table<T>,
|
|
38
|
+
column: Column<T>
|
|
39
|
+
): void {
|
|
40
|
+
const {
|
|
41
|
+
getColumn,
|
|
42
|
+
getState,
|
|
43
|
+
options: { enableMultiSort, isMultiSortEvent },
|
|
44
|
+
setSorting,
|
|
45
|
+
} = table;
|
|
46
|
+
const { getCanSort, getSortIndex, toggleSorting } = column;
|
|
47
|
+
const { grouping, sorting } = getState();
|
|
48
|
+
|
|
49
|
+
// Table and column sorting is not enabled.
|
|
50
|
+
if (!getCanSort()) return;
|
|
51
|
+
|
|
52
|
+
// Sorting is enabled.
|
|
53
|
+
// Table is not grouped; toggle sorting as usual.
|
|
54
|
+
if (grouping.length === 0) {
|
|
55
|
+
toggleSorting(undefined, isMultiSortEvent?.(mouseEvent));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Table is grouped.
|
|
60
|
+
// Multi-sort mode and multi-sort requested; toggle sorting as usual.
|
|
61
|
+
if (enableMultiSort && isMultiSortEvent?.(mouseEvent)) {
|
|
62
|
+
toggleSorting(undefined, true);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Retrieve the grouped column.
|
|
67
|
+
const groupedColumn = getColumn(grouping[0]); // Grouping state currently only supports single-column grouping.
|
|
68
|
+
|
|
69
|
+
// Single-sort requested (either single-sort or multi-sort mode).
|
|
70
|
+
// Grouped column is sorted.
|
|
71
|
+
if (groupedColumn?.getIsSorted()) {
|
|
72
|
+
if (enableMultiSort) {
|
|
73
|
+
// Multi-sort mode.
|
|
74
|
+
// Column to be sorted is not the last most recent sorted column.
|
|
75
|
+
if (getSortIndex() !== sorting.length - 1) {
|
|
76
|
+
// Reset sorting state, preserving grouped column as the first sort, and requested column to be sorted as the second sort.
|
|
77
|
+
setSorting([buildColumnSort(groupedColumn), buildColumnSort(column)]);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
// Special case; in single-sort mode we do not override a grouped sort.
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
toggleSorting();
|
|
87
|
+
}
|