@spscommerce/ds-react 6.21.0 → 6.22.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/lib/index.es.js CHANGED
@@ -25884,10 +25884,42 @@ const useColumnResizer = ({
25884
25884
  const isResizeable = !!resizeable && !!resizeKey;
25885
25885
  const initialColumnWidth = isResizeable ? resizeState == null ? void 0 : resizeState[resizeKey] : void 0;
25886
25886
  React.useLayoutEffect(() => {
25887
+ var _a, _b;
25887
25888
  let start = null;
25888
25889
  let currentColumnWidth = initialColumnWidth;
25890
+ let resizerPosition = 0;
25889
25891
  const table = findTableElementParent(tableHeaderRef.current);
25890
- function applyResize() {
25892
+ const resizer = (_a = tableHeaderRef.current) == null ? void 0 : _a.querySelector(".sps-table__column-resizer");
25893
+ const resizerGuide = (_b = tableHeaderRef.current) == null ? void 0 : _b.querySelector(".sps-table__column-resizer-guide");
25894
+ function handleDragStart() {
25895
+ if (tableHeaderRef.current && start) {
25896
+ if (resizer) {
25897
+ resizer.style.backgroundColor = colors.blue200;
25898
+ }
25899
+ if (resizerGuide && table) {
25900
+ resizerGuide.style.height = `${table.getBoundingClientRect().height}px`;
25901
+ resizerGuide.style.display = "block";
25902
+ }
25903
+ if (table) {
25904
+ const tableHeaders = table.querySelectorAll("thead > tr > th");
25905
+ for (let i = 0; i < tableHeaders.length; i += 1) {
25906
+ const tableHeaderResizer = tableHeaders[i].querySelector(".sps-table__column-resizer");
25907
+ tableHeaders[i].style.cursor = "col-resize";
25908
+ if (tableHeaders[i] !== tableHeaderRef.current && tableHeaderResizer) {
25909
+ tableHeaders[i].classList.remove("sps-table__header--resizeable");
25910
+ tableHeaderResizer.style.display = "none";
25911
+ }
25912
+ }
25913
+ }
25914
+ }
25915
+ }
25916
+ function handleDragging() {
25917
+ if (tableHeaderRef.current && start && resizer && resizerGuide) {
25918
+ resizer.style.right = `${resizerPosition}px`;
25919
+ resizerGuide.style.right = `${resizerPosition}px`;
25920
+ }
25921
+ }
25922
+ function handleDragEnd() {
25891
25923
  if (tableHeaderRef.current) {
25892
25924
  const width = currentColumnWidth ? `${currentColumnWidth}px` : null;
25893
25925
  tableHeaderRef.current.style.width = width;
@@ -25898,11 +25930,11 @@ const useColumnResizer = ({
25898
25930
  tableHeaderBody.style.overflow = width ? "hidden" : null;
25899
25931
  tableHeaderBody.style.textOverflow = width ? "ellipsis" : null;
25900
25932
  }
25901
- if (start) {
25902
- const resizer = tableHeaderRef.current.querySelector(".sps-table__column-resizer");
25903
- if (resizer) {
25904
- resizer.style.backgroundColor = colors.blue200;
25905
- }
25933
+ if (resizer && resizerGuide) {
25934
+ resizer.style.right = "0";
25935
+ resizer.style.backgroundColor = null;
25936
+ resizerGuide.style.right = "0";
25937
+ resizerGuide.style.display = "none";
25906
25938
  }
25907
25939
  if (!tableHeaderRef.current.classList.contains("sps-table__cell--pinned")) {
25908
25940
  tableHeaderRef.current.style.position = "relative";
@@ -25911,6 +25943,12 @@ const useColumnResizer = ({
25911
25943
  const tableHeaders = table.querySelectorAll("thead > tr > th");
25912
25944
  for (let i = 0; i < tableHeaders.length; i += 1) {
25913
25945
  const tableHeaderBody2 = tableHeaders[i].querySelector(".sps-table__header-cell-body");
25946
+ const tableHeaderResizer = tableHeaders[i].querySelector(".sps-table__column-resizer");
25947
+ tableHeaders[i].style.cursor = "default";
25948
+ if (tableHeaders[i] !== tableHeaderRef.current && tableHeaderResizer) {
25949
+ tableHeaders[i].classList.add("sps-table__header--resizeable");
25950
+ tableHeaderResizer.style.display = "block";
25951
+ }
25914
25952
  if (tableHeaderBody2 && !tableHeaderBody2.title) {
25915
25953
  tableHeaderBody2.title = tableHeaderBody2.textContent;
25916
25954
  }
@@ -25933,19 +25971,21 @@ const useColumnResizer = ({
25933
25971
  if (!tableHeaderRef.current) {
25934
25972
  return;
25935
25973
  }
25974
+ event.preventDefault();
25936
25975
  start = event.clientX;
25937
25976
  currentColumnWidth = tableHeaderRef.current.clientWidth;
25938
- applyResize();
25977
+ handleDragStart();
25939
25978
  };
25940
25979
  const dragListener = (event) => {
25941
25980
  if (!start || !tableHeaderRef.current) {
25942
25981
  return;
25943
25982
  }
25944
- const delta = Math.max(Math.min(start - event.clientX, 5), -5);
25983
+ const delta = Math.max(Math.min(start - event.clientX, 40), -40);
25945
25984
  if (delta !== 0) {
25946
25985
  start = event.clientX;
25947
- currentColumnWidth = Math.max(tableHeaderRef.current.clientWidth - delta, 40);
25948
- applyResize();
25986
+ resizerPosition += delta;
25987
+ currentColumnWidth = Math.max(currentColumnWidth - delta, 40);
25988
+ handleDragging();
25949
25989
  }
25950
25990
  };
25951
25991
  const dragEndListener = () => {
@@ -25953,16 +25993,13 @@ const useColumnResizer = ({
25953
25993
  return;
25954
25994
  }
25955
25995
  start = null;
25956
- applyResize();
25996
+ resizerPosition = 0;
25997
+ handleDragEnd();
25957
25998
  setSingleResizeState(resizeKey, currentColumnWidth);
25958
- const resizer = tableHeaderRef.current.querySelector(".sps-table__column-resizer");
25959
- if (resizer) {
25960
- resizer.style.backgroundColor = null;
25961
- }
25962
25999
  };
25963
26000
  const doubleClickListener = () => {
25964
26001
  currentColumnWidth = null;
25965
- applyResize();
26002
+ handleDragEnd();
25966
26003
  setSingleResizeState(resizeKey, currentColumnWidth);
25967
26004
  };
25968
26005
  if (isResizeable && resizerRef.current) {
@@ -25972,7 +26009,7 @@ const useColumnResizer = ({
25972
26009
  window.addEventListener("mousemove", dragListener);
25973
26010
  window.addEventListener("dragend", dragEndListener);
25974
26011
  window.addEventListener("mouseup", dragEndListener);
25975
- applyResize();
26012
+ handleDragEnd();
25976
26013
  }
25977
26014
  return () => {
25978
26015
  if (resizerRef.current) {
@@ -26055,10 +26092,12 @@ function SpsTableHeader(_C) {
26055
26092
  onClick: flipSort,
26056
26093
  tabIndex: sortKey ? 0 : null,
26057
26094
  onKeyDown: handleKeyEvent
26058
- }, children), isResizeable && /* @__PURE__ */ React.createElement("span", {
26095
+ }, children), isResizeable && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", {
26059
26096
  ref: resizerRef,
26060
26097
  className: clsx("sps-table__column-resizer")
26061
- }));
26098
+ }), /* @__PURE__ */ React.createElement("span", {
26099
+ className: clsx("sps-table__column-resizer-guide")
26100
+ })));
26062
26101
  }
26063
26102
  Object.assign(SpsTableHeader, {
26064
26103
  props: propsDoc$X,
@@ -38839,7 +38878,7 @@ function SpsMultiValueTextInput(_ma) {
38839
38878
  "data-testid": `${testId}__multi-value-text-input`,
38840
38879
  value: state.searchText,
38841
38880
  className: "sps-text-input__input",
38842
- placeholder: state.searchText.length === 0 ? placeholder : void 0,
38881
+ placeholder: state.searchText.length === 0 && value.length === 0 ? placeholder : void 0,
38843
38882
  id: controlId,
38844
38883
  onChange: handleChange,
38845
38884
  onKeyDown: handleKeyDown,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spscommerce/ds-react",
3
3
  "description": "SPS Design System React components",
4
- "version": "6.21.0",
4
+ "version": "6.22.0",
5
5
  "author": "SPS Commerce",
6
6
  "license": "UNLICENSED",
7
7
  "repository": "https://github.com/spscommerce/design-system/tree/main/packages/@spscommerce/ds-react",
@@ -28,10 +28,10 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@react-stately/collections": "^3.3.3",
31
- "@spscommerce/ds-colors": "6.21.0",
32
- "@spscommerce/ds-illustrations": "6.21.0",
33
- "@spscommerce/ds-shared": "6.21.0",
34
- "@spscommerce/positioning": "6.21.0",
31
+ "@spscommerce/ds-colors": "6.22.0",
32
+ "@spscommerce/ds-illustrations": "6.22.0",
33
+ "@spscommerce/ds-shared": "6.22.0",
34
+ "@spscommerce/positioning": "6.22.0",
35
35
  "@spscommerce/utils": "^6.11.3",
36
36
  "moment": "^2.25.3",
37
37
  "moment-timezone": "^0.5.28",
@@ -40,10 +40,10 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@react-stately/collections": "^3.3.3",
43
- "@spscommerce/ds-colors": "6.21.0",
44
- "@spscommerce/ds-illustrations": "6.21.0",
45
- "@spscommerce/ds-shared": "6.21.0",
46
- "@spscommerce/positioning": "6.21.0",
43
+ "@spscommerce/ds-colors": "6.22.0",
44
+ "@spscommerce/ds-illustrations": "6.22.0",
45
+ "@spscommerce/ds-shared": "6.22.0",
46
+ "@spscommerce/positioning": "6.22.0",
47
47
  "@spscommerce/utils": "^6.11.3",
48
48
  "@testing-library/react": "^9.3.2",
49
49
  "@types/prop-types": "^15.7.1",