@navikt/ds-react 8.10.0 → 8.10.2

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 (79) hide show
  1. package/cjs/data/table/column-header/DataTableColumnHeader.d.ts +1 -2
  2. package/cjs/data/table/column-header/DataTableColumnHeader.js +13 -11
  3. package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  4. package/cjs/data/table/column-header/useTableColumnResize.d.ts +5 -3
  5. package/cjs/data/table/column-header/useTableColumnResize.js +128 -53
  6. package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -1
  7. package/cjs/data/table/helpers/collectTableRowEntries.d.ts +16 -0
  8. package/cjs/data/table/helpers/collectTableRowEntries.js +27 -0
  9. package/cjs/data/table/helpers/collectTableRowEntries.js.map +1 -0
  10. package/cjs/data/table/helpers/table-keyboard.js +3 -3
  11. package/cjs/data/table/helpers/table-keyboard.js.map +1 -1
  12. package/cjs/data/table/hooks/useTableExpansion.d.ts +9 -6
  13. package/cjs/data/table/hooks/useTableExpansion.js +36 -15
  14. package/cjs/data/table/hooks/useTableExpansion.js.map +1 -1
  15. package/cjs/data/table/hooks/useTableItems.d.ts +29 -0
  16. package/cjs/data/table/hooks/useTableItems.js +63 -0
  17. package/cjs/data/table/hooks/useTableItems.js.map +1 -0
  18. package/cjs/data/table/hooks/useTableKeyboardNav.js +3 -3
  19. package/cjs/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  20. package/cjs/data/table/root/DataTableAuto.d.ts +18 -0
  21. package/cjs/data/table/root/DataTableAuto.js +71 -29
  22. package/cjs/data/table/root/DataTableAuto.js.map +1 -1
  23. package/cjs/data/table/root/DataTableRoot.context.d.ts +5 -3
  24. package/cjs/data/table/root/DataTableRoot.context.js.map +1 -1
  25. package/cjs/data/table/root/DataTableRoot.js +7 -4
  26. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  27. package/cjs/data/table/tr/DataTableTr.js +30 -32
  28. package/cjs/data/table/tr/DataTableTr.js.map +1 -1
  29. package/cjs/modal/Modal.js +3 -3
  30. package/cjs/modal/Modal.js.map +1 -1
  31. package/cjs/modal/types.d.ts +1 -0
  32. package/esm/data/table/column-header/DataTableColumnHeader.d.ts +1 -2
  33. package/esm/data/table/column-header/DataTableColumnHeader.js +14 -12
  34. package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  35. package/esm/data/table/column-header/useTableColumnResize.d.ts +5 -3
  36. package/esm/data/table/column-header/useTableColumnResize.js +129 -54
  37. package/esm/data/table/column-header/useTableColumnResize.js.map +1 -1
  38. package/esm/data/table/helpers/collectTableRowEntries.d.ts +16 -0
  39. package/esm/data/table/helpers/collectTableRowEntries.js +25 -0
  40. package/esm/data/table/helpers/collectTableRowEntries.js.map +1 -0
  41. package/esm/data/table/helpers/table-keyboard.js +3 -3
  42. package/esm/data/table/helpers/table-keyboard.js.map +1 -1
  43. package/esm/data/table/hooks/useTableExpansion.d.ts +9 -6
  44. package/esm/data/table/hooks/useTableExpansion.js +36 -16
  45. package/esm/data/table/hooks/useTableExpansion.js.map +1 -1
  46. package/esm/data/table/hooks/useTableItems.d.ts +29 -0
  47. package/esm/data/table/hooks/useTableItems.js +58 -0
  48. package/esm/data/table/hooks/useTableItems.js.map +1 -0
  49. package/esm/data/table/hooks/useTableKeyboardNav.js +3 -3
  50. package/esm/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  51. package/esm/data/table/root/DataTableAuto.d.ts +18 -0
  52. package/esm/data/table/root/DataTableAuto.js +72 -30
  53. package/esm/data/table/root/DataTableAuto.js.map +1 -1
  54. package/esm/data/table/root/DataTableRoot.context.d.ts +5 -3
  55. package/esm/data/table/root/DataTableRoot.context.js.map +1 -1
  56. package/esm/data/table/root/DataTableRoot.js +7 -4
  57. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  58. package/esm/data/table/tr/DataTableTr.js +32 -34
  59. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  60. package/esm/modal/Modal.js +3 -3
  61. package/esm/modal/Modal.js.map +1 -1
  62. package/esm/modal/types.d.ts +1 -0
  63. package/package.json +7 -7
  64. package/src/data/table/column-header/DataTableColumnHeader.tsx +22 -14
  65. package/src/data/table/column-header/useTableColumnResize.ts +152 -79
  66. package/src/data/table/helpers/collectTableRowEntries.ts +58 -0
  67. package/src/data/table/helpers/table-keyboard.ts +4 -4
  68. package/src/data/table/hooks/__tests__/useTableExpansion.test.tsx +115 -0
  69. package/src/data/table/hooks/__tests__/useTableItems.test.ts +131 -0
  70. package/src/data/table/hooks/useTableExpansion.tsx +63 -22
  71. package/src/data/table/hooks/useTableItems.ts +123 -0
  72. package/src/data/table/hooks/useTableKeyboardNav.ts +3 -3
  73. package/src/data/table/root/DataTableAuto.test.tsx +118 -0
  74. package/src/data/table/root/DataTableAuto.tsx +159 -49
  75. package/src/data/table/root/DataTableRoot.context.ts +4 -2
  76. package/src/data/table/root/DataTableRoot.tsx +20 -13
  77. package/src/data/table/tr/DataTableTr.tsx +48 -47
  78. package/src/modal/Modal.tsx +12 -6
  79. package/src/modal/types.ts +1 -0
