mod-arch-shared 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,13 +2,20 @@ import * as React from 'react';
2
2
  import { TbodyProps } from '@patternfly/react-table';
3
3
  import { EitherNotBoth } from '../../types/typeHelpers';
4
4
  import TableBase from './TableBase';
5
+ import { ControlledSortProps } from './useTableColumnSort';
6
+ type ControlledPaginationProps = {
7
+ page?: number;
8
+ pageSize?: number;
9
+ onPageChange?: (page: number) => void;
10
+ onPageSizeChange?: (pageSize: number, page: number) => void;
11
+ };
5
12
  type TableProps<DataType> = Omit<React.ComponentProps<typeof TableBase<DataType>>, 'itemCount' | 'onPerPageSelect' | 'onSetPage' | 'page' | 'perPage'> & EitherNotBoth<{
6
13
  disableRowRenderSupport?: boolean;
7
14
  }, {
8
15
  tbodyProps?: TbodyProps & {
9
16
  ref?: React.Ref<HTMLTableSectionElement>;
10
17
  };
11
- }>;
12
- declare const Table: <T>({ data: allData, columns, subColumns, enablePagination, defaultSortColumn, truncateRenderingAt, ...props }: TableProps<T>) => React.ReactElement;
18
+ }> & Partial<ControlledSortProps> & Partial<ControlledPaginationProps>;
19
+ declare const Table: <T>({ data: allData, columns, subColumns, enablePagination, defaultSortColumn, truncateRenderingAt, sortIndex: controlledSortIndex, sortDirection: controlledSortDirection, onSortIndexChange, onSortDirectionChange, page: controlledPage, pageSize: controlledPageSize, onPageChange, onPageSizeChange, ...props }: TableProps<T>) => React.ReactElement;
13
20
  export default Table;
14
21
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../components/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,SAA4B,MAAM,aAAa,CAAC;AAGvD,KAAK,UAAU,CAAC,QAAQ,IAAI,IAAI,CAC9B,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,EAChD,WAAW,GAAG,iBAAiB,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CACnE,GACC,aAAa,CACX;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,EACrC;IAAE,UAAU,CAAC,EAAE,UAAU,GAAG;QAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;KAAE,CAAA;CAAE,CAC3E,CAAC;AAEJ,QAAA,MAAM,KAAK,GAAI,CAAC,EAAG,4GAQhB,UAAU,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,YAwCxB,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../components/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,SAA4B,MAAM,aAAa,CAAC;AACvD,OAA2B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,KAAK,yBAAyB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,KAAK,UAAU,CAAC,QAAQ,IAAI,IAAI,CAC9B,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,EAChD,WAAW,GAAG,iBAAiB,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CACnE,GACC,aAAa,CACX;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,EACrC;IAAE,UAAU,CAAC,EAAE,UAAU,GAAG;QAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;KAAE,CAAA;CAAE,CAC3E,GACD,OAAO,CAAC,mBAAmB,CAAC,GAC5B,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAErC,QAAA,MAAM,KAAK,GAAI,CAAC,EAAG,kTAgBhB,UAAU,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,YA2FxB,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,10 +1,30 @@
1
1
  import * as React from 'react';
2
2
  import TableBase, { MIN_PAGE_SIZE } from './TableBase';
3
3
  import useTableColumnSort from './useTableColumnSort';
