@pingux/astro 2.162.0 → 2.162.1-alpha.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.
@@ -31,12 +31,31 @@ var _table2 = require("@react-stately/table");
31
31
  var _ = require("../..");
32
32
  var _hooks = require("../../hooks");
33
33
  var _react2 = require("@emotion/react");
34
- var _excluded = ["caption", "selectionMode", "selectionBehavior", "hasSelectionCheckboxes", "isStickyHeader", "className"],
34
+ var _excluded = ["caption", "selectionMode", "selectionBehavior", "hasSelectionCheckboxes", "isStickyHeader", "className", "isLastColumnSticky"],
35
35
  _excluded2 = ["caption"],
36
36
  _excluded3 = ["type", "children", "className", "isSticky"];
37
37
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
38
38
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
39
39
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context5 = ownKeys(Object(t), !0)).call(_context5, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context6 = ownKeys(Object(t))).call(_context6, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
40
+ var useHandleFocusRef = function useHandleFocusRef(ref) {
41
+ _react["default"].useEffect(function () {
42
+ var el = ref.current;
43
+ if (!el) return;
44
+ var handleFocus = function handleFocus() {
45
+ var container = el.closest('.last-column-sticky');
46
+ if (!container) return;
47
+ var cellRect = el.getBoundingClientRect();
48
+ var contRect = container.getBoundingClientRect();
49
+ container.scrollLeft = cellRect.left + contRect.width;
50
+ };
51
+ el.addEventListener('focus', handleFocus);
52
+
53
+ // eslint-disable-next-line consistent-return
54
+ return function () {
55
+ el.removeEventListener('focus', handleFocus);
56
+ };
57
+ }, []);
58
+ };
40
59
  var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
41
60
  var _context, _context3;
42
61
  var caption = props.caption,
@@ -46,6 +65,7 @@ var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
46
65
  _props$isStickyHeader = props.isStickyHeader,
47
66
  isStickyHeader = _props$isStickyHeader === void 0 ? false : _props$isStickyHeader,
48
67
  className = props.className,
68
+ isLastColumnSticky = props.isLastColumnSticky,
49
69
  others = (0, _objectWithoutProperties2["default"])(props, _excluded);
50
70
  var tableRef = (0, _hooks.useLocalOrForwardRef)(ref);
51
71
  var headerRef = (0, _react.useRef)(null);
@@ -92,7 +112,8 @@ var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
92
112
  }
93
113
  });
94
114
  var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
95
- 'has-caption': !!caption
115
+ 'has-caption': !!caption,
116
+ 'is-last-column-sticky': isLastColumnSticky
96
117
  }),
97
118
  classNames = _useStatusClasses.classNames;
98
119
  return (0, _react2.jsx)(_.Box, {
@@ -194,7 +215,8 @@ var TableRowGroup = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
194
215
  display: type === 'thead' ? 'table-header-group' : 'table-row-group',
195
216
  ref: ref,
196
217
  className: classNames,
197
- variant: "tableBase.".concat(type)
218
+ variant: "tableBase.".concat(type),
219
+ tabIndex: "0"
198
220
  }, rowGroupProps, others), children);
199
221
  });
200
222
  function TableHeaderRow(props) {
@@ -246,6 +268,7 @@ function TableColumnHeader(props) {
246
268
  isFocused: isFocusVisible
247
269
  }),
248
270
  classNames = _useStatusClasses3.classNames;
271
+ useHandleFocusRef(ref);
249
272
  return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
250
273
  as: "th",
251
274
  display: "table-cell",
@@ -318,6 +341,7 @@ function TableCell(props) {
318
341
  isFocused: isFocusVisible
319
342
  }),
320
343
  classNames = _useStatusClasses5.classNames;
344
+ useHandleFocusRef(ref);
321
345
  return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
322
346
  as: "td",
323
347
  display: "table-cell",
@@ -19,3 +19,4 @@ export declare const DynamicWithSorting: {
19
19
  };
20
20
  };
21
21
  };
22
+ export declare const WithLastColumnSticky: StoryFn<TableBaseProps<object>>;
@@ -15,7 +15,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
15
15
  _Object$defineProperty(exports, "__esModule", {
16
16
  value: true
17
17
  });
18
- exports["default"] = exports.WithStickyHeader = exports.WithPagination = exports.MultiSelection = exports.DynamicWithSorting = exports.Default = void 0;
18
+ exports["default"] = exports.WithStickyHeader = exports.WithPagination = exports.WithLastColumnSticky = exports.MultiSelection = exports.DynamicWithSorting = exports.Default = void 0;
19
19
  var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
