@absreim/react-bootstrap-data-grid-pro 2.4.1 → 2.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.
- package/grid/Grid.js +26 -30
- package/grid/InternalGrid.d.ts +1 -0
- package/grid/InternalGrid.js +17 -18
- package/grid/editing/EditControlsCell.js +3 -4
- package/grid/editing/EditableRow.js +11 -17
- package/grid/editing/inputStrsToRowData.js +4 -4
- package/grid/export/ExportForm.js +25 -49
- package/grid/export/useExportFn.js +34 -58
- package/grid/filtering/DateFilterRow.js +17 -33
- package/grid/filtering/FilterOptionsTable.js +60 -96
- package/grid/filtering/FilterRow.js +4 -13
- package/grid/filtering/NumberFilterRow.js +10 -25
- package/grid/filtering/StringFilterRow.js +10 -25
- package/grid/filtering/types.js +6 -6
- package/grid/filtering/useFilterFormState.js +52 -65
- package/grid/main/BodyRows.d.ts +3 -1
- package/grid/main/BodyRows.js +6 -13
- package/grid/main/ColHeaderCell/index.js +4 -4
- package/grid/main/ColHeaderCell/useSortHeaderStates.js +10 -10
- package/grid/main/ToggleButton.js +3 -4
- package/grid/pagination/PageSelector.js +17 -18
- package/grid/pagination/PageSizeSelector.js +5 -6
- package/grid/pagination/Pagination.js +6 -7
- package/grid/pipeline/useAugFormattedRows.js +5 -20
- package/grid/pipeline/useCombinedPipeline/index.d.ts +2 -2
- package/grid/pipeline/useCombinedPipeline/index.js +21 -22
- package/grid/pipeline/useCombinedPipeline/useCurrentPageRows.d.ts +3 -3
- package/grid/pipeline/useCombinedPipeline/useCurrentPageRows.js +29 -24
- package/grid/pipeline/useCombinedPipeline/useDisplayRows.d.ts +2 -2
- package/grid/pipeline/useCombinedPipeline/useDisplayRows.js +40 -41
- package/grid/pipeline/useCombinedPipeline/useFilter.d.ts +2 -2
- package/grid/pipeline/useCombinedPipeline/useFilter.js +9 -9
- package/grid/pipeline/useCombinedPipeline/useFilterStateFromEditable.js +5 -6
- package/grid/pipeline/useCombinedPipeline/useFilterStateStore.js +6 -7
- package/grid/pipeline/useCombinedPipeline/useSortedRows.d.ts +3 -3
- package/grid/pipeline/useCombinedPipeline/useSortedRows.js +22 -27
- package/grid/pipeline/useGetInputStrSubmitCallback.js +6 -6
- package/grid/pipeline/useGridSelectionFns.js +30 -30
- package/grid/pipeline/useUnwrappedGridStyles.js +5 -7
- package/grid/selection/SelectAllHeaderCell.d.ts +1 -0
- package/grid/selection/SelectAllHeaderCell.js +9 -10
- package/grid/selection/SelectionInput.js +4 -6
- package/grid/sorting/arrowPlaceholder.js +1 -1
- package/grid/sorting/downArrow.js +1 -1
- package/grid/sorting/sortOrderToAriaSort.d.ts +4 -0
- package/grid/sorting/sortOrderToAriaSort.js +11 -0
- package/grid/sorting/upArrow.js +1 -10
- package/grid/styling/styleModelUnwrappers.js +22 -33
- package/grid/toolbar/Toolbar.js +61 -9
- package/grid/toolbar/ToolbarContainer.js +3 -6
- package/grid/toolbar/useInterfaces.js +5 -17
- package/grid/types.d.ts +9 -5
- package/grid/util/datetime.js +2 -4
- package/grid/util/getWidthStyle.js +6 -8
- package/grid/util/isSubset.js +3 -4
- package/grid/util/useControlledHover.js +8 -8
- package/grid-pro/ColHeaderCellPro.js +47 -42
- package/grid-pro/GridPro.js +42 -32
- package/grid-pro/assets/HorizontalGrip.d.ts +6 -0
- package/grid-pro/assets/HorizontalGrip.js +3 -0
- package/grid-pro/assets/VerticalGrip.d.ts +6 -0
- package/grid-pro/assets/VerticalGrip.js +3 -0
- package/grid-pro/index.d.ts +3 -0
- package/grid-pro/index.js +3 -0
- package/grid-pro/reorder/ReorderHandleCell.d.ts +12 -0
- package/grid-pro/reorder/ReorderHandleCell.js +220 -0
- package/grid-pro/reorder/ReorderHeaderCell.d.ts +3 -0
- package/grid-pro/reorder/ReorderHeaderCell.js +4 -0
- package/grid-pro/reorder/types.d.ts +12 -0
- package/grid-pro/reorder/types.js +1 -0
- package/grid-pro/resize/useResizeModel.js +40 -62
- package/grid-pro/types.d.ts +9 -2
- package/grid-pro/util/index.d.ts +1 -0
- package/grid-pro/util/index.js +1 -0
- package/grid-pro/util/regDragCleanup.d.ts +3 -0
- package/grid-pro/util/regDragCleanup.js +28 -0
- package/grid-pro/util/reorderRows.d.ts +3 -0
- package/grid-pro/util/reorderRows.js +17 -0
- package/grid-pro/util/types.d.ts +10 -0
- package/grid-pro/util/types.js +1 -0
- package/package.json +1 -1
- package/style.css +1 -1
|
@@ -1,65 +1,43 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { useMemo, useState } from "react";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return (__assign(__assign({}, prevState), (_a = {}, _a[name] = newWidth, _a)));
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
prev[name] = {
|
|
58
|
-
width: getEffectiveWidth(),
|
|
59
|
-
setWidth: getWidthSetter(),
|
|
60
|
-
};
|
|
61
|
-
return prev;
|
|
62
|
-
}, {});
|
|
63
|
-
}, [cols, display, widthByName]);
|
|
2
|
+
const useResizeModel = (cols, display) => {
|
|
3
|
+
const getInitWidthByName = () => cols.reduce((prev, { width, name }) => {
|
|
4
|
+
const getEffectiveWidth = () => {
|
|
5
|
+
if (typeof width === "object") {
|
|
6
|
+
return width.width;
|
|
7
|
+
}
|
|
8
|
+
if (width === undefined) {
|
|
9
|
+
return 100;
|
|
10
|
+
}
|
|
11
|
+
return width;
|
|
12
|
+
};
|
|
13
|
+
prev[name] = getEffectiveWidth();
|
|
14
|
+
return prev;
|
|
15
|
+
}, {});
|
|
16
|
+
const [widthByName, setWidthByName] = useState(getInitWidthByName());
|
|
17
|
+
return useMemo(() => cols.reduce((prev, { resizeable, width, name }) => {
|
|
18
|
+
const getEffectiveWidth = () => {
|
|
19
|
+
if (typeof width === "object") {
|
|
20
|
+
return width.width;
|
|
21
|
+
}
|
|
22
|
+
if (display === "block" && resizeable) {
|
|
23
|
+
return widthByName[name];
|
|
24
|
+
}
|
|
25
|
+
return width;
|
|
26
|
+
};
|
|
27
|
+
const getWidthSetter = () => {
|
|
28
|
+
if (display !== "block" || !resizeable) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (typeof width === "object") {
|
|
32
|
+
return width.setWidth;
|
|
33
|
+
}
|
|
34
|
+
return (newWidth) => setWidthByName((prevState) => (Object.assign(Object.assign({}, prevState), { [name]: newWidth })));
|
|
35
|
+
};
|
|
36
|
+
prev[name] = {
|
|
37
|
+
width: getEffectiveWidth(),
|
|
38
|
+
setWidth: getWidthSetter(),
|
|
39
|
+
};
|
|
40
|
+
return prev;
|
|
41
|
+
}, {}), [cols, display, widthByName]);
|
|
64
42
|
};
|
|
65
43
|
export default useResizeModel;
|
package/grid-pro/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ColDef, ColDefBase, ColHeaderCellProps, GridProps } from "../grid";
|
|
1
|
+
import { ColDef, ColDefBase, ColHeaderCellProps, GridProps, StyleModel } from "../grid";
|
|
2
|
+
import { ReorderModel, ReorderStyleModel } from "./reorder/types";
|
|
2
3
|
export type ProColDef<ValueType = any> = ColDefBase<ValueType> & {
|
|
3
4
|
resizeable?: boolean;
|
|
4
5
|
width?: ColDef["width"] | WidthModel;
|
|
@@ -6,8 +7,10 @@ export type ProColDef<ValueType = any> = ColDefBase<ValueType> & {
|
|
|
6
7
|
maxResizeWidth?: number;
|
|
7
8
|
keyboardResizeStep?: number;
|
|
8
9
|
};
|
|
9
|
-
export type GridProProps = Omit<GridProps, "cols"> & {
|
|
10
|
+
export type GridProProps = Omit<GridProps, "cols" | "styleModel"> & {
|
|
10
11
|
cols: ProColDef[];
|
|
12
|
+
reorder?: ReorderModel;
|
|
13
|
+
styleModel?: ProStyleModel;
|
|
11
14
|
};
|
|
12
15
|
export type ColHeaderCellProProps = ColHeaderCellProps & Pick<GridProps, "displayMode"> & {
|
|
13
16
|
setWidth?: (width: number) => void;
|
|
@@ -16,3 +19,7 @@ export interface WidthModel {
|
|
|
16
19
|
width: number;
|
|
17
20
|
setWidth: (width: number) => void;
|
|
18
21
|
}
|
|
22
|
+
export interface ProStyleSubmodels {
|
|
23
|
+
reorderModel?: ReorderStyleModel;
|
|
24
|
+
}
|
|
25
|
+
export type ProStyleModel = ProStyleSubmodels & StyleModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as reorderRows } from "./reorderRows";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as reorderRows } from "./reorderRows";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const regDragCleanup = ({ element, onPointerMove, onPointerUp, onPointerCancel, onKeyDown, onContextMenu, }) => {
|
|
2
|
+
const listenerRef = {
|
|
3
|
+
up: () => { },
|
|
4
|
+
cancel: () => { },
|
|
5
|
+
keydown: () => { },
|
|
6
|
+
contextmenu: () => { },
|
|
7
|
+
};
|
|
8
|
+
const cleanup = () => {
|
|
9
|
+
element.removeEventListener("pointermove", onPointerMove);
|
|
10
|
+
element.removeEventListener("pointerup", listenerRef.up);
|
|
11
|
+
element.removeEventListener("pointercancel", listenerRef.cancel);
|
|
12
|
+
element.removeEventListener("keydown", listenerRef.keydown);
|
|
13
|
+
element.removeEventListener("contextmenu", listenerRef.contextmenu);
|
|
14
|
+
};
|
|
15
|
+
const augOnPointerUp = onPointerUp(cleanup);
|
|
16
|
+
const augOnPointerCancel = onPointerCancel(cleanup);
|
|
17
|
+
const augOnKeyDown = onKeyDown(cleanup);
|
|
18
|
+
element.addEventListener("pointermove", onPointerMove);
|
|
19
|
+
element.addEventListener("pointerup", augOnPointerUp);
|
|
20
|
+
element.addEventListener("pointercancel", augOnPointerCancel);
|
|
21
|
+
element.addEventListener("keydown", augOnKeyDown);
|
|
22
|
+
element.addEventListener("contextmenu", onContextMenu);
|
|
23
|
+
listenerRef.up = augOnPointerUp;
|
|
24
|
+
listenerRef.cancel = augOnPointerCancel;
|
|
25
|
+
listenerRef.keydown = augOnKeyDown;
|
|
26
|
+
listenerRef.contextmenu = onContextMenu;
|
|
27
|
+
};
|
|
28
|
+
export default regDragCleanup;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const reorderRows = (rows, id, destIndex) => {
|
|
2
|
+
const rowsCopy = rows.slice();
|
|
3
|
+
const srcIndex = rowsCopy.findIndex((rowsCopy) => rowsCopy.id === id);
|
|
4
|
+
const srcContents = rowsCopy[srcIndex];
|
|
5
|
+
rowsCopy.splice(srcIndex, 1);
|
|
6
|
+
if (destIndex === 0) {
|
|
7
|
+
rowsCopy.splice(0, 0, srcContents);
|
|
8
|
+
return rowsCopy;
|
|
9
|
+
}
|
|
10
|
+
if (srcIndex < destIndex) {
|
|
11
|
+
rowsCopy.splice(destIndex - 1, 0, srcContents);
|
|
12
|
+
return rowsCopy;
|
|
13
|
+
}
|
|
14
|
+
rowsCopy.splice(destIndex, 0, srcContents);
|
|
15
|
+
return rowsCopy;
|
|
16
|
+
};
|
|
17
|
+
export default reorderRows;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface DragCleanupParams {
|
|
2
|
+
element: HTMLElement;
|
|
3
|
+
onPointerMove: (event: PointerEvent) => void;
|
|
4
|
+
onPointerUp: PointerCleanupFnParam;
|
|
5
|
+
onPointerCancel: PointerCleanupFnParam;
|
|
6
|
+
onKeyDown: KeyboardCleanupFnParam;
|
|
7
|
+
onContextMenu: (event: PointerEvent) => void;
|
|
8
|
+
}
|
|
9
|
+
export type PointerCleanupFnParam = (removeListeners: () => void) => (event: PointerEvent) => void;
|
|
10
|
+
export type KeyboardCleanupFnParam = (removeListeners: () => void) => (event: KeyboardEvent) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@absreim/react-bootstrap-data-grid-pro",
|
|
3
3
|
"description": "Pro Version of data grid UI component for use with web apps using React and Bootstrap",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.6.0",
|
|
5
5
|
"license": "Commercial. See LICENSE file.",
|
|
6
6
|
"author": "Brook Li",
|
|
7
7
|
"homepage": "https://react-bootstrap-data-grid.vercel.app/",
|
package/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.rbdg-sort-toggler{cursor:pointer}.
|
|
1
|
+
.rbdg-sort-toggler{cursor:pointer}.rbdg-draggable-container{width:1rem;height:1rem;touch-action:none}.rbdg-draggable-icon{pointer-events:none}.rbdg-resize-container{cursor:col-resize}.rbdg-reorder-container{cursor:grab !important}.rbdg-reorder-container:active{cursor:grabbing !important}.rbdg-plain-icon-button{display:inline-flex;padding:0;margin:0;border:none;background:none;color:inherit;font:inherit;-webkit-appearance:none;appearance:none}.rbdg-plain-icon-button:disabled{pointer-events:none;opacity:.65}.rbdg-drag-ghost{opacity:75%;position:fixed;padding:.5rem;z-index:2}.rbdg-reorder-dragged-row-pred{border-bottom-color:var(--bs-success)}.rbdg-reorder-dragged-row{border-top-width:1px;opacity:50%;border-color:var(--bs-success)}.rbdg-reorder-above-drag-target-row{border-bottom-color:var(--bs-primary)}.rbdg-reorder-below-drag-target-row{border-top-width:1px;border-top-color:var(--bs-primary)}
|