@@ -9,7 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import React, { forwardRef, useCallback } from "react";
12
+ import React, { forwardRef } from "react";
13
13
  import { ChevronDownUpIcon, ChevronUpDownIcon, MinusIcon, PlusIcon, } from "@navikt/aksel-icons";
14
14
  import { Button } from "../../../button/index.js";
15
15
  import { CheckboxInput } from "../../../form/checkbox/checkbox-input/CheckboxInput.js";
@@ -20,7 +20,7 @@ import { useId } from "../../../utils-external/index.js";
20
20
  import { cl, composeEventHandlers } from "../../../utils/helpers/index.js";
21
21
  import { DataTableBaseCell } from "../base-cell/DataTableBaseCell.js";
22
22
  import { DataTableColumnHeader } from "../column-header/DataTableColumnHeader.js";
23
- import { useDataTableExpansion } from "../hooks/useTableExpansion.js";
23
+ import { getDataTableExpansionId, useDataTableExpansion, } from "../hooks/useTableExpansion.js";
24
24
  import { useDataTableContext, useDataTableLocation, } from "../root/DataTableRoot.context.js";
25
25
  import { DataTableTd } from "../td/DataTableTd.js";
26
26
  const SELECTION_CELL_WIDTH = "50px";
@@ -32,31 +32,28 @@ const DataTableTr = forwardRef((_a, forwardedRef) => {
32
32
  const renderFillerCell = layout === "fixed" && children;
33
33
  const selected = (_b = selectionState.selection.isRowSelected(rowId !== null && rowId !== void 0 ? rowId : "")) !== null && _b !== void 0 ? _b : selectedProp;
34
34
  const isSticky = location === "thead" && stickyHeader;
35
- const handleClick = useCallback((event) => {
36
- var _a;
37
- if (location !== "tbody" ||
38
- rowId === undefined ||
39
- isInteractiveTarget(event.target) ||
40
- ((_a = event.target) === null || _a === void 0 ? void 0 : _a.closest("[data-prevent-row-click]"))) {
41
- return;
35
+ const handleClick = location === "tbody" && rowId !== undefined
36
+ ? (event) => {
37
+ var _a;
38
+ if (rowId === undefined ||
39
+ isInteractiveTarget(event.target) ||
40
+ ((_a = event.target) === null || _a === void 0 ? void 0 : _a.closest("[data-prevent-row-click]"))) {
41
+ return;
42
+ }
43
+ const selection = window.getSelection();
44
+ if (selection && selection.toString().length > 0) {
45
+ return;
46
+ }
47
+ if (!disableRowSelectionOnClick &&
48
+ selectionState.selection.selectionMode !== "none") {
49
+ selectionState.selection.toggleSelection(rowId);
50
+ }
51
+ onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(rowId, event);
42
52
  }
43
- const selection = window.getSelection();
44
- if (selection && selection.toString().length > 0) {
45
- return;
46
- }
47
- if (!disableRowSelectionOnClick &&
48
- selectionState.selection.selectionMode !== "none") {
49
- selectionState.selection.toggleSelection(rowId);
50
- }
51
- onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(rowId, event);
52
- }, [
53
- disableRowSelectionOnClick,
54
- location,
55
- onRowClick,
56
- rowId,
57
- selectionState.selection,
58
- ]);
59
- return (React.createElement("tr", Object.assign({}, rest, { onClick: composeEventHandlers(onClick, handleClick), ref: forwardedRef, className: cl("aksel-data-table__tr", className), "data-selected": selected, "data-sticky": isSticky || undefined }),
53
+ : undefined;
54
+ return (React.createElement("tr", Object.assign({}, rest, {
55
+ // Avoid setting onClick if not needed, since this causes NVDA to announce the row as clickable.
56
+ onClick: (onClick || handleClick) && composeEventHandlers(onClick, handleClick), ref: forwardedRef, className: cl("aksel-data-table__tr", className), "data-selected": selected, "data-sticky": isSticky || undefined }),
60
57
  React.createElement(RowExpansionCell, { rowId: rowId }),
61
58
  React.createElement(RowSelectionCell, { rowId: rowId }),
62
59
  children,
@@ -65,12 +62,8 @@ const DataTableTr = forwardRef((_a, forwardedRef) => {
65
62
  function RowExpansionCell({ rowId }) {
66
63
  const { tableId, showLoadingSkeletons } = useDataTableContext();
67
64
  const { location } = useDataTableLocation();
68
- const expansionContext = useDataTableExpansion(false);
69
- if (!expansionContext) {
70
- return null;
71
- }
72
- const { isExpanded, toggleExpansion, enableExpansion, isAllExpanded, toggleAll, showExpandAll, } = expansionContext;
73
- if (!enableExpansion) {
65
+ const { isExpanded, isDetailsPanelExpandable, toggleExpansion, enableDetailsPanel, isAllExpanded, toggleAll, showExpandAll, } = useDataTableExpansion();
66
+ if (!enableDetailsPanel) {
74
67
  return null;
75
68
  }
76
69
  if (showLoadingSkeletons) {
@@ -91,14 +84,19 @@ function RowExpansionCell({ rowId }) {
91
84
  return null;
92
85
  }
93
86
  const isRowExpanded = isExpanded(rowId);
87
+ const canExpandRow = isDetailsPanelExpandable(rowId);
88
+ const expansionId = getDataTableExpansionId(tableId, rowId);
89
+ if (!canExpandRow) {
90
+ return React.createElement(DataTableTd, { UNSAFE_isSelection: true, preventRowClick: true });
91
+ }
94
92
  return (React.createElement(DataTableTd, { UNSAFE_isSelection: true, preventRowClick: true },
95
93
  React.createElement(Button, { variant: "tertiary", "data-color": "neutral", size: "xsmall", onClick: (e) => {
96
94
  e.stopPropagation();
97
95
  toggleExpansion(rowId);
98
- }, "aria-expanded": isRowExpanded, "aria-controls": `${tableId}-expansion-${rowId}`, "aria-label": isRowExpanded ? "Skjul detaljer" : "Vis detaljer", icon: isRowExpanded ? React.createElement(MinusIcon, { "aria-hidden": true }) : React.createElement(PlusIcon, { "aria-hidden": true }) })));
96
+ }, "aria-expanded": isRowExpanded, "aria-controls": expansionId, "aria-label": isRowExpanded ? "Skjul detaljer" : "Vis detaljer", icon: isRowExpanded ? React.createElement(MinusIcon, { "aria-hidden": true }) : React.createElement(PlusIcon, { "aria-hidden": true }) })));
99
97
  }
100
98
  /**
101
- * TODO: How do these cells handle multiple thead rows, or col/rowspans?
99
+ * TODO: How do these cells handle multiple thead rows, or col/row-spans?
102
100
  * TODO: a11y for labels
103
101
  */
104
102
  function RowSelectionCell({ rowId }) {
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableTr.js","sourceRoot":"","sources":["../../../../src/data/table/tr/DataTableTr.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTableTr.js","sourceRoot":"","sources":["../../../../src/data/table/tr/DataTableTr.tsx"],"names":[],"mappings":"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"}
@@ -73,7 +73,7 @@ const polyfillClassName = "aksel-modal--polyfilled";
73
73
  */
74
74
  export const Modal = forwardRef((_a, ref) => {
75
75
  var _b, _c;
76
- var { header, children, open, onBeforeClose, onCancel, closeOnBackdropClick, width, placement, portal, className, "aria-labelledby": ariaLabelledby, style, onClick, onMouseDown } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "closeOnBackdropClick", "width", "placement", "portal", "className", "aria-labelledby", "style", "onClick", "onMouseDown"]);
76
+ var { header, children, open, onBeforeClose, onCancel, closeOnBackdropClick, width, placement, portal, className, "aria-labelledby": ariaLabelledby, style, onClick, onMouseDown, size = "medium" } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "closeOnBackdropClick", "width", "placement", "portal", "className", "aria-labelledby", "style", "onClick", "onMouseDown", "size"]);
77
77
  const modalRef = useRef(null);
78
78
  const mergedRef = useMergeRefs(modalRef, ref);
79
79
  const ariaLabelId = useId();
@@ -121,10 +121,10 @@ export const Modal = forwardRef((_a, ref) => {
121
121
  referenceElement: modalRef.current,
122
122
  });
123
123
  const isWidthPreset = typeof width === "string" && ["small", "medium"].includes(width);
124
- const mergedClassName = cl("aksel-modal", className, {
124
+ const mergedClassName = cl("aksel-modal", className, `aksel-modal--${size}`, {
125
125
  [polyfillClassName]: needPolyfill,
126
126
  "aksel-modal--autowidth": !width,
127
- [`aksel-modal--${width}`]: isWidthPreset,
127
+ [`aksel-modal--width-${width}`]: isWidthPreset,
128
128
  "aksel-modal--top": placement === "top" && !needPolyfill,
129
129
  });
130
130
  const mergedStyle = Object.assign(Object.assign({}, style), (!isWidthPreset ? { width } : {}));
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  interface ModalPropsBase extends React.DialogHTMLAttributes<HTMLDialogElement> {
2
2
  /**
3
3
  * Affects internal padding
4
+ * @default "medium"
4
5
  */
5
6
  size?: "small" | "medium";
6
7
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "8.10.0",
3
+ "version": "8.10.2",
4
4
  "description": "React components from the Norwegian Labour and Welfare Administration.",
5
5
  "author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
6
6
  "license": "MIT",
@@ -706,8 +706,8 @@
706
706
  "dependencies": {
707
707
  "@floating-ui/react": "0.27.8",
708
708
  "@floating-ui/react-dom": "^2.1.8",
709
- "@navikt/aksel-icons": "^8.10.0",
710
- "@navikt/ds-tokens": "^8.10.0",
709
+ "@navikt/aksel-icons": "^8.10.2",
710
+ "@navikt/ds-tokens": "^8.10.2",
711
711
  "date-fns": "^4.0.0",
712
712
  "react-day-picker": "9.14.0"
713
713
  },
@@ -726,15 +726,15 @@
726
726
  "fast-glob": "3.3.3",
727
727
  "jscodeshift": "17.3.0",
728
728
  "jsdom": "27.1.0",
729
- "react": "19.2.4",
730
- "react-dom": "19.2.4",
729
+ "react": "19.2.5",
730
+ "react-dom": "19.2.5",
731
731
  "react-router": "^7.13.1",
732
732
  "rimraf": "6.1.3",
733
- "swr": "^2.3.6",
733
+ "swr": "^2.4.1",
734
734
  "tsc-alias": "1.8.16",
735
735
  "tsx": "^4.20.6",
736
736
  "typescript": "6.0.2",
737
- "vitest": "4.1.0"
737
+ "vitest": "4.1.4"
738
738
  },
739
739
  "peerDependencies": {
740
740
  "@types/react": "^17.0.30 || ^18 || ^19",
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from "react";
1
+ import React, { forwardRef, useRef } from "react";
2
2
  import {
3
3
  ArrowsUpDownIcon,
4
4
  CaretLeftCircleFillIcon,
@@ -49,7 +49,6 @@ const SORT_ICON: Record<SortDirection, React.ElementType | null> = {
49
49
  /**
50
50
  * TODO:
51
51
  * - Plan for pinning: Move it into "settings" dialog like here: https://cloudscape.design/examples/react/table.html
52
- * - Keyboard-nav breaks in headers now because of the resize-handles.
53
52
  * Toggling `data-block-keyboard-nav` does not work since the created "grid" does not update when toggling this attribute.
54
53
  */
55
54
  const DataTableColumnHeader = forwardRef<
@@ -76,15 +75,12 @@ const DataTableColumnHeader = forwardRef<
76
75
  },
77
76
  forwardedRef,
78
77
  ) => {
79
- const [isOverflowing, setIsOverflowing] = React.useState(false);
80
78
  const contentRef = React.useRef<HTMLDivElement>(null);
81
- const [thRefState, setThRefState] = useState<HTMLTableCellElement | null>(
82
- null,
83
- );
84
- const mergedRef = useMergeRefs(forwardedRef, setThRefState);
79
+ const thRef = useRef<HTMLTableCellElement>(null);
80
+ const mergedRef = useMergeRefs(forwardedRef, thRef);
85
81
 
86
82
  const resizeResult = useTableColumnResize({
87
- ref: thRefState,
83
+ thRef,
88
84
  width,
89
85
  defaultWidth,
90
86
  minWidth,
@@ -105,12 +101,6 @@ const DataTableColumnHeader = forwardRef<
105
101
  data-sortable={sortable}
106
102
  style={resizeResult.style}
107
103
  aria-sort={sortable ? getAriaSort(sortDirection) : undefined}
108
- onPointerEnter={() => {
109
- const el = contentRef.current;
110
- setIsOverflowing(el ? el.scrollWidth > el.offsetWidth : false);
111
- console.info("is overflowing", isOverflowing);
112
- }}
113
- onPointerLeave={() => setIsOverflowing(false)}
114
104
  UNSAFE_isSelection={UNSAFE_isSelection}
115
105
  colSpan={colSpan}
116
106
  rowSpan={rowSpan}
@@ -147,8 +137,26 @@ const DataTableColumnHeader = forwardRef<
147
137
  <button
148
138
  {...resizeResult.resizeHandlerProps}
149
139
  className="aksel-data-table__th-resize-handle"
140
+ aria-label={
141
+ resizeResult.isResizingWithKeyboard
142
+ ? "Bruk pil venstre/høyre"
143
+ : "Endre bredde"
144
+ } // TODO Translate
150
145
  data-active={resizeResult.isResizingWithKeyboard}
146
+ data-disable-keyboard-nav={resizeResult.isResizingWithKeyboard}
151
147
  data-block-keyboard-nav
148
+ role="slider"
149
+ aria-valuenow={
150
+ typeof resizeResult.style.width === "number"
151
+ ? resizeResult.style.width
152
+ : 0
153
+ }
154
+ aria-valuetext={
155
+ typeof resizeResult.style.width === "number" &&
156
+ resizeResult.isResizingWithKeyboard
157
+ ? resizeResult.style.width.toString()
158
+ : "" // Needs to be blank when not in keyboard resizing mode to avoid NVDA announcing the value as part of the column heading
159
+ } // Need either this or aria-valuemax to get SR (at least NVDA) to announce the value
152
160
  >
153
161
  {resizeResult.isResizingWithKeyboard && (
154
162
  <>
@@ -1,11 +1,10 @@
1
- import { type DOMAttributes, useCallback, useState } from "react";
1
+ import { type DOMAttributes, useCallback, useRef, useState } from "react";
2
2
  import { useControllableState } from "../../../utils/hooks";
3
3
  import { useDataTableContext } from "../root/DataTableRoot.context";
4
4
 
5
5
  type ColumnWidth = number | string;
6
6
 
7
7
  type ResizeProps = {
8
- ref: HTMLTableCellElement | null;
9
8
  /**
10
9
  * Controlled width of the column.
11
10
  *
@@ -42,17 +41,20 @@ type ResizeProps = {
42
41
  colSpan?: number;
43
42
  };
44
43
 
45
- type TableColumnResizeArgs = ResizeProps & {};
44
+ type TableColumnResizeArgs = ResizeProps & {
45
+ thRef: React.RefObject<HTMLTableCellElement | null>;
46
+ };
46
47
 
47
48
  type TableColumnResizeResult =
48
49
  | {
49
- style?: React.CSSProperties;
50
+ style: React.CSSProperties;
50
51
  resizeHandlerProps: {
51
52
  onMouseDown: DOMAttributes<HTMLButtonElement>["onMouseDown"];
52
53
  onTouchStart: DOMAttributes<HTMLButtonElement>["onTouchStart"];
53
54
  onKeyDown: DOMAttributes<HTMLButtonElement>["onKeyDown"];
54
55
  onBlur: DOMAttributes<HTMLButtonElement>["onBlur"];
55
56
  onDoubleClick: DOMAttributes<HTMLButtonElement>["onDoubleClick"];
57
+ onClick: DOMAttributes<HTMLButtonElement>["onClick"];
56
58
  };
57
59
  isResizingWithKeyboard: boolean;
58
60
  enabled: true;
@@ -72,7 +74,7 @@ function useTableColumnResize(
72
74
  args: TableColumnResizeArgs,
73
75
  ): TableColumnResizeResult {
74
76
  const {
75
- ref,
77
+ thRef,
76
78
  width: userWidth,
77
79
  defaultWidth,
78
80
  onWidthChange,
@@ -84,6 +86,9 @@ function useTableColumnResize(
84
86
 
85
87
  const tableContext = useDataTableContext();
86
88
 
89
+ const [isResizingWithKeyboard, setIsResizingWithKeyboard] = useState(false);
90
+ const ignoreNextOnClick = useRef(false);
91
+
87
92
  const [width, _setWidth] = useControllableState({
88
93
  value: userWidth,
89
94
  defaultValue: defaultWidth ?? (colSpan ?? 1) * 140,
@@ -95,69 +100,85 @@ function useTableColumnResize(
95
100
  onChange: onWidthChange,
96
101
  });
97
102
 
98
- const [isResizingWithKeyboard, setIsResizingWithKeyboard] = useState(false);
99
- const [, setIsResizingWithMouse] = useState(false);
100
-
101
103
  const setWidth = useCallback(
102
104
  (newWidth: number) => {
103
- const currentWidth = ref?.offsetWidth;
104
- if (!currentWidth) {
105
- return;
106
- }
107
-
108
105
  const min = parseWidth(minWidth) ?? 0;
109
106
  const max = parseWidth(maxWidth) ?? Infinity;
110
107
  const clamped = Math.min(Math.max(newWidth, min), max);
108
+ _setWidth(clamped);
109
+ },
110
+ [minWidth, maxWidth, _setWidth],
111
+ );
111
112
 
112
- if (newWidth <= currentWidth && newWidth > max) {
113
- _setWidth(newWidth);
114
- return;
115
- }
113
+ const handleOnClick: DOMAttributes<HTMLButtonElement>["onClick"] =
114
+ useCallback(() => {
115
+ // We need to use the onClick event in order to support screen readers properly,
116
+ // since some of them only send a mouse click when pressing enter/space.
117
+ // We detect a "screen reader click" by checking if we had a mouseUp event right before.
116
118
 
117
- if (newWidth >= currentWidth && newWidth > max) {
118
- _setWidth(currentWidth);
119
+ if (ignoreNextOnClick.current) {
120
+ ignoreNextOnClick.current = false;
119
121
  return;
120
122
  }
121
123
 
122
- _setWidth(clamped);
123
- },
124
- [minWidth, maxWidth, _setWidth, ref],
125
- );
124
+ setIsResizingWithKeyboard((prev) => !prev);
125
+ }, []);
126
126
 
127
127
  const handleKeyDown: DOMAttributes<HTMLButtonElement>["onKeyDown"] =
128
128
  useCallback(
129
129
  (event) => {
130
- if (event.key === "Enter" || event.key === " ") {
131
- setIsResizingWithKeyboard((prev) => !prev);
132
- return;
133
- }
134
-
135
130
  if (!isResizingWithKeyboard) {
136
131
  return;
137
132
  }
133
+ const currentWidth = thRef.current?.offsetWidth ?? 0;
138
134
 
139
135
  if (event.key === "ArrowLeft" || event.key === "ArrowRight") {
140
136
  event.preventDefault();
141
-
142
- const th = (event.target as HTMLElement).closest(
143
- "th",
144
- ) as HTMLTableCellElement;
145
- const startWidth = th.offsetWidth;
146
-
147
137
  const delta = event.key === "ArrowRight" ? 20 : -20;
148
- setWidth(startWidth + delta);
138
+ setWidth(currentWidth + delta);
139
+ return;
140
+ }
141
+ if (event.key === "Home") {
142
+ event.preventDefault();
143
+ setWidth(0); // will fall back to minWidth
144
+ return;
145
+ }
146
+ if (event.key === "End") {
147
+ event.preventDefault();
148
+ const autoWidth = getAutoColumnWidth(thRef);
149
+ if (autoWidth && autoWidth > currentWidth) {
150
+ setWidth(autoWidth);
151
+ }
152
+ return;
153
+ }
154
+ if (event.key === "Escape") {
155
+ setIsResizingWithKeyboard(false);
149
156
  }
150
157
  },
151
- [isResizingWithKeyboard, setWidth],
158
+ [isResizingWithKeyboard, setWidth, thRef],
152
159
  );
153
160
 
154
161
  const startResize = useCallback(
155
- (th: HTMLTableCellElement, startX: number) => {
156
- setIsResizingWithMouse(true);
157
- const startWidth = th.offsetWidth;
162
+ (startX: number) => {
163
+ const startWidth = thRef.current?.offsetWidth ?? 0;
158
164
 
159
165
  function onPointerMove(clientX: number) {
160
- setWidth(startWidth + (clientX - startX));
166
+ const currentWidth = thRef.current?.offsetWidth ?? 0;
167
+ const newWidth = startWidth + (clientX - startX);
168
+
169
+ const min = parseWidth(minWidth) ?? 0;
170
+ const max = parseWidth(maxWidth) ?? Infinity;
171
+
172
+ if (newWidth > max) {
173
+ setWidth(newWidth < currentWidth ? newWidth : currentWidth);
174
+ return;
175
+ }
176
+ if (newWidth < min) {
177
+ setWidth(newWidth > currentWidth ? newWidth : currentWidth);
178
+ return;
179
+ }
180
+
181
+ setWidth(newWidth);
161
182
  }
162
183
 
163
184
  function onMouseMove(e: MouseEvent) {
@@ -172,28 +193,26 @@ function useTableColumnResize(
172
193
  function cleanup() {
173
194
  document.removeEventListener("mousemove", onMouseMove);
174
195
  document.removeEventListener("touchmove", onTouchMove);
175
- document.removeEventListener("mouseup", cleanup);
176
- document.removeEventListener("touchend", cleanup);
177
- document.removeEventListener("touchcancel", cleanup);
178
- setIsResizingWithMouse(false);
196
+ setIsResizingWithKeyboard(false);
197
+
198
+ // We only want onClick to trigger when using the keyboard
199
+ // (we use onClick b.c. keyDown doesn't fire when using a screen reader)
200
+ ignoreNextOnClick.current = true;
179
201
  }
180
202
 
181
203
  document.addEventListener("mousemove", onMouseMove);
182
204
  document.addEventListener("touchmove", onTouchMove, { passive: false });
183
- document.addEventListener("mouseup", cleanup);
184
- document.addEventListener("touchend", cleanup);
185
- document.addEventListener("touchcancel", cleanup);
205
+ document.addEventListener("mouseup", cleanup, { once: true });
206
+ document.addEventListener("touchend", cleanup, { once: true });
207
+ document.addEventListener("touchcancel", cleanup, { once: true });
186
208
  },
187
- [setWidth],
209
+ [maxWidth, minWidth, setWidth, thRef],
188
210
  );
189
211
 
190
212
  const handleMouseDown: DOMAttributes<HTMLButtonElement>["onMouseDown"] =
191
213
  useCallback(
192
214
  (event) => {
193
- const th = (event.target as HTMLElement).closest(
194
- "th",
195
- ) as HTMLTableCellElement;
196
- startResize(th, event.clientX);
215
+ startResize(event.clientX);
197
216
  },
198
217
  [startResize],
199
218
  );
@@ -201,38 +220,19 @@ function useTableColumnResize(
201
220
  const handleTouchStart: DOMAttributes<HTMLButtonElement>["onTouchStart"] =
202
221
  useCallback(
203
222
  (event) => {
204
- const th = (event.target as HTMLElement).closest(
205
- "th",
206
- ) as HTMLTableCellElement;
207
- startResize(th, event.touches[0].clientX);
223
+ startResize(event.touches[0].clientX);
208
224
  },
209
225
  [startResize],
210
226
  );
211
227
 
212
- /**
213
- * TODO: Do we even want this?
214
- * - + 32px padding is hardcoded now, fix this
215
- * - Need to find widest element in column, not the header itself.
216
- * - Should doubleclick just reset to defaultWidth? Or add a autoWidth prop.
217
- */
228
+ // Auto-size column to fit content on double click. NB: Doesn't work with block content!
218
229
  const handleDoubleClick: DOMAttributes<HTMLButtonElement>["onDoubleClick"] =
219
- useCallback(
220
- (event) => {
221
- const th = (event.target as HTMLElement).closest(
222
- "th",
223
- ) as HTMLTableCellElement;
224
-
225
- const contentEl = th.getElementsByClassName(
226
- "aksel-data-table__th-content",
227
- )[0];
228
- const range = document.createRange();
229
- range.selectNodeContents(contentEl);
230
- const contentWidth = range.getBoundingClientRect().width;
231
-
232
- setWidth(contentWidth + 32);
233
- },
234
- [setWidth],
235
- );
230
+ useCallback(() => {
231
+ const newColumnWidth = getAutoColumnWidth(thRef);
232
+ if (newColumnWidth) {
233
+ setWidth(newColumnWidth);
234
+ }
235
+ }, [setWidth, thRef]);
236
236
 
237
237
  if (tableContext.layout !== "fixed") {
238
238
  return {
@@ -252,6 +252,7 @@ function useTableColumnResize(
252
252
  onKeyDown: handleKeyDown,
253
253
  onBlur: () => setIsResizingWithKeyboard(false),
254
254
  onDoubleClick: handleDoubleClick,
255
+ onClick: handleOnClick,
255
256
  },
256
257
  isResizingWithKeyboard,
257
258
  enabled: true,
@@ -272,5 +273,77 @@ function parseWidth(width: ColumnWidth | undefined): number | undefined {
272
273
  return undefined;
273
274
  }
274
275
 
276
+ function getAutoColumnWidth(
277
+ thRef: React.RefObject<HTMLTableCellElement | null>,
278
+ ) {
279
+ const th = thRef.current!;
280
+ const thContent = th.querySelector(".aksel-data-table__th-content");
281
+ const thPaddingEl = th.querySelector("div");
282
+ const rows = th.closest("table")?.querySelectorAll("tbody tr, tfoot tr");
283
+ if (!thContent || !thPaddingEl || !rows) {
284
+ return;
285
+ }
286
+
287
+ // Find needed width for header cell
288
+ const contentWidth = thContent.scrollWidth;
289
+ const paddingElStyle = window.getComputedStyle(thPaddingEl);
290
+ const thInlinePadding =
291
+ parseInt(paddingElStyle.paddingLeft, 10) +
292
+ parseInt(paddingElStyle.paddingRight, 10);
293
+ let newColumnWidth = contentWidth + thInlinePadding;
294
+
295
+ // Find column position
296
+ let columnPosition = 1;
297
+ let prevSibling = th.previousElementSibling;
298
+ while (prevSibling) {
299
+ columnPosition += (prevSibling as HTMLTableCellElement).colSpan;
300
+ prevSibling = prevSibling.previousElementSibling;
301
+ }
302
+
303
+ // Find needed width for each cell in column in tbody and tfoot
304
+ const range = document.createRange();
305
+ let skipRows = 0;
306
+ for (const row of rows) {
307
+ // Skip rows where the cell in this column is covered by a rowspan from a previous row
308
+ if (skipRows > 0) {
309
+ skipRows--;
310
+ continue;
311
+ }
312
+
313
+ // Find cell
314
+ let cell = row.firstChild as HTMLTableCellElement;
315
+ let currentPosition = cell.colSpan;
316
+ while (columnPosition > currentPosition && cell.nextElementSibling) {
317
+ cell = cell.nextElementSibling as HTMLTableCellElement;
318
+ currentPosition += cell.colSpan;
319
+ }
320
+ skipRows = cell.rowSpan - 1;
321
+
322
+ // Find needed width
323
+ const cellContent = cell.firstChild as HTMLElement;
324
+ range.selectNodeContents(cellContent);
325
+ const cellContentWidth = range.getBoundingClientRect().width;
326
+ const contentElStyle = window.getComputedStyle(cellContent);
327
+ const inlinePadding =
328
+ parseInt(contentElStyle.paddingLeft, 10) +
329
+ parseInt(contentElStyle.paddingRight, 10);
330
+ const widthNeededForThisCell =
331
+ (cellContentWidth + inlinePadding) / cell.colSpan;
332
+ if (widthNeededForThisCell > newColumnWidth) {
333
+ newColumnWidth = widthNeededForThisCell;
334
+ }
335
+ }
336
+
337
+ // Make sure new width is not wider than the table container since that would be impractical
338
+ const container = th.closest("div");
339
+ const maxColWidth =
340
+ (container?.offsetWidth || document.documentElement.clientWidth * 0.9) *
341
+ 0.95;
342
+
343
+ return newColumnWidth > maxColWidth
344
+ ? Math.floor(maxColWidth)
345
+ : Math.ceil(newColumnWidth);
346
+ }
347
+
275
348
  export { useTableColumnResize };
276
349
  export type { ResizeProps };