@absreim/react-bootstrap-data-grid 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/constants.d.ts +2 -0
- package/common/constants.js +2 -0
- package/common/editing/types.d.ts +7 -0
- package/{filtering → common/filtering}/FilterOptionsTable.d.ts +4 -4
- package/{filtering → common/filtering}/types.d.ts +6 -6
- package/common/filtering/useFilterFormState.d.ts +3 -0
- package/{index.d.ts → common/index.d.ts} +8 -7
- package/{index.js → common/index.js} +8 -7
- package/{pagination → common/pagination}/PageSelector.d.ts +1 -1
- package/{pagination → common/pagination}/PageSizeSelector.d.ts +1 -1
- package/{pagination → common/pagination}/types.d.ts +2 -1
- package/{pipeline → common/pipeline}/useAugFormattedRows.d.ts +1 -1
- package/common/pipeline/useColNameToWidth.d.ts +3 -0
- package/common/pipeline/useColNameToWidth.js +12 -0
- package/{pipeline → common/pipeline}/useCombinedPipeline/index.d.ts +4 -4
- package/{pipeline → common/pipeline}/useCombinedPipeline/useCurrentPageRows.d.ts +1 -1
- package/{pipeline → common/pipeline}/useCombinedPipeline/useDisplayRows.d.ts +1 -1
- package/{pipeline → common/pipeline}/useCombinedPipeline/useDisplayRows.js +1 -2
- package/common/pipeline/useCombinedPipeline/useFilter.d.ts +4 -0
- package/common/pipeline/useCombinedPipeline/useFilterStateFromEditable.d.ts +4 -0
- package/{pipeline → common/pipeline}/useCombinedPipeline/useSortedRows.d.ts +2 -2
- package/{pipeline → common/pipeline}/useGridSelectionFns.d.ts +2 -2
- package/{sorting → common/sorting}/types.d.ts +3 -3
- package/{main/ColHeaderCell → common/sorting}/useSortHeaderStates.d.ts +2 -2
- package/{main/ColHeaderCell → common/sorting}/useSortHeaderStates.js +4 -4
- package/common/styling/types.d.ts +21 -0
- package/{types.d.ts → common/types.d.ts} +21 -30
- package/common/util/index.d.ts +5 -0
- package/common/util/index.js +5 -0
- package/community/index.d.ts +4 -0
- package/community/index.js +4 -0
- package/grid/constants.d.ts +2 -0
- package/grid/constants.js +2 -0
- package/grid/index.d.ts +3 -0
- package/grid/index.js +3 -0
- package/{Grid.d.ts → grid/main/Grid.d.ts} +0 -1
- package/grid/main/Grid.js +60 -0
- package/grid/main/GridBody.d.ts +4 -0
- package/grid/main/GridBody.js +17 -0
- package/grid/main/GridHeader.d.ts +4 -0
- package/grid/main/GridHeader.js +12 -0
- package/grid/main/getWidthStyles.d.ts +3 -0
- package/grid/main/getWidthStyles.js +6 -0
- package/grid/main/types.d.ts +32 -0
- package/grid/main/types.js +1 -0
- package/grid.css +1 -0
- package/grid.scss +231 -0
- package/package.json +1 -1
- package/{InternalGrid.d.ts → table/InternalTable.d.ts} +6 -6
- package/{InternalGrid.js → table/InternalTable.js} +7 -7
- package/table/Table.d.ts +5 -0
- package/{Grid.js → table/Table.js} +10 -17
- package/{editing → table/editing}/EditableRow.d.ts +1 -2
- package/{editing → table/editing}/EditableRow.js +2 -2
- package/table/index.d.ts +5 -0
- package/table/index.js +5 -0
- package/{main → table/main}/BodyRows.d.ts +7 -7
- package/{main → table/main}/BodyRows.js +1 -1
- package/{main → table/main}/ColHeaderCell/index.js +3 -3
- package/{selection → table/selection}/SelectAllHeaderCell.d.ts +1 -1
- package/{styling → table/styling}/types.d.ts +1 -21
- package/table/styling/types.js +1 -0
- package/table/types.d.ts +19 -0
- package/table/types.js +1 -0
- package/editing/types.d.ts +0 -16
- package/filtering/useFilterFormState.d.ts +0 -3
- package/main/ToggleButton.d.ts +0 -9
- package/main/ToggleButton.js +0 -14
- package/pipeline/useCombinedPipeline/useEditableFromFilterState.d.ts +0 -3
- package/pipeline/useCombinedPipeline/useEditableFromFilterState.js +0 -14
- package/pipeline/useCombinedPipeline/useFilter.d.ts +0 -4
- package/pipeline/useCombinedPipeline/useFilterStateFromEditable.d.ts +0 -4
- /package/{editing → common/editing}/inputStrsToRowData.d.ts +0 -0
- /package/{editing → common/editing}/inputStrsToRowData.js +0 -0
- /package/{editing → common/editing}/types.js +0 -0
- /package/{export → common/export}/ExportForm.d.ts +0 -0
- /package/{export → common/export}/ExportForm.js +0 -0
- /package/{export → common/export}/types.d.ts +0 -0
- /package/{export → common/export}/types.js +0 -0
- /package/{export → common/export}/useExportFn.d.ts +0 -0
- /package/{export → common/export}/useExportFn.js +0 -0
- /package/{filtering → common/filtering}/DateFilterRow.d.ts +0 -0
- /package/{filtering → common/filtering}/DateFilterRow.js +0 -0
- /package/{filtering → common/filtering}/FilterOptionsTable.js +0 -0
- /package/{filtering → common/filtering}/FilterRow.d.ts +0 -0
- /package/{filtering → common/filtering}/FilterRow.js +0 -0
- /package/{filtering → common/filtering}/NumberFilterRow.d.ts +0 -0
- /package/{filtering → common/filtering}/NumberFilterRow.js +0 -0
- /package/{filtering → common/filtering}/StringFilterRow.d.ts +0 -0
- /package/{filtering → common/filtering}/StringFilterRow.js +0 -0
- /package/{filtering → common/filtering}/types.js +0 -0
- /package/{filtering → common/filtering}/useFilterFormState.js +0 -0
- /package/{pagination → common/pagination}/PageSelector.js +0 -0
- /package/{pagination → common/pagination}/PageSizeSelector.js +0 -0
- /package/{pagination → common/pagination}/Pagination.d.ts +0 -0
- /package/{pagination → common/pagination}/Pagination.js +0 -0
- /package/{pagination → common/pagination}/types.js +0 -0
- /package/{pipeline → common/pipeline}/types.d.ts +0 -0
- /package/{pipeline → common/pipeline}/types.js +0 -0
- /package/{pipeline → common/pipeline}/useAugFormattedRows.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/index.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useCurrentPageRows.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useFilter.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useFilterStateFromEditable.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useFilterStateStore.d.ts +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useFilterStateStore.js +0 -0
- /package/{pipeline → common/pipeline}/useCombinedPipeline/useSortedRows.js +0 -0
- /package/{pipeline → common/pipeline}/useGetInputStrSubmitCallback.d.ts +0 -0
- /package/{pipeline → common/pipeline}/useGetInputStrSubmitCallback.js +0 -0
- /package/{pipeline → common/pipeline}/useGridSelectionFns.js +0 -0
- /package/{selection → common/selection}/types.d.ts +0 -0
- /package/{selection → common/selection}/types.js +0 -0
- /package/{sorting → common/sorting}/arrowPlaceholder.d.ts +0 -0
- /package/{sorting → common/sorting}/arrowPlaceholder.js +0 -0
- /package/{sorting → common/sorting}/downArrow.d.ts +0 -0
- /package/{sorting → common/sorting}/downArrow.js +0 -0
- /package/{sorting → common/sorting}/sortOrderToAriaSort.d.ts +0 -0
- /package/{sorting → common/sorting}/sortOrderToAriaSort.js +0 -0
- /package/{sorting → common/sorting}/types.js +0 -0
- /package/{sorting → common/sorting}/upArrow.d.ts +0 -0
- /package/{sorting → common/sorting}/upArrow.js +0 -0
- /package/{styling → common/styling}/types.js +0 -0
- /package/{toolbar → common/toolbar}/Toolbar.d.ts +0 -0
- /package/{toolbar → common/toolbar}/Toolbar.js +0 -0
- /package/{toolbar → common/toolbar}/ToolbarContainer.d.ts +0 -0
- /package/{toolbar → common/toolbar}/ToolbarContainer.js +0 -0
- /package/{toolbar → common/toolbar}/types.d.ts +0 -0
- /package/{toolbar → common/toolbar}/types.js +0 -0
- /package/{toolbar → common/toolbar}/useInterfaces.d.ts +0 -0
- /package/{toolbar → common/toolbar}/useInterfaces.js +0 -0
- /package/{types.js → common/types.js} +0 -0
- /package/{util → common/util}/datetime.d.ts +0 -0
- /package/{util → common/util}/datetime.js +0 -0
- /package/{util → common/util}/getWidthStyle.d.ts +0 -0
- /package/{util → common/util}/getWidthStyle.js +0 -0
- /package/{util → common/util}/isSubset.d.ts +0 -0
- /package/{util → common/util}/isSubset.js +0 -0
- /package/{util → common/util}/trueModulo.d.ts +0 -0
- /package/{util → common/util}/trueModulo.js +0 -0
- /package/{util → common/util}/useControlledHover.d.ts +0 -0
- /package/{util → common/util}/useControlledHover.js +0 -0
- /package/{editing → table/editing}/EditControlsCell.d.ts +0 -0
- /package/{editing → table/editing}/EditControlsCell.js +0 -0
- /package/{main → table/main}/ColHeaderCell/index.d.ts +0 -0
- /package/{selection → table/selection}/SelectAllHeaderCell.js +0 -0
- /package/{selection → table/selection}/SelectionInput.d.ts +0 -0
- /package/{selection → table/selection}/SelectionInput.js +0 -0
- /package/{style.css → table.css} +0 -0
- /package/{style.scss → table.scss} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RowData, RowId } from "../types";
|
|
2
|
+
export type UpdateCallbackGenerator = (id: RowId) => (rowData: RowData) => void;
|
|
3
|
+
export interface EditModel {
|
|
4
|
+
getUpdateCallback: UpdateCallbackGenerator;
|
|
5
|
+
getDeleteCallback?: (id: RowId) => () => void;
|
|
6
|
+
editColWidth?: number;
|
|
7
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { FilterInputTableStyleModel } from "
|
|
2
|
+
import { EditableFilterState, FilterState } from "./types";
|
|
3
|
+
import { FilterInputTableStyleModel } from "../../table/styling/types";
|
|
4
4
|
export interface FilterOptionsTableProps {
|
|
5
|
-
filterState:
|
|
6
|
-
setFilterState: (filterState:
|
|
5
|
+
filterState: FilterState;
|
|
6
|
+
setFilterState: (filterState: EditableFilterState) => void;
|
|
7
7
|
closeFormCallback: () => void;
|
|
8
8
|
caption?: string;
|
|
9
9
|
styleModel?: FilterInputTableStyleModel;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export type
|
|
2
|
-
export type
|
|
1
|
+
export type FilterState = Record<string, ColFilterState>;
|
|
2
|
+
export type EditableFilterState = Record<string, EditableColFilterState>;
|
|
3
3
|
export interface ColFilterState {
|
|
4
|
-
editableState:
|
|
4
|
+
editableState: EditableColFilterState;
|
|
5
5
|
label: string;
|
|
6
6
|
}
|
|
7
7
|
export interface AbstractFilterState {
|
|
@@ -44,11 +44,11 @@ export interface BetweenDatesFilterState extends AbstractDateFilterState {
|
|
|
44
44
|
endDate: Date | null;
|
|
45
45
|
}
|
|
46
46
|
export type DateFilterState = StartDateFilterState | EndDateFilterState | BetweenDatesFilterState;
|
|
47
|
-
export type
|
|
47
|
+
export type EditableColFilterState = StringFilterState | NumberFilterState | DateFilterState;
|
|
48
48
|
export interface ControlledFilterModel {
|
|
49
49
|
type?: "controlled";
|
|
50
|
-
tableFilterState:
|
|
51
|
-
setTableFilterState: (state:
|
|
50
|
+
tableFilterState: EditableFilterState;
|
|
51
|
+
setTableFilterState: (state: EditableFilterState) => void;
|
|
52
52
|
filterTableCaption?: string;
|
|
53
53
|
}
|
|
54
54
|
export type UncontrolledFilterModel = Partial<Pick<ControlledFilterModel, "tableFilterState" | "filterTableCaption">> & {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./styling/types";
|
|
3
1
|
export * from "./editing/types";
|
|
4
|
-
export * from "./
|
|
2
|
+
export * from "./export/types";
|
|
5
3
|
export * from "./filtering/types";
|
|
6
|
-
export * from "./sorting/types";
|
|
7
4
|
export * from "./pagination/types";
|
|
8
|
-
export * from "./
|
|
9
|
-
export * from "./
|
|
10
|
-
export
|
|
5
|
+
export * from "./pipeline/types";
|
|
6
|
+
export * from "./sorting/types";
|
|
7
|
+
export * from "./styling/types";
|
|
8
|
+
export * from "./toolbar/types";
|
|
9
|
+
export * from "./selection/types";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
export * from "./util";
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export * from "./types";
|
|
2
|
-
export * from "./styling/types";
|
|
3
1
|
export * from "./editing/types";
|
|
4
|
-
export * from "./
|
|
2
|
+
export * from "./export/types";
|
|
5
3
|
export * from "./filtering/types";
|
|
6
|
-
export * from "./sorting/types";
|
|
7
4
|
export * from "./pagination/types";
|
|
8
|
-
export * from "./
|
|
9
|
-
export * from "./
|
|
10
|
-
export
|
|
5
|
+
export * from "./pipeline/types";
|
|
6
|
+
export * from "./sorting/types";
|
|
7
|
+
export * from "./styling/types";
|
|
8
|
+
export * from "./toolbar/types";
|
|
9
|
+
export * from "./selection/types";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
export * from "./util";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export type JustifyContentSetting = "start" | "end" | "center" | "between" | "around" | "evenly";
|
|
2
|
+
export type Size = "small" | "medium" | "large";
|
|
2
3
|
export interface PaginationOptions {
|
|
3
4
|
pageSizeOptions?: number[];
|
|
4
5
|
maxPageButtons?: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AugFormattedRow, FormattedRow } from "../types";
|
|
2
1
|
import { ColNameToWidth } from "./types";
|
|
2
|
+
import { AugFormattedRow, FormattedRow } from "../";
|
|
3
3
|
declare const useAugFormattedRows: (colNameToWidth: ColNameToWidth, rows: FormattedRow[]) => AugFormattedRow[];
|
|
4
4
|
export default useAugFormattedRows;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
var useColNameToWidth = function (cols) {
|
|
3
|
+
return useMemo(function () {
|
|
4
|
+
var map = {};
|
|
5
|
+
cols.forEach(function (_a) {
|
|
6
|
+
var name = _a.name, width = _a.width;
|
|
7
|
+
return (map[name] = width);
|
|
8
|
+
});
|
|
9
|
+
return map;
|
|
10
|
+
}, [cols]);
|
|
11
|
+
};
|
|
12
|
+
export default useColNameToWidth;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { SortedRowsOutput } from "./useSortedRows";
|
|
2
2
|
import { CurrentPageRowsOutput } from "./useCurrentPageRows";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export type CombinedPipelineParams = Pick<
|
|
3
|
+
import { NormalizedTableFilterModel, FilterState } from "../../";
|
|
4
|
+
import { ColDefBase, FormattedRow, MainComponentSharedProps, RowDef } from "../../types";
|
|
5
|
+
export type CombinedPipelineParams = Pick<MainComponentSharedProps, "rows" | "filterModel" | "sortModel" | "pagination" | "selectModel"> & {
|
|
6
6
|
cols: ColDefBase[];
|
|
7
7
|
};
|
|
8
8
|
export interface UseCombinedPipelineHook {
|
|
9
9
|
normalizedTableFilterModel: NormalizedTableFilterModel | null;
|
|
10
10
|
filteredRows: RowDef[];
|
|
11
|
-
filterState:
|
|
11
|
+
filterState: FilterState | null;
|
|
12
12
|
sortedRowsOutput: SortedRowsOutput;
|
|
13
13
|
currentPageRowsOutput: CurrentPageRowsOutput;
|
|
14
14
|
showSelectCol: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AugRowDef, PostPaginationRowDef } from "../../types";
|
|
2
1
|
import { NormalizedPaginationModel, PaginationModel } from "../../pagination/types";
|
|
2
|
+
import { AugRowDef, PostPaginationRowDef } from "../../";
|
|
3
3
|
export interface CurrentPageRowsOutput {
|
|
4
4
|
paginatedRows: PostPaginationRowDef[];
|
|
5
5
|
normalizedModel: NormalizedPaginationModel | null;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ColDef, FormattedRow, PostPaginationRowDef } from "../../types";
|
|
2
2
|
declare const useDisplayRows: (currentPageRows: PostPaginationRowDef[], cols: ColDef[], ariaColIndexOffset: number) => FormattedRow[];
|
|
3
3
|
export default useDisplayRows;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
-
import { dateToDatetimeInputStr, dateToInputStr } from "../../util
|
|
2
|
+
import { dateToDatetimeInputStr, dateToInputStr } from "../../util";
|
|
3
3
|
var getFormattedValue = function (value, formatter, typeString) {
|
|
4
4
|
if (formatter) {
|
|
5
5
|
return formatter(value);
|
|
@@ -36,7 +36,6 @@ var useDisplayRows = function (currentPageRows, cols, ariaColIndexOffset) {
|
|
|
36
36
|
var displayRow = [];
|
|
37
37
|
Object.keys(row.data).forEach(function (name) {
|
|
38
38
|
if (!nameToIndex.has(name)) {
|
|
39
|
-
console.error("Warning: row data contains a property named \"".concat(name, "\", but it was not found among the column definitions."));
|
|
40
39
|
return;
|
|
41
40
|
}
|
|
42
41
|
var index = nameToIndex.get(name);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EditableFilterState, FilterState } from "../../filtering/types";
|
|
2
|
+
import { ColDef } from "../../types";
|
|
3
|
+
declare const useFilterStateFromEditable: (colDefs: ColDef[], editableFilterState: EditableFilterState | null) => FilterState | null;
|
|
4
|
+
export default useFilterStateFromEditable;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { SortColDef, SortModel } from "../../sorting/types";
|
|
1
2
|
import { AugRowDef, ColDefBase } from "../../types";
|
|
2
|
-
import { SortColDef, TableSortModel } from "../../sorting/types";
|
|
3
3
|
export interface SortedRowsOutput {
|
|
4
4
|
sortedRows: AugRowDef[];
|
|
5
5
|
sortingEnabled: boolean;
|
|
6
6
|
sortColDef: SortColDef | null | undefined;
|
|
7
7
|
setSortColDef: ((sortColDef: SortColDef | null) => void) | undefined;
|
|
8
8
|
}
|
|
9
|
-
declare const useSortedRows: (rows: AugRowDef[], cols: ColDefBase[], sortModel:
|
|
9
|
+
declare const useSortedRows: (rows: AugRowDef[], cols: ColDefBase[], sortModel: SortModel | undefined) => SortedRowsOutput;
|
|
10
10
|
export default useSortedRows;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RowDef, RowId } from "../types";
|
|
2
1
|
import { MouseEventHandler } from "react";
|
|
3
2
|
import { SelectionInfo, SelectModel } from "../selection/types";
|
|
4
|
-
import { SelectionInputModel } from "
|
|
3
|
+
import { SelectionInputModel } from "../../table/selection/SelectionInput";
|
|
4
|
+
import { RowDef, RowId } from "../types";
|
|
5
5
|
export interface UseGridSelectionFnsHook {
|
|
6
6
|
selectedSet: Set<RowId>;
|
|
7
7
|
rowsAreSelectable: boolean | undefined;
|
|
@@ -7,13 +7,13 @@ export interface ColSortModel {
|
|
|
7
7
|
sortOrder: SortOrder | null;
|
|
8
8
|
setSortOrder: (order: SortOrder | null) => void;
|
|
9
9
|
}
|
|
10
|
-
export interface
|
|
10
|
+
export interface ControlledSortModel {
|
|
11
11
|
type?: "controlled";
|
|
12
12
|
sortColDef: SortColDef | null;
|
|
13
13
|
setSortColDef: (sortColDef: SortColDef | null) => void;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
15
|
+
export interface UncontrolledSortModel {
|
|
16
16
|
type: "uncontrolled";
|
|
17
17
|
initialSortColDef: SortColDef | null;
|
|
18
18
|
}
|
|
19
|
-
export type
|
|
19
|
+
export type SortModel = ControlledSortModel | UncontrolledSortModel;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { UseControlledHoverHook } from "
|
|
1
|
+
import { UseControlledHoverHook } from "../util/useControlledHover";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
|
-
import { ColSortModel } from "
|
|
3
|
+
import { ColSortModel } from "./types";
|
|
4
4
|
export type UseSortHeaderStatesHook = UseControlledHoverHook<HTMLTableCellElement> & {
|
|
5
5
|
handleClick: () => void;
|
|
6
6
|
sortSymbol: ReactNode;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import useControlledHover from "
|
|
1
|
+
import useControlledHover from "../util/useControlledHover";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import upArrow from "
|
|
4
|
-
import arrowPlaceholder from "
|
|
5
|
-
import downArrow from "
|
|
3
|
+
import upArrow from "./upArrow";
|
|
4
|
+
import arrowPlaceholder from "./arrowPlaceholder";
|
|
5
|
+
import downArrow from "./downArrow";
|
|
6
6
|
var useSortHeaderStates = function (sortModel) {
|
|
7
7
|
var _a = useControlledHover(), isHovering = _a.isHovering, setIsHovering = _a.setIsHovering, handleMouseOver = _a.handleMouseOver, handleMouseOut = _a.handleMouseOut;
|
|
8
8
|
var handleClick = function () {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AdditionalComponentsStyleModel, FilterInputTableStyleModel, TableStyleModel } from "../../table";
|
|
2
|
+
export interface ToolbarStyleModel {
|
|
3
|
+
activeButton?: string[];
|
|
4
|
+
inactiveButton?: string[];
|
|
5
|
+
toolbar?: string[];
|
|
6
|
+
interfaceContainer?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface ExportFormStyleModel {
|
|
9
|
+
legend?: string[];
|
|
10
|
+
radioContainer?: string[];
|
|
11
|
+
radioInput?: string[];
|
|
12
|
+
radioLabel?: string[];
|
|
13
|
+
submitButton?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface StyleModel {
|
|
16
|
+
mainTableStyleModel?: TableStyleModel;
|
|
17
|
+
filterInputTableStyleModel?: FilterInputTableStyleModel;
|
|
18
|
+
additionalComponentsStyleModel?: AdditionalComponentsStyleModel;
|
|
19
|
+
toolbarStyleModel?: ToolbarStyleModel;
|
|
20
|
+
exportFormStyleModel?: ExportFormStyleModel;
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EditModel } from "./editing/types";
|
|
2
2
|
import { PaginationModel } from "./pagination/types";
|
|
3
|
-
import {
|
|
3
|
+
import { SortModel } from "./sorting/types";
|
|
4
4
|
import { FilterModel } from "./filtering/types";
|
|
5
5
|
import { SelectModel } from "./selection/types";
|
|
6
6
|
import { StyleModel } from "./styling/types";
|
|
@@ -23,44 +23,35 @@ export interface RowDef<Data extends ValidRowData = ValidRowData> {
|
|
|
23
23
|
id: RowId;
|
|
24
24
|
data: RowData<Data>;
|
|
25
25
|
}
|
|
26
|
-
export
|
|
27
|
-
origIndex: number;
|
|
28
|
-
};
|
|
29
|
-
export type PostPaginationRowDef<Data extends ValidRowData = ValidRowData> = AugRowDef<Data> & {
|
|
30
|
-
prePaginationIndex: number;
|
|
31
|
-
};
|
|
32
|
-
export type FormattedRow = {
|
|
33
|
-
contents: CellData[];
|
|
34
|
-
} & Omit<PostPaginationRowDef, "data">;
|
|
35
|
-
export type AugCellData = CellData & {
|
|
36
|
-
width?: number;
|
|
37
|
-
};
|
|
38
|
-
export type AugFormattedRow = Omit<FormattedRow, "contents"> & {
|
|
39
|
-
contents: AugCellData[];
|
|
40
|
-
};
|
|
41
|
-
export type JustifyContentSetting = "start" | "end" | "center" | "between" | "around" | "evenly";
|
|
42
|
-
export type Size = "small" | "medium" | "large";
|
|
43
|
-
export type DisplayMode = "table" | "block";
|
|
44
|
-
export interface GridProps {
|
|
26
|
+
export interface MainComponentSharedProps {
|
|
45
27
|
rows: RowDef[];
|
|
46
28
|
cols: ColDef[];
|
|
47
29
|
pagination?: PaginationModel;
|
|
48
|
-
sortModel?:
|
|
30
|
+
sortModel?: SortModel;
|
|
49
31
|
filterModel?: FilterModel;
|
|
50
32
|
selectModel?: SelectModel;
|
|
51
33
|
editModel?: EditModel;
|
|
52
|
-
caption?: string;
|
|
53
34
|
styleModel?: StyleModel;
|
|
54
|
-
displayMode?: DisplayMode;
|
|
55
35
|
allowExport?: boolean;
|
|
56
36
|
}
|
|
57
|
-
export type
|
|
58
|
-
|
|
37
|
+
export type AugRowDef<Data extends ValidRowData = ValidRowData> = RowDef<Data> & {
|
|
38
|
+
origIndex: number;
|
|
59
39
|
};
|
|
60
|
-
export
|
|
61
|
-
|
|
62
|
-
|
|
40
|
+
export type PostPaginationRowDef<Data extends ValidRowData = ValidRowData> = AugRowDef<Data> & {
|
|
41
|
+
prePaginationIndex: number;
|
|
42
|
+
};
|
|
43
|
+
export interface CellData {
|
|
44
|
+
fieldName: string;
|
|
45
|
+
value: ColDataType;
|
|
46
|
+
type: ColDataTypeStrings;
|
|
63
47
|
ariaColIndex: number;
|
|
64
|
-
|
|
48
|
+
formattedValue: string;
|
|
49
|
+
label: string;
|
|
65
50
|
width?: number;
|
|
66
51
|
}
|
|
52
|
+
export type FormattedRow = {
|
|
53
|
+
contents: Omit<CellData, "width">[];
|
|
54
|
+
} & Omit<PostPaginationRowDef, "data">;
|
|
55
|
+
export type AugFormattedRow = {
|
|
56
|
+
contents: CellData[];
|
|
57
|
+
} & Omit<PostPaginationRowDef, "data">;
|
package/grid/index.d.ts
ADDED
package/grid/index.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import useCombinedPipeline from "../../common/pipeline/useCombinedPipeline";
|
|
5
|
+
import useAugFormattedRows from "../../common/pipeline/useAugFormattedRows";
|
|
6
|
+
import useColNameToWidth from "../../common/pipeline/useColNameToWidth";
|
|
7
|
+
import GridHeader from "./GridHeader";
|
|
8
|
+
import GridBody from "./GridBody";
|
|
9
|
+
import classNames from "classnames";
|
|
10
|
+
import { CSS_PREFIX } from "../../common/constants";
|
|
11
|
+
var Grid = function (_a) {
|
|
12
|
+
var rows = _a.rows, cols = _a.cols, filterModel = _a.filterModel, sortModel = _a.sortModel, pagination = _a.pagination, selectModel = _a.selectModel, width = _a.width, height = _a.height, variant = _a.variant, stripes = _a.stripes, hover = _a.hover, borders = _a.borders, small = _a.small, divider = _a.divider, borderVariant = _a.borderVariant, headerCellVariant = _a.headerCellVariant, headerRowVariant = _a.headerRowVariant, bodyCellVariant = _a.bodyCellVariant, bodyRowVariant = _a.bodyRowVariant;
|
|
13
|
+
var _b = useCombinedPipeline({
|
|
14
|
+
rows: rows,
|
|
15
|
+
cols: cols,
|
|
16
|
+
filterModel: filterModel,
|
|
17
|
+
sortModel: sortModel,
|
|
18
|
+
pagination: pagination,
|
|
19
|
+
selectModel: selectModel,
|
|
20
|
+
}), displayRows = _b.displayRows, filteredRows = _b.filteredRows;
|
|
21
|
+
var colNameToWidth = useColNameToWidth(cols);
|
|
22
|
+
var augFormattedRows = useAugFormattedRows(colNameToWidth, displayRows);
|
|
23
|
+
var gridStyle = useMemo(function () {
|
|
24
|
+
function getWidthProperty(width) {
|
|
25
|
+
if (width === "parent") {
|
|
26
|
+
return "100%";
|
|
27
|
+
}
|
|
28
|
+
if (typeof width === "number") {
|
|
29
|
+
return width;
|
|
30
|
+
}
|
|
31
|
+
return "min-content";
|
|
32
|
+
}
|
|
33
|
+
function getHeightProperty(height) {
|
|
34
|
+
if (height === "parent") {
|
|
35
|
+
return "100%";
|
|
36
|
+
}
|
|
37
|
+
if (typeof height === "number") {
|
|
38
|
+
return height;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
width: getWidthProperty(width),
|
|
44
|
+
height: getHeightProperty(height),
|
|
45
|
+
};
|
|
46
|
+
}, [width, height]);
|
|
47
|
+
var vertScrollable = height !== undefined && height !== "auto";
|
|
48
|
+
return (_jsxs("div", { style: gridStyle, className: classNames({
|
|
49
|
+
"overflow-x-auto": width !== undefined && width !== "auto",
|
|
50
|
+
"overflow-y-auto": vertScrollable,
|
|
51
|
+
"rbdg-grid-striped": stripes === "rows",
|
|
52
|
+
"rbdg-grid-striped-columns": stripes === "columns",
|
|
53
|
+
"rbdg-grid-hover": !!hover,
|
|
54
|
+
"rbdg-grid-bordered": borders === "full",
|
|
55
|
+
"rbdg-grid-borderless": borders === "none",
|
|
56
|
+
"rbdg-grid-sm": !!small,
|
|
57
|
+
"rbdg-grid-group-divider": !!divider,
|
|
58
|
+
}, "rbdg-grid", variant && "".concat(CSS_PREFIX, "-").concat(variant), borderVariant && "border-".concat(borderVariant)), role: "grid", "aria-colcount": cols.length, "aria-rowcount": filteredRows.length + 1, children: [_jsx(GridHeader, { cols: cols, rowVariant: headerRowVariant, cellVariant: headerCellVariant, vertScrollable: vertScrollable }), _jsx(GridBody, { augFormattedRows: augFormattedRows, cols: cols, rowVariant: bodyRowVariant, cellVariant: bodyCellVariant })] }));
|
|
59
|
+
};
|
|
60
|
+
export default Grid;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import getWidthStyles from "./getWidthStyles";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { CSS_PREFIX, DEFAULT_COL_WIDTH } from "../../common/constants";
|
|
5
|
+
import { GRID_BODY_DATA_TEST_ID } from "../constants";
|
|
6
|
+
var GridBody = function (_a) {
|
|
7
|
+
var augFormattedRows = _a.augFormattedRows, cols = _a.cols, rowVariant = _a.rowVariant, cellVariant = _a.cellVariant;
|
|
8
|
+
return (_jsx("div", { role: "rowgroup", "data-testid": GRID_BODY_DATA_TEST_ID, children: augFormattedRows.map(function (row, rowDisplayIndex) { return (_jsx("div", { role: "row", "aria-rowindex": row.prePaginationIndex + 2, className: classNames("d-flex", "flex-row", rowVariant &&
|
|
9
|
+
rowVariant(row, rowDisplayIndex) &&
|
|
10
|
+
"".concat(CSS_PREFIX, "-").concat(rowVariant(row, rowDisplayIndex))), children: row.contents.map(function (_a, index) {
|
|
11
|
+
var formattedValue = _a.formattedValue, width = _a.width;
|
|
12
|
+
return (_jsx("div", { style: getWidthStyles(width || DEFAULT_COL_WIDTH), role: "gridcell", className: classNames("rbdg-grid-cell", cellVariant &&
|
|
13
|
+
cellVariant(row.contents[index], row, index, rowDisplayIndex) &&
|
|
14
|
+
"".concat(CSS_PREFIX, "-").concat(cellVariant(row.contents[index], row, index, rowDisplayIndex))), "aria-colindex": index + 1, children: formattedValue }, cols[index].name));
|
|
15
|
+
}) }, row.id)); }) }));
|
|
16
|
+
};
|
|
17
|
+
export default GridBody;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import getWidthStyles from "./getWidthStyles";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { CSS_PREFIX, DEFAULT_COL_WIDTH } from "../../common/constants";
|
|
5
|
+
import { GRID_HEADER_DATA_TEST_ID } from "../constants";
|
|
6
|
+
var GridHeader = function (_a) {
|
|
7
|
+
var cols = _a.cols, vertScrollable = _a.vertScrollable, rowVariant = _a.rowVariant, cellVariant = _a.cellVariant;
|
|
8
|
+
return (_jsx("div", { "data-testid": GRID_HEADER_DATA_TEST_ID, role: "rowgroup", className: classNames(vertScrollable ? ["position-sticky", "z-1", "top-0"] : []), children: _jsx("div", { role: "row", className: classNames("d-flex", "flex-row", rowVariant && "".concat(CSS_PREFIX, "-").concat(rowVariant)), "aria-rowindex": 1, children: cols.map(function (col, index) { return (_jsx("div", { className: classNames("rbdg-grid-cell", "fw-bold", cellVariant &&
|
|
9
|
+
cellVariant(col, index) &&
|
|
10
|
+
"".concat(CSS_PREFIX, "-").concat(cellVariant(col, index))), role: "columnheader", "aria-colindex": index + 1, style: getWidthStyles(col.width || DEFAULT_COL_WIDTH), children: col.label }, col.name)); }) }) }));
|
|
11
|
+
};
|
|
12
|
+
export default GridHeader;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AugFormattedRow, CellData, ColDef, FormattedRow, MainComponentSharedProps } from "../../common";
|
|
2
|
+
export type GridProps = MainComponentSharedProps & {
|
|
3
|
+
height?: GridHeightSetting;
|
|
4
|
+
width?: GridWidthSetting;
|
|
5
|
+
variant?: string;
|
|
6
|
+
stripes?: GridStripeSetting;
|
|
7
|
+
hover?: boolean;
|
|
8
|
+
borders?: GridBorderSetting;
|
|
9
|
+
borderVariant?: string;
|
|
10
|
+
small?: boolean;
|
|
11
|
+
divider?: boolean;
|
|
12
|
+
headerRowVariant?: string;
|
|
13
|
+
headerCellVariant?: (col: ColDef, colIndex: number) => string | null;
|
|
14
|
+
bodyRowVariant?: (row: FormattedRow, displayIndex: number) => string | null;
|
|
15
|
+
bodyCellVariant?: (cell: CellData, row: FormattedRow, colIndex: number, displayIndex: number) => string | null;
|
|
16
|
+
};
|
|
17
|
+
export interface GridHeaderProps {
|
|
18
|
+
cols: GridProps["cols"];
|
|
19
|
+
vertScrollable: boolean;
|
|
20
|
+
rowVariant?: GridProps["headerRowVariant"];
|
|
21
|
+
cellVariant?: GridProps["headerCellVariant"];
|
|
22
|
+
}
|
|
23
|
+
export type GridBodyProps = {
|
|
24
|
+
augFormattedRows: AugFormattedRow[];
|
|
25
|
+
cols: GridProps["cols"];
|
|
26
|
+
rowVariant?: GridProps["bodyRowVariant"];
|
|
27
|
+
cellVariant?: GridProps["bodyCellVariant"];
|
|
28
|
+
};
|
|
29
|
+
export type GridHeightSetting = number | "auto" | "parent";
|
|
30
|
+
export type GridWidthSetting = number | "auto" | "parent";
|
|
31
|
+
export type GridStripeSetting = "rows" | "columns" | "none";
|
|
32
|
+
export type GridBorderSetting = "horizontal" | "full" | "none";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/grid.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.rbdg-grid>div,.rbdg-grid>div>div,.rbdg-grid>div>div>div{border-color:inherit;border-style:solid;border-width:0}.rbdg-grid{--rbdg-grid-color: var(--bs-emphasis-color);--rbdg-grid-bg: var(--bs-body-bg);--rbdg-grid-border-color: var(--bs-border-color);--rbdg-grid-accent-bg: transparent;--rbdg-grid-striped-color: var(--bs-emphasis-color);--rbdg-grid-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);--rbdg-grid-active-color: var(--bs-emphasis-color);--rbdg-grid-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);--rbdg-grid-hover-color: var(--bs-emphasis-color);--rbdg-grid-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);border-color:var(--rbdg-grid-border-color)}.rbdg-grid>div{width:min-content}.rbdg-grid>div>div>div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:.5rem .5rem;color:var(--rbdg-grid-color-state, var(--rbdg-grid-color-type, var(--rbdg-grid-color)));background-color:var(--rbdg-grid-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--rbdg-grid-bg-state, var(--rbdg-grid-bg-type, var(--rbdg-grid-accent-bg)))}.rbdg-grid>div:first-child>div>div{border-bottom-width:var(--rbdg-grid-divider-border-width, var(--rbdg-grid-divider-borderless-width, var(--bs-border-width)));border-bottom-style:var(--rbdg-grid-divider-border-style, inherit);border-bottom-color:var(--rbdg-grid-divider-border-color, inherit)}.rbdg-grid-group-divider{--rbdg-grid-divider-border-width: calc(var(--bs-border-width) * 2);--rbdg-grid-divider-border-style: solid;--rbdg-grid-divider-border-color: currentcolor}.rbdg-grid-sm>div>div>div{padding:.25rem .25rem}.rbdg-grid-bordered{border-width:var(--bs-border-width);border-style:solid}.rbdg-grid-bordered>div>div>div:not(:last-child){border-width:0 var(--bs-border-width) 0 0}.rbdg-grid-bordered>div>div>div:last-child{border-width:0}.rbdg-grid-bordered>div:first-child>div{border-top-width:0;border-right-width:0;border-left-width:0;border-bottom-width:var(--rbdg-grid-divider-border-width, var(--rbdg-grid-divider-borderless-width, var(--bs-border-width)));border-bottom-style:var(--rbdg-grid-divider-border-style, inherit);border-bottom-color:var(--rbdg-grid-divider-border-color, inherit)}.rbdg-grid-bordered>div:last-child>div:not(:last-child){border-width:0 0 var(--bs-border-width) 0}.rbdg-grid-borderless{--rbdg-grid-divider-borderless-width: 0}.rbdg-grid-borderless>div>div>div{border-bottom-width:0}.rbdg-grid-borderless>:not(:first-child){border-top-width:0}.rbdg-grid-striped>div:nth-of-type(2)>div:nth-of-type(odd)>div{--rbdg-grid-color-type: var(--rbdg-grid-striped-color);--rbdg-grid-bg-type: var(--rbdg-grid-striped-bg)}.rbdg-grid-striped-columns>div>div>:nth-child(even){--rbdg-grid-color-type: var(--rbdg-grid-striped-color);--rbdg-grid-bg-type: var(--rbdg-grid-striped-bg)}.rbdg-grid-active{--rbdg-grid-color-state: var(--bs-grid-active-color);--rbdg-grid-bg-state: var(--rbdg-grid-active-bg)}.rbdg-grid-hover>div:nth-of-type(2)>div:hover>div{--rbdg-grid-color-state: var(--rbdg-grid-hover-color);--rbdg-grid-bg-state: var(--rbdg-grid-hover-bg)}.rbdg-grid-primary{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(206.6, 226, 254.6);--rbdg-grid-border-color: rgb(165.28, 180.8, 203.68);--rbdg-grid-striped-bg: rgb(196.27, 214.7, 241.87);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(185.94, 203.4, 229.14);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(191.105, 209.05, 235.505);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-secondary{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(225.6, 227.4, 229);--rbdg-grid-border-color: rgb(180.48, 181.92, 183.2);--rbdg-grid-striped-bg: rgb(214.32, 216.03, 217.55);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(203.04, 204.66, 206.1);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(208.68, 210.345, 211.825);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-success{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(209, 231, 220.8);--rbdg-grid-border-color: rgb(167.2, 184.8, 176.64);--rbdg-grid-striped-bg: rgb(198.55, 219.45, 209.76);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(188.1, 207.9, 198.72);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(193.325, 213.675, 204.24);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-info{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(206.6, 244.4, 252);--rbdg-grid-border-color: rgb(165.28, 195.52, 201.6);--rbdg-grid-striped-bg: rgb(196.27, 232.18, 239.4);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(185.94, 219.96, 226.8);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(191.105, 226.07, 233.1);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-warning{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(255, 242.6, 205.4);--rbdg-grid-border-color: rgb(204, 194.08, 164.32);--rbdg-grid-striped-bg: rgb(242.25, 230.47, 195.13);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(229.5, 218.34, 184.86);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(235.875, 224.405, 189.995);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-danger{--rbdg-grid-color: #000;--rbdg-grid-bg: rgb(248, 214.6, 217.8);--rbdg-grid-border-color: rgb(198.4, 171.68, 174.24);--rbdg-grid-striped-bg: rgb(235.6, 203.87, 206.91);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(223.2, 193.14, 196.02);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(229.4, 198.505, 201.465);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-light{--rbdg-grid-color: #000;--rbdg-grid-bg: #f8f9fa;--rbdg-grid-border-color: rgb(198.4, 199.2, 200);--rbdg-grid-striped-bg: rgb(235.6, 236.55, 237.5);--rbdg-grid-striped-color: #000;--rbdg-grid-active-bg: rgb(223.2, 224.1, 225);--rbdg-grid-active-color: #000;--rbdg-grid-hover-bg: rgb(229.4, 230.325, 231.25);--rbdg-grid-hover-color: #000;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}.rbdg-grid-dark{--rbdg-grid-color: #fff;--rbdg-grid-bg: #212529;--rbdg-grid-border-color: rgb(77.4, 80.6, 83.8);--rbdg-grid-striped-bg: rgb(44.1, 47.9, 51.7);--rbdg-grid-striped-color: #fff;--rbdg-grid-active-bg: rgb(55.2, 58.8, 62.4);--rbdg-grid-active-color: #fff;--rbdg-grid-hover-bg: rgb(49.65, 53.35, 57.05);--rbdg-grid-hover-color: #fff;color:var(--rbdg-grid-color);border-color:var(--rbdg-grid-border-color)}
|