20
20
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
21
21
  var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
@@ -382,4 +382,29 @@ DynamicWithSorting.parameters = {
382
382
  }]
383
383
  }
384
384
  }
385
+ };
386
+ var WithLastColumnSticky = exports.WithLastColumnSticky = function WithLastColumnSticky() {
387
+ return (0, _react2.jsx)(_.Card, {
388
+ variant: "cards.tableWrapper",
389
+ className: "last-column-sticky"
390
+ }, (0, _react2.jsx)(_.TableBase, {
391
+ caption: "Lorem ipsum",
392
+ "aria-label": "table",
393
+ isLastColumnSticky: true
394
+ }, (0, _react2.jsx)(_.THead, {
395
+ columns: headers
396
+ }, function (column) {
397
+ return (0, _react2.jsx)(_.Column, {
398
+ key: column.key,
399
+ minWidth: 200
400
+ }, column.name);
401
+ }), (0, _react2.jsx)(_.TBody, {
402
+ items: objects
403
+ }, function (item) {
404
+ return (0, _react2.jsx)(_.Row, {
405
+ key: item.id
406
+ }, function (columnKey) {
407
+ return (0, _react2.jsx)(_.Cell, null, item[columnKey]);
408
+ });
409
+ })));
385
410
  };
@@ -29,6 +29,46 @@ declare const _default: {
29
29
  borderSpacing: string;
30
30
  borderCollapse: string;
31
31
  position: string;
32
+ '&.is-last-column-sticky': {
33
+ 'thead tr th:last-of-type': {
34
+ position: string;
35
+ right: number;
36
+ backgroundColor: string;
37
+ zIndex: number;
38
+ '&.is-focused': {
39
+ borderStyle: string;
40
+ borderColor: string;
41
+ borderWidth: string;
42
+ };
43
+ };
44
+ 'tbody tr': {
45
+ '&.is-focused td:last-of-type': {
46
+ borderStyle: string;
47
+ borderColor: string;
48
+ borderWidth: string;
49
+ };
50
+ '&:nth-of-type(odd) td:last-of-type': {
51
+ position: string;
52
+ right: number;
53
+ backgroundColor: string;
54
+ '&.is-focused': {
55
+ borderStyle: string;
56
+ borderColor: string;
57
+ borderWidth: string;
58
+ };
59
+ };
60
+ '&:nth-of-type(even) td:last-of-type': {
61
+ position: string;
62
+ right: number;
63
+ backgroundColor: string;
64
+ '&.is-focused': {
65
+ borderStyle: string;
66
+ borderColor: string;
67
+ borderWidth: string;
68
+ };
69
+ };
70
+ };
71
+ };
32
72
  };
