@deviceinsight/ng-ui-components 6.18.0-SNAPSHOT
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/LICENSE +1 -0
- package/README.md +99 -0
- package/lib/cjs/__mocks__/i18n.d.ts +5 -0
- package/lib/cjs/__mocks__/i18n.d.ts.map +1 -0
- package/lib/cjs/__mocks__/i18n.js +9 -0
- package/lib/cjs/assets/img/icon-arrow-back.png +0 -0
- package/lib/cjs/assets/img/icon_folder_closed.png +0 -0
- package/lib/cjs/assets/img/icon_folder_closed_light.png +0 -0
- package/lib/cjs/assets/img/icon_folder_open.png +0 -0
- package/lib/cjs/assets/img/icon_folder_open_light.png +0 -0
- package/lib/cjs/assets/img/icon_help_light_24.png +0 -0
- package/lib/cjs/assets/img/icon_variablenode.png +0 -0
- package/lib/cjs/assets/img/icon_variablenode_light.png +0 -0
- package/lib/cjs/assets/img/toastify_msg_error_24.png +0 -0
- package/lib/cjs/assets/img/toastify_msg_success_24.png +0 -0
- package/lib/cjs/assets/react-datepicker-custom.css +43 -0
- package/lib/cjs/assets/react-select-custom.css +13 -0
- package/lib/cjs/assets/react-select.css +428 -0
- package/lib/cjs/assets/react-toastify-custom.css +16 -0
- package/lib/cjs/assets/search-box.css +29 -0
- package/lib/cjs/assets/style.css +255 -0
- package/lib/cjs/assets/svg/icon_add.svg +3 -0
- package/lib/cjs/assets/svg/icon_calendar.svg +50 -0
- package/lib/cjs/assets/svg/icon_chevron_left.svg +6 -0
- package/lib/cjs/assets/svg/icon_chevron_right.svg +6 -0
- package/lib/cjs/assets/svg/icon_cross.svg +3 -0
- package/lib/cjs/assets/svg/icon_download.svg +5 -0
- package/lib/cjs/assets/svg/icon_duplicate.svg +10 -0
- package/lib/cjs/assets/svg/icon_edit.svg +6 -0
- package/lib/cjs/assets/svg/icon_folder_loading.svg +21 -0
- package/lib/cjs/assets/svg/icon_fullscreen.svg +6 -0
- package/lib/cjs/assets/svg/icon_gear.svg +5 -0
- package/lib/cjs/assets/svg/icon_help_light.svg +3 -0
- package/lib/cjs/assets/svg/icon_key.svg +3 -0
- package/lib/cjs/assets/svg/icon_lupe.svg +14 -0
- package/lib/cjs/assets/svg/icon_menu_horizontal.svg +5 -0
- package/lib/cjs/assets/svg/icon_menu_vertical.svg +5 -0
- package/lib/cjs/assets/svg/icon_reload.svg +6 -0
- package/lib/cjs/assets/svg/icon_upload.svg +7 -0
- package/lib/cjs/assets/svg/icon_warning_triangle.svg +12 -0
- package/lib/cjs/assets/svg/triangle_down.svg +3 -0
- package/lib/cjs/assets/svg/triangle_left.svg +3 -0
- package/lib/cjs/assets/svg/triangle_right.svg +3 -0
- package/lib/cjs/assets/svg/triangle_up.svg +3 -0
- package/lib/cjs/assets/svg/triangle_up_and_down.svg +4 -0
- package/lib/cjs/components/chart/Chart.d.ts +38 -0
- package/lib/cjs/components/chart/Chart.d.ts.map +1 -0
- package/lib/cjs/components/chart/Chart.js +231 -0
- package/lib/cjs/components/colorpicker/ColorPickerPopper.d.ts +24 -0
- package/lib/cjs/components/colorpicker/ColorPickerPopper.d.ts.map +1 -0
- package/lib/cjs/components/colorpicker/ColorPickerPopper.js +72 -0
- package/lib/cjs/components/colorpicker/GradientColorPicker.d.ts +63 -0
- package/lib/cjs/components/colorpicker/GradientColorPicker.d.ts.map +1 -0
- package/lib/cjs/components/colorpicker/GradientColorPicker.js +154 -0
- package/lib/cjs/components/colorpicker/GridColorPicker.d.ts +41 -0
- package/lib/cjs/components/colorpicker/GridColorPicker.d.ts.map +1 -0
- package/lib/cjs/components/colorpicker/GridColorPicker.js +36 -0
- package/lib/cjs/components/contentHeader/ContentHeader.d.ts +25 -0
- package/lib/cjs/components/contentHeader/ContentHeader.d.ts.map +1 -0
- package/lib/cjs/components/contentHeader/ContentHeader.js +58 -0
- package/lib/cjs/components/infobox/InfoBox.d.ts +22 -0
- package/lib/cjs/components/infobox/InfoBox.d.ts.map +1 -0
- package/lib/cjs/components/infobox/InfoBox.js +61 -0
- package/lib/cjs/components/input/DateInput.d.ts +28 -0
- package/lib/cjs/components/input/DateInput.d.ts.map +1 -0
- package/lib/cjs/components/input/DateInput.js +186 -0
- package/lib/cjs/components/input/DateTimeInput.d.ts +27 -0
- package/lib/cjs/components/input/DateTimeInput.d.ts.map +1 -0
- package/lib/cjs/components/input/DateTimeInput.js +79 -0
- package/lib/cjs/components/input/SelectWithSearch.d.ts +62 -0
- package/lib/cjs/components/input/SelectWithSearch.d.ts.map +1 -0
- package/lib/cjs/components/input/SelectWithSearch.js +119 -0
- package/lib/cjs/components/input/SelectWithSearchAsync.d.ts +58 -0
- package/lib/cjs/components/input/SelectWithSearchAsync.d.ts.map +1 -0
- package/lib/cjs/components/input/SelectWithSearchAsync.js +126 -0
- package/lib/cjs/components/input/UrnInput.d.ts +22 -0
- package/lib/cjs/components/input/UrnInput.d.ts.map +1 -0
- package/lib/cjs/components/input/UrnInput.js +59 -0
- package/lib/cjs/components/input/ValidatedTextInput.d.ts +35 -0
- package/lib/cjs/components/input/ValidatedTextInput.d.ts.map +1 -0
- package/lib/cjs/components/input/ValidatedTextInput.js +36 -0
- package/lib/cjs/components/input/__tests__/DateInput.spec.d.ts +2 -0
- package/lib/cjs/components/input/__tests__/DateInput.spec.d.ts.map +1 -0
- package/lib/cjs/components/input/__tests__/DateInput.spec.js +113 -0
- package/lib/cjs/components/input/__tests__/DateTimeInput.spec.d.ts +2 -0
- package/lib/cjs/components/input/__tests__/DateTimeInput.spec.d.ts.map +1 -0
- package/lib/cjs/components/input/__tests__/DateTimeInput.spec.js +17 -0
- package/lib/cjs/components/input/__tests__/SelectWithSearchAsync.spec.d.ts +2 -0
- package/lib/cjs/components/input/__tests__/SelectWithSearchAsync.spec.d.ts.map +1 -0
- package/lib/cjs/components/input/__tests__/SelectWithSearchAsync.spec.js +48 -0
- package/lib/cjs/components/link/RouteLink.d.ts +31 -0
- package/lib/cjs/components/link/RouteLink.d.ts.map +1 -0
- package/lib/cjs/components/link/RouteLink.js +81 -0
- package/lib/cjs/components/multiMenu/MultiMenu.d.ts +27 -0
- package/lib/cjs/components/multiMenu/MultiMenu.d.ts.map +1 -0
- package/lib/cjs/components/multiMenu/MultiMenu.js +59 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuContext.d.ts +7 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuContext.d.ts.map +1 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuContext.js +10 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuItem.d.ts +14 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuItem.d.ts.map +1 -0
- package/lib/cjs/components/multiMenu/components/MultiMenuItem.js +53 -0
- package/lib/cjs/components/pagination/Pagination.d.ts +37 -0
- package/lib/cjs/components/pagination/Pagination.d.ts.map +1 -0
- package/lib/cjs/components/pagination/Pagination.js +143 -0
- package/lib/cjs/components/pagination/__tests__/Pagination.spec.d.ts +2 -0
- package/lib/cjs/components/pagination/__tests__/Pagination.spec.d.ts.map +1 -0
- package/lib/cjs/components/pagination/__tests__/Pagination.spec.js +115 -0
- package/lib/cjs/components/periodpicker/PeriodPicker.d.ts +23 -0
- package/lib/cjs/components/periodpicker/PeriodPicker.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/PeriodPicker.js +40 -0
- package/lib/cjs/components/periodpicker/components/Inputs.d.ts +12 -0
- package/lib/cjs/components/periodpicker/components/Inputs.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/components/Inputs.js +88 -0
- package/lib/cjs/components/periodpicker/components/Menu.d.ts +11 -0
- package/lib/cjs/components/periodpicker/components/Menu.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/components/Menu.js +125 -0
- package/lib/cjs/components/periodpicker/components/MonthPicker.d.ts +19 -0
- package/lib/cjs/components/periodpicker/components/MonthPicker.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/components/MonthPicker.js +91 -0
- package/lib/cjs/components/periodpicker/periods.d.ts +33 -0
- package/lib/cjs/components/periodpicker/periods.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/periods.js +71 -0
- package/lib/cjs/components/periodpicker/types.d.ts +5 -0
- package/lib/cjs/components/periodpicker/types.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/types.js +2 -0
- package/lib/cjs/components/periodpicker/usePeriodName.d.ts +7 -0
- package/lib/cjs/components/periodpicker/usePeriodName.d.ts.map +1 -0
- package/lib/cjs/components/periodpicker/usePeriodName.js +41 -0
- package/lib/cjs/components/prompt/Prompt.d.ts +23 -0
- package/lib/cjs/components/prompt/Prompt.d.ts.map +1 -0
- package/lib/cjs/components/prompt/Prompt.js +57 -0
- package/lib/cjs/components/prompt/withPrompt.d.ts +7 -0
- package/lib/cjs/components/prompt/withPrompt.d.ts.map +1 -0
- package/lib/cjs/components/prompt/withPrompt.js +62 -0
- package/lib/cjs/components/reactable/Reactable.d.ts +38 -0
- package/lib/cjs/components/reactable/Reactable.d.ts.map +1 -0
- package/lib/cjs/components/reactable/Reactable.js +47 -0
- package/lib/cjs/components/reactable/helpers/ReactableTable.d.ts +21 -0
- package/lib/cjs/components/reactable/helpers/ReactableTable.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/ReactableTable.js +62 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.d.ts +9 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.js +85 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableHeader.d.ts +16 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableHeader.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableHeader.js +78 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableRow.d.ts +16 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableRow.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/ReactableTableRow.js +82 -0
- package/lib/cjs/components/reactable/helpers/ReactableTextFilter.d.ts +9 -0
- package/lib/cjs/components/reactable/helpers/ReactableTextFilter.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/ReactableTextFilter.js +43 -0
- package/lib/cjs/components/reactable/helpers/helper.d.ts +7 -0
- package/lib/cjs/components/reactable/helpers/helper.d.ts.map +1 -0
- package/lib/cjs/components/reactable/helpers/helper.js +120 -0
- package/lib/cjs/components/reactable/types.d.ts +38 -0
- package/lib/cjs/components/reactable/types.d.ts.map +1 -0
- package/lib/cjs/components/reactable/types.js +2 -0
- package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts +69 -0
- package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts.map +1 -0
- package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js +184 -0
- package/lib/cjs/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.d.ts +2 -0
- package/lib/cjs/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.d.ts.map +1 -0
- package/lib/cjs/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.js +166 -0
- package/lib/cjs/components/slider/Slider.d.ts +30 -0
- package/lib/cjs/components/slider/Slider.d.ts.map +1 -0
- package/lib/cjs/components/slider/Slider.js +63 -0
- package/lib/cjs/components/slider/useLimitStyling.d.ts +3 -0
- package/lib/cjs/components/slider/useLimitStyling.d.ts.map +1 -0
- package/lib/cjs/components/slider/useLimitStyling.js +52 -0
- package/lib/cjs/components/svg/SvgImage.d.ts +12 -0
- package/lib/cjs/components/svg/SvgImage.d.ts.map +1 -0
- package/lib/cjs/components/svg/SvgImage.js +66 -0
- package/lib/cjs/components/svg/storybookHelper.d.ts +7 -0
- package/lib/cjs/components/svg/storybookHelper.d.ts.map +1 -0
- package/lib/cjs/components/svg/storybookHelper.js +56 -0
- package/lib/cjs/components/svg/types.d.ts +58 -0
- package/lib/cjs/components/svg/types.d.ts.map +1 -0
- package/lib/cjs/components/svg/types.js +2 -0
- package/lib/cjs/components/svg/utils/__tests__/getMutableNodeList.spec.d.ts +2 -0
- package/lib/cjs/components/svg/utils/__tests__/getMutableNodeList.spec.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/__tests__/getMutableNodeList.spec.js +48 -0
- package/lib/cjs/components/svg/utils/createHyperlinkModification.d.ts +4 -0
- package/lib/cjs/components/svg/utils/createHyperlinkModification.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/createHyperlinkModification.js +39 -0
- package/lib/cjs/components/svg/utils/createPositionModification.d.ts +3 -0
- package/lib/cjs/components/svg/utils/createPositionModification.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/createPositionModification.js +22 -0
- package/lib/cjs/components/svg/utils/findConflicts.d.ts +2 -0
- package/lib/cjs/components/svg/utils/findConflicts.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/findConflicts.js +26 -0
- package/lib/cjs/components/svg/utils/getMutableNodeList.d.ts +3 -0
- package/lib/cjs/components/svg/utils/getMutableNodeList.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/getMutableNodeList.js +17 -0
- package/lib/cjs/components/svg/utils/getSvgElement.d.ts +3 -0
- package/lib/cjs/components/svg/utils/getSvgElement.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/getSvgElement.js +12 -0
- package/lib/cjs/components/svg/utils/renderSvg.d.ts +3 -0
- package/lib/cjs/components/svg/utils/renderSvg.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/renderSvg.js +94 -0
- package/lib/cjs/components/svg/utils/transformPositionModifications.d.ts +4 -0
- package/lib/cjs/components/svg/utils/transformPositionModifications.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/transformPositionModifications.js +44 -0
- package/lib/cjs/components/svg/utils/validateSvg.d.ts +3 -0
- package/lib/cjs/components/svg/utils/validateSvg.d.ts.map +1 -0
- package/lib/cjs/components/svg/utils/validateSvg.js +10 -0
- package/lib/cjs/components/tabs/RouteTabs.d.ts +24 -0
- package/lib/cjs/components/tabs/RouteTabs.d.ts.map +1 -0
- package/lib/cjs/components/tabs/RouteTabs.js +96 -0
- package/lib/cjs/components/treeview/TreeView.d.ts +50 -0
- package/lib/cjs/components/treeview/TreeView.d.ts.map +1 -0
- package/lib/cjs/components/treeview/TreeView.js +133 -0
- package/lib/cjs/components/treeview/components/Node.d.ts +37 -0
- package/lib/cjs/components/treeview/components/Node.d.ts.map +1 -0
- package/lib/cjs/components/treeview/components/Node.js +140 -0
- package/lib/cjs/components/treeview/components/NodeInfo.d.ts +25 -0
- package/lib/cjs/components/treeview/components/NodeInfo.d.ts.map +1 -0
- package/lib/cjs/components/treeview/components/NodeInfo.js +93 -0
- package/lib/cjs/components/treeview/constants.d.ts +6 -0
- package/lib/cjs/components/treeview/constants.d.ts.map +1 -0
- package/lib/cjs/components/treeview/constants.js +9 -0
- package/lib/cjs/components/treeview/treeutils.d.ts +59 -0
- package/lib/cjs/components/treeview/treeutils.d.ts.map +1 -0
- package/lib/cjs/components/treeview/treeutils.js +171 -0
- package/lib/cjs/components/treeview/types.d.ts +37 -0
- package/lib/cjs/components/treeview/types.d.ts.map +1 -0
- package/lib/cjs/components/treeview/types.js +2 -0
- package/lib/cjs/components/upload/FileUpload.d.ts +67 -0
- package/lib/cjs/components/upload/FileUpload.d.ts.map +1 -0
- package/lib/cjs/components/upload/FileUpload.js +124 -0
- package/lib/cjs/components/upload/ImageUpload.d.ts +21 -0
- package/lib/cjs/components/upload/ImageUpload.d.ts.map +1 -0
- package/lib/cjs/components/upload/ImageUpload.js +74 -0
- package/lib/cjs/hoc/outsideClick.d.ts +4 -0
- package/lib/cjs/hoc/outsideClick.d.ts.map +1 -0
- package/lib/cjs/hoc/outsideClick.js +101 -0
- package/lib/cjs/i18n/index.d.ts +16 -0
- package/lib/cjs/i18n/index.d.ts.map +1 -0
- package/lib/cjs/i18n/index.js +8 -0
- package/lib/cjs/index.d.ts +52 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +88 -0
- package/lib/cjs/modules/messageBox/messageBox.d.ts +14 -0
- package/lib/cjs/modules/messageBox/messageBox.d.ts.map +1 -0
- package/lib/cjs/modules/messageBox/messageBox.js +71 -0
- package/lib/cjs/modules/utils/nanoidGen.d.ts +2 -0
- package/lib/cjs/modules/utils/nanoidGen.d.ts.map +1 -0
- package/lib/cjs/modules/utils/nanoidGen.js +6 -0
- package/lib/cjs/modules/utils/uuidGen.d.ts +2 -0
- package/lib/cjs/modules/utils/uuidGen.d.ts.map +1 -0
- package/lib/cjs/modules/utils/uuidGen.js +17 -0
- package/lib/cjs/types/i18n.d.ts +5 -0
- package/lib/cjs/types/i18n.d.ts.map +1 -0
- package/lib/cjs/types/i18n.js +2 -0
- package/lib/cjs/types/pagination.d.ts +19 -0
- package/lib/cjs/types/pagination.d.ts.map +1 -0
- package/lib/cjs/types/pagination.js +2 -0
- package/lib/cjs/utils/dayjsLocales.d.ts +10 -0
- package/lib/cjs/utils/dayjsLocales.d.ts.map +1 -0
- package/lib/cjs/utils/dayjsLocales.js +16 -0
- package/lib/cjs/utils/resolvePath.d.ts +2 -0
- package/lib/cjs/utils/resolvePath.d.ts.map +1 -0
- package/lib/cjs/utils/resolvePath.js +7 -0
- package/lib/esm/__mocks__/i18n.d.ts +5 -0
- package/lib/esm/__mocks__/i18n.d.ts.map +1 -0
- package/lib/esm/__mocks__/i18n.js +5 -0
- package/lib/esm/assets/img/icon-arrow-back.png +0 -0
- package/lib/esm/assets/img/icon_folder_closed.png +0 -0
- package/lib/esm/assets/img/icon_folder_closed_light.png +0 -0
- package/lib/esm/assets/img/icon_folder_open.png +0 -0
- package/lib/esm/assets/img/icon_folder_open_light.png +0 -0
- package/lib/esm/assets/img/icon_help_light_24.png +0 -0
- package/lib/esm/assets/img/icon_variablenode.png +0 -0
- package/lib/esm/assets/img/icon_variablenode_light.png +0 -0
- package/lib/esm/assets/img/toastify_msg_error_24.png +0 -0
- package/lib/esm/assets/img/toastify_msg_success_24.png +0 -0
- package/lib/esm/assets/react-datepicker-custom.css +43 -0
- package/lib/esm/assets/react-select-custom.css +13 -0
- package/lib/esm/assets/react-select.css +428 -0
- package/lib/esm/assets/react-toastify-custom.css +16 -0
- package/lib/esm/assets/search-box.css +29 -0
- package/lib/esm/assets/style.css +255 -0
- package/lib/esm/assets/svg/icon_add.svg +3 -0
- package/lib/esm/assets/svg/icon_calendar.svg +50 -0
- package/lib/esm/assets/svg/icon_chevron_left.svg +6 -0
- package/lib/esm/assets/svg/icon_chevron_right.svg +6 -0
- package/lib/esm/assets/svg/icon_cross.svg +3 -0
- package/lib/esm/assets/svg/icon_download.svg +5 -0
- package/lib/esm/assets/svg/icon_duplicate.svg +10 -0
- package/lib/esm/assets/svg/icon_edit.svg +6 -0
- package/lib/esm/assets/svg/icon_folder_loading.svg +21 -0
- package/lib/esm/assets/svg/icon_fullscreen.svg +6 -0
- package/lib/esm/assets/svg/icon_gear.svg +5 -0
- package/lib/esm/assets/svg/icon_help_light.svg +3 -0
- package/lib/esm/assets/svg/icon_key.svg +3 -0
- package/lib/esm/assets/svg/icon_lupe.svg +14 -0
- package/lib/esm/assets/svg/icon_menu_horizontal.svg +5 -0
- package/lib/esm/assets/svg/icon_menu_vertical.svg +5 -0
- package/lib/esm/assets/svg/icon_reload.svg +6 -0
- package/lib/esm/assets/svg/icon_upload.svg +7 -0
- package/lib/esm/assets/svg/icon_warning_triangle.svg +12 -0
- package/lib/esm/assets/svg/triangle_down.svg +3 -0
- package/lib/esm/assets/svg/triangle_left.svg +3 -0
- package/lib/esm/assets/svg/triangle_right.svg +3 -0
- package/lib/esm/assets/svg/triangle_up.svg +3 -0
- package/lib/esm/assets/svg/triangle_up_and_down.svg +4 -0
- package/lib/esm/components/chart/Chart.d.ts +38 -0
- package/lib/esm/components/chart/Chart.d.ts.map +1 -0
- package/lib/esm/components/chart/Chart.js +202 -0
- package/lib/esm/components/colorpicker/ColorPickerPopper.d.ts +24 -0
- package/lib/esm/components/colorpicker/ColorPickerPopper.d.ts.map +1 -0
- package/lib/esm/components/colorpicker/ColorPickerPopper.js +46 -0
- package/lib/esm/components/colorpicker/GradientColorPicker.d.ts +63 -0
- package/lib/esm/components/colorpicker/GradientColorPicker.d.ts.map +1 -0
- package/lib/esm/components/colorpicker/GradientColorPicker.js +125 -0
- package/lib/esm/components/colorpicker/GridColorPicker.d.ts +41 -0
- package/lib/esm/components/colorpicker/GridColorPicker.d.ts.map +1 -0
- package/lib/esm/components/colorpicker/GridColorPicker.js +30 -0
- package/lib/esm/components/contentHeader/ContentHeader.d.ts +25 -0
- package/lib/esm/components/contentHeader/ContentHeader.d.ts.map +1 -0
- package/lib/esm/components/contentHeader/ContentHeader.js +53 -0
- package/lib/esm/components/infobox/InfoBox.d.ts +22 -0
- package/lib/esm/components/infobox/InfoBox.d.ts.map +1 -0
- package/lib/esm/components/infobox/InfoBox.js +36 -0
- package/lib/esm/components/input/DateInput.d.ts +28 -0
- package/lib/esm/components/input/DateInput.d.ts.map +1 -0
- package/lib/esm/components/input/DateInput.js +157 -0
- package/lib/esm/components/input/DateTimeInput.d.ts +27 -0
- package/lib/esm/components/input/DateTimeInput.d.ts.map +1 -0
- package/lib/esm/components/input/DateTimeInput.js +50 -0
- package/lib/esm/components/input/SelectWithSearch.d.ts +62 -0
- package/lib/esm/components/input/SelectWithSearch.d.ts.map +1 -0
- package/lib/esm/components/input/SelectWithSearch.js +90 -0
- package/lib/esm/components/input/SelectWithSearchAsync.d.ts +58 -0
- package/lib/esm/components/input/SelectWithSearchAsync.d.ts.map +1 -0
- package/lib/esm/components/input/SelectWithSearchAsync.js +100 -0
- package/lib/esm/components/input/UrnInput.d.ts +22 -0
- package/lib/esm/components/input/UrnInput.d.ts.map +1 -0
- package/lib/esm/components/input/UrnInput.js +33 -0
- package/lib/esm/components/input/ValidatedTextInput.d.ts +35 -0
- package/lib/esm/components/input/ValidatedTextInput.d.ts.map +1 -0
- package/lib/esm/components/input/ValidatedTextInput.js +30 -0
- package/lib/esm/components/input/__tests__/DateInput.spec.d.ts +2 -0
- package/lib/esm/components/input/__tests__/DateInput.spec.d.ts.map +1 -0
- package/lib/esm/components/input/__tests__/DateInput.spec.js +85 -0
- package/lib/esm/components/input/__tests__/DateTimeInput.spec.d.ts +2 -0
- package/lib/esm/components/input/__tests__/DateTimeInput.spec.d.ts.map +1 -0
- package/lib/esm/components/input/__tests__/DateTimeInput.spec.js +12 -0
- package/lib/esm/components/input/__tests__/SelectWithSearchAsync.spec.d.ts +2 -0
- package/lib/esm/components/input/__tests__/SelectWithSearchAsync.spec.d.ts.map +1 -0
- package/lib/esm/components/input/__tests__/SelectWithSearchAsync.spec.js +43 -0
- package/lib/esm/components/link/RouteLink.d.ts +31 -0
- package/lib/esm/components/link/RouteLink.d.ts.map +1 -0
- package/lib/esm/components/link/RouteLink.js +55 -0
- package/lib/esm/components/multiMenu/MultiMenu.d.ts +27 -0
- package/lib/esm/components/multiMenu/MultiMenu.d.ts.map +1 -0
- package/lib/esm/components/multiMenu/MultiMenu.js +30 -0
- package/lib/esm/components/multiMenu/components/MultiMenuContext.d.ts +7 -0
- package/lib/esm/components/multiMenu/components/MultiMenuContext.d.ts.map +1 -0
- package/lib/esm/components/multiMenu/components/MultiMenuContext.js +5 -0
- package/lib/esm/components/multiMenu/components/MultiMenuItem.d.ts +14 -0
- package/lib/esm/components/multiMenu/components/MultiMenuItem.d.ts.map +1 -0
- package/lib/esm/components/multiMenu/components/MultiMenuItem.js +24 -0
- package/lib/esm/components/pagination/Pagination.d.ts +37 -0
- package/lib/esm/components/pagination/Pagination.d.ts.map +1 -0
- package/lib/esm/components/pagination/Pagination.js +114 -0
- package/lib/esm/components/pagination/__tests__/Pagination.spec.d.ts +2 -0
- package/lib/esm/components/pagination/__tests__/Pagination.spec.d.ts.map +1 -0
- package/lib/esm/components/pagination/__tests__/Pagination.spec.js +87 -0
- package/lib/esm/components/periodpicker/PeriodPicker.d.ts +23 -0
- package/lib/esm/components/periodpicker/PeriodPicker.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/PeriodPicker.js +11 -0
- package/lib/esm/components/periodpicker/components/Inputs.d.ts +12 -0
- package/lib/esm/components/periodpicker/components/Inputs.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/components/Inputs.js +59 -0
- package/lib/esm/components/periodpicker/components/Menu.d.ts +11 -0
- package/lib/esm/components/periodpicker/components/Menu.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/components/Menu.js +96 -0
- package/lib/esm/components/periodpicker/components/MonthPicker.d.ts +19 -0
- package/lib/esm/components/periodpicker/components/MonthPicker.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/components/MonthPicker.js +62 -0
- package/lib/esm/components/periodpicker/periods.d.ts +33 -0
- package/lib/esm/components/periodpicker/periods.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/periods.js +56 -0
- package/lib/esm/components/periodpicker/types.d.ts +5 -0
- package/lib/esm/components/periodpicker/types.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/types.js +1 -0
- package/lib/esm/components/periodpicker/usePeriodName.d.ts +7 -0
- package/lib/esm/components/periodpicker/usePeriodName.d.ts.map +1 -0
- package/lib/esm/components/periodpicker/usePeriodName.js +38 -0
- package/lib/esm/components/prompt/Prompt.d.ts +23 -0
- package/lib/esm/components/prompt/Prompt.d.ts.map +1 -0
- package/lib/esm/components/prompt/Prompt.js +31 -0
- package/lib/esm/components/prompt/withPrompt.d.ts +7 -0
- package/lib/esm/components/prompt/withPrompt.d.ts.map +1 -0
- package/lib/esm/components/prompt/withPrompt.js +33 -0
- package/lib/esm/components/reactable/Reactable.d.ts +38 -0
- package/lib/esm/components/reactable/Reactable.d.ts.map +1 -0
- package/lib/esm/components/reactable/Reactable.js +18 -0
- package/lib/esm/components/reactable/helpers/ReactableTable.d.ts +21 -0
- package/lib/esm/components/reactable/helpers/ReactableTable.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/ReactableTable.js +33 -0
- package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.d.ts +9 -0
- package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.js +57 -0
- package/lib/esm/components/reactable/helpers/ReactableTableHeader.d.ts +16 -0
- package/lib/esm/components/reactable/helpers/ReactableTableHeader.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/ReactableTableHeader.js +52 -0
- package/lib/esm/components/reactable/helpers/ReactableTableRow.d.ts +16 -0
- package/lib/esm/components/reactable/helpers/ReactableTableRow.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/ReactableTableRow.js +56 -0
- package/lib/esm/components/reactable/helpers/ReactableTextFilter.d.ts +9 -0
- package/lib/esm/components/reactable/helpers/ReactableTextFilter.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/ReactableTextFilter.js +18 -0
- package/lib/esm/components/reactable/helpers/helper.d.ts +7 -0
- package/lib/esm/components/reactable/helpers/helper.d.ts.map +1 -0
- package/lib/esm/components/reactable/helpers/helper.js +90 -0
- package/lib/esm/components/reactable/types.d.ts +38 -0
- package/lib/esm/components/reactable/types.d.ts.map +1 -0
- package/lib/esm/components/reactable/types.js +1 -0
- package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts +69 -0
- package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts.map +1 -0
- package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js +155 -0
- package/lib/esm/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.d.ts +2 -0
- package/lib/esm/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.d.ts.map +1 -0
- package/lib/esm/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.js +138 -0
- package/lib/esm/components/slider/Slider.d.ts +30 -0
- package/lib/esm/components/slider/Slider.d.ts.map +1 -0
- package/lib/esm/components/slider/Slider.js +35 -0
- package/lib/esm/components/slider/useLimitStyling.d.ts +3 -0
- package/lib/esm/components/slider/useLimitStyling.d.ts.map +1 -0
- package/lib/esm/components/slider/useLimitStyling.js +49 -0
- package/lib/esm/components/svg/SvgImage.d.ts +12 -0
- package/lib/esm/components/svg/SvgImage.d.ts.map +1 -0
- package/lib/esm/components/svg/SvgImage.js +37 -0
- package/lib/esm/components/svg/storybookHelper.d.ts +7 -0
- package/lib/esm/components/svg/storybookHelper.d.ts.map +1 -0
- package/lib/esm/components/svg/storybookHelper.js +53 -0
- package/lib/esm/components/svg/types.d.ts +58 -0
- package/lib/esm/components/svg/types.d.ts.map +1 -0
- package/lib/esm/components/svg/types.js +1 -0
- package/lib/esm/components/svg/utils/__tests__/getMutableNodeList.spec.d.ts +2 -0
- package/lib/esm/components/svg/utils/__tests__/getMutableNodeList.spec.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/__tests__/getMutableNodeList.spec.js +23 -0
- package/lib/esm/components/svg/utils/createHyperlinkModification.d.ts +4 -0
- package/lib/esm/components/svg/utils/createHyperlinkModification.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/createHyperlinkModification.js +35 -0
- package/lib/esm/components/svg/utils/createPositionModification.d.ts +3 -0
- package/lib/esm/components/svg/utils/createPositionModification.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/createPositionModification.js +19 -0
- package/lib/esm/components/svg/utils/findConflicts.d.ts +2 -0
- package/lib/esm/components/svg/utils/findConflicts.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/findConflicts.js +23 -0
- package/lib/esm/components/svg/utils/getMutableNodeList.d.ts +3 -0
- package/lib/esm/components/svg/utils/getMutableNodeList.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/getMutableNodeList.js +12 -0
- package/lib/esm/components/svg/utils/getSvgElement.d.ts +3 -0
- package/lib/esm/components/svg/utils/getSvgElement.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/getSvgElement.js +10 -0
- package/lib/esm/components/svg/utils/renderSvg.d.ts +3 -0
- package/lib/esm/components/svg/utils/renderSvg.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/renderSvg.js +88 -0
- package/lib/esm/components/svg/utils/transformPositionModifications.d.ts +4 -0
- package/lib/esm/components/svg/utils/transformPositionModifications.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/transformPositionModifications.js +42 -0
- package/lib/esm/components/svg/utils/validateSvg.d.ts +3 -0
- package/lib/esm/components/svg/utils/validateSvg.d.ts.map +1 -0
- package/lib/esm/components/svg/utils/validateSvg.js +5 -0
- package/lib/esm/components/tabs/RouteTabs.d.ts +24 -0
- package/lib/esm/components/tabs/RouteTabs.d.ts.map +1 -0
- package/lib/esm/components/tabs/RouteTabs.js +67 -0
- package/lib/esm/components/treeview/TreeView.d.ts +50 -0
- package/lib/esm/components/treeview/TreeView.d.ts.map +1 -0
- package/lib/esm/components/treeview/TreeView.js +104 -0
- package/lib/esm/components/treeview/components/Node.d.ts +37 -0
- package/lib/esm/components/treeview/components/Node.d.ts.map +1 -0
- package/lib/esm/components/treeview/components/Node.js +111 -0
- package/lib/esm/components/treeview/components/NodeInfo.d.ts +25 -0
- package/lib/esm/components/treeview/components/NodeInfo.d.ts.map +1 -0
- package/lib/esm/components/treeview/components/NodeInfo.js +64 -0
- package/lib/esm/components/treeview/constants.d.ts +6 -0
- package/lib/esm/components/treeview/constants.d.ts.map +1 -0
- package/lib/esm/components/treeview/constants.js +6 -0
- package/lib/esm/components/treeview/treeutils.d.ts +59 -0
- package/lib/esm/components/treeview/treeutils.d.ts.map +1 -0
- package/lib/esm/components/treeview/treeutils.js +158 -0
- package/lib/esm/components/treeview/types.d.ts +37 -0
- package/lib/esm/components/treeview/types.d.ts.map +1 -0
- package/lib/esm/components/treeview/types.js +1 -0
- package/lib/esm/components/upload/FileUpload.d.ts +67 -0
- package/lib/esm/components/upload/FileUpload.d.ts.map +1 -0
- package/lib/esm/components/upload/FileUpload.js +95 -0
- package/lib/esm/components/upload/ImageUpload.d.ts +21 -0
- package/lib/esm/components/upload/ImageUpload.d.ts.map +1 -0
- package/lib/esm/components/upload/ImageUpload.js +45 -0
- package/lib/esm/hoc/outsideClick.d.ts +4 -0
- package/lib/esm/hoc/outsideClick.d.ts.map +1 -0
- package/lib/esm/hoc/outsideClick.js +73 -0
- package/lib/esm/i18n/index.d.ts +16 -0
- package/lib/esm/i18n/index.d.ts.map +1 -0
- package/lib/esm/i18n/index.js +6 -0
- package/lib/esm/index.d.ts +52 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +39 -0
- package/lib/esm/modules/messageBox/messageBox.d.ts +14 -0
- package/lib/esm/modules/messageBox/messageBox.d.ts.map +1 -0
- package/lib/esm/modules/messageBox/messageBox.js +56 -0
- package/lib/esm/modules/utils/nanoidGen.d.ts +2 -0
- package/lib/esm/modules/utils/nanoidGen.d.ts.map +1 -0
- package/lib/esm/modules/utils/nanoidGen.js +3 -0
- package/lib/esm/modules/utils/uuidGen.d.ts +2 -0
- package/lib/esm/modules/utils/uuidGen.d.ts.map +1 -0
- package/lib/esm/modules/utils/uuidGen.js +13 -0
- package/lib/esm/types/i18n.d.ts +5 -0
- package/lib/esm/types/i18n.d.ts.map +1 -0
- package/lib/esm/types/i18n.js +1 -0
- package/lib/esm/types/pagination.d.ts +19 -0
- package/lib/esm/types/pagination.d.ts.map +1 -0
- package/lib/esm/types/pagination.js +1 -0
- package/lib/esm/utils/dayjsLocales.d.ts +10 -0
- package/lib/esm/utils/dayjsLocales.d.ts.map +1 -0
- package/lib/esm/utils/dayjsLocales.js +12 -0
- package/lib/esm/utils/resolvePath.d.ts +2 -0
- package/lib/esm/utils/resolvePath.d.ts.map +1 -0
- package/lib/esm/utils/resolvePath.js +4 -0
- package/package.json +164 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Checkbox } from '@deviceinsight/ng-ui-basic-components';
|
|
3
|
+
export function makePageable(items, columnDefs, filterSettings, paginationSettings, customSortFunction) {
|
|
4
|
+
if (!items) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const { page, size, sort } = paginationSettings;
|
|
8
|
+
const sortedItems = customSortFunction ? customSortFunction(items, sort, sortItems) : sortItems(items, sort);
|
|
9
|
+
return {
|
|
10
|
+
content: sortedItems.slice(page * size, (page + 1) * size),
|
|
11
|
+
totalElements: items.length,
|
|
12
|
+
totalPages: Math.ceil(items.length / size),
|
|
13
|
+
number: page,
|
|
14
|
+
size,
|
|
15
|
+
sort: [sort]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const getDefaultFilterFn = (filterType, fieldName) => {
|
|
19
|
+
if (filterType === 'text') {
|
|
20
|
+
return (item, filterValue) => item[fieldName] && item[fieldName].toString().toLowerCase().includes(filterValue.toLowerCase());
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return (item, filterValue) => item[fieldName] === filterValue;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export function filterItems(items, columnDefs, filterSettings) {
|
|
27
|
+
if (items) {
|
|
28
|
+
return items.filter((item) => {
|
|
29
|
+
return Object.keys(filterSettings).every((columnName) => {
|
|
30
|
+
const filterValue = filterSettings[columnName];
|
|
31
|
+
if (filterValue && filterValue.length > 0) {
|
|
32
|
+
const columnDef = findColumnDefByName(columnName, columnDefs);
|
|
33
|
+
if (columnDef.filterable) {
|
|
34
|
+
const filterFn = columnDef.filterable.filterFn ||
|
|
35
|
+
getDefaultFilterFn(columnDef.filterable.filterType, columnDef.name);
|
|
36
|
+
return filterFn(item, filterValue);
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function findColumnDefByName(columnName, columnDefs) {
|
|
47
|
+
const columnDef = columnDefs.find((cd) => cd.name === columnName);
|
|
48
|
+
if (!columnDef) {
|
|
49
|
+
throw Error(`column definition not found for ${columnName}`);
|
|
50
|
+
}
|
|
51
|
+
return columnDef;
|
|
52
|
+
}
|
|
53
|
+
export function sortItems(items, sort) {
|
|
54
|
+
return items.sort((itemA, itemB) => {
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
56
|
+
const a = ((typeof itemA === 'object' && itemA?.[sort.property]) || 0);
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
58
|
+
const b = ((typeof itemB === 'object' && itemB?.[sort.property]) || 0);
|
|
59
|
+
const reverseFactor = sort.direction === 'ASC' ? 1 : -1;
|
|
60
|
+
if (a === b) {
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
else if (typeof a === 'string' && typeof b === 'string') {
|
|
64
|
+
return a.localeCompare(b) * reverseFactor;
|
|
65
|
+
}
|
|
66
|
+
else if (typeof a === 'number' && typeof b === 'number') {
|
|
67
|
+
return (a - b) * reverseFactor;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return a.toString().localeCompare(b.toString()) * reverseFactor;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function extendColumnDefsWithCheckboxes(columnDefs, onSelectChange, onSelectAllChange, selectedAll, selectedItems, uniqueItemKey) {
|
|
75
|
+
return [
|
|
76
|
+
{
|
|
77
|
+
name: 'checkbox',
|
|
78
|
+
label: (React.createElement(Checkbox, { value: selectedAll, onChange: onSelectAllChange, title: {
|
|
79
|
+
id: 'components.filtertable.selectAllItems',
|
|
80
|
+
defaultValue: 'Select/deselect all items in search result'
|
|
81
|
+
} })),
|
|
82
|
+
sortable: false,
|
|
83
|
+
render: (item) => {
|
|
84
|
+
return (React.createElement(Checkbox, { value: selectedItems.includes(uniqueItemKey(item)), onChange: (selected) => onSelectChange(selected, item) }));
|
|
85
|
+
},
|
|
86
|
+
width: '1%'
|
|
87
|
+
},
|
|
88
|
+
...columnDefs
|
|
89
|
+
];
|
|
90
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { CSSProperties } from 'react';
|
|
3
|
+
import { TranslationDescriptor } from '../../types/i18n';
|
|
4
|
+
import { SortDirection } from '../../types/pagination';
|
|
5
|
+
export declare type ReactableColumnLabel = string | TranslationDescriptor | React.ReactNode;
|
|
6
|
+
declare type ReactableColumnFilterable<T> = {
|
|
7
|
+
filterType: 'text' | 'options';
|
|
8
|
+
filterOptions?: Array<{
|
|
9
|
+
value: string;
|
|
10
|
+
label: string | TranslationDescriptor;
|
|
11
|
+
}>;
|
|
12
|
+
filterFn?: (item: T, value: string) => boolean;
|
|
13
|
+
initialValue?: string;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare type ReactableColumnDef<T> = {
|
|
17
|
+
name: string;
|
|
18
|
+
label: ReactableColumnLabel;
|
|
19
|
+
sortable?: boolean;
|
|
20
|
+
defaultSortDirection?: SortDirection;
|
|
21
|
+
render: (element: T) => React.ReactNode;
|
|
22
|
+
onClick?: (element: T) => void;
|
|
23
|
+
width?: string;
|
|
24
|
+
align?: 'left' | 'right' | 'center';
|
|
25
|
+
whiteSpace?: string;
|
|
26
|
+
filterable?: ReactableColumnFilterable<T>;
|
|
27
|
+
};
|
|
28
|
+
export declare type ReactableFilterSettings = {
|
|
29
|
+
[columName: string]: string;
|
|
30
|
+
};
|
|
31
|
+
export declare type ReactableRowDef<T> = {
|
|
32
|
+
onClick?: (element: T) => void;
|
|
33
|
+
getRowClass?: (element: T) => string;
|
|
34
|
+
getRowStyle?: (element: T) => CSSProperties;
|
|
35
|
+
getTooltip?: (element: T) => string;
|
|
36
|
+
};
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/reactable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAErD,oBAAY,oBAAoB,GAAG,MAAM,GAAG,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;AAEpF,aAAK,yBAAyB,CAAC,CAAC,IAAI;IACnC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,oBAAY,uBAAuB,GAAG;IAAC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,CAAC;AAEpE,oBAAY,eAAe,CAAC,CAAC,IAAI;IAChC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,aAAa,CAAC;IAC5C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC;CACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Pageable, PaginationSettings, Sort, SortDirection } from '../../types/pagination';
|
|
3
|
+
import { ReactableColumnDef, ReactableRowDef, ReactableFilterSettings } from '../reactable/types';
|
|
4
|
+
export declare type Props<T, ID extends string | number | undefined | null = any> = {
|
|
5
|
+
/** Array of column definitions, each column can be configured independently */
|
|
6
|
+
columnDefs: Array<ReactableColumnDef<T>>;
|
|
7
|
+
/** (Optional) can set custom event handler and/or functions in general */
|
|
8
|
+
rowDef?: ReactableRowDef<T>;
|
|
9
|
+
/** Function, sets identifier for each element in Reactable */
|
|
10
|
+
uniqueItemKey: (arg0: T) => ID;
|
|
11
|
+
/**
|
|
12
|
+
* (Deprecated) This property will be removed in the future release, use paginationSettings instead
|
|
13
|
+
* @deprecated
|
|
14
|
+
*/
|
|
15
|
+
initialPaginationSettings?: PaginationSettings;
|
|
16
|
+
/** (Optional) settings for paginated content */
|
|
17
|
+
paginationSettings?: PaginationSettings;
|
|
18
|
+
/** Array of elements */
|
|
19
|
+
items: Array<T> | null | undefined;
|
|
20
|
+
/** It true, shows loading indicator */
|
|
21
|
+
isLoading: boolean;
|
|
22
|
+
/** (Optional) sets custom sort function */
|
|
23
|
+
customSortFunction?: (items: Array<T>, sort: Sort, defaultSortItems: (items: Array<T>, sort: Sort) => Array<T>) => Array<T>;
|
|
24
|
+
/** (Optional) if set, resets pagination to initial state if items change */
|
|
25
|
+
forceResetPaginationOnItemsChange?: boolean;
|
|
26
|
+
/** (Optional) Function, executed on filter */
|
|
27
|
+
onFilter?: (filterSettings: ReactableFilterSettings) => void;
|
|
28
|
+
/** (Optional) Function, executed on content change */
|
|
29
|
+
onContentChange?: (content: Array<T>) => void;
|
|
30
|
+
/** (Optional) Function, executed if filtered items change */
|
|
31
|
+
onFilteredItemsChanged?: (filteredItems: Array<T>) => void;
|
|
32
|
+
/** (Optional) if true, makes rows clickable */
|
|
33
|
+
clickable?: boolean;
|
|
34
|
+
/** If equals *true* additional column with checkboxes is rendered */
|
|
35
|
+
selectable?: boolean;
|
|
36
|
+
/** (Optional) enables selection of items */
|
|
37
|
+
selectedItems?: Array<ID>;
|
|
38
|
+
/** (Optional) function, executed on change of selected items */
|
|
39
|
+
onSelectedItemsChange?: (selectedItems: Array<ID>) => void;
|
|
40
|
+
/** (Optional) function, executed if the page size changes */
|
|
41
|
+
onChangeSize?: (size: number) => void;
|
|
42
|
+
'data-testid'?: string;
|
|
43
|
+
};
|
|
44
|
+
declare type State<T> = {
|
|
45
|
+
paginationSettings: PaginationSettings;
|
|
46
|
+
filterSettings: ReactableFilterSettings;
|
|
47
|
+
filteredItems: Array<T> | null | undefined;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Reactable displays paginated results nicely, while adding the possibility to add further functionality to each row.
|
|
51
|
+
* Each column can also be extended to be sortable and/or filterable.
|
|
52
|
+
* Also adds client-side pagination.
|
|
53
|
+
*/
|
|
54
|
+
export default class ReactableWithClientSidePagination<T = any, ID extends string | number | undefined | null = any> extends React.Component<Props<T, ID>, State<T>> {
|
|
55
|
+
constructor(props: Props<T>);
|
|
56
|
+
private content;
|
|
57
|
+
calculatePageNumber: (items: Array<T>, paginationSettings: PaginationSettings) => void;
|
|
58
|
+
componentDidUpdate(prevProps: Props<T>): void;
|
|
59
|
+
handleChangePage: (page: number) => void;
|
|
60
|
+
handleSort: (property: string, direction: SortDirection) => void;
|
|
61
|
+
handleFilter: (filterSettings: ReactableFilterSettings) => void;
|
|
62
|
+
getPageable: () => Pageable<T> | null | undefined;
|
|
63
|
+
handleSelectChange: (selected: boolean, item: T) => void;
|
|
64
|
+
handleSelectAllChange: (selectedAll: boolean) => void;
|
|
65
|
+
areSelectedAll: () => boolean;
|
|
66
|
+
render(): JSX.Element;
|
|
67
|
+
}
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=ReactableWithClientSidePagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactableWithClientSidePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAGhG,oBAAY,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,IAAI;IAC3E,+EAA+E;IAC/E,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAE5B,8DAA8D;IAC9D,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,kBAAkB,CAAC;IAE/C,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAGxC,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAEnC,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IAEnB,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,CACpB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KACvD,KAAK,CAAC,CAAC,CAAC,CAAC;IAEd,4EAA4E;IAC5E,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAE7D,sDAAsD;IACtD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9C,6DAA6D;IAC7D,sBAAsB,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE3D,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAE1B,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAE3D,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,aAAK,KAAK,CAAC,CAAC,IAAI;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,uBAAuB,CAAC;IACxC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3C,CAAC;AAWF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,iCAAiC,CACrD,CAAC,GAAG,GAAG,EACP,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAClD,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAoB3B,OAAO,CAAC,OAAO,CAAgB;IAE/B,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,KAAK,IAAI,CAiBpF;IAEF,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAoBtC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAItC;IAEF,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAU9D;IAEF,YAAY,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAgB7D;IAEF,WAAW,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAqB/C;IAEF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAatD;IAEF,qBAAqB,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAcnD;IAEF,cAAc,EAAE,MAAM,OAAO,CAO3B;IAEF,MAAM;CA8BN"}
|
package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isEqual, difference, uniqWith } from 'lodash';
|
|
3
|
+
import Reactable from '../reactable/Reactable';
|
|
4
|
+
import { extendColumnDefsWithCheckboxes, filterItems, makePageable } from '../reactable/helpers/helper';
|
|
5
|
+
const DEFAULT_PAGINATION_SETTINGS = {
|
|
6
|
+
page: 0,
|
|
7
|
+
size: 15,
|
|
8
|
+
sort: {
|
|
9
|
+
property: 'name',
|
|
10
|
+
direction: 'DESC'
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Reactable displays paginated results nicely, while adding the possibility to add further functionality to each row.
|
|
15
|
+
* Each column can also be extended to be sortable and/or filterable.
|
|
16
|
+
* Also adds client-side pagination.
|
|
17
|
+
*/
|
|
18
|
+
export default class ReactableWithClientSidePagination extends React.Component {
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super(props);
|
|
21
|
+
this.content = [];
|
|
22
|
+
this.calculatePageNumber = (items, paginationSettings) => {
|
|
23
|
+
const { forceResetPaginationOnItemsChange } = this.props;
|
|
24
|
+
if (!forceResetPaginationOnItemsChange) {
|
|
25
|
+
const maxPageNumber = Math.floor((items.length - 1) / paginationSettings.size);
|
|
26
|
+
if (maxPageNumber <= 0) {
|
|
27
|
+
this.handleChangePage(0);
|
|
28
|
+
}
|
|
29
|
+
else if (maxPageNumber < paginationSettings.page) {
|
|
30
|
+
this.handleChangePage(maxPageNumber);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.handleChangePage(0);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
this.handleChangePage = (page) => {
|
|
38
|
+
this.setState({
|
|
39
|
+
paginationSettings: { ...this.state.paginationSettings, page }
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
this.handleSort = (property, direction) => {
|
|
43
|
+
this.setState({
|
|
44
|
+
paginationSettings: {
|
|
45
|
+
...this.state.paginationSettings,
|
|
46
|
+
sort: {
|
|
47
|
+
property,
|
|
48
|
+
direction
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
this.handleFilter = (filterSettings) => {
|
|
54
|
+
const { items, onFilter, columnDefs, onFilteredItemsChanged } = this.props;
|
|
55
|
+
this.setState({
|
|
56
|
+
paginationSettings: { ...this.state.paginationSettings, page: 0 },
|
|
57
|
+
filterSettings
|
|
58
|
+
}, () => {
|
|
59
|
+
onFilter && onFilter(filterSettings);
|
|
60
|
+
const filteredItems = filterItems(items, columnDefs, filterSettings);
|
|
61
|
+
this.setState({
|
|
62
|
+
filteredItems
|
|
63
|
+
});
|
|
64
|
+
onFilteredItemsChanged && filteredItems && onFilteredItemsChanged(filteredItems);
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
this.getPageable = () => {
|
|
68
|
+
const { customSortFunction, items, columnDefs, onContentChange } = this.props;
|
|
69
|
+
const { filterSettings, paginationSettings } = this.state;
|
|
70
|
+
const filteredItems = filterItems(items, columnDefs, filterSettings);
|
|
71
|
+
const pageable = makePageable(filteredItems, columnDefs, filterSettings, paginationSettings, customSortFunction);
|
|
72
|
+
if (pageable && pageable.content && !isEqual(pageable.content, this.content)) {
|
|
73
|
+
this.content = pageable.content;
|
|
74
|
+
if (onContentChange) {
|
|
75
|
+
onContentChange(this.content);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return pageable;
|
|
79
|
+
};
|
|
80
|
+
this.handleSelectChange = (selected, item) => {
|
|
81
|
+
const { onSelectedItemsChange, selectedItems = [], uniqueItemKey } = this.props;
|
|
82
|
+
if (onSelectedItemsChange) {
|
|
83
|
+
if (selected) {
|
|
84
|
+
const newSelectedItems = selectedItems.concat(uniqueItemKey(item));
|
|
85
|
+
onSelectedItemsChange(newSelectedItems);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
onSelectedItemsChange(selectedItems.filter((key) => key !== uniqueItemKey(item)));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.warn('ReactableWithClientSidePagination: onSelectedItemsChange property is missing');
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
this.handleSelectAllChange = (selectedAll) => {
|
|
96
|
+
const { onSelectedItemsChange, items, selectedItems = [], uniqueItemKey } = this.props;
|
|
97
|
+
const { filteredItems } = this.state;
|
|
98
|
+
const visibleItems = (filteredItems || items || []).map(uniqueItemKey);
|
|
99
|
+
if (onSelectedItemsChange) {
|
|
100
|
+
if (selectedAll) {
|
|
101
|
+
onSelectedItemsChange(uniqWith([...selectedItems, ...visibleItems], isEqual).sort());
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
onSelectedItemsChange(difference(selectedItems, visibleItems));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.warn('ReactableWithClientSidePagination: onSelectedItemsChange property is missing');
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
this.areSelectedAll = () => {
|
|
112
|
+
const { items, selectedItems, uniqueItemKey } = this.props;
|
|
113
|
+
const { filteredItems } = this.state;
|
|
114
|
+
const visibleItems = filteredItems || items || [];
|
|
115
|
+
return (!!selectedItems && visibleItems.every((item) => selectedItems.some((key) => key === uniqueItemKey(item))));
|
|
116
|
+
};
|
|
117
|
+
let paginationSettings = DEFAULT_PAGINATION_SETTINGS;
|
|
118
|
+
if (props.paginationSettings) {
|
|
119
|
+
paginationSettings = props.paginationSettings;
|
|
120
|
+
}
|
|
121
|
+
else if (props.initialPaginationSettings) {
|
|
122
|
+
console.warn('initialPaginationSettings is deprecated! Please use "paginationSettings" instead');
|
|
123
|
+
paginationSettings = props.initialPaginationSettings;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.error('Missing pagination settings!');
|
|
127
|
+
}
|
|
128
|
+
this.state = {
|
|
129
|
+
paginationSettings: paginationSettings || DEFAULT_PAGINATION_SETTINGS,
|
|
130
|
+
filterSettings: {},
|
|
131
|
+
filteredItems: null
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
componentDidUpdate(prevProps) {
|
|
135
|
+
const { items } = this.props;
|
|
136
|
+
const { items: prevItems } = prevProps;
|
|
137
|
+
const settings = this.props.paginationSettings || this.props.initialPaginationSettings;
|
|
138
|
+
const prevSettings = prevProps.paginationSettings || prevProps.initialPaginationSettings;
|
|
139
|
+
if (items && prevItems && items.length !== prevItems.length) {
|
|
140
|
+
this.calculatePageNumber(items, this.state.paginationSettings);
|
|
141
|
+
}
|
|
142
|
+
if (settings && !isEqual(settings, prevSettings)) {
|
|
143
|
+
this.setState({
|
|
144
|
+
paginationSettings: settings
|
|
145
|
+
}, () => this.handleChangePage(0));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
render() {
|
|
149
|
+
const { uniqueItemKey, isLoading, columnDefs, rowDef, clickable, selectable, selectedItems, onChangeSize } = this.props;
|
|
150
|
+
const finalColumnDefs = selectable
|
|
151
|
+
? extendColumnDefsWithCheckboxes(columnDefs, this.handleSelectChange, this.handleSelectAllChange, this.areSelectedAll(), selectedItems || [], uniqueItemKey)
|
|
152
|
+
: columnDefs;
|
|
153
|
+
return (React.createElement(Reactable, { columnDefs: finalColumnDefs, rowDef: rowDef, uniqueItemKey: uniqueItemKey, paginationSettings: this.state.paginationSettings, onChangePage: this.handleChangePage, onChangeSize: onChangeSize, onSort: this.handleSort, onFilter: this.handleFilter, pageable: this.getPageable(), isLoading: isLoading, clickable: clickable, "data-testid": this.props['data-testid'] }));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactableWithClientSidePagination.spec.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { shallow } from 'enzyme';
|
|
3
|
+
import toJson from 'enzyme-to-json';
|
|
4
|
+
import ReactableWithClientSidePagination from '../ReactableWithClientSidePagination';
|
|
5
|
+
const ITEMS = [
|
|
6
|
+
{
|
|
7
|
+
id: 1,
|
|
8
|
+
name: 'Hans Wurst',
|
|
9
|
+
description: 'Lorem ipsum dolor sit amet, consectetur adipisici elit'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 2,
|
|
13
|
+
name: 'August Tina',
|
|
14
|
+
description: "Hopfen und Malz, Gott erhalt's"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 3,
|
|
18
|
+
name: 'Paul Aner',
|
|
19
|
+
description: 'Salve pater patriae'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 4,
|
|
23
|
+
name: 'Franz Iskaner',
|
|
24
|
+
description: 'Da braut sich was zusammen'
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
const INITIAL_PAGINATION_SETTINGS = {
|
|
28
|
+
page: 0,
|
|
29
|
+
size: ITEMS.length,
|
|
30
|
+
sort: {
|
|
31
|
+
property: 'name',
|
|
32
|
+
direction: 'ASC'
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const COLUMN_DEFS = [
|
|
36
|
+
{
|
|
37
|
+
name: 'name',
|
|
38
|
+
render: (item) => item.name,
|
|
39
|
+
filterable: {
|
|
40
|
+
filterType: 'text',
|
|
41
|
+
filterFn: (item, value) => new RegExp(value).test(item.name)
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'description',
|
|
46
|
+
render: (item) => item.description
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
const COMMON_PROPS = {
|
|
50
|
+
columnDefs: COLUMN_DEFS,
|
|
51
|
+
uniqueItemKey: (item) => item.id,
|
|
52
|
+
paginationSettings: INITIAL_PAGINATION_SETTINGS,
|
|
53
|
+
items: ITEMS,
|
|
54
|
+
selectable: true,
|
|
55
|
+
isLoading: false
|
|
56
|
+
};
|
|
57
|
+
describe('ReactableWithClientSidePagination.js', () => {
|
|
58
|
+
describe('selectable feature', () => {
|
|
59
|
+
it('should match snapshot', () => {
|
|
60
|
+
const wrapper = shallow(
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: [], onSelectedItemsChange: () => { } }));
|
|
63
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
64
|
+
});
|
|
65
|
+
it('should call the callback with correct argument when checkbox is checked', () => {
|
|
66
|
+
const selectedItemsBefore = [1, 2];
|
|
67
|
+
const selectedItemsAfter = [1, 2, 4];
|
|
68
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
69
|
+
const wrapper = shallow(
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
wrapper.instance().handleSelectChange(true, ITEMS[3]);
|
|
74
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
75
|
+
});
|
|
76
|
+
it('should call the callback with correct argument when checkbox is unchecked', () => {
|
|
77
|
+
const selectedItemsBefore = [1, 2, 4];
|
|
78
|
+
const selectedItemsAfter = [1, 2];
|
|
79
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
80
|
+
const wrapper = shallow(
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
83
|
+
// @ts-ignore
|
|
84
|
+
wrapper.instance().handleSelectChange(false, ITEMS[3]);
|
|
85
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
86
|
+
});
|
|
87
|
+
it('should call the callback with correct argument when the selectAll checkbox is checked', () => {
|
|
88
|
+
const selectedItemsBefore = [1];
|
|
89
|
+
const selectedItemsAfter = [1, 2, 3, 4];
|
|
90
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
91
|
+
const wrapper = shallow(
|
|
92
|
+
// @ts-ignore
|
|
93
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
94
|
+
// @ts-ignore
|
|
95
|
+
wrapper.instance().handleSelectAllChange(true);
|
|
96
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
97
|
+
});
|
|
98
|
+
it('should call the callback with correct argument when the selectAll checkbox is unchecked', () => {
|
|
99
|
+
const selectedItemsBefore = [1, 2, 3, 4];
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
const selectedItemsAfter = [];
|
|
102
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
103
|
+
const wrapper = shallow(
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
wrapper.instance().handleSelectAllChange(false);
|
|
108
|
+
// @ts-ignore
|
|
109
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
110
|
+
});
|
|
111
|
+
it('should select all available items if selectAll checkbox is checked and data is filtered', () => {
|
|
112
|
+
const selectedItemsBefore = [1, 4];
|
|
113
|
+
const selectedItemsAfter = [1, 2, 4];
|
|
114
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
115
|
+
const wrapper = shallow(
|
|
116
|
+
// @ts-ignore
|
|
117
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
118
|
+
// @ts-ignore
|
|
119
|
+
wrapper.instance().handleFilter({ name: ITEMS[1].name });
|
|
120
|
+
// @ts-ignore
|
|
121
|
+
wrapper.instance().handleSelectAllChange(true);
|
|
122
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
123
|
+
});
|
|
124
|
+
it('should unselect all available items if selectAll checkbox is checked and data is filtered', () => {
|
|
125
|
+
const selectedItemsBefore = [1, 2, 3, 4];
|
|
126
|
+
const selectedItemsAfter = [1, 3, 4];
|
|
127
|
+
const selectedItemsChangeHandler = jest.fn();
|
|
128
|
+
const wrapper = shallow(
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: selectedItemsBefore, onSelectedItemsChange: selectedItemsChangeHandler }));
|
|
131
|
+
// @ts-ignore
|
|
132
|
+
wrapper.instance().handleFilter({ name: ITEMS[1].name });
|
|
133
|
+
// @ts-ignore
|
|
134
|
+
wrapper.instance().handleSelectAllChange(false);
|
|
135
|
+
expect(selectedItemsChangeHandler.mock.calls[0][0]).toEqual(selectedItemsAfter);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare type Props = {
|
|
3
|
+
/** minimum value the slider renders */
|
|
4
|
+
min: number;
|
|
5
|
+
/** maximum value the slider renders */
|
|
6
|
+
max: number;
|
|
7
|
+
/** step in which increments/decrements have to be made */
|
|
8
|
+
step?: number;
|
|
9
|
+
/** current value of the slider */
|
|
10
|
+
value: number;
|
|
11
|
+
/** show or hide tooltip (default: true) */
|
|
12
|
+
tooltip?: boolean;
|
|
13
|
+
/** object containing key-value pairs to label the slider */
|
|
14
|
+
labels?: Record<string, number | string>;
|
|
15
|
+
/** formats the value in label or tooltip */
|
|
16
|
+
format?: (value: number) => string;
|
|
17
|
+
/** gets called whenever the slider handle is being dragged or clicked */
|
|
18
|
+
onChange?: (value: number) => void;
|
|
19
|
+
/** gets called whenever the user stops dragging the slider handle */
|
|
20
|
+
onChangeComplete?: (value: number) => void;
|
|
21
|
+
/** maximum value the slider can hold */
|
|
22
|
+
limit?: number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Enables picking the desired value from a specified range.
|
|
26
|
+
* Can have a tooltip and labels
|
|
27
|
+
*/
|
|
28
|
+
declare const Slider: ({ min, max, step, value, tooltip, labels, format, onChange, onChangeComplete, limit }: Props) => JSX.Element;
|
|
29
|
+
export default Slider;
|
|
30
|
+
//# sourceMappingURL=Slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/Slider.tsx"],"names":[],"mappings":";AAKA,oBAAY,KAAK,GAAG;IACnB,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IAEZ,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IAEZ,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAEzC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAEnC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAIF;;;GAGG;AACH,QAAA,MAAM,MAAM,0FAAgG,KAAK,gBAoChH,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import RcSlider, { createSliderWithTooltip } from 'rc-slider';
|
|
3
|
+
import useLimitStyling from './useLimitStyling';
|
|
4
|
+
const RcSliderWithTooltip = createSliderWithTooltip(RcSlider);
|
|
5
|
+
/**
|
|
6
|
+
* Enables picking the desired value from a specified range.
|
|
7
|
+
* Can have a tooltip and labels
|
|
8
|
+
*/
|
|
9
|
+
const Slider = ({ min, max, step, value, tooltip = true, labels, format, onChange, onChangeComplete, limit }) => {
|
|
10
|
+
const setSliderRef = useLimitStyling(limit, min, max);
|
|
11
|
+
const handleChange = (value) => {
|
|
12
|
+
if (!onChange)
|
|
13
|
+
return;
|
|
14
|
+
const numericValue = typeof value === 'number' ? value : value[0];
|
|
15
|
+
const allowedValue = limit != null ? Math.min(numericValue, limit) : numericValue;
|
|
16
|
+
onChange(allowedValue);
|
|
17
|
+
};
|
|
18
|
+
const handleChangeComplete = () => {
|
|
19
|
+
if (!onChangeComplete) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
onChangeComplete(value);
|
|
23
|
+
};
|
|
24
|
+
const basicProps = {
|
|
25
|
+
min,
|
|
26
|
+
max,
|
|
27
|
+
step,
|
|
28
|
+
value,
|
|
29
|
+
onChange: handleChange,
|
|
30
|
+
onAfterChange: handleChangeComplete,
|
|
31
|
+
marks: labels
|
|
32
|
+
};
|
|
33
|
+
return (React.createElement("div", { className: "di slider", ref: setSliderRef }, tooltip ? (React.createElement(RcSliderWithTooltip, { ...basicProps, className: "di slider with-tooltip", tipFormatter: format })) : (React.createElement(RcSlider, { ...basicProps, className: "di slider" }))));
|
|
34
|
+
};
|
|
35
|
+
export default Slider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLimitStyling.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/useLimitStyling.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mFAiD1F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
export default function useLimitStyling(limit, min, max) {
|
|
3
|
+
const [slider, setSlider] = useState(null);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (slider) {
|
|
6
|
+
const containerEl = slider.querySelector('.rc-slider-rail');
|
|
7
|
+
if (!containerEl)
|
|
8
|
+
throw new Error('.rc-slider-rail element missing');
|
|
9
|
+
const disabledAreaEl = containerEl?.querySelector(`.disabled-area-element`);
|
|
10
|
+
const sliderWidth = containerEl.getBoundingClientRect().width;
|
|
11
|
+
if (disabledAreaEl) {
|
|
12
|
+
if (limit == null) {
|
|
13
|
+
disabledAreaEl.remove();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
const width = Math.round(((max - limit) / (max - min)) * sliderWidth);
|
|
17
|
+
disabledAreaEl.style.width = `${width}px`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (limit != null) {
|
|
21
|
+
const width = Math.round(((max - limit) / (max - min)) * sliderWidth);
|
|
22
|
+
const disabledAreaEl = document.createElement('div');
|
|
23
|
+
disabledAreaEl.classList.add('disabled-area-element');
|
|
24
|
+
disabledAreaEl.style.width = `${width}px`;
|
|
25
|
+
containerEl.appendChild(disabledAreaEl);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}, [limit, slider, min, max]);
|
|
29
|
+
const updateLimitAreaSize = useCallback(() => {
|
|
30
|
+
if (slider && limit != null) {
|
|
31
|
+
const containerEl = slider.querySelector('.rc-slider-rail');
|
|
32
|
+
if (!containerEl)
|
|
33
|
+
throw new Error('.rc-slider-rail element missing');
|
|
34
|
+
const disabledAreaEl = containerEl?.querySelector(`.disabled-area-element`);
|
|
35
|
+
const sliderWidth = containerEl.getBoundingClientRect().width;
|
|
36
|
+
if (disabledAreaEl) {
|
|
37
|
+
const width = Math.round(((max - limit) / (max - min)) * sliderWidth);
|
|
38
|
+
disabledAreaEl.style.width = `${width}px`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}, [limit, max, min, slider]);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (slider) {
|
|
44
|
+
const resizeObserver = new ResizeObserver(() => updateLimitAreaSize());
|
|
45
|
+
resizeObserver.observe(slider);
|
|
46
|
+
}
|
|
47
|
+
}, [slider, updateLimitAreaSize]);
|
|
48
|
+
return setSlider;
|
|
49
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Modification } from './types';
|
|
3
|
+
export declare type Props = {
|
|
4
|
+
/** base64 encoded content of the SVG file */
|
|
5
|
+
imageData: string | null | undefined;
|
|
6
|
+
/** list of modifications that should be applied to the svg elements */
|
|
7
|
+
modifications?: Modification[];
|
|
8
|
+
/** called with list of conflicting IDs which means IDs existing in the DOM and duplicated by the elements from the SVG */
|
|
9
|
+
onConflict?: (conflictingIds: string[]) => void;
|
|
10
|
+
};
|
|
11
|
+
export default function SvgImage({ imageData, modifications, onConflict }: Props): JSX.Element;
|
|
12
|
+
//# sourceMappingURL=SvgImage.d.ts.map
|