1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-06-16 13:46:16 +02:00

Compare commits

...

9 Commits

Author SHA1 Message Date
33add77704 Merge branch 'bump-version-662' into 'dev'
Bump v6.6.2

See merge request turris/reforis/foris-js!270
2025-02-20 12:53:59 +01:00
456cbcfeec Bump v6.6.2
* Enhance SubmitButton component to accept a custom label prop
* Refactor RichTable component to remove forwardRef and simplify data handling
2025-02-20 12:42:10 +01:00
bf0b2ce70c Merge branch 'refactor-richtable' into 'dev'
Refactor RichTable

See merge request turris/reforis/foris-js!269
2025-02-19 16:20:47 +01:00
1441f6ff5a Enhance SubmitButton component to accept a custom label prop and update copyright year 2025-02-19 16:17:05 +01:00
c7d0655771 Refactor RichTable component to remove forwardRef and simplify data handling 2025-02-19 16:17:04 +01:00
31cb8e2ae0 Merge branch 'bump-version-661' into 'dev'
Bump v6.6.1

See merge request turris/reforis/foris-js!267
2025-02-17 16:12:27 +01:00
0a75f24a04 Bump v6.6.1
* Refactor RichTable component to use forwardRef
2025-02-17 16:07:50 +01:00
230ae8e35b Merge branch 'improve-richtable' into 'dev'
Refactor RichTable component to use forwardRef and useImperativeHandle for improved data handling

See merge request turris/reforis/foris-js!266
2025-02-17 15:42:41 +01:00
eb4ffb0651 Refactor RichTable component to use forwardRef
And useImperativeHandle for improved data handling.
2025-02-13 16:30:23 +01:00
5 changed files with 231 additions and 218 deletions

View File

@ -8,6 +8,19 @@ 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
### Changed
- Refactored RichTable component to use forwardRef
## [6.6.0] - 2025-02-07 ## [6.6.0] - 2025-02-07
### Added ### Added
@ -435,7 +448,9 @@ 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.0...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.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
[6.4.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.3.0...v6.4.0 [6.4.0]: https://gitlab.nic.cz/turris/reforis/foris-js/-/compare/v6.3.0...v6.4.0

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "foris", "name": "foris",
"version": "6.6.0", "version": "6.6.2",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "foris", "name": "foris",
"version": "6.6.0", "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.0", "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,5 +1,5 @@
/* /*
* 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.
@ -20,22 +20,20 @@ import RichTableBody from "./RichTableBody";
import RichTableHeader from "./RichTableHeader"; import RichTableHeader from "./RichTableHeader";
import RichTablePagination from "./RichTablePagination"; import RichTablePagination from "./RichTablePagination";
const fallbackData = [];
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,
}; };
function RichTable({ export default function RichTable({
columns, columns,
data, data,
withPagination, withPagination,
@ -43,7 +41,6 @@ function RichTable({
pageIndex = 0, pageIndex = 0,
}) { }) {
const tableColumns = useMemo(() => columns, [columns]); const tableColumns = useMemo(() => columns, [columns]);
const [tableData] = useState(data ?? fallbackData);
const [sorting, setSorting] = useState([]); const [sorting, setSorting] = useState([]);
const [pagination, setPagination] = useState({ const [pagination, setPagination] = useState({
pageIndex, pageIndex,
@ -51,7 +48,7 @@ function RichTable({
}); });
const table = useReactTable({ const table = useReactTable({
data: tableData, data,
columns: tableColumns, columns: tableColumns,
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(), getSortedRowModel: getSortedRowModel(),
@ -64,7 +61,7 @@ function RichTable({
}, },
}); });
const paginationIsNeeded = tableData.length > pageSize && withPagination; const paginationIsNeeded = data.length > pageSize && withPagination;
return ( return (
<div className="table-responsive"> <div className="table-responsive">
@ -76,11 +73,9 @@ function RichTable({
<RichTablePagination <RichTablePagination
table={table} table={table}
tablePageSize={pageSize} tablePageSize={pageSize}
allRows={tableData.length} allRows={data.length}
/> />
)} )}
</div> </div>
); );
} }
export default RichTable;

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,13 +20,15 @@ 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;
if (!labelSubmitButton) {
switch (state) { switch (state) {
case STATES.SAVING: case STATES.SAVING:
labelSubmitButton = _("Updating"); labelSubmitButton = _("Updating");
@ -37,6 +39,7 @@ export function SubmitButton({ disabled, state, ...props }) {
default: default:
labelSubmitButton = _("Save"); labelSubmitButton = _("Save");
} }
}
return ( return (
<Button <Button