33
73
  data: {
34
74
  p: string;
@@ -37,6 +77,7 @@ declare const _default: {
37
77
  outlineStyle: string;
38
78
  outlineColor: string;
39
79
  outlineOffset: string;
80
+ zIndex: number;
40
81
  };
41
82
  fontSize: string;
42
83
  fontWeight: number;
@@ -61,6 +102,7 @@ declare const _default: {
61
102
  outlineStyle: string;
62
103
  outlineColor: string;
63
104
  outlineOffset: string;
105
+ zIndex: number;
64
106
  };
65
107
  fontSize: string;
66
108
  color: string;
@@ -72,8 +114,8 @@ declare const _default: {
72
114
  wordBreak: import("../..").wordBreak;
73
115
  };
74
116
  row: {
75
- '&:nth-of-type(odd) ': {
76
- bg: string;
117
+ '&:nth-of-type(odd)': {
118
+ backgroundColor: string;
77
119
  };
78
120
  '&:focus-visible': {
79
121
  outline: string;
@@ -83,6 +125,7 @@ declare const _default: {
83
125
  outlineStyle: string;
84
126
  outlineColor: string;
85
127
  outlineOffset: string;
128
+ zIndex: number;
86
129
  };
87
130
  '&.is-hovered': {};
88
131
  '&.is-selected': {};
@@ -90,6 +133,9 @@ declare const _default: {
90
133
  bg: string;
91
134
  opacity: number;
92
135
  cursor: string;
136
+ '& > td:last-of-type': {
137
+ backgroundColor: string;
138
+ };
93
139
  };
94
140
  };
95
141
  };
@@ -21,14 +21,55 @@ var defaultFocus = {
21
21
  outline: '1px',
22
22
  outlineStyle: 'solid',
23
23
  outlineColor: 'focus',
24
- outlineOffset: '-1px'
24
+ outlineOffset: '-1px',
25
+ zIndex: 2
25
26
  };
26
27
  var container = {
27
28
  width: '100%',
28
29
  height: '100%',
29
30
  borderSpacing: '0',
30
31
  borderCollapse: 'collapse',
31
- position: 'relative'
32
+ position: 'relative',
33
+ '&.is-last-column-sticky': {
34
+ 'thead tr th:last-of-type': {
35
+ position: 'sticky',
36
+ right: 0,
37
+ backgroundColor: 'white',
38
+ zIndex: 2,
39
+ '&.is-focused': {
40
+ borderStyle: 'solid',
41
+ borderColor: 'transparent',
42
+ borderWidth: '2px'
43
+ }
44
+ },
45
+ 'tbody tr': {
46
+ '&.is-focused td:last-of-type': {
47
+ borderStyle: 'solid',
48
+ borderColor: 'transparent',
49
+ borderWidth: '4px 2px'
50
+ },
51
+ '&:nth-of-type(odd) td:last-of-type': {
52
+ position: 'sticky',
53
+ right: 0,
54
+ backgroundColor: 'inherit',
55
+ '&.is-focused': {
56
+ borderStyle: 'solid',
57
+ borderColor: 'transparent',
58
+ borderWidth: '2px'
59
+ }
60
+ },
61
+ '&:nth-of-type(even) td:last-of-type': {
62
+ position: 'sticky',
63
+ right: 0,
64
+ backgroundColor: 'white',
65
+ '&.is-focused': {
66
+ borderStyle: 'solid',
67
+ borderColor: 'transparent',
68
+ borderWidth: '2px'
69
+ }
70
+ }
71
+ }
72
+ }
32
73
  };
33
74
  var caption = {
34
75
  fontFamily: 'standard',
@@ -44,7 +85,7 @@ var thead = {
44
85
  '&.is-sticky': {
45
86
  position: 'sticky',
46
87
  top: 0,
47
- zIndex: 1,
88
+ zIndex: 2,
48
89
  boxShadow: '0 1px 0 #68747f'
49
90
  }
50
91
  };
@@ -65,8 +106,8 @@ var tbody = {
65
106
  scrollPaddingBottom: '20px'
66
107
  };
67
108
  var row = {
68
- '&:nth-of-type(odd) ': {
69
- bg: 'neutral.95'
109
+ '&:nth-of-type(odd)': {
110
+ backgroundColor: 'neutral.95'
70
111
  },
71
112
  '&:focus-visible': {
72
113
  outline: 'none'
@@ -81,7 +122,10 @@ var row = {
81
122
  '&.is-disabled': {
82
123
  bg: 'neutral.90',
83
124
  opacity: 0.5,
84
- cursor: 'not-allowed'
125
+ cursor: 'not-allowed',
126
+ '& > td:last-of-type': {
127
+ backgroundColor: 'neutral.90'
128
+ }
85
129
  }
86
130
  };
87
131
  var data = _objectSpread(_objectSpread({}, _Text.text.tableData), {}, {
@@ -612,6 +612,18 @@ declare const _default: {
612
612
  };
613
613
  };
614
614
  tableBase: {
615
+ container: {
616
+ '&.is-last-column-sticky': {
617
+ 'thead tr th:last-of-type': {
618
+ backgroundColor: string;
619
+ };
620
+ 'tbody tr': {
621
+ '&:nth-of-type(even) td:last-of-type': {
622
+ backgroundColor: string;
623
+ };
624
+ };
625
+ };
626
+ };
615
627
  caption: {
616
628
  color: string;
617
629
  };
@@ -225,6 +225,18 @@ var _default = exports["default"] = {
225
225
  }
226
226
  },
227
227
  tableBase: {
228
+ container: {
229
+ '&.is-last-column-sticky': {
230
+ 'thead tr th:last-of-type': {
231
+ backgroundColor: 'backgroundBase'
232
+ },
233
+ 'tbody tr': {
234
+ '&:nth-of-type(even) td:last-of-type': {
235
+ backgroundColor: 'backgroundBase'
236
+ }
237
+ }
238
+ }
239
+ },
228
240
  caption: {
229
241
  color: 'text.secondary'
230
242
  },
@@ -5567,6 +5567,10 @@ declare const _default: {
5567
5567
  borderBottom: string;
5568
5568
  borderBottomLeftRadius: string;
5569
5569
  borderBottomRightRadius: string;
5570
+ '&.is-focused': {
5571
+ borderBottomLeftRadius: string;
5572
+ borderBottomRightRadius: string;
5573
+ };
5570
5574
  '& > td:first-of-type': {
5571
5575
  borderBottomLeftRadius: string;
5572
5576
  };
@@ -5603,12 +5607,18 @@ declare const _default: {
5603
5607
  };
5604
5608
  '&.is-hovered': {
5605
5609
  bg: string;
5610
+ '& > td:last-of-type': {
5611
+ bg: string;
5612
+ };
5606
5613
  };
5607
5614
  '&:nth-of-type(odd)': {
5608
5615
  bg: string;
5609
5616
  '&.is-hovered': {
5610
5617
  bg: string;
5611
5618
  };
5619
+ '& > td:last-of-type': {
5620
+ bg: string;
5621
+ };
5612
5622
  };
5613
5623
  };
5614
5624
  thead: {
@@ -5630,6 +5640,9 @@ declare const _default: {
5630
5640
  outline: string;
5631
5641
  outlineColor: string;
5632
5642
  };
5643
+ '&:last-of-type': {
5644
+ backgroundColor: string;
5645
+ };
5633
5646
  };
5634
5647
  tbody: {
5635
5648
  borderTopColor: string;
@@ -5641,6 +5654,10 @@ declare const _default: {
5641
5654
  data: {
5642
5655
  py: string;
5643
5656
  fontWeight: string;
5657
+ '&:last-of-type': {
5658
+ backgroundColor: string;
5659
+ zIndex: number;
5660
+ };
5644
5661
  px: string;
5645
5662
  fontSize: string;
5646
5663
  color: string;
@@ -12,6 +12,10 @@ export declare const tableBase: {
12
12
  borderBottom: string;
13
13
  borderBottomLeftRadius: string;
14
14
  borderBottomRightRadius: string;
15
+ '&.is-focused': {
16
+ borderBottomLeftRadius: string;
17
+ borderBottomRightRadius: string;
18
+ };
15
19
  '& > td:first-of-type': {
16
20
  borderBottomLeftRadius: string;
17
21
  };
@@ -48,12 +52,18 @@ export declare const tableBase: {
48
52
  };
49
53
  '&.is-hovered': {
50
54
  bg: string;
55
+ '& > td:last-of-type': {
56
+ bg: string;
57
+ };
51
58
  };
52
59
  '&:nth-of-type(odd)': {
53
60
  bg: string;
54
61
  '&.is-hovered': {
55
62
  bg: string;
56
63
  };
64
+ '& > td:last-of-type': {
65
+ bg: string;
66
+ };
57
67
  };
58
68
  };
59
69
  thead: {
@@ -75,6 +85,9 @@ export declare const tableBase: {
75
85
  outline: string;
76
86
  outlineColor: string;
77
87
  };
88
+ '&:last-of-type': {
89
+ backgroundColor: string;
90
+ };
78
91
  };
79
92
  tbody: {
80
93
  borderTopColor: string;
@@ -86,6 +99,10 @@ export declare const tableBase: {
86
99
  data: {
87
100
  py: string;
88
101
  fontWeight: string;
102
+ '&:last-of-type': {
103
+ backgroundColor: string;
104
+ zIndex: number;
105
+ };
89
106
  px: string;
90
107
  fontSize: string;
91
108
  color: string;
@@ -35,6 +35,10 @@ var container = {
35
35
  borderBottom: 'unset',
36
36
  borderBottomLeftRadius: borderRadius,
37
37
  borderBottomRightRadius: borderRadius,
38
+ '&.is-focused': {
39
+ borderBottomLeftRadius: '12px',
40
+ borderBottomRightRadius: '12px'
41
+ },
38
42
  '& > td:first-of-type': {
39
43
  borderBottomLeftRadius: borderRadius
40
44
  },
@@ -66,12 +70,18 @@ var row = {
66
70
  borderBottomColor: 'border.base',
67
71
  '&.is-focused': _objectSpread({}, defaultFocus),
68
72
  '&.is-hovered': {
69
- bg: 'background.hover'
73
+ bg: 'background.hover',
74
+ '& > td:last-of-type': {
75
+ bg: 'background.hover'
76
+ }
70
77
  },
71
78
  '&:nth-of-type(odd)': {
72
79
  bg: 'backgroundBase',
73
80
  '&.is-hovered': {
74
81
  bg: 'background.hover'
82
+ },
83
+ '& > td:last-of-type': {
84
+ bg: 'backgroundBase'
75
85
  }
76
86
  }
77
87
  };
@@ -89,7 +99,10 @@ var head = {
89
99
  fontWeight: '2',
90
100
  color: 'text.primary',
91
101
  lineHeight: 'body',
92
- '&.is-focused': _objectSpread({}, defaultFocus)
102
+ '&.is-focused': _objectSpread({}, defaultFocus),
103
+ '&:last-of-type': {
104
+ backgroundColor: 'backgroundBase'
105
+ }
93
106
  };
94
107
  var tbody = {
95
108
  borderTopColor: 'border.base',
@@ -100,7 +113,11 @@ var tbody = {
100
113
  };
101
114
  var data = _objectSpread(_objectSpread({}, head), {}, {
102
115
  py: 'md',
103
- fontWeight: '1'
116
+ fontWeight: '1',
117
+ '&:last-of-type': {
118
+ backgroundColor: 'backgroundBase',
119
+ zIndex: 1
120
+ }
104
121
  });
105
122
  var tableBase = exports.tableBase = {
106
123
  container: container,
@@ -1899,6 +1899,10 @@ declare const _default: {
1899
1899
  borderBottom: string;
1900
1900
  borderBottomLeftRadius: string;
1901
1901
  borderBottomRightRadius: string;
1902
+ '&.is-focused': {
1903
+ borderBottomLeftRadius: string;
1904
+ borderBottomRightRadius: string;
1905
+ };
1902
1906
  '& > td:first-of-type': {
1903
1907
  borderBottomLeftRadius: string;
1904
1908
  };
@@ -1935,12 +1939,18 @@ declare const _default: {
1935
1939
  };
1936
1940
  '&.is-hovered': {
1937
1941
  bg: string;
1942
+ '& > td:last-of-type': {
1943
+ bg: string;
1944
+ };
1938
1945
  };
1939
1946
  '&:nth-of-type(odd)': {
1940
1947
  bg: string;
1941
1948
  '&.is-hovered': {
1942
1949
  bg: string;
1943
1950
  };
1951
+ '& > td:last-of-type': {
1952
+ bg: string;
1953
+ };
1944
1954
  };
1945
1955
  };
1946
1956
  thead: {
@@ -1962,6 +1972,9 @@ declare const _default: {
1962
1972
  outline: string;
1963
1973
  outlineColor: string;
1964
1974
  };
1975
+ '&:last-of-type': {
1976
+ backgroundColor: string;
1977
+ };
1965
1978
  };
1966
1979
  tbody: {
1967
1980
  borderTopColor: string;
@@ -1973,6 +1986,10 @@ declare const _default: {
1973
1986
  data: {
1974
1987
  py: string;
1975
1988
  fontWeight: string;
1989
+ '&:last-of-type': {
1990
+ backgroundColor: string;
1991
+ zIndex: number;
1992
+ };
1976
1993
  px: string;
1977
1994
  fontSize: string;
1978
1995
  color: string;
@@ -17,6 +17,7 @@ export interface TableBaseProps<T extends object> extends TableProps<T>, Omit<Ba
17
17
  'data-testid'?: string;
18
18
  caption?: ReactNode | string;
19
19
  isStickyHeader?: boolean;
20
+ isLastColumnSticky?: boolean;
20
21
  }
21
22
  export interface TableRowGroupProps extends BaseProp {
22
23
  type: 'thead' | 'tbody';
@@ -10,7 +10,7 @@ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
10
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
11
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
12
12
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
13
- var _excluded = ["caption", "selectionMode", "selectionBehavior", "hasSelectionCheckboxes", "isStickyHeader", "className"],
13
+ var _excluded = ["caption", "selectionMode", "selectionBehavior", "hasSelectionCheckboxes", "isStickyHeader", "className", "isLastColumnSticky"],
14
14
  _excluded2 = ["caption"],
15
15
  _excluded3 = ["type", "children", "className", "isSticky"];
16
16
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
@@ -27,6 +27,25 @@ import { useTableColumnResizeState, useTableState } from '@react-stately/table';
27
27
  import { Box, CheckboxField, Icon, Loader, Text } from '../..';
28
28
  import { useGetTheme, useLocalOrForwardRef, useStatusClasses } from '../../hooks';
29
29
  import { jsx as ___EmotionJSX } from "@emotion/react";
30
+ var useHandleFocusRef = function useHandleFocusRef(ref) {
31
+ React.useEffect(function () {
32
+ var el = ref.current;
33
+ if (!el) return;
34
+ var handleFocus = function handleFocus() {
35
+ var container = el.closest('.last-column-sticky');
36
+ if (!container) return;
37
+ var cellRect = el.getBoundingClientRect();
38
+ var contRect = container.getBoundingClientRect();
39
+ container.scrollLeft = cellRect.left + contRect.width;
40
+ };
41
+ el.addEventListener('focus', handleFocus);
42
+
43
+ // eslint-disable-next-line consistent-return
44
+ return function () {
45
+ el.removeEventListener('focus', handleFocus);
46
+ };
47
+ }, []);
48
+ };
30
49
  var TableBase = /*#__PURE__*/forwardRef(function (props, ref) {
31
50
  var _context, _context3;
32
51
  var caption = props.caption,
@@ -36,6 +55,7 @@ var TableBase = /*#__PURE__*/forwardRef(function (props, ref) {
36
55
  _props$isStickyHeader = props.isStickyHeader,
37
56
  isStickyHeader = _props$isStickyHeader === void 0 ? false : _props$isStickyHeader,
38
57
  className = props.className,
58
+ isLastColumnSticky = props.isLastColumnSticky,
39
59
  others = _objectWithoutProperties(props, _excluded);
40
60
  var tableRef = useLocalOrForwardRef(ref);
41
61
  var headerRef = useRef(null);
@@ -82,7 +102,8 @@ var TableBase = /*#__PURE__*/forwardRef(function (props, ref) {
82
102
  }
83
103
  });
84
104
  var _useStatusClasses = useStatusClasses(className, {
85
- 'has-caption': !!caption
105
+ 'has-caption': !!caption,
106
+ 'is-last-column-sticky': isLastColumnSticky
86
107
  }),
87
108
  classNames = _useStatusClasses.classNames;
88
109
  return ___EmotionJSX(Box, {
@@ -184,7 +205,8 @@ var TableRowGroup = /*#__PURE__*/forwardRef(function (props, ref) {
184
205
  display: type === 'thead' ? 'table-header-group' : 'table-row-group',
185
206
  ref: ref,
186
207
  className: classNames,
187
- variant: "tableBase.".concat(type)
208
+ variant: "tableBase.".concat(type),
209
+ tabIndex: "0"
188
210
  }, rowGroupProps, others), children);
189
211
  });
190
212
  function TableHeaderRow(props) {
@@ -236,6 +258,7 @@ function TableColumnHeader(props) {
236
258
  isFocused: isFocusVisible
237
259
  }),
238
260
  classNames = _useStatusClasses3.classNames;
261
+ useHandleFocusRef(ref);
239
262
  return ___EmotionJSX(Box, _extends({
240
263
  as: "th",
241
264
  display: "table-cell",
@@ -308,6 +331,7 @@ function TableCell(props) {
308
331
  isFocused: isFocusVisible
309
332
  }),
310
333
  classNames = _useStatusClasses5.classNames;
334
+ useHandleFocusRef(ref);
311
335
  return ___EmotionJSX(Box, _extends({
312
336
  as: "td",
313
337
  display: "table-cell",
@@ -371,4 +371,29 @@ DynamicWithSorting.parameters = {
371
371
  }]
372
372
  }
373
373
  }
374
+ };
375
+ export var WithLastColumnSticky = function WithLastColumnSticky() {
376
+ return ___EmotionJSX(Card, {
377
+ variant: "cards.tableWrapper",
378
+ className: "last-column-sticky"
379
+ }, ___EmotionJSX(TableBase, {
380
+ caption: "Lorem ipsum",
381
+ "aria-label": "table",
382
+ isLastColumnSticky: true
383
+ }, ___EmotionJSX(THead, {
384
+ columns: headers
385
+ }, function (column) {
386
+ return ___EmotionJSX(Column, {
387
+ key: column.key,
388
+ minWidth: 200
389
+ }, column.name);
390
+ }), ___EmotionJSX(TBody, {
391
+ items: objects
392
+ }, function (item) {
393
+ return ___EmotionJSX(Row, {
394
+ key: item.id
395
+ }, function (columnKey) {
396
+ return ___EmotionJSX(Cell, null, item[columnKey]);
397
+ });
398
+ })));
374
399
  };