1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-02-22 09:44:18 +01:00

Merge branch 'dev' into 'master'

Dev

See merge request turris/reforis/foris-js!271
This commit is contained in:
Aleksandr Gumroian 2025-02-20 12:56:13 +01:00
commit ede4fb0212
5 changed files with 266 additions and 268 deletions

View File

@ -8,427 +8,434 @@ and this project adheres to
## [Unreleased] ## [Unreleased]
## [6.6.2] - 2025-02-20
### Changed
- Enhanced SubmitButton component to accept a custom label prop
- Refactored RichTable component to remove forwardRef and simplify data handling
## [6.6.1] - 2025-02-17 ## [6.6.1] - 2025-02-17
### Changed ### Changed
- Refactored RichTable component to use forwardRef - Refactored RichTable component to use forwardRef
## [6.6.0] - 2025-02-07 ## [6.6.0] - 2025-02-07
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
- Added Wi-Fi and LAN settings URLs to ForisURLs - Added Wi-Fi and LAN settings URLs to ForisURLs
- Added Wi-Fi modes VHT/HE 80+80 - Added Wi-Fi modes VHT/HE 80+80
- Added encryption selection to WiFiGuestForm - Added encryption selection to WiFiGuestForm
- Added optional close button to ModalHeader component - Added optional close button to ModalHeader component
### Changed ### Changed
- Updated Wi-Fi API - Updated Wi-Fi API
- Enhanced NumberInput component with keyboard & touch accessibility - Enhanced NumberInput component with keyboard & touch accessibility
- Refactored pagination condition in RichTable component - Refactored pagination condition in RichTable component
## [6.5.0] - 2024-11-13 ## [6.5.0] - 2024-11-13
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
- Added RichTable component with pagination and sorting - Added RichTable component with pagination and sorting
- Added @tanstack/react-table v8.20.5 to dependencies - Added @tanstack/react-table v8.20.5 to dependencies
### Changed ### Changed
- Updated documentation - Updated documentation
- Replaced RebootButton with ActionButtonWithModal component - Replaced RebootButton with ActionButtonWithModal component
- Fixed import path for CustomizationContextMock in customTestRender.js - Fixed import path for CustomizationContextMock in customTestRender.js
## [6.4.0] - 2024-10-02 ## [6.4.0] - 2024-10-02
### Changed ### Changed
- Refactored Alert component to include dismiss animation and timeout - Refactored Alert component to include dismiss animation and timeout
- Refactored ThreeDotsMenu component to include additional props - Refactored ThreeDotsMenu component to include additional props
## [6.3.0] - 2024-09-27 ## [6.3.0] - 2024-09-27
### Added ### Added
- Added ThreeDotsMenu component - Added ThreeDotsMenu component
### Changed ### Changed
- Refactored EmailInput description - Refactored EmailInput description
- Refactored RadioSet & ignore Radio component - Refactored RadioSet & ignore Radio component
- Refactored npm package badge in introduction.md - Refactored npm package badge in introduction.md
- NPM audit fix - NPM audit fix
## [6.2.1] - 2024-09-25 ## [6.2.1] - 2024-09-25
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
### Changed ### Changed
- Refactored CopyInput component - Refactored CopyInput component
- Refactored ForisURLs to include new URLs for Overview page - Refactored ForisURLs to include new URLs for Overview page
## [6.2.0] - 2024-09-20 ## [6.2.0] - 2024-09-20
### Added ### Added
- Added useFocusTrap hook - Added useFocusTrap hook
- Added extendSession endpoint - Added extendSession endpoint
### Changed ### Changed
- Refactored Spinner.css to use CSS variable for color - Refactored Spinner.css to use CSS variable for color
- Refactored Modal component to use useFocusTrap hook - Refactored Modal component to use useFocusTrap hook
- Refactored Alert component to use useFocusTrap hook - Refactored Alert component to use useFocusTrap hook
## [6.1.1] - 2024-08-30 ## [6.1.1] - 2024-08-30
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
### Changed ### Changed
- Updated icon color classes to use "text-secondary" instead of "text-dark" - Updated icon color classes to use "text-secondary" instead of "text-dark"
- Updated Wi-Fi QRCodeModal component to use new styles & added close button - Updated Wi-Fi QRCodeModal component to use new styles & added close button
- Refactored WiFiGuestForm component to get rid of obsolete div element - Refactored WiFiGuestForm component to get rid of obsolete div element
- NPM audit fix - NPM audit fix
## [6.1.0] - 2024-08-23 ## [6.1.0] - 2024-08-23
### Added ### Added
- Added & updated Weblate translations - Added & updated Weblate translations
### Changed ### Changed
- Migrated to Font Awesome v6 - Migrated to Font Awesome v6
- NPM audit fix - NPM audit fix
## [6.0.3] - 2024-07-26 ## [6.0.3] - 2024-07-26
### Changed ### Changed
- Updated WiFiQRCode component - Updated WiFiQRCode component
## [6.0.2] - 2024-06-28 ## [6.0.2] - 2024-06-28
### Added ### Added
- Added className prop to CheckBox and Radio components - Added className prop to CheckBox and Radio components
## [6.0.1] - 2024-06-26 ## [6.0.1] - 2024-06-26
### Added ### Added
- Added className prop to Switch component - Added className prop to Switch component
### Changed ### Changed
- Updated dependencies in package.json - Updated dependencies in package.json
- NPM audit fix - NPM audit fix
## [6.0.0] - 2024-06-11 ## [6.0.0] - 2024-06-11
### Added ### Added
- Added CHANGELOG.md - Added CHANGELOG.md
- Added JS_DIR variable to Makefile - Added JS_DIR variable to Makefile
- Added support for shared reForis ESLint configuration - Added support for shared reForis ESLint configuration
### Changed ### Changed
- Updated dependencies in package.json - Updated dependencies in package.json
- Updated Spinner.css styles for better positioning and responsiveness - Updated Spinner.css styles for better positioning and responsiveness
- Migrated to Bootstrap 5 - Migrated to Bootstrap 5
- NPM audit fix - NPM audit fix
- Other small improvements - Other small improvements
## [5.6.1] - 2024-01-19 ## [5.6.1] - 2024-01-19
- Added & updated Weblate translations - Added & updated Weblate translations
- Fixed loading state & button's layout - Fixed loading state & button's layout
- Updated bootstrap library to version 4.6.2 - Updated bootstrap library to version 4.6.2
- Used custom reforis-image in GitLab CI/CD - Used custom reforis-image in GitLab CI/CD
- NPM audit fix - NPM audit fix
## [5.6.0] - 2022-12-29 ## [5.6.0] - 2022-12-29
- Add & update Weblate translations - Add & update Weblate translations
- Add CustomizationContext and custom hook - Add CustomizationContext and custom hook
- Update caniuse-lite - Update caniuse-lite
- Remove testUtils from .gitignore - Remove testUtils from .gitignore
- Make ieee80211w_disabled as optional in WiFiForm - Make ieee80211w_disabled as optional in WiFiForm
- Move contexts in a context folder - Move contexts in a context folder
- NPM audit fix - NPM audit fix
## [5.5.0] - 2022-12-02 ## [5.5.0] - 2022-12-02
- Add & update translations - Add & update translations
- Add a switch to disable Management Frame Protection (802.11w) - Add a switch to disable Management Frame Protection (802.11w)
- Improved Foris JS documentation - Improved Foris JS documentation
- NPM audit fix - NPM audit fix
## [5.4.1] - 2022-06-03 ## [5.4.1] - 2022-06-03
- Add Weblate translations - Add Weblate translations
- Update PropType peer dependency - Update PropType peer dependency
- NPM audit fix - NPM audit fix
## [5.4.0] - 2022-05-20 ## [5.4.0] - 2022-05-20
- Add & update translations - Add & update translations
- Add CopyInput bootstrap component - Add CopyInput bootstrap component
- Update WiFiForm labels and description for wifi ax - Update WiFiForm labels and description for wifi ax
- Make WS path in lighttpd mode configurable - Make WS path in lighttpd mode configurable
- Fix Wi-Fi password helptext string - Fix Wi-Fi password helptext string
- NPM audit fix - NPM audit fix
## [5.3.0] - 2022-02-21 ## [5.3.0] - 2022-02-21
- Added & update translations - Added & update translations
- Added rest of the props to DownloadButton component - Added rest of the props to DownloadButton component
- Added hostname validation - Added hostname validation
- Added wifi 802.11ax HE modes - Added wifi 802.11ax HE modes
- Set best Wi-Fi HT mode depending on the checked frequency - Set best Wi-Fi HT mode depending on the checked frequency
- Improved domain name RegEx pattern - Improved domain name RegEx pattern
- Removed customOrder prop in Select component - Removed customOrder prop in Select component
- Fixed Wi-Fi translation strings - Fixed Wi-Fi translation strings
- Fixed autocomplete attribute in PasswordInput - Fixed autocomplete attribute in PasswordInput
- Fixed WiFi password max length check - Fixed WiFi password max length check
- Fixed documentation build - Fixed documentation build
- Fixed access token in publish script - Fixed access token in publish script
- Refined & restructure Makefile - Refined & restructure Makefile
- Updated GitLab CI image to Node.js v16 - Updated GitLab CI image to Node.js v16
- NPM update (several dependencies) - NPM update (several dependencies)
- NPM audit fix - NPM audit fix
## [5.2.0] - 2021-12-15 ## [5.2.0] - 2021-12-15
- Remove login page - Remove login page
- NPM audit fix - NPM audit fix
## [5.1.16] - 2021-11-18 ## [5.1.16] - 2021-11-18
- Revert bad NPM audit fix - Revert bad NPM audit fix
- NPM audit fix - NPM audit fix
## [5.1.15] - 2021-11-03 ## [5.1.15] - 2021-11-03
- Add WPA3 option - Add WPA3 option
- Add custom order ability of Select options - Add custom order ability of Select options
- NPM audit fix - NPM audit fix
## [5.1.14] - 2021-07-30 ## [5.1.14] - 2021-07-30
- Add & update translations - Add & update translations
- Fix infinity redirect loop when WS error occurs - Fix infinity redirect loop when WS error occurs
- NPM audit fix - NPM audit fix
## [5.1.13] - 2021-06-30 ## [5.1.13] - 2021-06-30
- Add sentinelAgreement endpoint to forisUrls - Add sentinelAgreement endpoint to forisUrls
- NPM audit fix - NPM audit fix
## [5.1.12] - 2021-05-14 ## [5.1.12] - 2021-05-14
- Add & update translations - Add & update translations
- Add & fix obsolete links - Add & fix obsolete links
- Expend library with the ResetWifiSettings function - Expend library with the ResetWifiSettings function
- Fix switching Wi-Fi modes depending on bands in WiFiForm - Fix switching Wi-Fi modes depending on bands in WiFiForm
- Fix translation sources in WiFiForm - Fix translation sources in WiFiForm
- NPM audit fix - NPM audit fix
- Other small improvements - Other small improvements
## [5.1.11] - 2021-01-04 ## [5.1.11] - 2021-01-04
- Remove duplicated file for Norwegian language - Remove duplicated file for Norwegian language
- Fix translations inconsistency - Fix translations inconsistency
## [5.1.10] - 2021-12-29 ## [5.1.10] - 2021-12-29
- Add and update translations - Add and update translations
## [5.1.9] - 2021-12-20 ## [5.1.9] - 2021-12-20
- Increase bottom margin of formFieldsSize - Increase bottom margin of formFieldsSize
- Change formFieldsSize of ResetWiFiSettings card - Change formFieldsSize of ResetWiFiSettings card
- Fix trailing space in Modal classes - Fix trailing space in Modal classes
## [5.1.8] - 2020-12-19 ## [5.1.8] - 2020-12-19
- Add isPluginInstalled function - Add isPluginInstalled function
## [5.1.7] - 2020-11-27 ## [5.1.7] - 2020-11-27
## [5.1.6] - 2020-11-25 ## [5.1.6] - 2020-11-25
- NPM audit fix - NPM audit fix
- Add displayCard function to utils - Add displayCard function to utils
- Add optional sizes to Modal - Add optional sizes to Modal
- Add information about optional sizes to docs - Add information about optional sizes to docs
- Remove redundant merge.py - Remove redundant merge.py
## [5.1.5] - 2020-09-25 ## [5.1.5] - 2020-09-25
- Fix DateTime import - Fix DateTime import
- Fix extra empty space in Switch's classes - Fix extra empty space in Switch's classes
## [5.1.4] - 2020-09-25 ## [5.1.4] - 2020-09-25
- Add inline option to Wi-Fi's RadioSet - Add inline option to Wi-Fi's RadioSet
- Fix Alert's dismissible class condition - Fix Alert's dismissible class condition
- Add closing bootstrap modal using ESC - Add closing bootstrap modal using ESC
- Change reboot modal's heading to "Warning!" - Change reboot modal's heading to "Warning!"
## [5.1.3] - 2020-09-11 ## [5.1.3] - 2020-09-11
- Add SSID validation for 32 bytes length - Add SSID validation for 32 bytes length
- Add helpText for SSID input - Add helpText for SSID input
## [5.1.2] - 2020-09-08 ## [5.1.2] - 2020-09-08
- Fix infinity loop caused by WebSockets - Fix infinity loop caused by WebSockets
- Resolve small issues - Resolve small issues
## [5.1.1] - 2020-08-31 ## [5.1.1] - 2020-08-31
- Add "inline" option to RadioSet - Add "inline" option to RadioSet
- NPM audit fix - NPM audit fix
## [5.1.0] - 2020-08-25 ## [5.1.0] - 2020-08-25
- Add new Switch component - Add new Switch component
- Swap checkboxes for switches on Wi-Fi page - Swap checkboxes for switches on Wi-Fi page
- Decrease button width on different breakpoints - Decrease button width on different breakpoints
- Add integration of Prettier + ESLint + reForis Style Guide - Add integration of Prettier + ESLint + reForis Style Guide
- Add appropriate links to dropdown headers - Add appropriate links to dropdown headers
- Add semantic & accessibility structure for headings - Add semantic & accessibility structure for headings
- NPM audit & Update packages - NPM audit & Update packages
- GitLab CI: image update to node 10 - GitLab CI: image update to node 10
## [5.0.3] - 2020-09-23 ## [5.0.3] - 2020-09-23
- Fixes issue with WebSockets - Fixes issue with WebSockets
## [5.0.2] - 2020-09-22 ## [5.0.2] - 2020-09-22
- Fix infinity loop caused by WebSockets - Fix infinity loop caused by WebSockets
## [5.0.1] - 2020-07-21 ## [5.0.1] - 2020-07-21
- Fix Wi-Fi Form - Fix Wi-Fi Form
- NPM audit fix & update of packages - NPM audit fix & update of packages
## [5.0.0] - 2020-05-07 ## [5.0.0] - 2020-05-07
- I've realized that it should be major update due to broken API. - I've realized that it should be major update due to broken API.
## [4.5.1] - 2020-05-07 ## [4.5.1] - 2020-05-07
- Add initialData to ForisForm children. - Add initialData to ForisForm children.
- Update translations .pot file. - Update translations .pot file.
## [4.5.0] - 2020-03-25 ## [4.5.0] - 2020-03-25
- Use exposed pdfmake. - Use exposed pdfmake.
- NPM audit fix & update of packages. - NPM audit fix & update of packages.
## [4.4.0] - 2020-03-13 ## [4.4.0] - 2020-03-13
- Update domain validation. - Update domain validation.
## [4.3.1] - 2020-03-06 ## [4.3.1] - 2020-03-06
- Add logout link. - Add logout link.
## [4.3.0] - 2020-02-26 ## [4.3.0] - 2020-02-26
- Allow RadioSet accept elements as children. - Allow RadioSet accept elements as children.
- Add option to make modal scrollable. - Add option to make modal scrollable.
## [4.2.0] - 2020-02-21 ## [4.2.0] - 2020-02-21
- Add translations. - Add translations.
- Improve datatime localization. - Improve datatime localization.
## [4.1.0] - 2020-02-20 ## [4.1.0] - 2020-02-20
- Added date and time utilities. - Added date and time utilities.
## [4.0.0] - 2020-02-20 ## [4.0.0] - 2020-02-20
- Throw an error if unhandled exception happens during API request. - Throw an error if unhandled exception happens during API request.
## [3.4.0] - 2020-02-17 ## [3.4.0] - 2020-02-17
- Display actual GET error response within the form. - Display actual GET error response within the form.
- Added styles extracted from reForis. - Added styles extracted from reForis.
- Added reference to form element (for programmatically submitting it). - Added reference to form element (for programmatically submitting it).
## [3.2.0] - 2020-01-17 ## [3.2.0] - 2020-01-17
- Swapped react-router with react-router-dom. Prepared Foris JS for using - Swapped react-router with react-router-dom. Prepared Foris JS for using
react-router-dom exposed by reForis. react-router-dom exposed by reForis.
- Added controller ID filter to WebSocket hook. - Added controller ID filter to WebSocket hook.
- Updated translation messages after moving WiFi form. - Updated translation messages after moving WiFi form.
- Increased request timeout to 30.5 sec. - Increased request timeout to 30.5 sec.
## [3.1.1] - 2020-01-10 ## [3.1.1] - 2020-01-10
- Fixed package dependencies related to exposing libraries via reForis - Fixed package dependencies related to exposing libraries via reForis
## [3.1.0] - 2020-01-09 ## [3.1.0] - 2020-01-09
- Added Wi-Fi settings form - Added Wi-Fi settings form
- Fixed path to index.js file in package.json - Fixed path to index.js file in package.json
## [3.0.0] - 2020-01-07 ## [3.0.0] - 2020-01-07
- Removal of Babel compiler - Removal of Babel compiler
- Fixed width of ForisForm, removed default sizing for form widgets (like - Fixed width of ForisForm, removed default sizing for form widgets (like
buttons) buttons)
## [2.1.1] - 2020-01-06 ## [2.1.1] - 2020-01-06
- Display date and time picker above input element - Display date and time picker above input element
## [2.1.0] - 2019-12-19 ## [2.1.0] - 2019-12-19
- Set WebSocket logging to debug level - Set WebSocket logging to debug level
- Added hook that detects clicking outside of component - Added hook that detects clicking outside of component
- Added Radio to list of publicly available components - Added Radio to list of publicly available components
- Fixed link to git repository in package.json - Fixed link to git repository in package.json
## [2.0.0] - 2019-12-09 ## [2.0.0] - 2019-12-09
- Added dynamic suffix for API URLs (allowing to use one hook for different - Added dynamic suffix for API URLs (allowing to use one hook for different
resources with e.g. PUT) resources with e.g. PUT)
- Added unsubscribe method to WebSocket client - Added unsubscribe method to WebSocket client
- Added custom class to SpinnerElement - Added custom class to SpinnerElement
- Improved documentation - Improved documentation
- Published README.md - Published README.md
## [1.4.0] - 2019-11-29 ## [1.4.0] - 2019-11-29
- Add reboot button. - Add reboot button.
- Fix Foris URLs prefixes - Fix Foris URLs prefixes
## [1.3.3] - 2019-11-22 ## [1.3.3] - 2019-11-22
- Add translations from Weblate. - Add translations from Weblate.
## [1.3.2] - 2019-11-20 ## [1.3.2] - 2019-11-20
- Expose only AlertContext. - Expose only AlertContext.
- Add hook for API pooling. - Add hook for API pooling.
## [1.3.1] - 2019-11-14 ## [1.3.1] - 2019-11-14
@ -441,7 +448,8 @@ and this project adheres to
## [0.0.7] - 2019-09-02 ## [0.0.7] - 2019-09-02
[unreleased]: [unreleased]:
https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.1...dev https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.2...dev
[6.6.2]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.1...v6.6.2
[6.6.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.0...v6.6.1 [6.6.1]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.6.0...v6.6.1
[6.6.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.5.0...v6.6.0 [6.6.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.5.0...v6.6.0
[6.5.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.4.0...v6.5.0 [6.5.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.4.0...v6.5.0

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "foris", "name": "foris",
"version": "6.6.1", "version": "6.6.2",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "foris", "name": "foris",
"version": "6.6.1", "version": "6.6.2",
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.6.0", "@fortawesome/fontawesome-svg-core": "^6.6.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "foris", "name": "foris",
"version": "6.6.1", "version": "6.6.2",
"description": "Foris JS library is a set of components and utils for reForis application and plugins.", "description": "Foris JS library is a set of components and utils for reForis application and plugins.",
"author": "CZ.NIC, z.s.p.o.", "author": "CZ.NIC, z.s.p.o.",
"repository": { "repository": {

View File

@ -1,16 +1,11 @@
/* /*
* Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React, { import React, { useMemo, useState } from "react";
useMemo,
useState,
useImperativeHandle,
forwardRef,
} from "react";
import { import {
flexRender, flexRender,
@ -25,70 +20,62 @@ import RichTableBody from "./RichTableBody";
import RichTableHeader from "./RichTableHeader"; import RichTableHeader from "./RichTableHeader";
import RichTablePagination from "./RichTablePagination"; import RichTablePagination from "./RichTablePagination";
const fallbackData = [];
const RichTable = forwardRef(
({ columns, data, withPagination, pageSize = 5, pageIndex = 0 }, ref) => {
const tableColumns = useMemo(() => columns, [columns]);
const [tableData, setTableData] = useState(data ?? fallbackData);
const [sorting, setSorting] = useState([]);
const [pagination, setPagination] = useState({
pageIndex,
pageSize,
});
useImperativeHandle(ref, () => ({
setTableData,
}));
const table = useReactTable({
data: tableData,
columns: tableColumns,
getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(),
onPaginationChange: setPagination,
onSortingChange: setSorting,
state: {
sorting,
pagination,
},
});
const paginationIsNeeded =
tableData.length > pageSize && withPagination;
return (
<div className="table-responsive">
<table className="table table-hover text-nowrap">
<RichTableHeader table={table} flexRender={flexRender} />
<RichTableBody table={table} flexRender={flexRender} />
</table>
{paginationIsNeeded && (
<RichTablePagination
table={table}
tablePageSize={pageSize}
allRows={tableData.length}
/>
)}
</div>
);
}
);
RichTable.propTypes = { RichTable.propTypes = {
/** Columns to be displayed in the table */ /** Columns to be displayed in the table */
columns: PropTypes.array.isRequired, columns: PropTypes.array.isRequired,
/** Data to be displayed in the table */ /** Data to be displayed in the table, must be passed as a stable reference, for example, useState */
data: PropTypes.array.isRequired, data: PropTypes.array.isRequired,
/** Whether to display pagination */ /** Whether to display pagination */
withPagination: PropTypes.bool, withPagination: PropTypes.bool,
/** Number of rows per page */ /** Number of rows per page, the default is 5 */
pageSize: PropTypes.number, pageSize: PropTypes.number,
/** Index of the current page */ /** Index of the current page */
pageIndex: PropTypes.number, pageIndex: PropTypes.number,
}; };
RichTable.displayName = "RichTable"; export default function RichTable({
columns,
data,
withPagination,
pageSize = 5,
pageIndex = 0,
}) {
const tableColumns = useMemo(() => columns, [columns]);
const [sorting, setSorting] = useState([]);
const [pagination, setPagination] = useState({
pageIndex,
pageSize,
});
export default RichTable; const table = useReactTable({
data,
columns: tableColumns,
getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(),
onPaginationChange: setPagination,
onSortingChange: setSorting,
state: {
sorting,
pagination,
},
});
const paginationIsNeeded = data.length > pageSize && withPagination;
return (
<div className="table-responsive">
<table className="table table-hover text-nowrap">
<RichTableHeader table={table} flexRender={flexRender} />
<RichTableBody table={table} flexRender={flexRender} />
</table>
{paginationIsNeeded && (
<RichTablePagination
table={table}
tablePageSize={pageSize}
allRows={data.length}
/>
)}
</div>
);
}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2025 CZ.NIC z.s.p.o. (https://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -20,22 +20,25 @@ export const STATES = {
SubmitButton.propTypes = { SubmitButton.propTypes = {
disabled: PropTypes.bool, disabled: PropTypes.bool,
state: PropTypes.oneOf(Object.keys(STATES).map((key) => STATES[key])), state: PropTypes.oneOf(Object.keys(STATES).map((key) => STATES[key])),
label: PropTypes.string,
}; };
export function SubmitButton({ disabled, state, ...props }) { export function SubmitButton({ disabled, state, label, ...props }) {
const disableSubmitButton = disabled || state !== STATES.READY; const disableSubmitButton = disabled || state !== STATES.READY;
const loadingSubmitButton = state !== STATES.READY; const loadingSubmitButton = state !== STATES.READY;
let labelSubmitButton; let labelSubmitButton = label;
switch (state) { if (!labelSubmitButton) {
case STATES.SAVING: switch (state) {
labelSubmitButton = _("Updating"); case STATES.SAVING:
break; labelSubmitButton = _("Updating");
case STATES.LOAD: break;
labelSubmitButton = _("Load settings"); case STATES.LOAD:
break; labelSubmitButton = _("Load settings");
default: break;
labelSubmitButton = _("Save"); default:
labelSubmitButton = _("Save");
}
} }
return ( return (