qbs-react-grid 2.2.9 → 2.2.12

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.
@@ -122,11 +122,16 @@ var QbsTable = function QbsTable(_ref) {
122
122
  setRowViewToggle = _ref.setRowViewToggle,
123
123
  _ref$isFullScreen = _ref.isFullScreen,
124
124
  isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
125
- rowHeight = _ref.rowHeight;
125
+ rowHeight = _ref.rowHeight,
126
+ _ref$showHeader = _ref.showHeader,
127
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader;
126
128
  var labels = useMemo(function () {
127
129
  return mergeQbsTableLabels(labelsProp);
128
130
  }, [labelsProp]);
129
- var pinSide = rtl ? 'left' : 'right';
131
+ var effectiveWordWrap = useMemo(function () {
132
+ if (!rowViewToggle) return wordWrap;
133
+ return defaultRowView ? false : 'break-word';
134
+ }, [rowViewToggle, defaultRowView, wordWrap]);
130
135
  var _useState = useState(false),
131
136
  loading = _useState[0],
132
137
  setLoading = _useState[1];
@@ -149,6 +154,16 @@ var QbsTable = function QbsTable(_ref) {
149
154
  setTableViewToggle = _useState5[1];
150
155
  var isMobile = useResponsiveStore();
151
156
  var tableBodyRef = useRef(null);
157
+ var _useState6 = useState(0),
158
+ rowViewRefreshKey = _useState6[0],
159
+ setRowViewRefreshKey = _useState6[1];
160
+ useEffect(function () {
161
+ if (rowViewToggle) {
162
+ setRowViewRefreshKey(function (key) {
163
+ return key + 1;
164
+ });
165
+ }
166
+ }, [defaultRowView, rowViewToggle]);
152
167
  var handleSortColumn = useCallback(function (sortColumn, sortType) {
153
168
  setLoading(true);
154
169
  setTimeout(function () {
@@ -585,13 +600,13 @@ var QbsTable = function QbsTable(_ref) {
585
600
  className: "qbs-table-border-wrap"
586
601
  }, tableViewToggle ? /*#__PURE__*/React.createElement(Table, {
587
602
  height: autoHeight ? undefined : height,
588
- key: tableKey,
603
+ key: tableKey + "-" + rowViewRefreshKey,
589
604
  tableKey: tableKey,
590
605
  rtl: rtl,
591
606
  data: data,
592
607
  tableBodyRef: tableBodyRef,
593
608
  dataTheme: dataTheme,
594
- wordWrap: wordWrap,
609
+ wordWrap: effectiveWordWrap,
595
610
  autoHeight: autoHeight,
596
611
  sortColumn: sortColumn,
597
612
  style: {
@@ -615,7 +630,7 @@ var QbsTable = function QbsTable(_ref) {
615
630
  rowHeight: rowHeight,
616
631
  rowExpandedHeight: rowExpandedHeight,
617
632
  loading: isLoading != null ? isLoading : loading,
618
- showHeader: true,
633
+ showHeader: showHeader,
619
634
  defaultChecked: true,
620
635
  expandedRowKeys: expandedRowKeys,
621
636
  onExpandChange: onExpandChange,
@@ -697,7 +712,7 @@ var QbsTable = function QbsTable(_ref) {
697
712
  getToolTip: customRowStatus.getToolTip
698
713
  })), columnsRendered, !actionProps || (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) === 0 && columnToggle && /*#__PURE__*/React.createElement(Column, {
699
714
  width: 40,
700
- fixed: pinSide
715
+ fixed: "right"
701
716
  }, /*#__PURE__*/React.createElement(HeaderCell, {
702
717
  verticalAlign: findGrouped() ? 'middle' : undefined,
703
718
  className: " " + classes.headerlClass,
@@ -716,7 +731,7 @@ var QbsTable = function QbsTable(_ref) {
716
731
  rtl: rtl
717
732
  })), /*#__PURE__*/React.createElement(Cell, null)), actionProps && (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) > 0 && /*#__PURE__*/React.createElement(Column, {
718
733
  width: 40,
719
- fixed: pinSide
734
+ fixed: "right"
720
735
  }, /*#__PURE__*/React.createElement(HeaderCell, {
721
736
  verticalAlign: findGrouped() ? 'middle' : undefined,
722
737
  className: " " + classes.headerlClass,
@@ -106,11 +106,16 @@ var QbsTable = function QbsTable(_ref) {
106
106
  setTableFullView = _ref.setTableFullView,
107
107
  setRowViewToggle = _ref.setRowViewToggle,
108
108
  _ref$isFullScreen = _ref.isFullScreen,
109
- isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen;
109
+ isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
110
+ _ref$showHeader = _ref.showHeader,
111
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader;
110
112
  var labels = useMemo(function () {
111
113
  return mergeQbsTableLabels(labelsProp);
112
114
  }, [labelsProp]);
113
- var pinSide = rtl ? 'left' : 'right';
115
+ var effectiveWordWrap = useMemo(function () {
116
+ if (!rowViewToggle) return wordWrap;
117
+ return defaultRowView ? false : 'break-word';
118
+ }, [rowViewToggle, defaultRowView, wordWrap]);
114
119
  var _useState = useState(false),
115
120
  loading = _useState[0],
116
121
  setLoading = _useState[1];
@@ -449,7 +454,7 @@ var QbsTable = function QbsTable(_ref) {
449
454
  data: data,
450
455
  tableBodyRef: tableBodyRef,
451
456
  dataTheme: dataTheme,
452
- wordWrap: wordWrap,
457
+ wordWrap: effectiveWordWrap,
453
458
  autoHeight: autoHeight,
454
459
  sortColumn: sortColumn,
455
460
  style: {
@@ -472,7 +477,7 @@ var QbsTable = function QbsTable(_ref) {
472
477
  headerHeight: headerHeight,
473
478
  rowExpandedHeight: rowExpandedHeight,
474
479
  loading: isLoading != null ? isLoading : loading,
475
- showHeader: true,
480
+ showHeader: showHeader,
476
481
  defaultChecked: true,
477
482
  expandedRowKeys: expandedRowKeys,
478
483
  onExpandChange: onExpandChange,
@@ -554,7 +559,7 @@ var QbsTable = function QbsTable(_ref) {
554
559
  getToolTip: customRowStatus.getToolTip
555
560
  })), columnsRendered, !actionProps || (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) === 0 && columnToggle && /*#__PURE__*/React.createElement(Column, {
556
561
  width: 40,
557
- fixed: pinSide
562
+ fixed: "right"
558
563
  }, /*#__PURE__*/React.createElement(HeaderCell, {
559
564
  verticalAlign: findGrouped() ? 'middle' : undefined,
560
565
  className: " " + classes.headerlClass,
@@ -573,7 +578,7 @@ var QbsTable = function QbsTable(_ref) {
573
578
  rtl: rtl
574
579
  })), /*#__PURE__*/React.createElement(Cell, null)), actionProps && (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) > 0 && /*#__PURE__*/React.createElement(Column, {
575
580
  width: 40,
576
- fixed: pinSide
581
+ fixed: "right"
577
582
  }, /*#__PURE__*/React.createElement(HeaderCell, {
578
583
  verticalAlign: findGrouped() ? 'middle' : undefined,
579
584
  className: " " + classes.headerlClass,
@@ -39,9 +39,7 @@ var ToolBar = function ToolBar(_ref) {
39
39
  setRowViewToggle = _ref.setRowViewToggle,
40
40
  _ref$isFullScreen = _ref.isFullScreen,
41
41
  isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
42
- labelsProp = _ref.labels,
43
- _ref$rtl = _ref.rtl,
44
- rtl = _ref$rtl === void 0 ? false : _ref$rtl;
42
+ labelsProp = _ref.labels;
45
43
  var labels = useMemo(function () {
46
44
  return mergeQbsTableLabels(labelsProp);
47
45
  }, [labelsProp]);
@@ -81,8 +79,7 @@ var ToolBar = function ToolBar(_ref) {
81
79
  };
82
80
  return /*#__PURE__*/React.createElement("div", {
83
81
  className: "qbs-table-toolbar-container",
84
- ref: toolbarRef,
85
- dir: rtl ? 'rtl' : 'ltr'
82
+ ref: toolbarRef
86
83
  }, /*#__PURE__*/React.createElement("div", {
87
84
  className: "qbs-table-toolbar " + (className != null ? className : '')
88
85
  }, /*#__PURE__*/React.createElement("div", {
@@ -117,28 +114,40 @@ var ToolBar = function ToolBar(_ref) {
117
114
  }))), tableHeaderActions, /*#__PURE__*/React.createElement("div", {
118
115
  className: "pr-1 cursor-pointer relative table_custom_ctions"
119
116
  }, (rowViewToggle || isFullScreen) && /*#__PURE__*/React.createElement("div", {
120
- className: "flex gap-2 qbs-row-switch-container"
117
+ className: "flex gap-2 qbs-row-switch-cntainer"
121
118
  }, rowViewToggle && /*#__PURE__*/React.createElement("div", {
122
119
  className: "flex gap-2 table_cell_style qbs-table-top-icons"
123
120
  }, /*#__PURE__*/React.createElement(TooltipComponent, {
124
121
  tableBodyRef: toolbarRef,
125
122
  title: (_labels$switchToDefau = labels.switchToDefaultView) != null ? _labels$switchToDefau : ''
126
- }, /*#__PURE__*/React.createElement("button", {
127
- type: "button",
128
- className: "qbs-table-view-btn",
123
+ }, /*#__PURE__*/React.createElement("div", {
124
+ role: "button",
125
+ tabIndex: 0,
126
+ title: labels.switchToDefaultView,
129
127
  onClick: function onClick() {
130
128
  return setRowViewToggle === null || setRowViewToggle === void 0 ? void 0 : setRowViewToggle(true);
129
+ },
130
+ onKeyDown: function onKeyDown(e) {
131
+ if (e.key === 'Enter' || e.key === ' ') {
132
+ setRowViewToggle === null || setRowViewToggle === void 0 ? void 0 : setRowViewToggle(true);
133
+ }
131
134
  }
132
135
  }, /*#__PURE__*/React.createElement(DefaultView, {
133
136
  className: "" + (defaultRowView ? 'active' : '')
134
137
  }))), /*#__PURE__*/React.createElement(TooltipComponent, {
135
138
  tableBodyRef: toolbarRef,
136
139
  title: (_labels$switchToRelax = labels.switchToRelaxedView) != null ? _labels$switchToRelax : ''
137
- }, /*#__PURE__*/React.createElement("button", {
138
- type: "button",
139
- className: "qbs-table-view-btn",
140
+ }, /*#__PURE__*/React.createElement("div", {
141
+ role: "button",
142
+ tabIndex: 0,
143
+ title: labels.switchToRelaxedView,
140
144
  onClick: function onClick() {
141
145
  return setRowViewToggle === null || setRowViewToggle === void 0 ? void 0 : setRowViewToggle(false);
146
+ },
147
+ onKeyDown: function onKeyDown(e) {
148
+ if (e.key === 'Enter' || e.key === ' ') {
149
+ setRowViewToggle === null || setRowViewToggle === void 0 ? void 0 : setRowViewToggle(false);
150
+ }
142
151
  }
143
152
  }, /*#__PURE__*/React.createElement(ContentView, {
144
153
  className: "" + (!defaultRowView ? 'active' : '')
@@ -147,11 +156,17 @@ var ToolBar = function ToolBar(_ref) {
147
156
  }, /*#__PURE__*/React.createElement(TooltipComponent, {
148
157
  tableBodyRef: toolbarRef,
149
158
  title: (_labels$switchToFullS = labels.switchToFullScreen) != null ? _labels$switchToFullS : ''
150
- }, /*#__PURE__*/React.createElement("button", {
151
- type: "button",
152
- className: "qbs-table-view-btn",
159
+ }, /*#__PURE__*/React.createElement("div", {
160
+ role: "button",
161
+ tabIndex: 0,
162
+ title: labels.switchToFullScreen,
153
163
  onClick: function onClick() {
154
164
  return setTableFullView === null || setTableFullView === void 0 ? void 0 : setTableFullView(!fullWidthView);
165
+ },
166
+ onKeyDown: function onKeyDown(e) {
167
+ if (e.key === 'Enter' || e.key === ' ') {
168
+ setTableFullView === null || setTableFullView === void 0 ? void 0 : setTableFullView(!fullWidthView);
169
+ }
155
170
  }
156
171
  }, /*#__PURE__*/React.createElement(ExpandIcon, {
157
172
  className: "" + (fullWidthView ? 'active' : '')
@@ -160,9 +175,7 @@ var ToolBar = function ToolBar(_ref) {
160
175
  }, /*#__PURE__*/React.createElement(TooltipComponent, {
161
176
  tableBodyRef: toolbarRef,
162
177
  title: (_labels$switchToTable = labels.switchToTableView) != null ? _labels$switchToTable : ''
163
- }, /*#__PURE__*/React.createElement("button", {
164
- type: "button",
165
- className: "qbs-table-view-btn",
178
+ }, /*#__PURE__*/React.createElement("div", {
166
179
  onClick: function onClick() {
167
180
  return setTableViewToggle === null || setTableViewToggle === void 0 ? void 0 : setTableViewToggle(true);
168
181
  }
@@ -173,9 +186,7 @@ var ToolBar = function ToolBar(_ref) {
173
186
  }), /*#__PURE__*/React.createElement(TooltipComponent, {
174
187
  tableBodyRef: toolbarRef,
175
188
  title: (_labels$switchToCardV = labels.switchToCardView) != null ? _labels$switchToCardV : ''
176
- }, /*#__PURE__*/React.createElement("button", {
177
- type: "button",
178
- className: "qbs-table-view-btn",
189
+ }, /*#__PURE__*/React.createElement("div", {
179
190
  onClick: function onClick() {
180
191
  return setTableViewToggle === null || setTableViewToggle === void 0 ? void 0 : setTableViewToggle(false);
181
192
  }
@@ -138,6 +138,7 @@ export interface QbsTableProps {
138
138
  setRowViewToggle?: (value: boolean) => void;
139
139
  isFullScreen?: boolean;
140
140
  rowHeight?: number;
141
+ showHeader?: boolean;
141
142
  }
142
143
  export interface QbsTableToolbarProps {
143
144
  title?: string;
@@ -1,10 +1,8 @@
1
1
  import React, { useCallback, useEffect, useId, useRef, useState } from 'react';
2
- import ReactDOM from 'react-dom';
3
2
  import { mergeQbsTableLabels } from '../labels';
4
3
  import { closeOtherColumnToggles, COLUMN_TOGGLE_CLOSE_OTHERS } from './columnToggleCoordinator';
5
4
  import { SettingsIcon } from './icons';
6
5
  var ColumnToggle = function ColumnToggle(_ref) {
7
- var _document$getElementB;
8
6
  var columns = _ref.columns,
9
7
  onToggle = _ref.onToggle,
10
8
  onReorder = _ref.onReorder,
@@ -23,39 +21,9 @@ var ColumnToggle = function ColumnToggle(_ref) {
23
21
  draggedItem = _useState[0],
24
22
  setDraggedItem = _useState[1];
25
23
  var popupRef = useRef(null);
26
- var settingsBtnRef = useRef(null);
27
24
  var _useState2 = useState(),
28
25
  dragOverPosition = _useState2[0],
29
26
  setDragOverPosition = _useState2[1];
30
- var _useState3 = useState({
31
- top: 0,
32
- left: 0
33
- }),
34
- position = _useState3[0],
35
- setPosition = _useState3[1];
36
- var updatePopupPosition = useCallback(function () {
37
- var _popupRef$current, _popupRef$current2;
38
- if (!settingsBtnRef.current) return;
39
- var rect = settingsBtnRef.current.getBoundingClientRect();
40
- var viewportPadding = 8;
41
- var popupWidth = ((_popupRef$current = popupRef.current) === null || _popupRef$current === void 0 ? void 0 : _popupRef$current.offsetWidth) || 272;
42
- var popupHeight = ((_popupRef$current2 = popupRef.current) === null || _popupRef$current2 === void 0 ? void 0 : _popupRef$current2.offsetHeight) || 320;
43
- var left = rtl ? rect.left : rect.right - popupWidth;
44
- if (left + popupWidth > window.innerWidth - viewportPadding) {
45
- left = Math.max(viewportPadding, window.innerWidth - popupWidth - viewportPadding);
46
- }
47
- if (left < viewportPadding) {
48
- left = viewportPadding;
49
- }
50
- var top = rect.bottom + 4;
51
- if (top + popupHeight > window.innerHeight - viewportPadding) {
52
- top = Math.max(viewportPadding, rect.top - popupHeight - 4);
53
- }
54
- setPosition({
55
- top: top,
56
- left: left
57
- });
58
- }, [rtl]);
59
27
  useEffect(function () {
60
28
  var handleCloseOthers = function handleCloseOthers(event) {
61
29
  var detail = event.detail;
@@ -68,16 +36,6 @@ var ColumnToggle = function ColumnToggle(_ref) {
68
36
  return document.removeEventListener(COLUMN_TOGGLE_CLOSE_OTHERS, handleCloseOthers);
69
37
  };
70
38
  }, [setIsOpen, toggleId]);
71
- useEffect(function () {
72
- if (!isOpen) return;
73
- updatePopupPosition();
74
- var frame = requestAnimationFrame(function () {
75
- return updatePopupPosition();
76
- });
77
- return function () {
78
- return cancelAnimationFrame(frame);
79
- };
80
- }, [isOpen, updatePopupPosition]);
81
39
  var handleToggle = useCallback(function (columnName) {
82
40
  onToggle(columnName);
83
41
  }, [onToggle]);
@@ -102,9 +60,9 @@ var ColumnToggle = function ColumnToggle(_ref) {
102
60
  setDraggedItem(null);
103
61
  }, [columns, draggedItem, onReorder]);
104
62
  var handleClickOutside = useCallback(function (event) {
105
- var _popupRef$current3, _settingsBtnRef$curre;
63
+ var _popupRef$current;
106
64
  var target = event.target;
107
- if ((_popupRef$current3 = popupRef.current) !== null && _popupRef$current3 !== void 0 && _popupRef$current3.contains(target) || (_settingsBtnRef$curre = settingsBtnRef.current) !== null && _settingsBtnRef$curre !== void 0 && _settingsBtnRef$curre.contains(target)) {
65
+ if ((_popupRef$current = popupRef.current) !== null && _popupRef$current !== void 0 && _popupRef$current.contains(target)) {
108
66
  return;
109
67
  }
110
68
  setIsOpen(false);
@@ -132,9 +90,9 @@ var ColumnToggle = function ColumnToggle(_ref) {
132
90
  return handleToggle(column.title);
133
91
  },
134
92
  className: "qbs-table-checkbox-input",
135
- id: column.title
93
+ id: toggleId + "-" + column.title
136
94
  }), /*#__PURE__*/React.createElement("label", {
137
- htmlFor: column.title
95
+ htmlFor: toggleId + "-" + column.title
138
96
  }, /*#__PURE__*/React.createElement("svg", {
139
97
  width: "8",
140
98
  height: "6",
@@ -174,9 +132,9 @@ var ColumnToggle = function ColumnToggle(_ref) {
174
132
  return handleToggle(column.title);
175
133
  },
176
134
  className: "qbs-table-checkbox-input",
177
- id: column.title
135
+ id: toggleId + "-" + column.title
178
136
  }), /*#__PURE__*/React.createElement("label", {
179
- htmlFor: column.title
137
+ htmlFor: toggleId + "-" + column.title
180
138
  }, /*#__PURE__*/React.createElement("svg", {
181
139
  width: "8",
182
140
  height: "6",
@@ -213,15 +171,23 @@ var ColumnToggle = function ColumnToggle(_ref) {
213
171
  setIsOpen(false);
214
172
  handleColumnToggle === null || handleColumnToggle === void 0 ? void 0 : handleColumnToggle(columns);
215
173
  };
216
- var portalTarget = (_document$getElementB = document.getElementById('portal-root')) != null ? _document$getElementB : document.body;
217
- var popupContent = /*#__PURE__*/React.createElement("div", {
174
+ return /*#__PURE__*/React.createElement("div", {
175
+ className: "qbs-table-settings-wrapper"
176
+ }, /*#__PURE__*/React.createElement("button", {
177
+ type: "button",
178
+ onClick: function onClick(event) {
179
+ event.stopPropagation();
180
+ if (isOpen) {
181
+ setIsOpen(false);
182
+ return;
183
+ }
184
+ closeOtherColumnToggles(toggleId);
185
+ setIsOpen(true);
186
+ }
187
+ }, /*#__PURE__*/React.createElement(SettingsIcon, null)), isOpen && /*#__PURE__*/React.createElement("div", {
218
188
  className: "qbs-table-column-popup" + (rtl ? ' qbs-table-column-popup--rtl' : ''),
219
189
  style: {
220
- position: 'fixed',
221
- top: position.top,
222
- left: position.left,
223
- maxHeight: tableHeight - 40,
224
- zIndex: 10060
190
+ maxHeight: tableHeight - 40
225
191
  },
226
192
  ref: popupRef,
227
193
  dir: rtl ? 'rtl' : 'ltr'
@@ -277,23 +243,6 @@ var ColumnToggle = function ColumnToggle(_ref) {
277
243
  onClick: function onClick() {
278
244
  return handleColToggle();
279
245
  }
280
- }, labels.save))));
281
- return /*#__PURE__*/React.createElement("div", {
282
- className: "qbs-table-settings-wrapper"
283
- }, /*#__PURE__*/React.createElement("button", {
284
- type: "button",
285
- className: "qbs-table-settings-btn",
286
- ref: settingsBtnRef,
287
- onClick: function onClick(event) {
288
- event.stopPropagation();
289
- if (isOpen) {
290
- setIsOpen(false);
291
- return;
292
- }
293
- closeOtherColumnToggles(toggleId);
294
- updatePopupPosition();
295
- setIsOpen(true);
296
- }
297
- }, /*#__PURE__*/React.createElement(SettingsIcon, null)), isOpen && portalTarget && /*#__PURE__*/ReactDOM.createPortal(popupContent, portalTarget));
246
+ }, labels.save)))));
298
247
  };
299
248
  export default ColumnToggle;
@@ -35,7 +35,8 @@ var TooltipComponent = function TooltipComponent(_ref) {
35
35
  }
36
36
  }, children), /*#__PURE__*/React.createElement("span", {
37
37
  ref: dropRef,
38
- className: 'tooltiptext'
38
+ className: "tooltiptext",
39
+ dir: "auto"
39
40
  }, title));
40
41
  };
41
42
  export default TooltipComponent;
@@ -51,7 +51,11 @@ var VerticalMenuDropdown = function VerticalMenuDropdown(_ref) {
51
51
  var menuHeight = visibleItems.length * 40;
52
52
  var spaceBelow = window.innerHeight - rect.bottom;
53
53
  var openBelow = spaceBelow >= menuHeight + menuGap;
54
- var left = rect.left;
54
+ var isRtl = (document.documentElement.getAttribute('dir') || document.body.getAttribute('dir') || getComputedStyle(document.documentElement).direction) === 'rtl';
55
+ var left = isRtl ? rect.left : rect.left - menuWidth;
56
+ if (!isRtl && left < viewportPadding) {
57
+ left = rect.left;
58
+ }
55
59
  if (left + menuWidth > window.innerWidth - viewportPadding) {
56
60
  left = Math.max(viewportPadding, rect.right - menuWidth);
57
61
  }
@@ -165,7 +169,7 @@ var VerticalMenuDropdown = function VerticalMenuDropdown(_ref) {
165
169
  className: "inline-block vertical-menu-dropdown-wrapper"
166
170
  }, visibleCount > 0 && /*#__PURE__*/React.createElement("button", {
167
171
  type: "button",
168
- className: "vertical-menu-trigger-button p-2 rounded text-base-gray hover:bg-gray-light-1 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",
172
+ className: "vertical-menu-trigger-button",
169
173
  onClick: function onClick(event) {
170
174
  event.stopPropagation();
171
175
  if (openMenu) {
@@ -381,16 +381,45 @@
381
381
  display: inline-flex;
382
382
  align-items: center;
383
383
  justify-content: center;
384
+ width: 100%;
385
+
386
+ > button {
387
+ display: inline-flex;
388
+ align-items: center;
389
+ justify-content: center;
390
+ padding: 0;
391
+ margin: 0;
392
+ border: none;
393
+ background: transparent;
394
+ cursor: pointer;
395
+ color: #585858;
396
+
397
+ svg {
398
+ width: 20px;
399
+ height: 20px;
400
+ }
401
+
402
+ &:hover,
403
+ &:focus {
404
+ background: transparent;
405
+ outline: none;
406
+ }
407
+ }
384
408
  }
385
409
 
386
410
  .qbs-table-column-popup {
387
- position: fixed;
411
+ position: absolute;
412
+ top: calc(100% + 4px);
413
+ inset-inline-end: 0;
414
+ inset-inline-start: auto;
388
415
  padding: 8px;
389
416
  z-index: 10060;
390
417
  border-radius: 8px;
391
418
  background: #fff;
392
419
  box-shadow: 0px 8px 20px 0px rgba(0, 0, 0, 0.15);
393
- min-width: 272px;
420
+ min-width: 300px;
421
+ width: max-content;
422
+ max-width: min(400px, calc(100vw - 16px));
394
423
  gap: 4px;
395
424
  display: flex;
396
425
  flex-direction: column;
@@ -413,10 +442,6 @@
413
442
 
414
443
  .qbs-table-columns-container {
415
444
  display: flex;
416
- flex-direction: row;
417
- }
418
-
419
- .qbs-table-column-popup--rtl .qbs-table-columns-container {
420
445
  flex-direction: row-reverse;
421
446
  }
422
447
 
@@ -429,6 +454,10 @@
429
454
  padding: 4px 0 0;
430
455
  }
431
456
 
457
+ .qbs-table-column-popup--rtl {
458
+ text-align: right;
459
+ }
460
+
432
461
  .qbs-table-column-popup--rtl .qbs-table-popup-footer {
433
462
  flex-direction: row-reverse;
434
463
  }
@@ -128,11 +128,16 @@ var QbsTable = function QbsTable(_ref) {
128
128
  setRowViewToggle = _ref.setRowViewToggle,
129
129
  _ref$isFullScreen = _ref.isFullScreen,
130
130
  isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
131
- rowHeight = _ref.rowHeight;
131
+ rowHeight = _ref.rowHeight,
132
+ _ref$showHeader = _ref.showHeader,
133
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader;
132
134
  var labels = (0, _react.useMemo)(function () {
133
135
  return (0, _labels.mergeQbsTableLabels)(labelsProp);
134
136
  }, [labelsProp]);
135
- var pinSide = rtl ? 'left' : 'right';
137
+ var effectiveWordWrap = (0, _react.useMemo)(function () {
138
+ if (!rowViewToggle) return wordWrap;
139
+ return defaultRowView ? false : 'break-word';
140
+ }, [rowViewToggle, defaultRowView, wordWrap]);
136
141
  var _useState = (0, _react.useState)(false),
137
142
  loading = _useState[0],
138
143
  setLoading = _useState[1];
@@ -155,6 +160,16 @@ var QbsTable = function QbsTable(_ref) {
155
160
  setTableViewToggle = _useState5[1];
156
161
  var isMobile = (0, _useResponsiveStore["default"])();
157
162
  var tableBodyRef = (0, _react.useRef)(null);
163
+ var _useState6 = (0, _react.useState)(0),
164
+ rowViewRefreshKey = _useState6[0],
165
+ setRowViewRefreshKey = _useState6[1];
166
+ (0, _react.useEffect)(function () {
167
+ if (rowViewToggle) {
168
+ setRowViewRefreshKey(function (key) {
169
+ return key + 1;
170
+ });
171
+ }
172
+ }, [defaultRowView, rowViewToggle]);
158
173
  var handleSortColumn = (0, _react.useCallback)(function (sortColumn, sortType) {
159
174
  setLoading(true);
160
175
  setTimeout(function () {
@@ -591,13 +606,13 @@ var QbsTable = function QbsTable(_ref) {
591
606
  className: "qbs-table-border-wrap"
592
607
  }, tableViewToggle ? /*#__PURE__*/_react["default"].createElement(_Table["default"], {
593
608
  height: autoHeight ? undefined : height,
594
- key: tableKey,
609
+ key: tableKey + "-" + rowViewRefreshKey,
595
610
  tableKey: tableKey,
596
611
  rtl: rtl,
597
612
  data: data,
598
613
  tableBodyRef: tableBodyRef,
599
614
  dataTheme: dataTheme,
600
- wordWrap: wordWrap,
615
+ wordWrap: effectiveWordWrap,
601
616
  autoHeight: autoHeight,
602
617
  sortColumn: sortColumn,
603
618
  style: {
@@ -621,7 +636,7 @@ var QbsTable = function QbsTable(_ref) {
621
636
  rowHeight: rowHeight,
622
637
  rowExpandedHeight: rowExpandedHeight,
623
638
  loading: isLoading != null ? isLoading : loading,
624
- showHeader: true,
639
+ showHeader: showHeader,
625
640
  defaultChecked: true,
626
641
  expandedRowKeys: expandedRowKeys,
627
642
  onExpandChange: onExpandChange,
@@ -703,7 +718,7 @@ var QbsTable = function QbsTable(_ref) {
703
718
  getToolTip: customRowStatus.getToolTip
704
719
  })), columnsRendered, !actionProps || (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) === 0 && columnToggle && /*#__PURE__*/_react["default"].createElement(_Column["default"], {
705
720
  width: 40,
706
- fixed: pinSide
721
+ fixed: "right"
707
722
  }, /*#__PURE__*/_react["default"].createElement(_HeaderCell["default"], {
708
723
  verticalAlign: findGrouped() ? 'middle' : undefined,
709
724
  className: " " + classes.headerlClass,
@@ -722,7 +737,7 @@ var QbsTable = function QbsTable(_ref) {
722
737
  rtl: rtl
723
738
  })), /*#__PURE__*/_react["default"].createElement(_Cell["default"], null)), actionProps && (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) > 0 && /*#__PURE__*/_react["default"].createElement(_Column["default"], {
724
739
  width: 40,
725
- fixed: pinSide
740
+ fixed: "right"
726
741
  }, /*#__PURE__*/_react["default"].createElement(_HeaderCell["default"], {
727
742
  verticalAlign: findGrouped() ? 'middle' : undefined,
728
743
  className: " " + classes.headerlClass,
@@ -112,11 +112,16 @@ var QbsTable = function QbsTable(_ref) {
112
112
  setTableFullView = _ref.setTableFullView,
113
113
  setRowViewToggle = _ref.setRowViewToggle,
114
114
  _ref$isFullScreen = _ref.isFullScreen,
115
- isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen;
115
+ isFullScreen = _ref$isFullScreen === void 0 ? false : _ref$isFullScreen,
116
+ _ref$showHeader = _ref.showHeader,
117
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader;
116
118
  var labels = (0, _react.useMemo)(function () {
117
119
  return (0, _labels.mergeQbsTableLabels)(labelsProp);
118
120
  }, [labelsProp]);
119
- var pinSide = rtl ? 'left' : 'right';
121
+ var effectiveWordWrap = (0, _react.useMemo)(function () {
122
+ if (!rowViewToggle) return wordWrap;
123
+ return defaultRowView ? false : 'break-word';
124
+ }, [rowViewToggle, defaultRowView, wordWrap]);
120
125
  var _useState = (0, _react.useState)(false),
121
126
  loading = _useState[0],
122
127
  setLoading = _useState[1];
@@ -455,7 +460,7 @@ var QbsTable = function QbsTable(_ref) {
455
460
  data: data,
456
461
  tableBodyRef: tableBodyRef,
457
462
  dataTheme: dataTheme,
458
- wordWrap: wordWrap,
463
+ wordWrap: effectiveWordWrap,
459
464
  autoHeight: autoHeight,
460
465
  sortColumn: sortColumn,
461
466
  style: {
@@ -478,7 +483,7 @@ var QbsTable = function QbsTable(_ref) {
478
483
  headerHeight: headerHeight,
479
484
  rowExpandedHeight: rowExpandedHeight,
480
485
  loading: isLoading != null ? isLoading : loading,
481
- showHeader: true,
486
+ showHeader: showHeader,
482
487
  defaultChecked: true,
483
488
  expandedRowKeys: expandedRowKeys,
484
489
  onExpandChange: onExpandChange,
@@ -560,7 +565,7 @@ var QbsTable = function QbsTable(_ref) {
560
565
  getToolTip: customRowStatus.getToolTip
561
566
  })), columnsRendered, !actionProps || (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) === 0 && columnToggle && /*#__PURE__*/_react["default"].createElement(_Column["default"], {
562
567
  width: 40,
563
- fixed: pinSide
568
+ fixed: "right"
564
569
  }, /*#__PURE__*/_react["default"].createElement(_HeaderCell["default"], {
565
570
  verticalAlign: findGrouped() ? 'middle' : undefined,
566
571
  className: " " + classes.headerlClass,
@@ -579,7 +584,7 @@ var QbsTable = function QbsTable(_ref) {
579
584
  rtl: rtl
580
585
  })), /*#__PURE__*/_react["default"].createElement(_Cell["default"], null)), actionProps && (actionProps === null || actionProps === void 0 ? void 0 : actionProps.length) > 0 && /*#__PURE__*/_react["default"].createElement(_Column["default"], {
581
586
  width: 40,
582
- fixed: pinSide
587
+ fixed: "right"
583
588
  }, /*#__PURE__*/_react["default"].createElement(_HeaderCell["default"], {
584
589
  verticalAlign: findGrouped() ? 'middle' : undefined,
585
590
  className: " " + classes.headerlClass,