@ceed/cds 1.27.0 → 1.27.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.
package/dist/index.cjs CHANGED
@@ -2322,7 +2322,7 @@ var StyledTd = (0, import_joy25.styled)("td")(({ theme }) => ({
2322
2322
  var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
2323
2323
  var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react19.default.createElement(import_joy25.LinearProgress, { value: 8, variant: "plain" });
2324
2324
  var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react19.default.createElement(import_joy25.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2325
- var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.createElement(
2325
+ var Resizer = (ref, targetRef = ref, onResizeStateChange) => /* @__PURE__ */ import_react19.default.createElement(
2326
2326
  Box_default,
2327
2327
  {
2328
2328
  sx: {
@@ -2337,6 +2337,7 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.c
2337
2337
  onMouseDown: (e) => {
2338
2338
  const initialX = e.clientX;
2339
2339
  const initialWidth = ref.current?.getBoundingClientRect().width;
2340
+ onResizeStateChange?.(true);
2340
2341
  const onMouseMove = (e2) => {
2341
2342
  if (initialWidth && initialX) {
2342
2343
  ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
@@ -2346,6 +2347,7 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.c
2346
2347
  const onMouseUp = () => {
2347
2348
  document.removeEventListener("mousemove", onMouseMove);
2348
2349
  document.removeEventListener("mouseup", onMouseUp);
2350
+ requestAnimationFrame(() => onResizeStateChange?.(false));
2349
2351
  };
2350
2352
  document.addEventListener("mousemove", onMouseMove);
2351
2353
  document.addEventListener("mouseup", onMouseUp);
@@ -2933,7 +2935,7 @@ var TextEllipsis = ({ children, lineClamp }) => {
2933
2935
  ro.observe(element);
2934
2936
  return () => ro.disconnect();
2935
2937
  }, [children, lineClamp]);
2936
- return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2938
+ return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2937
2939
  };
2938
2940
  var CellTextEllipsis = ({ children }) => {
2939
2941
  const textRef = (0, import_react24.useRef)(null);
@@ -2990,13 +2992,23 @@ var HeadCell = (props) => {
2990
2992
  const theme = (0, import_joy32.useTheme)();
2991
2993
  const ref = headerRef;
2992
2994
  const colRef = tableColRef;
2995
+ const localRef = (0, import_react24.useRef)(null);
2996
+ (0, import_react24.useLayoutEffect)(() => {
2997
+ ref.current = localRef.current;
2998
+ }, [ref]);
2993
2999
  const [isHovered, setIsHovered] = (0, import_react24.useState)(false);
2994
3000
  const sortable = type === "actions" ? false : _sortable;
2995
3001
  const headId = (0, import_react24.useMemo)(
2996
3002
  () => `${tableId}_header_${headerName ?? field}`.trim(),
2997
3003
  [tableId, headerName, field]
2998
3004
  );
2999
- const resizer = (0, import_react24.useMemo)(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
3005
+ const isResizingRef = (0, import_react24.useRef)(false);
3006
+ const resizer = (0, import_react24.useMemo)(
3007
+ () => resizable ?? true ? Resizer(ref, colRef, (isResizing) => {
3008
+ isResizingRef.current = isResizing;
3009
+ }) : null,
3010
+ [resizable, ref, colRef]
3011
+ );
3000
3012
  const style = (0, import_react24.useMemo)(
3001
3013
  () => ({
3002
3014
  width,
@@ -3066,11 +3078,15 @@ var HeadCell = (props) => {
3066
3078
  id: headId,
3067
3079
  "aria-label": headerName ?? field,
3068
3080
  "aria-sort": sort ? { asc: "ascending", desc: "descending" }[sort] : "none",
3069
- ref,
3081
+ ref: localRef,
3070
3082
  key: field,
3071
3083
  style,
3072
3084
  onClick: (0, import_react24.useCallback)(
3073
- (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
3085
+ (e) => {
3086
+ if (isResizingRef.current) return;
3087
+ if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
3088
+ sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey });
3089
+ },
3074
3090
  [field, onSortChange, sort, sortable]
3075
3091
  ),
3076
3092
  onMouseEnter: () => setIsHovered(true),
package/dist/index.js CHANGED
@@ -2196,7 +2196,7 @@ var StyledTd = styled8("td")(({ theme }) => ({
2196
2196
  var MotionSortIcon = motion17(SortIcon);
2197
2197
  var DefaultLoadingOverlay = () => /* @__PURE__ */ React17.createElement(LinearProgress, { value: 8, variant: "plain" });
2198
2198
  var DefaultNoRowsOverlay = () => /* @__PURE__ */ React17.createElement(Typography3, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
2199
- var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React17.createElement(
2199
+ var Resizer = (ref, targetRef = ref, onResizeStateChange) => /* @__PURE__ */ React17.createElement(
2200
2200
  Box_default,
2201
2201
  {
2202
2202
  sx: {
@@ -2211,6 +2211,7 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React17.createElement(
2211
2211
  onMouseDown: (e) => {
2212
2212
  const initialX = e.clientX;
2213
2213
  const initialWidth = ref.current?.getBoundingClientRect().width;
2214
+ onResizeStateChange?.(true);
2214
2215
  const onMouseMove = (e2) => {
2215
2216
  if (initialWidth && initialX) {
2216
2217
  ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
@@ -2220,6 +2221,7 @@ var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React17.createElement(
2220
2221
  const onMouseUp = () => {
2221
2222
  document.removeEventListener("mousemove", onMouseMove);
2222
2223
  document.removeEventListener("mouseup", onMouseUp);
2224
+ requestAnimationFrame(() => onResizeStateChange?.(false));
2223
2225
  };
2224
2226
  document.addEventListener("mousemove", onMouseMove);
2225
2227
  document.addEventListener("mouseup", onMouseUp);
@@ -2816,7 +2818,7 @@ var TextEllipsis = ({ children, lineClamp }) => {
2816
2818
  ro.observe(element);
2817
2819
  return () => ro.disconnect();
2818
2820
  }, [children, lineClamp]);
2819
- return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2821
+ return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
2820
2822
  };
2821
2823
  var CellTextEllipsis = ({ children }) => {
2822
2824
  const textRef = useRef5(null);
@@ -2873,13 +2875,23 @@ var HeadCell = (props) => {
2873
2875
  const theme = useTheme();
2874
2876
  const ref = headerRef;
2875
2877
  const colRef = tableColRef;
2878
+ const localRef = useRef5(null);
2879
+ useLayoutEffect(() => {
2880
+ ref.current = localRef.current;
2881
+ }, [ref]);
2876
2882
  const [isHovered, setIsHovered] = useState8(false);
2877
2883
  const sortable = type === "actions" ? false : _sortable;
2878
2884
  const headId = useMemo8(
2879
2885
  () => `${tableId}_header_${headerName ?? field}`.trim(),
2880
2886
  [tableId, headerName, field]
2881
2887
  );
2882
- const resizer = useMemo8(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
2888
+ const isResizingRef = useRef5(false);
2889
+ const resizer = useMemo8(
2890
+ () => resizable ?? true ? Resizer(ref, colRef, (isResizing) => {
2891
+ isResizingRef.current = isResizing;
2892
+ }) : null,
2893
+ [resizable, ref, colRef]
2894
+ );
2883
2895
  const style = useMemo8(
2884
2896
  () => ({
2885
2897
  width,
@@ -2949,11 +2961,15 @@ var HeadCell = (props) => {
2949
2961
  id: headId,
2950
2962
  "aria-label": headerName ?? field,
2951
2963
  "aria-sort": sort ? { asc: "ascending", desc: "descending" }[sort] : "none",
2952
- ref,
2964
+ ref: localRef,
2953
2965
  key: field,
2954
2966
  style,
2955
2967
  onClick: useCallback9(
2956
- (e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
2968
+ (e) => {
2969
+ if (isResizingRef.current) return;
2970
+ if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
2971
+ sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey });
2972
+ },
2957
2973
  [field, onSortChange, sort, sortable]
2958
2974
  ),
2959
2975
  onMouseEnter: () => setIsHovered(true),