@absreim/react-bootstrap-data-grid-pro 2.5.0 → 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.
Files changed (82) hide show
  1. package/grid/Grid.js +26 -30
  2. package/grid/InternalGrid.d.ts +1 -0
  3. package/grid/InternalGrid.js +17 -18
  4. package/grid/editing/EditControlsCell.js +3 -4
  5. package/grid/editing/EditableRow.js +11 -17
  6. package/grid/editing/inputStrsToRowData.js +4 -4
  7. package/grid/export/ExportForm.js +25 -49
  8. package/grid/export/useExportFn.js +34 -58
  9. package/grid/filtering/DateFilterRow.js +17 -33
  10. package/grid/filtering/FilterOptionsTable.js +60 -96
  11. package/grid/filtering/FilterRow.js +4 -13
  12. package/grid/filtering/NumberFilterRow.js +10 -25
  13. package/grid/filtering/StringFilterRow.js +10 -25
  14. package/grid/filtering/types.js +6 -6
  15. package/grid/filtering/useFilterFormState.js +52 -65
  16. package/grid/main/BodyRows.d.ts +3 -1
  17. package/grid/main/BodyRows.js +6 -13
  18. package/grid/main/ColHeaderCell/index.js +4 -4
  19. package/grid/main/ColHeaderCell/useSortHeaderStates.js +10 -10
  20. package/grid/main/ToggleButton.js +3 -4
  21. package/grid/pagination/PageSelector.js +17 -18
  22. package/grid/pagination/PageSizeSelector.js +5 -6
  23. package/grid/pagination/Pagination.js +6 -7
  24. package/grid/pipeline/useAugFormattedRows.js +5 -20
  25. package/grid/pipeline/useCombinedPipeline/index.d.ts +2 -2
  26. package/grid/pipeline/useCombinedPipeline/index.js +21 -22
  27. package/grid/pipeline/useCombinedPipeline/useCurrentPageRows.d.ts +3 -3
  28. package/grid/pipeline/useCombinedPipeline/useCurrentPageRows.js +29 -24
  29. package/grid/pipeline/useCombinedPipeline/useDisplayRows.d.ts +2 -2
  30. package/grid/pipeline/useCombinedPipeline/useDisplayRows.js +40 -41
  31. package/grid/pipeline/useCombinedPipeline/useFilter.d.ts +2 -2
  32. package/grid/pipeline/useCombinedPipeline/useFilter.js +9 -9
  33. package/grid/pipeline/useCombinedPipeline/useFilterStateFromEditable.js +5 -6
  34. package/grid/pipeline/useCombinedPipeline/useFilterStateStore.js +6 -7
  35. package/grid/pipeline/useCombinedPipeline/useSortedRows.d.ts +3 -3
  36. package/grid/pipeline/useCombinedPipeline/useSortedRows.js +22 -27
  37. package/grid/pipeline/useGetInputStrSubmitCallback.js +6 -6
  38. package/grid/pipeline/useGridSelectionFns.js +30 -30
  39. package/grid/pipeline/useUnwrappedGridStyles.js +5 -7
  40. package/grid/selection/SelectAllHeaderCell.d.ts +1 -0
  41. package/grid/selection/SelectAllHeaderCell.js +9 -10
  42. package/grid/selection/SelectionInput.js +4 -6
  43. package/grid/sorting/arrowPlaceholder.js +1 -1
  44. package/grid/sorting/downArrow.js +1 -1
  45. package/grid/sorting/sortOrderToAriaSort.d.ts +4 -0
  46. package/grid/sorting/sortOrderToAriaSort.js +11 -0
  47. package/grid/sorting/upArrow.js +1 -10
  48. package/grid/styling/styleModelUnwrappers.js +22 -33
  49. package/grid/toolbar/Toolbar.js +13 -16
  50. package/grid/toolbar/ToolbarContainer.js +3 -4
  51. package/grid/toolbar/useInterfaces.js +5 -17
  52. package/grid/types.d.ts +9 -5
  53. package/grid/util/datetime.js +2 -4
  54. package/grid/util/getWidthStyle.js +6 -8
  55. package/grid/util/isSubset.js +3 -4
  56. package/grid/util/useControlledHover.js +8 -8
  57. package/grid-pro/ColHeaderCellPro.js +47 -42
  58. package/grid-pro/GridPro.js +42 -32
  59. package/grid-pro/assets/HorizontalGrip.d.ts +6 -0
  60. package/grid-pro/assets/HorizontalGrip.js +3 -0
  61. package/grid-pro/assets/VerticalGrip.d.ts +6 -0
  62. package/grid-pro/assets/VerticalGrip.js +3 -0
  63. package/grid-pro/index.d.ts +3 -0
  64. package/grid-pro/index.js +3 -0
  65. package/grid-pro/reorder/ReorderHandleCell.d.ts +12 -0
  66. package/grid-pro/reorder/ReorderHandleCell.js +220 -0
  67. package/grid-pro/reorder/ReorderHeaderCell.d.ts +3 -0
  68. package/grid-pro/reorder/ReorderHeaderCell.js +4 -0
  69. package/grid-pro/reorder/types.d.ts +12 -0
  70. package/grid-pro/reorder/types.js +1 -0
  71. package/grid-pro/resize/useResizeModel.js +40 -62
  72. package/grid-pro/types.d.ts +9 -2
  73. package/grid-pro/util/index.d.ts +1 -0
  74. package/grid-pro/util/index.js +1 -0
  75. package/grid-pro/util/regDragCleanup.d.ts +3 -0
  76. package/grid-pro/util/regDragCleanup.js +28 -0
  77. package/grid-pro/util/reorderRows.d.ts +3 -0
  78. package/grid-pro/util/reorderRows.js +17 -0
  79. package/grid-pro/util/types.d.ts +10 -0
  80. package/grid-pro/util/types.js +1 -0
  81. package/package.json +1 -1
  82. 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