4
- const Table = ({ data: allData, columns, subColumns, enablePagination, defaultSortColumn = 0, truncateRenderingAt = 0, ...props }) => {
5
- const [page, setPage] = React.useState(1);
6
- const [pageSize, setPageSize] = React.useState(MIN_PAGE_SIZE);
7
- const sort = useTableColumnSort(columns, subColumns || [], defaultSortColumn);
4
+ const Table = ({ data: allData, columns, subColumns, enablePagination, defaultSortColumn = 0, truncateRenderingAt = 0, sortIndex: controlledSortIndex, sortDirection: controlledSortDirection, onSortIndexChange, onSortDirectionChange, page: controlledPage, pageSize: controlledPageSize, onPageChange, onPageSizeChange, ...props }) => {
5
+ // Internal state (used when not controlled)
6
+ const [internalPage, setInternalPage] = React.useState(1);
7
+ const [internalPageSize, setInternalPageSize] = React.useState(MIN_PAGE_SIZE);
8
+ // Store callback in ref
9
+ const onPageChangeRef = React.useRef(onPageChange);
10
+ React.useEffect(() => {
11
+ onPageChangeRef.current = onPageChange;
12
+ }, [onPageChange]);
13
+ // Use controlled props if provided, otherwise use internal state
14
+ const page = controlledPage !== undefined ? controlledPage : internalPage;
15
+ const pageSize = controlledPageSize !== undefined ? controlledPageSize : internalPageSize;
16
+ const controlledSortProps = controlledSortIndex !== undefined ||
17
+ controlledSortDirection !== undefined ||
18
+ onSortIndexChange ||
19
+ onSortDirectionChange
20
+ ? {
21
+ sortIndex: controlledSortIndex,
22
+ sortDirection: controlledSortDirection,
23
+ onSortIndexChange,
24
+ onSortDirectionChange,
25
+ }
26
+ : undefined;
27
+ const sort = useTableColumnSort(columns, subColumns || [], defaultSortColumn, controlledSortProps);
8
28
  const sortedData = sort.transformData(allData);
9
29
  let data;
10
30
  if (truncateRenderingAt) {
@@ -18,14 +38,33 @@ const Table = ({ data: allData, columns, subColumns, enablePagination, defaultSo
18
38
  }
19
39
  // update page to 1 if data changes (common when filter is applied)
20
40
  React.useEffect(() => {
41
+ const isPageControlled = controlledPage !== undefined;
21
42
  if (data.length === 0) {
22
- setPage(1);
43
+ onPageChangeRef.current?.(1);
44
+ if (!isPageControlled) {
45
+ setInternalPage(1);
46
+ }
47
+ }
48
+ }, [data.length, controlledPage]);
49
+ const handlePageChange = (_e, newPage) => {
50
+ const isPageControlled = controlledPage !== undefined;
51
+ onPageChange?.(newPage);
52
+ if (!isPageControlled) {
53
+ setInternalPage(newPage);
54
+ }
55
+ };
56
+ const handlePageSizeChange = (_e, newSize, newPage) => {
57
+ const isPageControlled = controlledPage !== undefined;
58
+ const isPageSizeControlled = controlledPageSize !== undefined;
59
+ onPageSizeChange?.(newSize, newPage);
60
+ if (!isPageSizeControlled) {
61
+ setInternalPageSize(newSize);
62
+ }
63
+ if (!isPageControlled) {
64
+ setInternalPage(newPage);
23
65
  }
24
- }, [data.length]);
25
- return (React.createElement(TableBase, { data: data, columns: columns, subColumns: subColumns, enablePagination: enablePagination, itemCount: allData.length, perPage: pageSize, page: page, onSetPage: (e, newPage) => setPage(newPage), onPerPageSelect: (e, newSize, newPage) => {
26
- setPageSize(newSize);
27
- setPage(newPage);
28
- }, getColumnSort: sort.getColumnSort, ...props }));
66
+ };
67
+ return (React.createElement(TableBase, { data: data, columns: columns, subColumns: subColumns, enablePagination: enablePagination, itemCount: allData.length, perPage: pageSize, page: page, onSetPage: handlePageChange, onPerPageSelect: handlePageSizeChange, getColumnSort: sort.getColumnSort, ...props }));
29
68
  };
30
69
  export default Table;
31
70
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../components/table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAWtD,MAAM,KAAK,GAAG,CAAK,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,iBAAiB,GAAG,CAAC,EACrB,mBAAmB,GAAG,CAAC,EACvB,GAAG,KAAK,EACM,EAAsB,EAAE;IACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,kBAAkB,CAAI,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,IAAS,CAAC;IACd,IAAI,mBAAmB,EAAE,CAAC;QACxB,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC5B,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,UAAU,CAAC;IACpB,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,oBAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAC3C,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YACvC,WAAW,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,EACD,aAAa,EAAE,IAAI,CAAC,aAAa,KAC7B,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../components/table/Table.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@ type TableColumnSortProps<DataType> = {
5
5
  sortDirection?: 'asc' | 'desc';
6
6
  setSortDirection: (dir: 'asc' | 'desc') => void;
7
7
  };
8
+ export type ControlledSortProps = {
9
+ sortIndex?: number | undefined;
10
+ sortDirection?: 'asc' | 'desc' | undefined;
11
+ onSortIndexChange?: (index: number) => void;
12
+ onSortDirectionChange?: (direction: 'asc' | 'desc') => void;
13
+ };
8
14
  type TableColumnSortByFieldProps<DataType> = TableColumnSortProps<DataType> & {
9
15
  sortField?: string;
10
16
  setSortField: (field: string) => void;
@@ -18,7 +24,7 @@ export declare const getTableColumnSort: <T>({ columns, subColumns, sortField, s
18
24
  *
19
25
  * @see https://www.patternfly.org/v4/components/table
20
26
  */
21
- declare const useTableColumnSort: <T>(columns: SortableData<T>[], subColumns: SortableData<T>[], defaultSortColIndex?: number) => {
27
+ declare const useTableColumnSort: <T>(columns: SortableData<T>[], subColumns: SortableData<T>[], defaultSortColIndex?: number, controlledSortProps?: ControlledSortProps) => {
22
28
  transformData: (data: T[]) => T[];
23
29
  getColumnSort: GetColumnSort;
24
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableColumnSort.d.ts","sourceRoot":"","sources":["../../../components/table/useTableColumnSort.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD,KAAK,oBAAoB,CAAC,QAAQ,IAAI;IACpC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,KAAK,2BAA2B,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAOF,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,gEAMnC,2BAA2B,CAAC,CAAC,CAAC,KAAG,aAOhC,CAAC;AA6BL;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,GAAI,CAAC,EAC3B,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,YAAY,YAAY,CAAC,CAAC,CAAC,EAAE,EAC7B,sBAAsB,MAAM,KAC3B;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;CAwD9B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"useTableColumnSort.d.ts","sourceRoot":"","sources":["../../../components/table/useTableColumnSort.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD,KAAK,oBAAoB,CAAC,QAAQ,IAAI;IACpC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,KAAK,2BAA2B,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAOF,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,gEAMnC,2BAA2B,CAAC,CAAC,CAAC,KAAG,aAOhC,CAAC;AA6BL;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,GAAI,CAAC,EAC3B,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,YAAY,YAAY,CAAC,CAAC,CAAC,EAAE,EAC7B,sBAAsB,MAAM,EAC5B,sBAAsB,mBAAmB,KACxC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;CAkF9B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -30,9 +30,30 @@ const getTableColumnSortByIndex = ({ columns, subColumns, sortIndex, sortDirecti
30
30
  *
31
31
  * @see https://www.patternfly.org/v4/components/table
32
32
  */
33
- const useTableColumnSort = (columns, subColumns, defaultSortColIndex) => {
34
- const [activeSortIndex, setActiveSortIndex] = React.useState(defaultSortColIndex);
35
- const [activeSortDirection, setActiveSortDirection] = React.useState('asc');
33
+ const useTableColumnSort = (columns, subColumns, defaultSortColIndex, controlledSortProps) => {
34
+ const [internalSortIndex, setInternalSortIndex] = React.useState(defaultSortColIndex);
35
+ const [internalSortDirection, setInternalSortDirection] = React.useState('asc');
36
+ // Use controlled props if provided, otherwise use internal state
37
+ const activeSortIndex = controlledSortProps?.sortIndex !== undefined
38
+ ? controlledSortProps.sortIndex
39
+ : internalSortIndex;
40
+ const activeSortDirection = controlledSortProps?.sortDirection !== undefined
41
+ ? controlledSortProps.sortDirection
42
+ : internalSortDirection;
43
+ const isSortIndexControlled = controlledSortProps?.sortIndex !== undefined;
44
+ const isSortDirectionControlled = controlledSortProps?.sortDirection !== undefined;
45
+ const handleSortIndexChange = (index) => {
46
+ controlledSortProps?.onSortIndexChange?.(index);
47
+ if (!isSortIndexControlled) {
48
+ setInternalSortIndex(index);
49
+ }
50
+ };
51
+ const handleSortDirectionChange = (direction) => {
52
+ controlledSortProps?.onSortDirectionChange?.(direction);
53
+ if (!isSortDirectionControlled) {
54
+ setInternalSortDirection(direction);
55
+ }
56
+ };
36
57
  return {
37
58
  transformData: (data) => {
38
59
  if (activeSortIndex === undefined) {
@@ -69,9 +90,9 @@ const useTableColumnSort = (columns, subColumns, defaultSortColIndex) => {
69
90
  columns,
70
91
  subColumns,
71
92
  sortDirection: activeSortDirection,
72
- setSortDirection: setActiveSortDirection,
93
+ setSortDirection: handleSortDirectionChange,
73
94
  sortIndex: activeSortIndex,
74
- setSortIndex: setActiveSortIndex,
95
+ setSortIndex: handleSortIndexChange,
75
96
  }),
76
97
  };
77
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableColumnSort.js","sourceRoot":"","sources":["../../../components/table/useTableColumnSort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTableColumnSort.js","sourceRoot":"","sources":["../../../components/table/useTableColumnSort.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-arch-shared",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Shared UI components and utilities for modular architecture micro-frontend projects",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",