@okta/odyssey-react-mui 1.20.0 → 1.21.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/CHANGELOG.md +43 -0
- package/dist/DataTable/DataTable.js +101 -63
- package/dist/DataTable/DataTable.js.map +1 -1
- package/dist/Pagination/Pagination.js +29 -20
- package/dist/Pagination/Pagination.js.map +1 -1
- package/dist/Pagination/usePagination.js +13 -22
- package/dist/Pagination/usePagination.js.map +1 -1
- package/dist/assertEnv.js +1 -1
- package/dist/index.scss +1 -1
- package/dist/labs/DataComponents/DataStack.js +6 -0
- package/dist/labs/DataComponents/DataStack.js.map +1 -1
- package/dist/labs/DataComponents/DataTable.js +6 -0
- package/dist/labs/DataComponents/DataTable.js.map +1 -1
- package/dist/labs/DataComponents/DataView.js +15 -1
- package/dist/labs/DataComponents/DataView.js.map +1 -1
- package/dist/labs/DataComponents/TableContent.js +49 -3
- package/dist/labs/DataComponents/TableContent.js.map +1 -1
- package/dist/labs/DataComponents/TableSettings.js +28 -38
- package/dist/labs/DataComponents/TableSettings.js.map +1 -1
- package/dist/labs/DataComponents/componentTypes.js.map +1 -1
- package/dist/labs/DataComponents/constants.js.map +1 -1
- package/dist/labs/DataComponents/tableConstants.js +0 -19
- package/dist/labs/DataComponents/tableConstants.js.map +1 -1
- package/dist/labs/DataComponents/useFilterConversion.js +8 -15
- package/dist/labs/DataComponents/useFilterConversion.js.map +1 -1
- package/dist/labs/DateField.js +97 -10
- package/dist/labs/DateField.js.map +1 -1
- package/dist/labs/DatePicker.js +113 -51
- package/dist/labs/DatePicker.js.map +1 -1
- package/dist/labs/TimeZonePicker.js +37 -0
- package/dist/labs/TimeZonePicker.js.map +1 -0
- package/dist/labs/TopNav.js +280 -0
- package/dist/labs/TopNav.js.map +1 -0
- package/dist/labs/datePickerTheme.js +8 -5
- package/dist/labs/datePickerTheme.js.map +1 -1
- package/dist/labs/index.js +1 -0
- package/dist/labs/index.js.map +1 -1
- package/dist/labs/{useDatePickerTranslations.js → useDateFieldsTranslations.js} +2 -2
- package/dist/labs/{useDatePickerTranslations.js.map → useDateFieldsTranslations.js.map} +1 -1
- package/dist/labs/useOdysseyDateFields.js +101 -0
- package/dist/labs/useOdysseyDateFields.js.map +1 -0
- package/dist/properties/ts/odyssey-react-mui.js +3 -0
- package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/src/Autocomplete.d.ts +2 -1
- package/dist/src/Autocomplete.d.ts.map +1 -1
- package/dist/src/Badge.d.ts +0 -1
- package/dist/src/Badge.d.ts.map +1 -1
- package/dist/src/Banner.d.ts +0 -1
- package/dist/src/Banner.d.ts.map +1 -1
- package/dist/src/ButtonContext.d.ts +0 -1
- package/dist/src/ButtonContext.d.ts.map +1 -1
- package/dist/src/Checkbox.d.ts +0 -1
- package/dist/src/Checkbox.d.ts.map +1 -1
- package/dist/src/CircularProgress.d.ts +0 -1
- package/dist/src/CircularProgress.d.ts.map +1 -1
- package/dist/src/DataTable/DataTable.d.ts +14 -1
- package/dist/src/DataTable/DataTable.d.ts.map +1 -1
- package/dist/src/DataTable/useRowReordering.d.ts.map +1 -1
- package/dist/src/ErrorMessageList.d.ts +0 -1
- package/dist/src/ErrorMessageList.d.ts.map +1 -1
- package/dist/src/Field.d.ts.map +1 -1
- package/dist/src/FieldError.d.ts +0 -1
- package/dist/src/FieldError.d.ts.map +1 -1
- package/dist/src/FieldHint.d.ts +0 -1
- package/dist/src/FieldHint.d.ts.map +1 -1
- package/dist/src/FieldLabel.d.ts +0 -1
- package/dist/src/FieldLabel.d.ts.map +1 -1
- package/dist/src/FieldsetContext.d.ts +0 -1
- package/dist/src/FieldsetContext.d.ts.map +1 -1
- package/dist/src/HintLink.d.ts +0 -1
- package/dist/src/HintLink.d.ts.map +1 -1
- package/dist/src/MuiPropsContext.d.ts +0 -1
- package/dist/src/MuiPropsContext.d.ts.map +1 -1
- package/dist/src/NativeSelect.d.ts +4 -4
- package/dist/src/NativeSelect.d.ts.map +1 -1
- package/dist/src/OdysseyDesignTokensContext.d.ts +0 -1
- package/dist/src/OdysseyDesignTokensContext.d.ts.map +1 -1
- package/dist/src/OdysseyProvider.d.ts +2 -1
- package/dist/src/OdysseyProvider.d.ts.map +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/src/Pagination/Pagination.d.ts +41 -26
- package/dist/src/Pagination/Pagination.d.ts.map +1 -1
- package/dist/src/Pagination/usePagination.d.ts +2 -1
- package/dist/src/Pagination/usePagination.d.ts.map +1 -1
- package/dist/src/PasswordField.d.ts +10 -10
- package/dist/src/PasswordField.d.ts.map +1 -1
- package/dist/src/Radio.d.ts +0 -1
- package/dist/src/Radio.d.ts.map +1 -1
- package/dist/src/SearchField.d.ts +11 -11
- package/dist/src/SearchField.d.ts.map +1 -1
- package/dist/src/Select.d.ts +0 -1
- package/dist/src/Select.d.ts.map +1 -1
- package/dist/src/Status.d.ts +0 -1
- package/dist/src/Status.d.ts.map +1 -1
- package/dist/src/Tabs.d.ts.map +1 -1
- package/dist/src/TagListContext.d.ts +0 -1
- package/dist/src/TagListContext.d.ts.map +1 -1
- package/dist/src/TextField.d.ts +12 -12
- package/dist/src/TextField.d.ts.map +1 -1
- package/dist/src/Toast.d.ts +0 -1
- package/dist/src/Toast.d.ts.map +1 -1
- package/dist/src/icons.generated/Add.d.ts +0 -1
- package/dist/src/icons.generated/Add.d.ts.map +1 -1
- package/dist/src/icons.generated/AddCircle.d.ts +0 -1
- package/dist/src/icons.generated/AddCircle.d.ts.map +1 -1
- package/dist/src/icons.generated/Apps.d.ts +0 -1
- package/dist/src/icons.generated/Apps.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowBottom.d.ts +0 -1
- package/dist/src/icons.generated/ArrowBottom.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowDown.d.ts +0 -1
- package/dist/src/icons.generated/ArrowDown.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowLeft.d.ts +0 -1
- package/dist/src/icons.generated/ArrowLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowLowerLeft.d.ts +0 -1
- package/dist/src/icons.generated/ArrowLowerLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowLowerRight.d.ts +0 -1
- package/dist/src/icons.generated/ArrowLowerRight.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowRight.d.ts +0 -1
- package/dist/src/icons.generated/ArrowRight.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowTop.d.ts +0 -1
- package/dist/src/icons.generated/ArrowTop.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowUnsorted.d.ts +0 -1
- package/dist/src/icons.generated/ArrowUnsorted.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowUp.d.ts +0 -1
- package/dist/src/icons.generated/ArrowUp.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowUpperLeft.d.ts +0 -1
- package/dist/src/icons.generated/ArrowUpperLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/ArrowUpperRight.d.ts +0 -1
- package/dist/src/icons.generated/ArrowUpperRight.d.ts.map +1 -1
- package/dist/src/icons.generated/Bug.d.ts +0 -1
- package/dist/src/icons.generated/Bug.d.ts.map +1 -1
- package/dist/src/icons.generated/Calendar.d.ts +0 -1
- package/dist/src/icons.generated/Calendar.d.ts.map +1 -1
- package/dist/src/icons.generated/Call.d.ts +0 -1
- package/dist/src/icons.generated/Call.d.ts.map +1 -1
- package/dist/src/icons.generated/Chat.d.ts +0 -1
- package/dist/src/icons.generated/Chat.d.ts.map +1 -1
- package/dist/src/icons.generated/Check.d.ts +0 -1
- package/dist/src/icons.generated/Check.d.ts.map +1 -1
- package/dist/src/icons.generated/CheckCircleFilled.d.ts +0 -1
- package/dist/src/icons.generated/CheckCircleFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/ChevronDown.d.ts +0 -1
- package/dist/src/icons.generated/ChevronDown.d.ts.map +1 -1
- package/dist/src/icons.generated/ChevronLeft.d.ts +0 -1
- package/dist/src/icons.generated/ChevronLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/ChevronRight.d.ts +0 -1
- package/dist/src/icons.generated/ChevronRight.d.ts.map +1 -1
- package/dist/src/icons.generated/ChevronUp.d.ts +0 -1
- package/dist/src/icons.generated/ChevronUp.d.ts.map +1 -1
- package/dist/src/icons.generated/Clock.d.ts +0 -1
- package/dist/src/icons.generated/Clock.d.ts.map +1 -1
- package/dist/src/icons.generated/Close.d.ts +0 -1
- package/dist/src/icons.generated/Close.d.ts.map +1 -1
- package/dist/src/icons.generated/CloseCircleFilled.d.ts +0 -1
- package/dist/src/icons.generated/CloseCircleFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/CollapseLeft.d.ts +0 -1
- package/dist/src/icons.generated/CollapseLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/CollapseRight.d.ts +0 -1
- package/dist/src/icons.generated/CollapseRight.d.ts.map +1 -1
- package/dist/src/icons.generated/Copy.d.ts +0 -1
- package/dist/src/icons.generated/Copy.d.ts.map +1 -1
- package/dist/src/icons.generated/Custom.d.ts +0 -1
- package/dist/src/icons.generated/Custom.d.ts.map +1 -1
- package/dist/src/icons.generated/DangerDiamond.d.ts +0 -1
- package/dist/src/icons.generated/DangerDiamond.d.ts.map +1 -1
- package/dist/src/icons.generated/DangerDiamondFilled.d.ts +0 -1
- package/dist/src/icons.generated/DangerDiamondFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/Delete.d.ts +0 -1
- package/dist/src/icons.generated/Delete.d.ts.map +1 -1
- package/dist/src/icons.generated/Deny.d.ts +0 -1
- package/dist/src/icons.generated/Deny.d.ts.map +1 -1
- package/dist/src/icons.generated/Devices.d.ts +0 -1
- package/dist/src/icons.generated/Devices.d.ts.map +1 -1
- package/dist/src/icons.generated/Directory.d.ts +0 -1
- package/dist/src/icons.generated/Directory.d.ts.map +1 -1
- package/dist/src/icons.generated/Documentation.d.ts +0 -1
- package/dist/src/icons.generated/Documentation.d.ts.map +1 -1
- package/dist/src/icons.generated/Download.d.ts +0 -1
- package/dist/src/icons.generated/Download.d.ts.map +1 -1
- package/dist/src/icons.generated/DragIndicator.d.ts +0 -1
- package/dist/src/icons.generated/DragIndicator.d.ts.map +1 -1
- package/dist/src/icons.generated/Duo.d.ts +0 -1
- package/dist/src/icons.generated/Duo.d.ts.map +1 -1
- package/dist/src/icons.generated/Edit.d.ts +0 -1
- package/dist/src/icons.generated/Edit.d.ts.map +1 -1
- package/dist/src/icons.generated/Email.d.ts +0 -1
- package/dist/src/icons.generated/Email.d.ts.map +1 -1
- package/dist/src/icons.generated/ExpandLeft.d.ts +0 -1
- package/dist/src/icons.generated/ExpandLeft.d.ts.map +1 -1
- package/dist/src/icons.generated/ExpandRight.d.ts +0 -1
- package/dist/src/icons.generated/ExpandRight.d.ts.map +1 -1
- package/dist/src/icons.generated/ExternalLink.d.ts +0 -1
- package/dist/src/icons.generated/ExternalLink.d.ts.map +1 -1
- package/dist/src/icons.generated/Fido2.d.ts +0 -1
- package/dist/src/icons.generated/Fido2.d.ts.map +1 -1
- package/dist/src/icons.generated/Filter.d.ts +0 -1
- package/dist/src/icons.generated/Filter.d.ts.map +1 -1
- package/dist/src/icons.generated/Folder.d.ts +0 -1
- package/dist/src/icons.generated/Folder.d.ts.map +1 -1
- package/dist/src/icons.generated/Globe.d.ts +0 -1
- package/dist/src/icons.generated/Globe.d.ts.map +1 -1
- package/dist/src/icons.generated/GoogleAuth.d.ts +0 -1
- package/dist/src/icons.generated/GoogleAuth.d.ts.map +1 -1
- package/dist/src/icons.generated/Grid.d.ts +0 -1
- package/dist/src/icons.generated/Grid.d.ts.map +1 -1
- package/dist/src/icons.generated/Group.d.ts +0 -1
- package/dist/src/icons.generated/Group.d.ts.map +1 -1
- package/dist/src/icons.generated/Hide.d.ts +0 -1
- package/dist/src/icons.generated/Hide.d.ts.map +1 -1
- package/dist/src/icons.generated/Home.d.ts +0 -1
- package/dist/src/icons.generated/Home.d.ts.map +1 -1
- package/dist/src/icons.generated/Idp.d.ts +0 -1
- package/dist/src/icons.generated/Idp.d.ts.map +1 -1
- package/dist/src/icons.generated/InformationCircle.d.ts +0 -1
- package/dist/src/icons.generated/InformationCircle.d.ts.map +1 -1
- package/dist/src/icons.generated/InformationCircleFilled.d.ts +0 -1
- package/dist/src/icons.generated/InformationCircleFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/Link.d.ts +0 -1
- package/dist/src/icons.generated/Link.d.ts.map +1 -1
- package/dist/src/icons.generated/List.d.ts +0 -1
- package/dist/src/icons.generated/List.d.ts.map +1 -1
- package/dist/src/icons.generated/Lock.d.ts +0 -1
- package/dist/src/icons.generated/Lock.d.ts.map +1 -1
- package/dist/src/icons.generated/More.d.ts +0 -1
- package/dist/src/icons.generated/More.d.ts.map +1 -1
- package/dist/src/icons.generated/Notification.d.ts +0 -1
- package/dist/src/icons.generated/Notification.d.ts.map +1 -1
- package/dist/src/icons.generated/OktaVerify.d.ts +0 -1
- package/dist/src/icons.generated/OktaVerify.d.ts.map +1 -1
- package/dist/src/icons.generated/OnPremMfa.d.ts +0 -1
- package/dist/src/icons.generated/OnPremMfa.d.ts.map +1 -1
- package/dist/src/icons.generated/OneTimePassword.d.ts +0 -1
- package/dist/src/icons.generated/OneTimePassword.d.ts.map +1 -1
- package/dist/src/icons.generated/Password.d.ts +0 -1
- package/dist/src/icons.generated/Password.d.ts.map +1 -1
- package/dist/src/icons.generated/Pause.d.ts +0 -1
- package/dist/src/icons.generated/Pause.d.ts.map +1 -1
- package/dist/src/icons.generated/QuestionCircle.d.ts +0 -1
- package/dist/src/icons.generated/QuestionCircle.d.ts.map +1 -1
- package/dist/src/icons.generated/QuestionCircleFilled.d.ts +0 -1
- package/dist/src/icons.generated/QuestionCircleFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/Refresh.d.ts +0 -1
- package/dist/src/icons.generated/Refresh.d.ts.map +1 -1
- package/dist/src/icons.generated/Reset.d.ts +0 -1
- package/dist/src/icons.generated/Reset.d.ts.map +1 -1
- package/dist/src/icons.generated/Resume.d.ts +0 -1
- package/dist/src/icons.generated/Resume.d.ts.map +1 -1
- package/dist/src/icons.generated/Search.d.ts +0 -1
- package/dist/src/icons.generated/Search.d.ts.map +1 -1
- package/dist/src/icons.generated/SecurityQuestion.d.ts +0 -1
- package/dist/src/icons.generated/SecurityQuestion.d.ts.map +1 -1
- package/dist/src/icons.generated/Server.d.ts +0 -1
- package/dist/src/icons.generated/Server.d.ts.map +1 -1
- package/dist/src/icons.generated/Settings.d.ts +0 -1
- package/dist/src/icons.generated/Settings.d.ts.map +1 -1
- package/dist/src/icons.generated/Show.d.ts +0 -1
- package/dist/src/icons.generated/Show.d.ts.map +1 -1
- package/dist/src/icons.generated/SmartCard.d.ts +0 -1
- package/dist/src/icons.generated/SmartCard.d.ts.map +1 -1
- package/dist/src/icons.generated/Sms.d.ts +0 -1
- package/dist/src/icons.generated/Sms.d.ts.map +1 -1
- package/dist/src/icons.generated/Subtract.d.ts +0 -1
- package/dist/src/icons.generated/Subtract.d.ts.map +1 -1
- package/dist/src/icons.generated/SymantecVip.d.ts +0 -1
- package/dist/src/icons.generated/SymantecVip.d.ts.map +1 -1
- package/dist/src/icons.generated/Sync.d.ts +0 -1
- package/dist/src/icons.generated/Sync.d.ts.map +1 -1
- package/dist/src/icons.generated/ThumbsDown.d.ts +0 -1
- package/dist/src/icons.generated/ThumbsDown.d.ts.map +1 -1
- package/dist/src/icons.generated/ThumbsUp.d.ts +0 -1
- package/dist/src/icons.generated/ThumbsUp.d.ts.map +1 -1
- package/dist/src/icons.generated/Unlock.d.ts +0 -1
- package/dist/src/icons.generated/Unlock.d.ts.map +1 -1
- package/dist/src/icons.generated/Upload.d.ts +0 -1
- package/dist/src/icons.generated/Upload.d.ts.map +1 -1
- package/dist/src/icons.generated/User.d.ts +0 -1
- package/dist/src/icons.generated/User.d.ts.map +1 -1
- package/dist/src/icons.generated/Video.d.ts +0 -1
- package/dist/src/icons.generated/Video.d.ts.map +1 -1
- package/dist/src/icons.generated/VoiceCall.d.ts +0 -1
- package/dist/src/icons.generated/VoiceCall.d.ts.map +1 -1
- package/dist/src/icons.generated/Warning.d.ts +0 -1
- package/dist/src/icons.generated/Warning.d.ts.map +1 -1
- package/dist/src/icons.generated/WarningFilled.d.ts +0 -1
- package/dist/src/icons.generated/WarningFilled.d.ts.map +1 -1
- package/dist/src/icons.generated/Yubikey.d.ts +0 -1
- package/dist/src/icons.generated/Yubikey.d.ts.map +1 -1
- package/dist/src/inputUtils.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/DataStack.d.ts +1 -2
- package/dist/src/labs/DataComponents/DataStack.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/DataTable.d.ts +1 -2
- package/dist/src/labs/DataComponents/DataTable.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/DataView.d.ts +1 -2
- package/dist/src/labs/DataComponents/DataView.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/DetailPanel.d.ts +0 -1
- package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/TableContent.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/TableSettings.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/componentTypes.d.ts +5 -2
- package/dist/src/labs/DataComponents/componentTypes.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/constants.d.ts +6 -4
- package/dist/src/labs/DataComponents/constants.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/tableConstants.d.ts +6 -25
- package/dist/src/labs/DataComponents/tableConstants.d.ts.map +1 -1
- package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +1 -1
- package/dist/src/labs/DataTablePagination.d.ts +0 -1
- package/dist/src/labs/DataTablePagination.d.ts.map +1 -1
- package/dist/src/labs/DateField.d.ts +3 -6
- package/dist/src/labs/DateField.d.ts.map +1 -1
- package/dist/src/labs/DatePicker.d.ts +20 -19
- package/dist/src/labs/DatePicker.d.ts.map +1 -1
- package/dist/src/labs/FileUpload.d.ts +0 -1
- package/dist/src/labs/FileUpload.d.ts.map +1 -1
- package/dist/src/labs/FileUploadIllustration.d.ts +0 -1
- package/dist/src/labs/FileUploadIllustration.d.ts.map +1 -1
- package/dist/src/labs/FileUploadPreview.d.ts +0 -1
- package/dist/src/labs/FileUploadPreview.d.ts.map +1 -1
- package/dist/src/labs/GroupPicker.d.ts +2 -1
- package/dist/src/labs/GroupPicker.d.ts.map +1 -1
- package/dist/src/labs/PaginatedTable.d.ts +2 -1
- package/dist/src/labs/PaginatedTable.d.ts.map +1 -1
- package/dist/src/labs/StaticTable.d.ts +2 -1
- package/dist/src/labs/StaticTable.d.ts.map +1 -1
- package/dist/src/labs/Switch.d.ts +0 -1
- package/dist/src/labs/Switch.d.ts.map +1 -1
- package/dist/src/labs/TimeZonePicker.d.ts +22 -0
- package/dist/src/labs/TimeZonePicker.d.ts.map +1 -0
- package/dist/src/labs/TopNav.d.ts +77 -0
- package/dist/src/labs/TopNav.d.ts.map +1 -0
- package/dist/src/labs/datePickerTheme.d.ts.map +1 -1
- package/dist/src/labs/index.d.ts +1 -0
- package/dist/src/labs/index.d.ts.map +1 -1
- package/dist/src/labs/{useDatePickerTranslations.d.ts → useDateFieldsTranslations.d.ts} +3 -2
- package/dist/src/labs/useDateFieldsTranslations.d.ts.map +1 -0
- package/dist/src/labs/useOdysseyDateFields.d.ts +82 -0
- package/dist/src/labs/useOdysseyDateFields.d.ts.map +1 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts +3 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/src/test-selectors/querySelector.d.ts +2 -2
- package/dist/src/test-selectors/querySelector.d.ts.map +1 -1
- package/dist/src/theme/components.d.ts.map +1 -1
- package/dist/theme/components.js +44 -9
- package/dist/theme/components.js.map +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/DataTable/DataTable.tsx +118 -64
- package/src/Pagination/Pagination.tsx +82 -46
- package/src/Pagination/usePagination.ts +14 -18
- package/src/labs/DataComponents/DataStack.tsx +6 -0
- package/src/labs/DataComponents/DataTable.tsx +6 -0
- package/src/labs/DataComponents/DataView.tsx +16 -0
- package/src/labs/DataComponents/TableContent.tsx +66 -9
- package/src/labs/DataComponents/TableSettings.tsx +60 -60
- package/src/labs/DataComponents/componentTypes.ts +5 -6
- package/src/labs/DataComponents/constants.tsx +12 -4
- package/src/labs/DataComponents/tableConstants.tsx +0 -19
- package/src/labs/DataComponents/useFilterConversion.ts +14 -18
- package/src/labs/DateField.tsx +175 -26
- package/src/labs/DatePicker.tsx +155 -93
- package/src/labs/TimeZonePicker.tsx +55 -0
- package/src/labs/TopNav.tsx +394 -0
- package/src/labs/datePickerTheme.tsx +6 -4
- package/src/labs/index.ts +1 -0
- package/src/labs/{useDatePickerTranslations.ts → useDateFieldsTranslations.ts} +3 -1
- package/src/labs/useOdysseyDateFields.ts +201 -0
- package/src/properties/odyssey-react-mui.properties +3 -0
- package/src/properties/ts/odyssey-react-mui.ts +1 -1
- package/src/theme/components.tsx +50 -7
- package/dist/src/labs/useDatePickerTranslations.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,49 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.21.0](https://github.com/okta/odyssey/compare/v1.15.9...v1.21.0) (2024-08-07)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- add backwards compatible empty state export ([#2266](https://github.com/okta/odyssey/issues/2266)) ([0fe3203](https://github.com/okta/odyssey/commit/0fe3203629dc85f7c91c58e3ff078c9a89360407))
|
|
11
|
+
- add initial search prop to DataTable ([#2265](https://github.com/okta/odyssey/issues/2265)) ([5829534](https://github.com/okta/odyssey/commit/582953472b9a4e9946a57c852b78cd890a6ab674))
|
|
12
|
+
- adds a generic top nav component ([#2296](https://github.com/okta/odyssey/issues/2296)) ([6f3165f](https://github.com/okta/odyssey/commit/6f3165f9fd4a1d1743c975b72132d4ec186d09bb))
|
|
13
|
+
- adds new side navigation component for unified nav design ([#2269](https://github.com/okta/odyssey/issues/2269)) ([e54a470](https://github.com/okta/odyssey/commit/e54a470aaa71eec4fd85f19ac8519425f1d64e8f))
|
|
14
|
+
- EmptyState component ([#2175](https://github.com/okta/odyssey/issues/2175)) ([8c86845](https://github.com/okta/odyssey/commit/8c868450b6e1b8c63775afe1f38219507e9bacc7))
|
|
15
|
+
- move Pagination to its own component ([#2166](https://github.com/okta/odyssey/issues/2166)) ([61eda40](https://github.com/okta/odyssey/commit/61eda40aaf1a5dc5477799694594ea5625715fe0))
|
|
16
|
+
- Test Selectors ([#2209](https://github.com/okta/odyssey/issues/2209)) ([dfa8451](https://github.com/okta/odyssey/commit/dfa8451d0cb6ed63cbd3ac1ce740203b638348f7))
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- add changes back, remove required label ([cccce45](https://github.com/okta/odyssey/commit/cccce454c33588369786b2dc8cc6e39bbace4678))
|
|
21
|
+
- add comment ([9af7d11](https://github.com/okta/odyssey/commit/9af7d11f2964fa1b17be673c4e84a0bbb1a47ab9))
|
|
22
|
+
- add floating action button variant ([a32110d](https://github.com/okta/odyssey/commit/a32110d5aa71efd7fcbf3f1606eae613a639c721))
|
|
23
|
+
- add hint text to Radio and RadioGroup ([6518de5](https://github.com/okta/odyssey/commit/6518de5b38e54ec6aa3146a310c7c02a3b7d8a4e))
|
|
24
|
+
- add optional href prop to button ([f46123b](https://github.com/okta/odyssey/commit/f46123b538947aa0040b29832dafaf6df9da332e))
|
|
25
|
+
- add secondary danger button variant ([170e6e0](https://github.com/okta/odyssey/commit/170e6e03476d3a7fdef9bdca9f94a8d7e0d6f00a))
|
|
26
|
+
- alphabetize props ([988bd74](https://github.com/okta/odyssey/commit/988bd74e98794f2f48589e6be3e37f608f87a07a))
|
|
27
|
+
- alphabetize props in imports ([ca56f0a](https://github.com/okta/odyssey/commit/ca56f0a3ad5b3a4902bf38111bc6c229ad1533f6))
|
|
28
|
+
- bump version to 1.17 ([0e32aba](https://github.com/okta/odyssey/commit/0e32aba973ef00d5a872dbd408a84fb54c8a7408))
|
|
29
|
+
- make return implicit in label ([e2a26df](https://github.com/okta/odyssey/commit/e2a26df5082bfb5e7573c83a9ab53b364941713b))
|
|
30
|
+
- move Drawer from labs to Odyssey OKTA-700393 ([247b30a](https://github.com/okta/odyssey/commit/247b30af6e598119b78d97c971f490c48cd1dfca))
|
|
31
|
+
- prevent mixing old and new button props ([7aed65b](https://github.com/okta/odyssey/commit/7aed65be175c12525c9aee5fca18af0251dd2fec))
|
|
32
|
+
- re-add support for "callToAction" button usage ([0eb6ec7](https://github.com/okta/odyssey/commit/0eb6ec704ba6a0a9da12dcd6d864a6d1d1421915))
|
|
33
|
+
- remove invalid pseudo element from theme overrides ([#2310](https://github.com/okta/odyssey/issues/2310)) ([fea0793](https://github.com/okta/odyssey/commit/fea0793acf0800494270a87e4e5d65129942b99e))
|
|
34
|
+
- rename new variant ([28466a4](https://github.com/okta/odyssey/commit/28466a46c8a254f543f595d2abf26115eff7b66b))
|
|
35
|
+
- resolve eslint error ([6be8bd0](https://github.com/okta/odyssey/commit/6be8bd0ca6f333949d80cbe59e28fac48528388b))
|
|
36
|
+
- revert type change ([9d9e16b](https://github.com/okta/odyssey/commit/9d9e16b83cc3047b7dd6c5eb7e8027b2dd0898cb))
|
|
37
|
+
|
|
38
|
+
## [1.20.0](https://github.com/okta/odyssey/compare/v1.19.0...v1.20.0) (2024-07-25)
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
- pageTemplate and Layout component ([#2219](https://github.com/okta/odyssey/issues/2219)) ([a04eb1d](https://github.com/okta/odyssey/commit/a04eb1df24702ef23b436d0df58e0571974b0454))
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
- data Table legacy improvements ([#2294](https://github.com/okta/odyssey/issues/2294)) ([3146cd1](https://github.com/okta/odyssey/commit/3146cd1edeb145aa727682659eaba422533ba0f1))
|
|
47
|
+
- english leak for "Close" in Autocomplete ([#2291](https://github.com/okta/odyssey/issues/2291)) ([0959c71](https://github.com/okta/odyssey/commit/0959c71f7c2dc6ddc1cde3281534f19222f4df6d))
|
|
48
|
+
|
|
6
49
|
## [1.19.0](https://github.com/okta/odyssey/compare/v1.18.0...v1.19.0) (2024-07-15)
|
|
7
50
|
|
|
8
51
|
### Features
|
|
@@ -26,69 +26,11 @@ import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
|
|
|
26
26
|
import { useScrollIndication } from "./useScrollIndication.js";
|
|
27
27
|
import styled from "@emotion/styled";
|
|
28
28
|
import { EmptyState } from "../EmptyState.js";
|
|
29
|
+
import { Button } from "../Button.js";
|
|
29
30
|
import { Callout } from "../Callout.js";
|
|
30
31
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
31
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
32
32
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
33
|
-
|
|
34
|
-
"mrt-row-actions": {
|
|
35
|
-
header: "",
|
|
36
|
-
grow: true,
|
|
37
|
-
muiTableBodyCellProps: {
|
|
38
|
-
align: "right",
|
|
39
|
-
sx: {
|
|
40
|
-
overflow: "visible",
|
|
41
|
-
width: "unset"
|
|
42
|
-
},
|
|
43
|
-
className: "ods-actions-cell"
|
|
44
|
-
},
|
|
45
|
-
muiTableHeadCellProps: {
|
|
46
|
-
align: "right",
|
|
47
|
-
sx: {
|
|
48
|
-
width: "unset"
|
|
49
|
-
},
|
|
50
|
-
className: "ods-actions-cell"
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
"mrt-row-drag": {
|
|
54
|
-
header: "",
|
|
55
|
-
muiTableBodyCellProps: {
|
|
56
|
-
sx: {
|
|
57
|
-
minWidth: 0,
|
|
58
|
-
width: "auto"
|
|
59
|
-
},
|
|
60
|
-
className: "ods-drag-handle"
|
|
61
|
-
},
|
|
62
|
-
muiTableHeadCellProps: {
|
|
63
|
-
sx: {
|
|
64
|
-
minWidth: 0,
|
|
65
|
-
width: "auto"
|
|
66
|
-
},
|
|
67
|
-
children: _jsx(Box, {
|
|
68
|
-
sx: {
|
|
69
|
-
marginInline: "-0.1rem"
|
|
70
|
-
},
|
|
71
|
-
children: _jsx(DragIndicatorIcon, {
|
|
72
|
-
sx: {
|
|
73
|
-
marginInline: 1,
|
|
74
|
-
opacity: 0
|
|
75
|
-
}
|
|
76
|
-
})
|
|
77
|
-
})
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
"mrt-row-select": {
|
|
81
|
-
muiTableHeadCellProps: {
|
|
82
|
-
padding: "checkbox"
|
|
83
|
-
},
|
|
84
|
-
muiTableBodyCellProps: {
|
|
85
|
-
padding: "checkbox"
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
"mrt-row-expand": {
|
|
89
|
-
header: ""
|
|
90
|
-
}
|
|
91
|
-
};
|
|
33
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
92
34
|
const ScrollableTableContainer = styled("div", {
|
|
93
35
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isScrollableStart" && prop !== "isScrollableEnd"
|
|
94
36
|
})(({
|
|
@@ -151,12 +93,15 @@ const DataTable = ({
|
|
|
151
93
|
hasSorting,
|
|
152
94
|
initialDensity = densityValues[0],
|
|
153
95
|
initialSearchValue = "",
|
|
96
|
+
isPaginationMoreDisabled,
|
|
154
97
|
noResultsPlaceholder,
|
|
155
98
|
onChangeRowSelection,
|
|
156
99
|
onReorderRows,
|
|
157
100
|
paginationType = "paged",
|
|
158
101
|
renderDetailPanel,
|
|
159
102
|
resultsPerPage = 20,
|
|
103
|
+
maxResultsPerPage,
|
|
104
|
+
maxPages,
|
|
160
105
|
rowActionButtons,
|
|
161
106
|
rowActionMenuItems,
|
|
162
107
|
searchDelayTime,
|
|
@@ -297,6 +242,7 @@ const DataTable = ({
|
|
|
297
242
|
return columns.map(column => column.accessorKey);
|
|
298
243
|
}, [columns]);
|
|
299
244
|
const columnOrder = useMemo(() => ["mrt-row-drag", "mrt-row-select", "mrt-row-expand", ...columnIds, "mrt-row-actions"], [columnIds]);
|
|
245
|
+
const shouldDisplayRowActions = useMemo(() => hasRowReordering === true && onReorderRows || rowActionButtons || rowActionMenuItems ? true : false, [hasRowReordering, onReorderRows, rowActionButtons, rowActionMenuItems]);
|
|
300
246
|
const dataTable = useMaterialReactTable({
|
|
301
247
|
columns: columns,
|
|
302
248
|
data: data,
|
|
@@ -333,13 +279,93 @@ const DataTable = ({
|
|
|
333
279
|
}
|
|
334
280
|
},
|
|
335
281
|
selectAllMode: "all",
|
|
336
|
-
displayColumnDefOptions:
|
|
282
|
+
displayColumnDefOptions: {
|
|
283
|
+
"mrt-row-actions": {
|
|
284
|
+
header: "",
|
|
285
|
+
grow: true,
|
|
286
|
+
muiTableBodyCellProps: {
|
|
287
|
+
align: "right",
|
|
288
|
+
sx: {
|
|
289
|
+
overflow: "visible",
|
|
290
|
+
width: "unset"
|
|
291
|
+
},
|
|
292
|
+
className: "ods-actions-cell"
|
|
293
|
+
},
|
|
294
|
+
muiTableHeadCellProps: {
|
|
295
|
+
align: "right",
|
|
296
|
+
sx: {
|
|
297
|
+
width: "unset"
|
|
298
|
+
},
|
|
299
|
+
className: "ods-actions-cell",
|
|
300
|
+
children: _jsxs(Box, {
|
|
301
|
+
sx: {
|
|
302
|
+
display: "flex",
|
|
303
|
+
visibility: "hidden"
|
|
304
|
+
},
|
|
305
|
+
children: [rowActionButtons && rowActionButtons({
|
|
306
|
+
id: null
|
|
307
|
+
}), (hasRowReordering && onReorderRows || rowActionMenuItems) && _jsx(Box, {
|
|
308
|
+
children: _jsx(Button, {
|
|
309
|
+
endIcon: _jsx(MoreIcon, {}),
|
|
310
|
+
size: "small",
|
|
311
|
+
variant: "floating",
|
|
312
|
+
ariaLabel: t("table.moreactions.arialabel"),
|
|
313
|
+
isDisabled: true
|
|
314
|
+
})
|
|
315
|
+
})]
|
|
316
|
+
})
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"mrt-row-drag": {
|
|
320
|
+
header: "",
|
|
321
|
+
muiTableBodyCellProps: {
|
|
322
|
+
sx: {
|
|
323
|
+
minWidth: 0,
|
|
324
|
+
width: "auto"
|
|
325
|
+
},
|
|
326
|
+
className: "ods-drag-handle"
|
|
327
|
+
},
|
|
328
|
+
muiTableHeadCellProps: {
|
|
329
|
+
sx: {
|
|
330
|
+
minWidth: 0,
|
|
331
|
+
width: "auto"
|
|
332
|
+
},
|
|
333
|
+
children: _jsx(Box, {
|
|
334
|
+
sx: {
|
|
335
|
+
marginInline: "-0.1rem"
|
|
336
|
+
},
|
|
337
|
+
children: _jsx(DragIndicatorIcon, {
|
|
338
|
+
sx: {
|
|
339
|
+
marginInline: 1,
|
|
340
|
+
opacity: 0
|
|
341
|
+
}
|
|
342
|
+
})
|
|
343
|
+
})
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"mrt-row-select": {
|
|
347
|
+
muiTableHeadCellProps: {
|
|
348
|
+
padding: "checkbox"
|
|
349
|
+
},
|
|
350
|
+
muiTableBodyCellProps: {
|
|
351
|
+
padding: "checkbox"
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"mrt-row-expand": {
|
|
355
|
+
header: ""
|
|
356
|
+
}
|
|
357
|
+
},
|
|
337
358
|
muiTableBodyProps: () => ({
|
|
338
359
|
className: rowDensityClassName
|
|
339
360
|
}),
|
|
340
361
|
defaultColumn: {
|
|
341
362
|
Cell: defaultCell
|
|
342
363
|
},
|
|
364
|
+
muiTableBodyCellProps: ({
|
|
365
|
+
column
|
|
366
|
+
}) => ({
|
|
367
|
+
className: column.getIsResizing() ? "isResizing" : ""
|
|
368
|
+
}),
|
|
343
369
|
enableRowOrdering: hasRowReordering && Boolean(onReorderRows),
|
|
344
370
|
enableRowDragging: hasRowReordering && Boolean(onReorderRows),
|
|
345
371
|
muiTableBodyRowProps: ({
|
|
@@ -367,7 +393,7 @@ const DataTable = ({
|
|
|
367
393
|
sx: dragHandleStyles,
|
|
368
394
|
...dragHandleText
|
|
369
395
|
}),
|
|
370
|
-
enableRowActions:
|
|
396
|
+
enableRowActions: shouldDisplayRowActions,
|
|
371
397
|
positionActionsColumn: "last",
|
|
372
398
|
renderRowActions: ({
|
|
373
399
|
row
|
|
@@ -390,7 +416,8 @@ const DataTable = ({
|
|
|
390
416
|
},
|
|
391
417
|
renderEmptyRowsFallback: emptyState,
|
|
392
418
|
muiTableProps: {
|
|
393
|
-
ref: tableContentRef
|
|
419
|
+
ref: tableContentRef,
|
|
420
|
+
className: !shouldDisplayRowActions && hasColumnResizing ? "ods-hide-spacer-column" : ""
|
|
394
421
|
},
|
|
395
422
|
muiTableContainerProps: {
|
|
396
423
|
ref: tableInnerContainerRef
|
|
@@ -433,12 +460,19 @@ const DataTable = ({
|
|
|
433
460
|
}
|
|
434
461
|
setIsEmpty(pagination.pageIndex === currentPage && pagination.pageSize === resultsPerPage && search === "" && filters === initialFilters && data.length === 0);
|
|
435
462
|
}, [filters, pagination, search, data, currentPage, initialFilters, resultsPerPage]);
|
|
463
|
+
useEffect(() => {
|
|
464
|
+
setPagination(prev => ({
|
|
465
|
+
pageIndex: 1,
|
|
466
|
+
pageSize: prev.pageSize
|
|
467
|
+
}));
|
|
468
|
+
}, [filters, search]);
|
|
436
469
|
useEffect(() => {
|
|
437
470
|
onChangeRowSelection?.(rowSelection);
|
|
438
471
|
}, [rowSelection, onChangeRowSelection]);
|
|
439
472
|
const {
|
|
440
473
|
lastRow
|
|
441
474
|
} = usePagination({
|
|
475
|
+
currentRowsCount: data.length,
|
|
442
476
|
pageIndex: pagination.pageIndex,
|
|
443
477
|
pageSize: pagination.pageSize,
|
|
444
478
|
totalRows
|
|
@@ -487,10 +521,14 @@ const DataTable = ({
|
|
|
487
521
|
}), hasPagination && _jsx(Pagination, {
|
|
488
522
|
pageIndex: pagination.pageIndex,
|
|
489
523
|
pageSize: pagination.pageSize,
|
|
524
|
+
maxPageIndex: maxPages,
|
|
525
|
+
maxPageSize: maxResultsPerPage,
|
|
490
526
|
onPaginationChange: setPagination,
|
|
491
527
|
lastRow: lastRow,
|
|
492
528
|
totalRows: totalRows,
|
|
529
|
+
currentRowsCount: data.length,
|
|
493
530
|
isDisabled: isEmpty,
|
|
531
|
+
isMoreDisabled: isPaginationMoreDisabled,
|
|
494
532
|
variant: paginationType,
|
|
495
533
|
rowsPerPageLabel: t("pagination.rowsperpage"),
|
|
496
534
|
currentPageLabel: t("pagination.page"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useMaterialReactTable","MRT_TableContainer","useTranslation","ArrowDownIcon","ArrowUnsortedIcon","ChevronDownIcon","DragIndicatorIcon","MoreIcon","densityValues","Pagination","usePagination","DataFilters","DataTableRowActions","useRowReordering","DataTableSettings","MenuButton","Box","useOdysseyDesignTokens","useScrollIndication","styled","EmptyState","Callout","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","displayColumnDefOptions","header","grow","muiTableBodyCellProps","align","sx","overflow","width","className","muiTableHeadCellProps","minWidth","children","marginInline","opacity","padding","ScrollableTableContainer","shouldForwardProp","prop","odysseyDesignTokens","isScrollableStart","isScrollableEnd","marginBlockEnd","Spacing4","position","borderInlineStartColor","HueNeutral200","borderInlineStartStyle","borderInlineStartWidth","BorderWidthMain","background","content","pointerEvents","top","left","bottom","Spacing6","zIndex","transition","TransitionDurationMain","TransitionTimingMain","borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth","right","DataTable","bulkActionMenuItems","columns","currentPage","emptyPlaceholder","errorMessage","errorMessageProp","filters","filtersProp","getData","getRowId","getRowIdProp","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSearchSubmitButton","hasSorting","initialDensity","initialSearchValue","noResultsPlaceholder","onChangeRowSelection","onReorderRows","paginationType","renderDetailPanel","resultsPerPage","rowActionButtons","rowActionMenuItems","searchDelayTime","totalRows","t","data","setData","pagination","setPagination","pageIndex","pageSize","draggingRow","setDraggingRow","isTableContainerScrolledToStart","setIsTableContainerScrolledToStart","isTableContainerScrolledToEnd","setIsTableContainerScrolledToEnd","tableInnerContainerWidth","setTableInnerContainerWidth","tableOuterContainerRef","tableInnerContainerRef","tableContentRef","columnSorting","setColumnSorting","columnVisibility","setColumnVisibility","rowDensity","setRowDensity","rowSelection","setRowSelection","search","setSearch","setFilters","initialFilters","setInitialFilters","isLoading","setIsLoading","isEmpty","setIsEmpty","setErrorMessage","tableOuterContainer","current","tableInnerContainer","dragHandleStyles","dragHandleText","draggableTableBodyRowClassName","handleDragHandleKeyDown","handleDragHandleOnDragCapture","handleDragHandleOnDragEnd","resetDraggingAndHoveredRow","updateRowOrder","page","row","id","rowDensityClassName","renderRowActions","currentIndex","index","rowIndex","undefined","convertFilterSelectOptions","options","map","option","label","value","convertColumnToFilter","column","enableColumnFilter","accessorKey","variant","filterVariant","filterSelectOptions","dataTableFilters","providedFilters","reduce","accumulator","item","foundColumn","find","filter","concat","defaultCell","cell","getValue","hasTextWrapping","columnDef","enableWrapping","whiteSpace","textOverflow","emptyState","noResultsInnerContent","heading","description","emptyStateInnerContent","columnIds","columnOrder","dataTable","state","sorting","globalFilter","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","ExpandMoreIcon","enableColumnActions","enableColumnResizing","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","enableHiding","enablePagination","layoutMode","manualFiltering","manualSorting","muiTablePaperProps","elevation","selectAllMode","muiTableBodyProps","defaultColumn","Cell","enableRowOrdering","Boolean","enableRowDragging","muiTableBodyRowProps","table","currentRowId","draggingRowId","hoveredRowId","getState","hoveredRow","muiRowDragHandleProps","onKeyDown","event","onBlur","onDragEnd","onDragCapture","enableRowActions","positionActionsColumn","enableRowSelection","onRowSelectionChange","enableSorting","onSortingChange","currentColumn","sortedColumn","enableRowVirtualization","rowVirtualizerInstanceRef","rowVirtualizerOptions","overscan","renderEmptyRowsFallback","muiTableProps","ref","muiTableContainerProps","enableExpandAll","bulkActionMenuButton","buttonVariant","endIcon","isDisabled","Object","keys","length","ariaLabel","incomingData","sort","error","lastRow","marginBottom","onChangeSearch","onChangeFilters","defaultSearchTerm","additionalActions","severity","text","onPaginationChange","rowsPerPageLabel","currentPageLabel","previousLabel","nextLabel","loadMoreLabel","MemoizedDataTable","displayName"],"sources":["../../src/DataTable/DataTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n MRT_Cell,\n MRT_DensityState,\n MRT_Row,\n MRT_SortingState,\n MRT_TableOptions,\n MRT_RowSelectionState,\n MRT_RowVirtualizer,\n MRT_VisibilityState,\n useMaterialReactTable,\n MRT_TableContainer,\n MRT_Column,\n MRT_ColumnDef,\n MRT_TableInstance,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ArrowDownIcon,\n ArrowUnsortedIcon,\n ChevronDownIcon,\n DragIndicatorIcon,\n MoreIcon,\n} from \"../icons.generated\";\nimport { densityValues } from \"./constants\";\nimport { Pagination, paginationTypeValues, usePagination } from \"../Pagination\";\nimport { DataFilter, DataFilters } from \"../labs/DataFilters\";\nimport {\n DataTableRowActions,\n DataTableRowActionsProps,\n} from \"./DataTableRowActions\";\nimport { useRowReordering } from \"./useRowReordering\";\nimport { DataTableSettings } from \"./DataTableSettings\";\nimport { MenuButton, MenuButtonProps } from \"../MenuButton\";\nimport { Box } from \"../Box\";\nimport { DataTableRowSelectionState, DataTableRowData } from \".\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { useScrollIndication } from \"./useScrollIndication\";\nimport styled from \"@emotion/styled\";\nimport { EmptyState } from \"../EmptyState\";\nimport { Callout } from \"../Callout\";\n\nexport type DataTableColumn<T extends DataTableRowData> = MRT_ColumnDef<T> & {\n /**\n * @deprecated use hasTextWrapping instead of enableWrapping\n */\n enableWrapping?: boolean;\n hasTextWrapping?: boolean;\n};\n\ntype DataTableColumnInstance<T extends DataTableRowData> = Omit<\n MRT_Column<T, unknown>,\n \"columnDef\"\n> & {\n columnDef: DataTableColumn<T>;\n};\n\ntype DataTableCell<T extends DataTableRowData> = Omit<MRT_Cell<T>, \"column\"> & {\n column: DataTableColumnInstance<T>;\n};\n\nexport type DataTableGetDataType = {\n page?: number;\n resultsPerPage?: number;\n search?: string;\n filters?: DataFilter[];\n sort?: MRT_SortingState;\n};\n\nexport type DataTableOnReorderRowsType = {\n rowId: string;\n newRowIndex: number;\n};\n\nexport type DataTableRenderDetailPanelType = {\n row: MRT_Row<DataTableRowData>;\n table: MRT_TableInstance<DataTableRowData>;\n};\n\nexport type DataTableProps = {\n /**\n * Menu items to include in the bulk actions menu, which appears above the table if a row or rows are selected\n */\n bulkActionMenuItems?: (\n selectedRows: MRT_RowSelectionState,\n ) => MenuButtonProps[\"children\"];\n /**\n * The columns that make up the table\n */\n columns: DataTableColumn<DataTableRowData>[];\n /**\n * The current page number.\n */\n currentPage?: number;\n /**\n * If `error` is not undefined, the DataTable will indicate an error.\n */\n errorMessage?: string;\n /**\n * The component to display when the table is displaying the initial empty state\n */\n emptyPlaceholder?: ReactNode;\n /**\n * An optional set of filters to render in the filters menu\n */\n filters?: Array<DataFilter | DataTableColumn<DataTableRowData> | string>;\n /**\n * The function to get the ID of a row\n */\n getRowId?: MRT_TableOptions<DataTableRowData>[\"getRowId\"];\n /**\n * Callback that fires whenever the table needs to fetch new data, due to changes in\n * page, results per page, search input, filters, or sorting\n */\n getData: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: DataTableGetDataType) =>\n | MRT_TableOptions<DataTableRowData>[\"data\"]\n | Promise<MRT_TableOptions<DataTableRowData>[\"data\"]>;\n /**\n * If true, the end user can resize individual columns.\n */\n hasColumnResizing?: boolean;\n /**\n * If true, the end user will be able to show/hide columns.\n */\n hasColumnVisibility?: boolean;\n /**\n * If true, the end user will be able to filter columns.\n */\n hasFilters?: boolean;\n /**\n * If true, the table will include pagination controls.\n */\n hasPagination?: boolean;\n /**\n * If true, the end user can reorder rows via a drag-and-drop interface\n */\n hasRowReordering?: boolean;\n /**\n * If true, the table will include checkboxes on each row, enabling\n * the user to select some or all rows.\n */\n hasRowSelection?: boolean;\n /**\n * If true, the global table search controls will be shown.\n */\n hasSearch?: boolean;\n /**\n * If true, the search field will include a Search button, rather than\n * firing on input change.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * If true, the end user can sort columns (ascending, descending, or neither)\n */\n hasSorting?: boolean;\n /**\n * If true, the end user will be able to change the table density.\n */\n hasChangeableDensity?: boolean;\n /**\n * The initial density (height & padding) of the table rows. This is available even if the\n * table density isn't changeable by the end user via hasChangeableDensity.\n */\n initialDensity?: (typeof densityValues)[number];\n /**\n * The initial search value\n */\n initialSearchValue?: string;\n /**\n * The component to display when the query returns no results\n */\n noResultsPlaceholder?: ReactNode;\n /**\n * The number of results per page.\n */\n resultsPerPage?: number;\n /**\n * The optional component to display when expanding a row.\n */\n renderDetailPanel?: MRT_TableOptions<DataTableRowData>[\"renderDetailPanel\"];\n /**\n * Action buttons to display in each row\n */\n rowActionButtons?: DataTableRowActionsProps[\"rowActionButtons\"];\n /**\n * Menu items to include in the optional actions menu on each row.\n */\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * Callback that fires when a row (or rows) is selected or unselected.\n */\n onChangeRowSelection?: (rowSelection: DataTableRowSelectionState) => void;\n /**\n * Callback that fires when the user reorders rows within the table. Can be used\n * to propogate order change to the backend.\n */\n onReorderRows?: ({ rowId, newRowIndex }: DataTableOnReorderRowsType) => void;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n paginationType?: (typeof paginationTypeValues)[number];\n /**\n * The total number of rows in the table. Optional, because it's sometimes impossible\n * to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n */\n totalRows?: number;\n};\n\nconst displayColumnDefOptions = {\n \"mrt-row-actions\": {\n header: \"\",\n grow: true,\n muiTableBodyCellProps: {\n align: \"right\",\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n },\n muiTableHeadCellProps: {\n align: \"right\",\n sx: {\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n },\n },\n \"mrt-row-drag\": {\n header: \"\",\n muiTableBodyCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n className: \"ods-drag-handle\",\n },\n muiTableHeadCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n children: (\n // Add a spacer to simulate the width of the drag handle in the column.\n // Without this, the head cells are offset from their body cell counterparts\n <Box sx={{ marginInline: \"-0.1rem\" }}>\n <DragIndicatorIcon sx={{ marginInline: 1, opacity: 0 }} />\n </Box>\n ),\n },\n },\n \"mrt-row-select\": {\n muiTableHeadCellProps: {\n padding: \"checkbox\",\n },\n muiTableBodyCellProps: {\n padding: \"checkbox\",\n },\n },\n \"mrt-row-expand\": {\n header: \"\",\n },\n};\n\nconst ScrollableTableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isScrollableStart\" &&\n prop !== \"isScrollableEnd\",\n})(\n ({\n odysseyDesignTokens,\n isScrollableStart,\n isScrollableEnd,\n }: {\n odysseyDesignTokens: DesignTokens;\n isScrollableStart: boolean;\n isScrollableEnd: boolean;\n }) => ({\n marginBlockEnd: odysseyDesignTokens.Spacing4,\n position: \"relative\",\n borderInlineStartColor: isScrollableStart\n ? odysseyDesignTokens.HueNeutral200\n : \"transparent\",\n borderInlineStartStyle: \"solid\",\n borderInlineStartWidth: odysseyDesignTokens.BorderWidthMain,\n \"::before\": {\n background:\n \"linear-gradient(-90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n content: '\"\"',\n opacity: isScrollableStart ? \"0.075\" : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: odysseyDesignTokens.Spacing6,\n zIndex: 100,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n },\n borderInlineEndColor: isScrollableEnd\n ? odysseyDesignTokens.HueNeutral200\n : \"transparent\",\n borderInlineEndStyle: \"solid\",\n borderInlineEndWidth: odysseyDesignTokens.BorderWidthMain,\n \"::after\": {\n background:\n \"linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n content: '\"\"',\n opacity: isScrollableEnd ? \"0.075\" : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n width: odysseyDesignTokens.Spacing6,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n },\n }),\n);\n\nconst DataTable = ({\n bulkActionMenuItems,\n columns,\n currentPage = 1,\n emptyPlaceholder,\n errorMessage: errorMessageProp,\n filters: filtersProp,\n getData,\n getRowId: getRowIdProp,\n hasChangeableDensity,\n hasColumnResizing,\n hasColumnVisibility,\n hasFilters,\n hasPagination,\n hasRowReordering,\n hasRowSelection,\n hasSearch,\n hasSearchSubmitButton,\n hasSorting,\n initialDensity = densityValues[0],\n initialSearchValue = \"\",\n noResultsPlaceholder,\n onChangeRowSelection,\n onReorderRows,\n paginationType = \"paged\",\n renderDetailPanel,\n resultsPerPage = 20,\n rowActionButtons,\n rowActionMenuItems,\n searchDelayTime,\n totalRows,\n}: DataTableProps) => {\n const { t } = useTranslation();\n\n const [data, setData] = useState<DataTableRowData[]>([]);\n const [pagination, setPagination] = useState({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n const [draggingRow, setDraggingRow] =\n useState<MRT_Row<DataTableRowData> | null>();\n const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] =\n useState(true);\n const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] =\n useState(true);\n const [tableInnerContainerWidth, setTableInnerContainerWidth] =\n useState<string>(\"100%\");\n const tableOuterContainerRef = useRef<HTMLDivElement>(null);\n const tableInnerContainerRef = useRef<HTMLDivElement>(null);\n const tableContentRef = useRef<HTMLTableElement>(null);\n\n // Table states\n const [columnSorting, setColumnSorting] = useState<MRT_SortingState>([]);\n const [columnVisibility, setColumnVisibility] =\n useState<MRT_VisibilityState>();\n const [rowDensity, setRowDensity] =\n useState<MRT_DensityState>(initialDensity);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n const [search, setSearch] = useState<string>(initialSearchValue);\n const [filters, setFilters] = useState<DataFilter[]>();\n const [initialFilters, setInitialFilters] = useState<DataFilter[]>();\n const [isLoading, setIsLoading] = useState<boolean | undefined>(true);\n const [isEmpty, setIsEmpty] = useState<boolean | undefined>();\n const [errorMessage, setErrorMessage] = useState<string | undefined>(\n errorMessageProp,\n );\n\n useScrollIndication({\n tableOuterContainer: tableOuterContainerRef.current,\n tableInnerContainer: tableInnerContainerRef.current,\n setIsTableContainerScrolledToStart: setIsTableContainerScrolledToStart,\n setIsTableContainerScrolledToEnd: setIsTableContainerScrolledToEnd,\n setTableInnerContainerWidth: setTableInnerContainerWidth,\n });\n\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const {\n dragHandleStyles,\n dragHandleText,\n draggableTableBodyRowClassName,\n handleDragHandleKeyDown,\n handleDragHandleOnDragCapture,\n handleDragHandleOnDragEnd,\n resetDraggingAndHoveredRow,\n updateRowOrder,\n } = useRowReordering({\n totalRows,\n onReorderRows,\n data,\n setData,\n draggingRow,\n setDraggingRow,\n resultsPerPage: pagination.pageSize,\n page: pagination.pageIndex,\n });\n\n const getRowId = getRowIdProp\n ? getRowIdProp\n : (row: DataTableRowData) => row.id;\n\n const rowDensityClassName = useMemo(() => {\n return rowDensity === \"spacious\"\n ? \"MuiTableBody-spacious\"\n : rowDensity === \"compact\"\n ? \"MuiTableBody-compact\"\n : \"MuiTableBody-default\";\n }, [rowDensity]);\n\n const renderRowActions = useCallback(\n ({ row }: { row: MRT_Row<DataTableRowData> }) => {\n const currentIndex =\n row.index + (pagination.pageIndex - 1) * pagination.pageSize;\n return (\n <DataTableRowActions\n row={row}\n rowIndex={currentIndex}\n rowActionButtons={rowActionButtons}\n rowActionMenuItems={rowActionMenuItems}\n totalRows={totalRows}\n updateRowOrder={\n hasRowReordering && onReorderRows ? updateRowOrder : undefined\n }\n />\n );\n },\n [\n pagination,\n rowActionButtons,\n rowActionMenuItems,\n hasRowReordering,\n onReorderRows,\n totalRows,\n updateRowOrder,\n ],\n );\n\n /**\n * This hack is to provide compatibility with Material-React-Table's\n * filterOptions format, which allows for strings and { label: string, value: string }\n */\n const convertFilterSelectOptions = useCallback(\n (options: DataTableColumn<DataTableRowData>[\"filterSelectOptions\"]) =>\n options?.map((option) =>\n typeof option === \"string\"\n ? {\n label: option,\n value: option,\n }\n : {\n // If the option isn't a string, it must have value and/or option defined\n // If either is undefined, use the other\n label: option.label ?? option.value,\n value: option.value ?? option.label,\n },\n ),\n [],\n );\n\n const convertColumnToFilter = useCallback(\n (column: DataTableColumn<DataTableRowData>) =>\n column.enableColumnFilter !== false && column.accessorKey\n ? ({\n id: column.accessorKey,\n label: column.header,\n variant: column.filterVariant,\n options: convertFilterSelectOptions(column.filterSelectOptions),\n } satisfies DataFilter as DataFilter)\n : null,\n [convertFilterSelectOptions],\n );\n\n /**\n * Filters default to the columns, but can be overridden\n * with the `filters` prop. `filters` should be an array\n * of column accessorKeys, column defs, or DataFilters.\n */\n const dataTableFilters = useMemo(() => {\n const providedFilters = filtersProp || columns;\n return providedFilters.reduce<DataFilter[]>((accumulator, item) => {\n if (typeof item === \"string\") {\n const foundColumn = columns.find(\n (column) => column.accessorKey === item,\n );\n if (foundColumn) {\n const filter = convertColumnToFilter(foundColumn);\n if (filter) {\n return accumulator.concat(filter);\n }\n }\n } else if (\"accessorKey\" in item) {\n // Checks if it's a column\n const filter = convertColumnToFilter(item);\n if (filter) {\n return accumulator.concat(filter);\n }\n } else if (\"label\" in item) {\n // Checks if it's a DataFilter\n return accumulator.concat(item);\n }\n // If none of the conditions match, item is ignored (not mapping to undefined)\n return accumulator;\n }, []);\n }, [columns, filtersProp, convertColumnToFilter]);\n\n const defaultCell = useCallback(\n ({ cell }: { cell: DataTableCell<DataTableRowData> }) => {\n const value = cell.getValue<string>();\n const hasTextWrapping =\n cell.column.columnDef.hasTextWrapping ||\n cell.column.columnDef.enableWrapping;\n\n return hasTextWrapping ? (\n value\n ) : (\n <Box\n sx={{\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n }}\n >\n {value}\n </Box>\n );\n },\n [],\n );\n\n const emptyState = useCallback(() => {\n const noResultsInnerContent = noResultsPlaceholder || (\n <EmptyState\n heading={t(\"table.noresults.heading\")}\n description={t(\"table.noresults.text\")}\n />\n );\n\n const emptyStateInnerContent =\n emptyPlaceholder && isEmpty ? emptyPlaceholder : noResultsInnerContent;\n\n return (\n <Box sx={{ width: tableInnerContainerWidth }}>\n {emptyStateInnerContent}\n </Box>\n );\n }, [\n emptyPlaceholder,\n isEmpty,\n noResultsPlaceholder,\n t,\n tableInnerContainerWidth,\n ]);\n\n const columnIds = useMemo(() => {\n return columns.map((column) => column.accessorKey);\n }, [columns]);\n\n const columnOrder = useMemo(\n () => [\n \"mrt-row-drag\",\n \"mrt-row-select\",\n \"mrt-row-expand\",\n ...columnIds,\n \"mrt-row-actions\",\n ],\n [columnIds],\n ) as string[];\n\n const dataTable = useMaterialReactTable({\n columns: columns,\n data: data,\n getRowId: getRowId,\n state: {\n sorting: columnSorting,\n globalFilter: search,\n columnVisibility,\n isLoading,\n rowSelection,\n columnOrder,\n },\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n ExpandMoreIcon: ChevronDownIcon,\n },\n\n // Base table settings\n enableColumnActions: false,\n enableColumnResizing: hasColumnResizing,\n enableDensityToggle: false,\n enableFilters: false,\n enableFullScreenToggle: false,\n enableGlobalFilter: false,\n enableHiding: false,\n enablePagination: false,\n layoutMode: \"grid-no-grow\",\n manualFiltering: true,\n manualSorting: true,\n muiTablePaperProps: {\n elevation: 0,\n sx: {\n overflow: \"visible\",\n },\n },\n selectAllMode: \"all\",\n displayColumnDefOptions:\n displayColumnDefOptions as MRT_TableOptions<DataTableRowData>[\"displayColumnDefOptions\"],\n muiTableBodyProps: () => ({\n className: rowDensityClassName,\n }),\n defaultColumn: {\n Cell: defaultCell,\n },\n\n // Reordering\n enableRowOrdering: hasRowReordering && Boolean(onReorderRows),\n enableRowDragging: hasRowReordering && Boolean(onReorderRows),\n muiTableBodyRowProps: ({ table, row }) => ({\n className: draggableTableBodyRowClassName({\n currentRowId: row.id,\n draggingRowId: draggingRow?.id,\n hoveredRowId: table.getState().hoveredRow?.id,\n }),\n }),\n muiRowDragHandleProps: ({ table, row }) => ({\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => resetDraggingAndHoveredRow(table),\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n sx: dragHandleStyles,\n ...dragHandleText,\n }),\n\n // Row actions\n enableRowActions:\n (hasRowReordering === true && onReorderRows) ||\n rowActionButtons ||\n rowActionMenuItems\n ? true\n : false,\n positionActionsColumn:\n \"last\" as MRT_TableOptions<DataTableRowData>[\"positionActionsColumn\"],\n renderRowActions: ({ row }) => renderRowActions({ row }),\n\n // Row selection\n enableRowSelection: hasRowSelection,\n onRowSelectionChange: setRowSelection,\n\n // Sorting\n enableSorting: hasSorting,\n onSortingChange: setColumnSorting,\n muiTableHeadCellProps: ({ column: currentColumn }) => ({\n className: columnSorting.find(\n (sortedColumn) => sortedColumn.id === currentColumn.id,\n )\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n\n // Virtualization\n enableRowVirtualization:\n paginationType !== \"loadMore\" && pagination.pageSize > 50,\n rowVirtualizerInstanceRef:\n useRef<MRT_RowVirtualizer<HTMLDivElement, HTMLTableRowElement>>(null),\n rowVirtualizerOptions: {\n overscan: 4,\n },\n\n // States\n renderEmptyRowsFallback: emptyState,\n\n // Refs\n muiTableProps: {\n ref: tableContentRef,\n },\n\n muiTableContainerProps: {\n ref: tableInnerContainerRef,\n },\n\n // Row expansion\n enableExpandAll: false,\n renderDetailPanel: renderDetailPanel,\n });\n\n // Effects\n const bulkActionMenuButton = useMemo(\n () => (\n <>\n <MenuButton\n buttonVariant=\"secondary\"\n endIcon={<MoreIcon />}\n isDisabled={Object.keys(rowSelection).length === 0}\n ariaLabel=\"More actions\"\n >\n {bulkActionMenuItems?.(rowSelection)}\n </MenuButton>\n </>\n ),\n [bulkActionMenuItems, rowSelection],\n );\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n setErrorMessage(errorMessageProp);\n try {\n const incomingData = await getData?.({\n page: pagination.pageIndex,\n resultsPerPage: pagination.pageSize,\n search,\n filters,\n sort: columnSorting,\n });\n setData(incomingData);\n } catch (error) {\n setErrorMessage(typeof error === \"string\" ? error : t(\"table.error\"));\n } finally {\n setIsLoading(false);\n }\n })();\n }, [\n columnSorting,\n errorMessageProp,\n filters,\n getData,\n pagination,\n search,\n t,\n ]);\n\n useEffect(() => {\n if (!initialFilters && filters) {\n setInitialFilters(filters);\n }\n\n setIsEmpty(\n pagination.pageIndex === currentPage &&\n pagination.pageSize === resultsPerPage &&\n search === \"\" &&\n filters === initialFilters &&\n data.length === 0,\n );\n }, [\n filters,\n pagination,\n search,\n data,\n currentPage,\n initialFilters,\n resultsPerPage,\n ]);\n\n useEffect(() => {\n onChangeRowSelection?.(rowSelection);\n }, [rowSelection, onChangeRowSelection]);\n\n const { lastRow } = usePagination({\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n totalRows,\n });\n\n // Render the table\n return (\n <>\n {(hasSearch ||\n hasFilters ||\n hasChangeableDensity ||\n hasColumnVisibility ||\n bulkActionMenuItems) && (\n <Box sx={{ marginBottom: 5 }}>\n <DataFilters\n onChangeSearch={hasSearch ? setSearch : undefined}\n onChangeFilters={hasFilters ? setFilters : undefined}\n hasSearchSubmitButton={hasSearchSubmitButton}\n searchDelayTime={searchDelayTime}\n filters={hasFilters ? dataTableFilters : undefined}\n defaultSearchTerm={initialSearchValue}\n isDisabled={isEmpty}\n additionalActions={\n <>\n <DataTableSettings\n hasChangeableDensity={hasChangeableDensity}\n rowDensity={rowDensity}\n setRowDensity={setRowDensity}\n hasColumnVisibility={hasColumnVisibility}\n columns={columns}\n columnVisibility={columnVisibility}\n setColumnVisibility={setColumnVisibility}\n />\n {bulkActionMenuItems && bulkActionMenuButton}\n </>\n }\n />\n </Box>\n )}\n\n {errorMessage && (\n <Box sx={{ marginBlockEnd: 2 }}>\n <Callout severity=\"error\" text={errorMessage} />\n </Box>\n )}\n\n <ScrollableTableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isScrollableStart={!isTableContainerScrolledToStart}\n isScrollableEnd={!isTableContainerScrolledToEnd}\n ref={tableOuterContainerRef}\n >\n <MRT_TableContainer table={dataTable} />\n </ScrollableTableContainer>\n\n {hasPagination && (\n <Pagination\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n onPaginationChange={setPagination}\n lastRow={lastRow}\n totalRows={totalRows}\n isDisabled={isEmpty}\n variant={paginationType}\n rowsPerPageLabel={t(\"pagination.rowsperpage\")}\n currentPageLabel={t(\"pagination.page\")}\n previousLabel={t(\"pagination.previous\")}\n nextLabel={t(\"pagination.next\")}\n loadMoreLabel={t(\"pagination.loadmore\")}\n />\n )}\n </>\n );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useMaterialReactTable","MRT_TableContainer","useTranslation","ArrowDownIcon","ArrowUnsortedIcon","ChevronDownIcon","DragIndicatorIcon","MoreIcon","densityValues","Pagination","usePagination","DataFilters","DataTableRowActions","useRowReordering","DataTableSettings","MenuButton","Box","useOdysseyDesignTokens","useScrollIndication","styled","EmptyState","Button","Callout","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ScrollableTableContainer","shouldForwardProp","prop","odysseyDesignTokens","isScrollableStart","isScrollableEnd","marginBlockEnd","Spacing4","position","borderInlineStartColor","HueNeutral200","borderInlineStartStyle","borderInlineStartWidth","BorderWidthMain","background","content","opacity","pointerEvents","top","left","bottom","width","Spacing6","zIndex","transition","TransitionDurationMain","TransitionTimingMain","borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth","right","DataTable","bulkActionMenuItems","columns","currentPage","emptyPlaceholder","errorMessage","errorMessageProp","filters","filtersProp","getData","getRowId","getRowIdProp","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSearchSubmitButton","hasSorting","initialDensity","initialSearchValue","isPaginationMoreDisabled","noResultsPlaceholder","onChangeRowSelection","onReorderRows","paginationType","renderDetailPanel","resultsPerPage","maxResultsPerPage","maxPages","rowActionButtons","rowActionMenuItems","searchDelayTime","totalRows","t","data","setData","pagination","setPagination","pageIndex","pageSize","draggingRow","setDraggingRow","isTableContainerScrolledToStart","setIsTableContainerScrolledToStart","isTableContainerScrolledToEnd","setIsTableContainerScrolledToEnd","tableInnerContainerWidth","setTableInnerContainerWidth","tableOuterContainerRef","tableInnerContainerRef","tableContentRef","columnSorting","setColumnSorting","columnVisibility","setColumnVisibility","rowDensity","setRowDensity","rowSelection","setRowSelection","search","setSearch","setFilters","initialFilters","setInitialFilters","isLoading","setIsLoading","isEmpty","setIsEmpty","setErrorMessage","tableOuterContainer","current","tableInnerContainer","dragHandleStyles","dragHandleText","draggableTableBodyRowClassName","handleDragHandleKeyDown","handleDragHandleOnDragCapture","handleDragHandleOnDragEnd","resetDraggingAndHoveredRow","updateRowOrder","page","row","id","rowDensityClassName","renderRowActions","currentIndex","index","rowIndex","undefined","convertFilterSelectOptions","options","map","option","label","value","convertColumnToFilter","column","enableColumnFilter","accessorKey","header","variant","filterVariant","filterSelectOptions","dataTableFilters","providedFilters","reduce","accumulator","item","foundColumn","find","filter","concat","defaultCell","cell","getValue","hasTextWrapping","columnDef","enableWrapping","sx","whiteSpace","textOverflow","overflow","children","emptyState","noResultsInnerContent","heading","description","emptyStateInnerContent","columnIds","columnOrder","shouldDisplayRowActions","dataTable","state","sorting","globalFilter","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","ExpandMoreIcon","enableColumnActions","enableColumnResizing","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","enableHiding","enablePagination","layoutMode","manualFiltering","manualSorting","muiTablePaperProps","elevation","selectAllMode","displayColumnDefOptions","grow","muiTableBodyCellProps","align","className","muiTableHeadCellProps","display","visibility","endIcon","size","ariaLabel","isDisabled","minWidth","marginInline","padding","muiTableBodyProps","defaultColumn","Cell","getIsResizing","enableRowOrdering","Boolean","enableRowDragging","muiTableBodyRowProps","table","currentRowId","draggingRowId","hoveredRowId","getState","hoveredRow","muiRowDragHandleProps","onKeyDown","event","onBlur","onDragEnd","onDragCapture","enableRowActions","positionActionsColumn","enableRowSelection","onRowSelectionChange","enableSorting","onSortingChange","currentColumn","sortedColumn","enableRowVirtualization","rowVirtualizerInstanceRef","rowVirtualizerOptions","overscan","renderEmptyRowsFallback","muiTableProps","ref","muiTableContainerProps","enableExpandAll","bulkActionMenuButton","buttonVariant","Object","keys","length","incomingData","sort","error","prev","lastRow","currentRowsCount","marginBottom","onChangeSearch","onChangeFilters","defaultSearchTerm","additionalActions","severity","text","maxPageIndex","maxPageSize","onPaginationChange","isMoreDisabled","rowsPerPageLabel","currentPageLabel","previousLabel","nextLabel","loadMoreLabel","MemoizedDataTable","displayName"],"sources":["../../src/DataTable/DataTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n MRT_Cell,\n MRT_DensityState,\n MRT_Row,\n MRT_SortingState,\n MRT_TableOptions,\n MRT_RowSelectionState,\n MRT_RowVirtualizer,\n MRT_VisibilityState,\n useMaterialReactTable,\n MRT_TableContainer,\n MRT_Column,\n MRT_ColumnDef,\n MRT_TableInstance,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ArrowDownIcon,\n ArrowUnsortedIcon,\n ChevronDownIcon,\n DragIndicatorIcon,\n MoreIcon,\n} from \"../icons.generated\";\nimport { densityValues } from \"./constants\";\nimport { Pagination, paginationTypeValues, usePagination } from \"../Pagination\";\nimport { DataFilter, DataFilters } from \"../labs/DataFilters\";\nimport {\n DataTableRowActions,\n DataTableRowActionsProps,\n} from \"./DataTableRowActions\";\nimport { useRowReordering } from \"./useRowReordering\";\nimport { DataTableSettings } from \"./DataTableSettings\";\nimport { MenuButton, MenuButtonProps } from \"../MenuButton\";\nimport { Box } from \"../Box\";\nimport { DataTableRowSelectionState, DataTableRowData } from \".\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { useScrollIndication } from \"./useScrollIndication\";\nimport styled from \"@emotion/styled\";\nimport { EmptyState } from \"../EmptyState\";\nimport { Button } from \"../Button\";\nimport { Callout } from \"../Callout\";\n\nexport type DataTableColumn<T extends DataTableRowData> = MRT_ColumnDef<T> & {\n /**\n * @deprecated use hasTextWrapping instead of enableWrapping\n */\n enableWrapping?: boolean;\n hasTextWrapping?: boolean;\n};\n\ntype DataTableColumnInstance<T extends DataTableRowData> = Omit<\n MRT_Column<T, unknown>,\n \"columnDef\"\n> & {\n columnDef: DataTableColumn<T>;\n};\n\ntype DataTableCell<T extends DataTableRowData> = Omit<MRT_Cell<T>, \"column\"> & {\n column: DataTableColumnInstance<T>;\n};\n\nexport type DataTableGetDataType = {\n page?: number;\n resultsPerPage?: number;\n search?: string;\n filters?: DataFilter[];\n sort?: MRT_SortingState;\n};\n\nexport type DataTableOnReorderRowsType = {\n rowId: string;\n newRowIndex: number;\n};\n\nexport type DataTableRenderDetailPanelType = {\n row: MRT_Row<DataTableRowData>;\n table: MRT_TableInstance<DataTableRowData>;\n};\n\nexport type DataTableProps = {\n /**\n * Menu items to include in the bulk actions menu, which appears above the table if a row or rows are selected\n */\n bulkActionMenuItems?: (\n selectedRows: MRT_RowSelectionState,\n ) => MenuButtonProps[\"children\"];\n /**\n * The columns that make up the table\n */\n columns: DataTableColumn<DataTableRowData>[];\n /**\n * The current page number.\n */\n currentPage?: number;\n /**\n * If `error` is not undefined, the DataTable will indicate an error.\n */\n errorMessage?: string;\n /**\n * The component to display when the table is displaying the initial empty state\n */\n emptyPlaceholder?: ReactNode;\n /**\n * An optional set of filters to render in the filters menu\n */\n filters?: Array<DataFilter | DataTableColumn<DataTableRowData> | string>;\n /**\n * The function to get the ID of a row\n */\n getRowId?: MRT_TableOptions<DataTableRowData>[\"getRowId\"];\n /**\n * Callback that fires whenever the table needs to fetch new data, due to changes in\n * page, results per page, search input, filters, or sorting\n */\n getData: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: DataTableGetDataType) =>\n | MRT_TableOptions<DataTableRowData>[\"data\"]\n | Promise<MRT_TableOptions<DataTableRowData>[\"data\"]>;\n /**\n * If true, the end user can resize individual columns.\n */\n hasColumnResizing?: boolean;\n /**\n * If true, the end user will be able to show/hide columns.\n */\n hasColumnVisibility?: boolean;\n /**\n * If true, the end user will be able to filter columns.\n */\n hasFilters?: boolean;\n /**\n * If true, the table will include pagination controls.\n */\n hasPagination?: boolean;\n /**\n * If true, the end user can reorder rows via a drag-and-drop interface\n */\n hasRowReordering?: boolean;\n /**\n * If true, the table will include checkboxes on each row, enabling\n * the user to select some or all rows.\n */\n hasRowSelection?: boolean;\n /**\n * If true, the global table search controls will be shown.\n */\n hasSearch?: boolean;\n /**\n * If true, the search field will include a Search button, rather than\n * firing on input change.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * If true, the end user can sort columns (ascending, descending, or neither)\n */\n hasSorting?: boolean;\n /**\n * If true, the end user will be able to change the table density.\n */\n hasChangeableDensity?: boolean;\n /**\n * The initial density (height & padding) of the table rows. This is available even if the\n * table density isn't changeable by the end user via hasChangeableDensity.\n */\n initialDensity?: (typeof densityValues)[number];\n /**\n * The initial search value\n */\n initialSearchValue?: string;\n /**\n * Is the next or show-more button disabled\n */\n isPaginationMoreDisabled?: boolean;\n /**\n * The component to display when the query returns no results\n */\n noResultsPlaceholder?: ReactNode;\n /**\n * The number of results per page.\n */\n resultsPerPage?: number;\n /**\n * The optional component to display when expanding a row.\n */\n renderDetailPanel?: MRT_TableOptions<DataTableRowData>[\"renderDetailPanel\"];\n /**\n * Action buttons to display in each row\n */\n rowActionButtons?: DataTableRowActionsProps[\"rowActionButtons\"];\n /**\n * Menu items to include in the optional actions menu on each row.\n */\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * Callback that fires when a row (or rows) is selected or unselected.\n */\n onChangeRowSelection?: (rowSelection: DataTableRowSelectionState) => void;\n /**\n * Callback that fires when the user reorders rows within the table. Can be used\n * to propogate order change to the backend.\n */\n onReorderRows?: ({ rowId, newRowIndex }: DataTableOnReorderRowsType) => void;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n paginationType?: (typeof paginationTypeValues)[number];\n /**\n * The total number of rows in the table. Optional, because it's sometimes impossible\n * to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n */\n totalRows?: number;\n /**\n * The largest number of rows allowed to be shown per page. This only affects the row input\n * in pagination.\n */\n maxResultsPerPage?: number;\n /**\n * The highest page number allowed to be manually input in pagination\n */\n maxPages?: number;\n};\n\nconst ScrollableTableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isScrollableStart\" &&\n prop !== \"isScrollableEnd\",\n})(\n ({\n odysseyDesignTokens,\n isScrollableStart,\n isScrollableEnd,\n }: {\n odysseyDesignTokens: DesignTokens;\n isScrollableStart: boolean;\n isScrollableEnd: boolean;\n }) => ({\n marginBlockEnd: odysseyDesignTokens.Spacing4,\n position: \"relative\",\n borderInlineStartColor: isScrollableStart\n ? odysseyDesignTokens.HueNeutral200\n : \"transparent\",\n borderInlineStartStyle: \"solid\",\n borderInlineStartWidth: odysseyDesignTokens.BorderWidthMain,\n \"::before\": {\n background:\n \"linear-gradient(-90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n content: '\"\"',\n opacity: isScrollableStart ? \"0.075\" : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: odysseyDesignTokens.Spacing6,\n zIndex: 100,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n },\n borderInlineEndColor: isScrollableEnd\n ? odysseyDesignTokens.HueNeutral200\n : \"transparent\",\n borderInlineEndStyle: \"solid\",\n borderInlineEndWidth: odysseyDesignTokens.BorderWidthMain,\n \"::after\": {\n background:\n \"linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.33) 50%, rgba(0, 0, 0, 1) 100%)\",\n content: '\"\"',\n opacity: isScrollableEnd ? \"0.075\" : \"0\",\n pointerEvents: \"none\",\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n width: odysseyDesignTokens.Spacing6,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n },\n }),\n);\n\nconst DataTable = ({\n bulkActionMenuItems,\n columns,\n currentPage = 1,\n emptyPlaceholder,\n errorMessage: errorMessageProp,\n filters: filtersProp,\n getData,\n getRowId: getRowIdProp,\n hasChangeableDensity,\n hasColumnResizing,\n hasColumnVisibility,\n hasFilters,\n hasPagination,\n hasRowReordering,\n hasRowSelection,\n hasSearch,\n hasSearchSubmitButton,\n hasSorting,\n initialDensity = densityValues[0],\n initialSearchValue = \"\",\n isPaginationMoreDisabled,\n noResultsPlaceholder,\n onChangeRowSelection,\n onReorderRows,\n paginationType = \"paged\",\n renderDetailPanel,\n resultsPerPage = 20,\n maxResultsPerPage,\n maxPages,\n rowActionButtons,\n rowActionMenuItems,\n searchDelayTime,\n totalRows,\n}: DataTableProps) => {\n const { t } = useTranslation();\n\n const [data, setData] = useState<DataTableRowData[]>([]);\n const [pagination, setPagination] = useState({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n const [draggingRow, setDraggingRow] =\n useState<MRT_Row<DataTableRowData> | null>();\n const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] =\n useState(true);\n const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] =\n useState(true);\n const [tableInnerContainerWidth, setTableInnerContainerWidth] =\n useState<string>(\"100%\");\n const tableOuterContainerRef = useRef<HTMLDivElement>(null);\n const tableInnerContainerRef = useRef<HTMLDivElement>(null);\n const tableContentRef = useRef<HTMLTableElement>(null);\n\n // Table states\n const [columnSorting, setColumnSorting] = useState<MRT_SortingState>([]);\n const [columnVisibility, setColumnVisibility] =\n useState<MRT_VisibilityState>();\n const [rowDensity, setRowDensity] =\n useState<MRT_DensityState>(initialDensity);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n const [search, setSearch] = useState<string>(initialSearchValue);\n const [filters, setFilters] = useState<DataFilter[]>();\n const [initialFilters, setInitialFilters] = useState<DataFilter[]>();\n const [isLoading, setIsLoading] = useState<boolean | undefined>(true);\n const [isEmpty, setIsEmpty] = useState<boolean | undefined>();\n const [errorMessage, setErrorMessage] = useState<string | undefined>(\n errorMessageProp,\n );\n\n useScrollIndication({\n tableOuterContainer: tableOuterContainerRef.current,\n tableInnerContainer: tableInnerContainerRef.current,\n setIsTableContainerScrolledToStart: setIsTableContainerScrolledToStart,\n setIsTableContainerScrolledToEnd: setIsTableContainerScrolledToEnd,\n setTableInnerContainerWidth: setTableInnerContainerWidth,\n });\n\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const {\n dragHandleStyles,\n dragHandleText,\n draggableTableBodyRowClassName,\n handleDragHandleKeyDown,\n handleDragHandleOnDragCapture,\n handleDragHandleOnDragEnd,\n resetDraggingAndHoveredRow,\n updateRowOrder,\n } = useRowReordering({\n totalRows,\n onReorderRows,\n data,\n setData,\n draggingRow,\n setDraggingRow,\n resultsPerPage: pagination.pageSize,\n page: pagination.pageIndex,\n });\n\n const getRowId = getRowIdProp\n ? getRowIdProp\n : (row: DataTableRowData) => row.id;\n\n const rowDensityClassName = useMemo(() => {\n return rowDensity === \"spacious\"\n ? \"MuiTableBody-spacious\"\n : rowDensity === \"compact\"\n ? \"MuiTableBody-compact\"\n : \"MuiTableBody-default\";\n }, [rowDensity]);\n\n const renderRowActions = useCallback(\n ({ row }: { row: MRT_Row<DataTableRowData> }) => {\n const currentIndex =\n row.index + (pagination.pageIndex - 1) * pagination.pageSize;\n return (\n <DataTableRowActions\n row={row}\n rowIndex={currentIndex}\n rowActionButtons={rowActionButtons}\n rowActionMenuItems={rowActionMenuItems}\n totalRows={totalRows}\n updateRowOrder={\n hasRowReordering && onReorderRows ? updateRowOrder : undefined\n }\n />\n );\n },\n [\n pagination,\n rowActionButtons,\n rowActionMenuItems,\n hasRowReordering,\n onReorderRows,\n totalRows,\n updateRowOrder,\n ],\n );\n\n /**\n * This hack is to provide compatibility with Material-React-Table's\n * filterOptions format, which allows for strings and { label: string, value: string }\n */\n const convertFilterSelectOptions = useCallback(\n (options: DataTableColumn<DataTableRowData>[\"filterSelectOptions\"]) =>\n options?.map((option) =>\n typeof option === \"string\"\n ? {\n label: option,\n value: option,\n }\n : {\n // If the option isn't a string, it must have value and/or option defined\n // If either is undefined, use the other\n label: option.label ?? option.value,\n value: option.value ?? option.label,\n },\n ),\n [],\n );\n\n const convertColumnToFilter = useCallback(\n (column: DataTableColumn<DataTableRowData>) =>\n column.enableColumnFilter !== false && column.accessorKey\n ? ({\n id: column.accessorKey,\n label: column.header,\n variant: column.filterVariant,\n options: convertFilterSelectOptions(column.filterSelectOptions),\n } satisfies DataFilter as DataFilter)\n : null,\n [convertFilterSelectOptions],\n );\n\n /**\n * Filters default to the columns, but can be overridden\n * with the `filters` prop. `filters` should be an array\n * of column accessorKeys, column defs, or DataFilters.\n */\n const dataTableFilters = useMemo(() => {\n const providedFilters = filtersProp || columns;\n return providedFilters.reduce<DataFilter[]>((accumulator, item) => {\n if (typeof item === \"string\") {\n const foundColumn = columns.find(\n (column) => column.accessorKey === item,\n );\n if (foundColumn) {\n const filter = convertColumnToFilter(foundColumn);\n if (filter) {\n return accumulator.concat(filter);\n }\n }\n } else if (\"accessorKey\" in item) {\n // Checks if it's a column\n const filter = convertColumnToFilter(item);\n if (filter) {\n return accumulator.concat(filter);\n }\n } else if (\"label\" in item) {\n // Checks if it's a DataFilter\n return accumulator.concat(item);\n }\n // If none of the conditions match, item is ignored (not mapping to undefined)\n return accumulator;\n }, []);\n }, [columns, filtersProp, convertColumnToFilter]);\n\n const defaultCell = useCallback(\n ({ cell }: { cell: DataTableCell<DataTableRowData> }) => {\n const value = cell.getValue<string>();\n const hasTextWrapping =\n cell.column.columnDef.hasTextWrapping ||\n cell.column.columnDef.enableWrapping;\n\n return hasTextWrapping ? (\n value\n ) : (\n <Box\n sx={{\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n }}\n >\n {value}\n </Box>\n );\n },\n [],\n );\n\n const emptyState = useCallback(() => {\n const noResultsInnerContent = noResultsPlaceholder || (\n <EmptyState\n heading={t(\"table.noresults.heading\")}\n description={t(\"table.noresults.text\")}\n />\n );\n\n const emptyStateInnerContent =\n emptyPlaceholder && isEmpty ? emptyPlaceholder : noResultsInnerContent;\n\n return (\n <Box sx={{ width: tableInnerContainerWidth }}>\n {emptyStateInnerContent}\n </Box>\n );\n }, [\n emptyPlaceholder,\n isEmpty,\n noResultsPlaceholder,\n t,\n tableInnerContainerWidth,\n ]);\n\n const columnIds = useMemo(() => {\n return columns.map((column) => column.accessorKey);\n }, [columns]);\n\n const columnOrder = useMemo(\n () => [\n \"mrt-row-drag\",\n \"mrt-row-select\",\n \"mrt-row-expand\",\n ...columnIds,\n \"mrt-row-actions\",\n ],\n [columnIds],\n ) as string[];\n\n const shouldDisplayRowActions = useMemo(\n () =>\n (hasRowReordering === true && onReorderRows) ||\n rowActionButtons ||\n rowActionMenuItems\n ? true\n : false,\n [hasRowReordering, onReorderRows, rowActionButtons, rowActionMenuItems],\n );\n\n const dataTable = useMaterialReactTable({\n columns: columns,\n data: data,\n getRowId: getRowId,\n state: {\n sorting: columnSorting,\n globalFilter: search,\n columnVisibility,\n isLoading,\n rowSelection,\n columnOrder,\n },\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n ExpandMoreIcon: ChevronDownIcon,\n },\n\n // Base table settings\n enableColumnActions: false,\n enableColumnResizing: hasColumnResizing,\n enableDensityToggle: false,\n enableFilters: false,\n enableFullScreenToggle: false,\n enableGlobalFilter: false,\n enableHiding: false,\n enablePagination: false,\n layoutMode: \"grid-no-grow\",\n manualFiltering: true,\n manualSorting: true,\n muiTablePaperProps: {\n elevation: 0,\n sx: {\n overflow: \"visible\",\n },\n },\n selectAllMode: \"all\",\n displayColumnDefOptions: {\n \"mrt-row-actions\": {\n header: \"\",\n grow: true,\n muiTableBodyCellProps: {\n align: \"right\",\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n },\n muiTableHeadCellProps: {\n align: \"right\",\n sx: {\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n children: (\n <Box sx={{ display: \"flex\", visibility: \"hidden\" }}>\n {rowActionButtons && rowActionButtons({ id: null })}\n {((hasRowReordering && onReorderRows) || rowActionMenuItems) && (\n <Box>\n <Button\n endIcon={<MoreIcon />}\n size=\"small\"\n variant=\"floating\"\n ariaLabel={t(\"table.moreactions.arialabel\")}\n isDisabled\n />\n </Box>\n )}\n </Box>\n ),\n },\n },\n \"mrt-row-drag\": {\n header: \"\",\n muiTableBodyCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n className: \"ods-drag-handle\",\n },\n muiTableHeadCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n children: (\n // Add a spacer to simulate the width of the drag handle in the column.\n // Without this, the head cells are offset from their body cell counterparts\n <Box sx={{ marginInline: \"-0.1rem\" }}>\n <DragIndicatorIcon sx={{ marginInline: 1, opacity: 0 }} />\n </Box>\n ),\n },\n },\n \"mrt-row-select\": {\n muiTableHeadCellProps: {\n padding: \"checkbox\",\n },\n muiTableBodyCellProps: {\n padding: \"checkbox\",\n },\n },\n \"mrt-row-expand\": {\n header: \"\",\n },\n },\n muiTableBodyProps: () => ({\n className: rowDensityClassName,\n }),\n defaultColumn: {\n Cell: defaultCell,\n },\n muiTableBodyCellProps: ({ column }) => ({\n className: column.getIsResizing() ? \"isResizing\" : \"\",\n }),\n\n // Reordering\n enableRowOrdering: hasRowReordering && Boolean(onReorderRows),\n enableRowDragging: hasRowReordering && Boolean(onReorderRows),\n muiTableBodyRowProps: ({ table, row }) => ({\n className: draggableTableBodyRowClassName({\n currentRowId: row.id,\n draggingRowId: draggingRow?.id,\n hoveredRowId: table.getState().hoveredRow?.id,\n }),\n }),\n muiRowDragHandleProps: ({ table, row }) => ({\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => resetDraggingAndHoveredRow(table),\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n sx: dragHandleStyles,\n ...dragHandleText,\n }),\n\n // Row actions\n enableRowActions: shouldDisplayRowActions,\n positionActionsColumn:\n \"last\" as MRT_TableOptions<DataTableRowData>[\"positionActionsColumn\"],\n renderRowActions: ({ row }) => renderRowActions({ row }),\n\n // Row selection\n enableRowSelection: hasRowSelection,\n onRowSelectionChange: setRowSelection,\n\n // Sorting\n enableSorting: hasSorting,\n onSortingChange: setColumnSorting,\n muiTableHeadCellProps: ({ column: currentColumn }) => ({\n className: columnSorting.find(\n (sortedColumn) => sortedColumn.id === currentColumn.id,\n )\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n\n // Virtualization\n enableRowVirtualization:\n paginationType !== \"loadMore\" && pagination.pageSize > 50,\n rowVirtualizerInstanceRef:\n useRef<MRT_RowVirtualizer<HTMLDivElement, HTMLTableRowElement>>(null),\n rowVirtualizerOptions: {\n overscan: 4,\n },\n\n // States\n renderEmptyRowsFallback: emptyState,\n\n // Refs\n muiTableProps: {\n ref: tableContentRef,\n className:\n !shouldDisplayRowActions && hasColumnResizing\n ? \"ods-hide-spacer-column\"\n : \"\",\n },\n\n muiTableContainerProps: {\n ref: tableInnerContainerRef,\n },\n\n // Row expansion\n enableExpandAll: false,\n renderDetailPanel: renderDetailPanel,\n });\n\n // Effects\n const bulkActionMenuButton = useMemo(\n () => (\n <>\n <MenuButton\n buttonVariant=\"secondary\"\n endIcon={<MoreIcon />}\n isDisabled={Object.keys(rowSelection).length === 0}\n ariaLabel=\"More actions\"\n >\n {bulkActionMenuItems?.(rowSelection)}\n </MenuButton>\n </>\n ),\n [bulkActionMenuItems, rowSelection],\n );\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n setErrorMessage(errorMessageProp);\n try {\n const incomingData = await getData?.({\n page: pagination.pageIndex,\n resultsPerPage: pagination.pageSize,\n search,\n filters,\n sort: columnSorting,\n });\n setData(incomingData);\n } catch (error) {\n setErrorMessage(typeof error === \"string\" ? error : t(\"table.error\"));\n } finally {\n setIsLoading(false);\n }\n })();\n }, [\n columnSorting,\n errorMessageProp,\n filters,\n getData,\n pagination,\n search,\n t,\n ]);\n\n useEffect(() => {\n if (!initialFilters && filters) {\n setInitialFilters(filters);\n }\n\n setIsEmpty(\n pagination.pageIndex === currentPage &&\n pagination.pageSize === resultsPerPage &&\n search === \"\" &&\n filters === initialFilters &&\n data.length === 0,\n );\n }, [\n filters,\n pagination,\n search,\n data,\n currentPage,\n initialFilters,\n resultsPerPage,\n ]);\n\n useEffect(() => {\n setPagination((prev) => ({\n pageIndex: 1,\n pageSize: prev.pageSize,\n }));\n }, [filters, search]);\n\n useEffect(() => {\n onChangeRowSelection?.(rowSelection);\n }, [rowSelection, onChangeRowSelection]);\n\n const { lastRow } = usePagination({\n currentRowsCount: data.length,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n totalRows,\n });\n\n // Render the table\n return (\n <>\n {(hasSearch ||\n hasFilters ||\n hasChangeableDensity ||\n hasColumnVisibility ||\n bulkActionMenuItems) && (\n <Box sx={{ marginBottom: 5 }}>\n <DataFilters\n onChangeSearch={hasSearch ? setSearch : undefined}\n onChangeFilters={hasFilters ? setFilters : undefined}\n hasSearchSubmitButton={hasSearchSubmitButton}\n searchDelayTime={searchDelayTime}\n filters={hasFilters ? dataTableFilters : undefined}\n defaultSearchTerm={initialSearchValue}\n isDisabled={isEmpty}\n additionalActions={\n <>\n <DataTableSettings\n hasChangeableDensity={hasChangeableDensity}\n rowDensity={rowDensity}\n setRowDensity={setRowDensity}\n hasColumnVisibility={hasColumnVisibility}\n columns={columns}\n columnVisibility={columnVisibility}\n setColumnVisibility={setColumnVisibility}\n />\n {bulkActionMenuItems && bulkActionMenuButton}\n </>\n }\n />\n </Box>\n )}\n\n {errorMessage && (\n <Box sx={{ marginBlockEnd: 2 }}>\n <Callout severity=\"error\" text={errorMessage} />\n </Box>\n )}\n\n <ScrollableTableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isScrollableStart={!isTableContainerScrolledToStart}\n isScrollableEnd={!isTableContainerScrolledToEnd}\n ref={tableOuterContainerRef}\n >\n <MRT_TableContainer table={dataTable} />\n </ScrollableTableContainer>\n\n {hasPagination && (\n <Pagination\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n maxPageIndex={maxPages}\n maxPageSize={maxResultsPerPage}\n onPaginationChange={setPagination}\n lastRow={lastRow}\n totalRows={totalRows}\n currentRowsCount={data.length}\n isDisabled={isEmpty}\n isMoreDisabled={isPaginationMoreDisabled}\n variant={paginationType}\n rowsPerPageLabel={t(\"pagination.rowsperpage\")}\n currentPageLabel={t(\"pagination.page\")}\n previousLabel={t(\"pagination.previous\")}\n nextLabel={t(\"pagination.next\")}\n loadMoreLabel={t(\"pagination.loadmore\")}\n />\n )}\n </>\n );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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"}
|
|
@@ -61,18 +61,22 @@ const PaginationButtonContainer = styled("div")({
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
const Pagination = ({
|
|
64
|
+
currentPageLabel,
|
|
65
|
+
isDisabled,
|
|
66
|
+
isMoreDisabled,
|
|
67
|
+
lastRow,
|
|
68
|
+
loadMoreLabel,
|
|
69
|
+
maxPageIndex,
|
|
70
|
+
maxPageSize,
|
|
71
|
+
nextLabel,
|
|
72
|
+
onPaginationChange,
|
|
64
73
|
pageIndex,
|
|
65
74
|
pageSize,
|
|
66
|
-
onPaginationChange,
|
|
67
|
-
lastRow,
|
|
68
|
-
totalRows,
|
|
69
|
-
isDisabled,
|
|
70
|
-
variant,
|
|
71
|
-
rowsPerPageLabel,
|
|
72
|
-
currentPageLabel,
|
|
73
75
|
previousLabel,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
rowsPerPageLabel,
|
|
77
|
+
totalRows,
|
|
78
|
+
currentRowsCount,
|
|
79
|
+
variant
|
|
76
80
|
}) => {
|
|
77
81
|
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
78
82
|
const [page, setPage] = useState(pageIndex);
|
|
@@ -87,6 +91,7 @@ const Pagination = ({
|
|
|
87
91
|
} = usePagination({
|
|
88
92
|
pageIndex,
|
|
89
93
|
pageSize,
|
|
94
|
+
currentRowsCount: currentRowsCount || pageSize,
|
|
90
95
|
totalRows
|
|
91
96
|
});
|
|
92
97
|
const handlePaginationChange = useCallback(() => {
|
|
@@ -114,11 +119,13 @@ const Pagination = ({
|
|
|
114
119
|
}
|
|
115
120
|
}, [page, onPaginationChange]);
|
|
116
121
|
const setPageFromEvent = useCallback(event => {
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
const value = maxPageIndex ? Math.min(parseInt(event.target.value), maxPageIndex) : parseInt(event.target.value);
|
|
123
|
+
setPage(value);
|
|
124
|
+
}, [setPage, maxPageIndex]);
|
|
119
125
|
const setRowsPerPageFromEvent = useCallback(event => {
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
const value = maxPageSize ? Math.min(parseInt(event.target.value), maxPageSize) : parseInt(event.target.value);
|
|
127
|
+
setRowsPerPage(value);
|
|
128
|
+
}, [setRowsPerPage, maxPageSize]);
|
|
122
129
|
const handleLoadMore = useCallback(() => {
|
|
123
130
|
onPaginationChange({
|
|
124
131
|
pageIndex: 1,
|
|
@@ -138,16 +145,18 @@ const Pagination = ({
|
|
|
138
145
|
});
|
|
139
146
|
}, [onPaginationChange, page, rowsPerPage]);
|
|
140
147
|
const loadMoreIsDisabled = useMemo(() => {
|
|
141
|
-
return totalRows ? rowsPerPage >= totalRows : false;
|
|
142
|
-
}, [rowsPerPage, totalRows]);
|
|
143
|
-
const nextButtonDisabled = useMemo(() => (totalRows ? lastRow >= totalRows : false) || isDisabled, [totalRows, lastRow, isDisabled]);
|
|
148
|
+
return isMoreDisabled || (totalRows ? rowsPerPage >= totalRows : false);
|
|
149
|
+
}, [isMoreDisabled, rowsPerPage, totalRows]);
|
|
150
|
+
const nextButtonDisabled = useMemo(() => isMoreDisabled || (totalRows ? lastRow >= totalRows : false) || isDisabled, [isMoreDisabled, totalRows, lastRow, isDisabled]);
|
|
144
151
|
const previousButtonDisabled = useMemo(() => pageIndex <= 1 || isDisabled, [pageIndex, isDisabled]);
|
|
145
152
|
const rowsPerPageInputProps = useMemo(() => ({
|
|
146
|
-
"aria-label": rowsPerPageLabel
|
|
147
|
-
|
|
153
|
+
"aria-label": rowsPerPageLabel,
|
|
154
|
+
max: maxPageSize || totalRows
|
|
155
|
+
}), [maxPageSize, rowsPerPageLabel, totalRows]);
|
|
148
156
|
const currentPageInputProps = useMemo(() => ({
|
|
149
|
-
"aria-label": currentPageLabel
|
|
150
|
-
|
|
157
|
+
"aria-label": currentPageLabel,
|
|
158
|
+
max: maxPageIndex
|
|
159
|
+
}), [currentPageLabel, maxPageIndex]);
|
|
151
160
|
return variant === "paged" ? _jsxs(PaginationContainer, {
|
|
152
161
|
children: [_jsxs(PaginationSegment, {
|
|
153
162
|
odysseyDesignTokens: odysseyDesignTokens,
|