- var useResizeModel = function (cols, display) {
14
- var getInitWidthByName = function () {
15
- return cols.reduce(function (prev, _a) {
16
- var width = _a.width, name = _a.name;
17
- var getEffectiveWidth = function () {
18
- if (typeof width === "object") {
19
- return width.width;
20
- }
21
- if (width === undefined) {
22
- return 100;
23
- }
24
- return width;
25
- };
26
- prev[name] = getEffectiveWidth();
27
- return prev;
28
- }, {});
29
- };
30
- var _a = useState(getInitWidthByName()), widthByName = _a[0], setWidthByName = _a[1];
31
- return useMemo(function () {
32
- return cols.reduce(function (prev, _a) {
33
- var resizeable = _a.resizeable, width = _a.width, name = _a.name;
34
- var getEffectiveWidth = function () {
35
- if (typeof width === "object") {
36
- return width.width;
37
- }
38
- if (display === "block" && resizeable) {
39
- return widthByName[name];
40
- }
41
- return width;
42
- };
43
- var getWidthSetter = function () {
44
- if (display !== "block" || !resizeable) {
45
- return undefined;
46
- }
47
- if (typeof width === "object") {
48
- return width.setWidth;
49
- }
50
- return function (newWidth) {
51
- return setWidthByName(function (prevState) {
52
- var _a;
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;
@@ -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,3 @@
1
+ import { DragCleanupParams } from "./types";
2
+ declare const regDragCleanup: (params: DragCleanupParams) => void;
3
+ export default regDragCleanup;
@@ -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,3 @@
1
+ import { RowDef, RowId, ValidRowData } from "../";
2
+ declare const reorderRows: <Data extends ValidRowData>(rows: RowDef<Data>[], id: RowId, destIndex: number) => RowDef<Data>[];
3
+ export default reorderRows;
@@ -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.5.0",
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}.rdbg-drag-marker-container{cursor:col-resize;width:1rem;height:1rem;touch-action:none}.rdbg-drag-marker{pointer-events:none}
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)}