@semcore/tab-line 16.1.0-prerelease.1 → 16.1.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.
@@ -12,38 +12,27 @@ var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSup
12
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _core = require("@semcore/core");
15
+ var _baseComponents = require("@semcore/base-components");
15
16
  var _addonTextChildren = _interopRequireDefault(require("@semcore/core/lib/utils/addonTextChildren"));
16
17
  var _a11yEnhance = _interopRequireDefault(require("@semcore/core/lib/utils/enhances/a11yEnhance"));
17
- var _flexBox = require("@semcore/flex-box");
18
- var _neighborLocation = _interopRequireDefault(require("@semcore/neighbor-location"));
18
+ var _typography = require("@semcore/typography");
19
19
  var _react = _interopRequireDefault(require("react"));
20
20
  /*!__reshadow-styles__:"./style/tab-line.shadow.css"*/
21
- var style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STabLine_1408b_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}.___STabLineItem_1408b_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, rgba(1, 5, 0, 0.899));margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1408b_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1408b_gg_:active{text-decoration:none}@media (hover:hover){.___STabLineItem_1408b_gg_:hover{text-decoration:none}}.___STabLineItem_1408b_gg_::after,.___STabLineItem_1408b_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1408b_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}}.___STabLineItem_1408b_gg_.__selected_1408b_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, rgba(0, 40, 230, 0.419))}.___STabLineItem_1408b_gg_ .___SAddon_1408b_gg_:not(:last-child),.___STabLineItem_1408b_gg_ .___SText_1408b_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1408b_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, rgba(0, 40, 230, 0.419));transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1408b_gg_.__selected_1408b_gg_{flex-shrink:0}.___STabLineItem_1408b_gg_.__disabled_1408b_gg_{opacity:var(--intergalactic-disabled-opacity, 0.4);cursor:default;pointer-events:none}.___SText_1408b_gg_{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_1408b_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1408b_gg_._size_m_1408b_gg_{height:28px;min-width:18px}.___STabLineItem_1408b_gg_._size_m_1408b_gg_ .___SText_1408b_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%)}.___STabLineItem_1408b_gg_._size_l_1408b_gg_{height:40px;min-width:26px}.___STabLineItem_1408b_gg_._size_l_1408b_gg_ .___SText_1408b_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%)}.___STabLineItem_1408b_gg_._neighborLocation_left_1408b_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1408b_gg_.__selected_1408b_gg_::after,.___STabLineItem_1408b_gg_::after,.___STabLineItem_1408b_gg_::before{transition:none}.___SCaret_1408b_gg_{display:none}}", /*__inner_css_end__*/"1408b_gg_"),
21
+ var style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___STabLine_1qpi7_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}.___STabLineItem_1qpi7_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;-webkit-text-decoration:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, rgba(1, 5, 0, 0.899));margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1qpi7_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1qpi7_gg_:active{-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_1qpi7_gg_:hover{-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1qpi7_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}}.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, rgb(135, 150, 239))}.___STabLineItem_1qpi7_gg_ .___SAddon_1qpi7_gg_:not(:last-child),.___STabLineItem_1qpi7_gg_ .___SText_1qpi7_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1qpi7_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, rgb(135, 150, 239));transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_{flex-shrink:0}.___STabLineItem_1qpi7_gg_.__disabled_1qpi7_gg_{opacity:var(--intergalactic-disabled-opacity, 0.4);cursor:default;pointer-events:none}.___SAddon_1qpi7_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1qpi7_gg_._size_m_1qpi7_gg_{height:28px;min-width:18px}.___STabLineItem_1qpi7_gg_._size_l_1qpi7_gg_{height:40px;min-width:26px}.___STabLineItem_1qpi7_gg_._neighborLocation_left_1qpi7_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::before{transition:none}.___SCaret_1qpi7_gg_{display:none}}", /*__inner_css_end__*/"1qpi7_gg_"),
22
22
  /*__reshadow_css_end__*/
23
23
  {
24
- "__STabLine": "___STabLine_1408b_gg_",
25
- "_underlined": "__underlined_1408b_gg_",
26
- "__SCaret": "___SCaret_1408b_gg_",
27
- "__STabLineItem": "___STabLineItem_1408b_gg_",
28
- "_selected": "__selected_1408b_gg_",
29
- "_disabled": "__disabled_1408b_gg_",
30
- "__SText": "___SText_1408b_gg_",
31
- "__SAddon": "___SAddon_1408b_gg_",
32
- "_neighborLocation_left": "_neighborLocation_left_1408b_gg_",
33
- "_size_m": "_size_m_1408b_gg_",
34
- "_size_l": "_size_l_1408b_gg_"
24
+ "__STabLine": "___STabLine_1qpi7_gg_",
25
+ "_underlined": "__underlined_1qpi7_gg_",
26
+ "__SCaret": "___SCaret_1qpi7_gg_",
27
+ "__STabLineItem": "___STabLineItem_1qpi7_gg_",
28
+ "_selected": "__selected_1qpi7_gg_",
29
+ "_disabled": "__disabled_1qpi7_gg_",
30
+ "__SAddon": "___SAddon_1qpi7_gg_",
31
+ "_size_m": "_size_m_1qpi7_gg_",
32
+ "_size_l": "_size_l_1qpi7_gg_",
33
+ "_neighborLocation_left": "_neighborLocation_left_1qpi7_gg_",
34
+ "__SText": "___SText_1qpi7_gg_"
35
35
  });
36
- var optionsA11yEnhance = {
37
- onNeighborChange: function onNeighborChange(neighborElement, props) {
38
- if (neighborElement) {
39
- neighborElement.focus();
40
- if (props.behavior === 'auto') {
41
- neighborElement.click();
42
- }
43
- }
44
- },
45
- childSelector: ['role', 'tab']
46
- };
47
36
  var TabLineRoot = /*#__PURE__*/function (_Component) {
48
37
  function TabLineRoot() {
49
38
  var _this;
@@ -58,7 +47,8 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
58
47
  (0, _defineProperty2["default"])(_this, "prevValue", undefined);
59
48
  (0, _defineProperty2["default"])(_this, "itemRefs", {});
60
49
  (0, _defineProperty2["default"])(_this, "containerRef", /*#__PURE__*/_react["default"].createRef());
61
- (0, _defineProperty2["default"])(_this, "animationStartTimeout", -1);
50
+ (0, _defineProperty2["default"])(_this, "animationStartTimeout", null);
51
+ (0, _defineProperty2["default"])(_this, "buttonRefsList", []);
62
52
  (0, _defineProperty2["default"])(_this, "handleAnimationStart", function () {
63
53
  var _this$state$animation;
64
54
  if (((_this$state$animation = _this.state.animation) === null || _this$state$animation === void 0 ? void 0 : _this$state$animation.started) === false) {
@@ -105,13 +95,16 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
105
95
  }, {
106
96
  key: "componentWillUnmount",
107
97
  value: function componentWillUnmount() {
108
- clearTimeout(this.animationStartTimeout);
98
+ if (this.animationStartTimeout) {
99
+ clearTimeout(this.animationStartTimeout);
100
+ }
109
101
  }
110
102
  }, {
111
103
  key: "animate",
112
104
  value: function animate() {
113
- var fromNode = this.itemRefs[this.prevValue];
114
- var toNode = this.itemRefs[this.asProps.value];
105
+ if (this.prevValue === undefined || this.asProps.value === undefined) return;
106
+ var fromNode = this.itemRefs[this.prevValue.toString()];
107
+ var toNode = this.itemRefs[this.asProps.value.toString()];
115
108
  var containerNode = this.containerRef.current;
116
109
  if (!fromNode || !toNode || !containerNode) return;
117
110
  var containerRect = containerNode.getBoundingClientRect();
@@ -127,12 +120,14 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
127
120
  this.setState({
128
121
  animation: animation
129
122
  });
130
- clearTimeout(this.animationStartTimeout);
123
+ if (this.animationStartTimeout) {
124
+ clearTimeout(this.animationStartTimeout);
125
+ }
131
126
  this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);
132
127
  }
133
128
  }, {
134
129
  key: "getItemProps",
135
- value: function getItemProps(props, _index) {
130
+ value: function getItemProps(props, index) {
136
131
  var _this2 = this;
137
132
  var _this$asProps = this.asProps,
138
133
  value = _this$asProps.value,
@@ -145,8 +140,22 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
145
140
  'tabIndex': isSelected ? 0 : -1,
146
141
  'aria-selected': isSelected,
147
142
  'ref': function ref(node) {
148
- _this2.itemRefs[props.value] = node;
149
- }
143
+ if (props.value === undefined) return;
144
+ _this2.itemRefs[props.value.toString()] = node;
145
+ },
146
+ 'buttonRefsList': this.buttonRefsList,
147
+ index: index
148
+ };
149
+ }
150
+ }, {
151
+ key: "getItemTextProps",
152
+ value: function getItemTextProps(props, index) {
153
+ var tabLineSize = this.asProps.size;
154
+ var size = props.size ? props.size : tabLineSize === 'm' ? 200 : 300;
155
+ return {
156
+ size: size,
157
+ buttonRefsList: this.buttonRefsList,
158
+ index: index
150
159
  };
151
160
  }
152
161
  }, {
@@ -177,8 +186,8 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
177
186
  value: function render() {
178
187
  var _ref = this.asProps,
179
188
  _ref5;
180
- var STabLine = _flexBox.Box;
181
- var SCaret = _flexBox.Box;
189
+ var STabLine = _baseComponents.Box;
190
+ var SCaret = _baseComponents.Box;
182
191
  var _this$asProps2 = this.asProps,
183
192
  styles = _this$asProps2.styles,
184
193
  Children = _this$asProps2.Children,
@@ -187,7 +196,7 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
187
196
  return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(STabLine, _ref5.cn("STabLine", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
188
197
  "role": 'tablist',
189
198
  "ref": this.containerRef
190
- }, _ref))), /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"], _ref5.cn("NeighborLocation", {
199
+ }, _ref))), /*#__PURE__*/_react["default"].createElement(_baseComponents.NeighborLocation, _ref5.cn("NeighborLocation", {
191
200
  "controlsLength": controlsLength
192
201
  }), /*#__PURE__*/_react["default"].createElement(Children, _ref5.cn("Children", {}))), animation && /*#__PURE__*/_react["default"].createElement(SCaret, _ref5.cn("SCaret", (0, _objectSpread2["default"])({}, this.getCaretProps()))));
193
202
  }
@@ -201,16 +210,30 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
201
210
  underlined: true,
202
211
  behavior: 'auto'
203
212
  });
204
- (0, _defineProperty2["default"])(TabLineRoot, "enhance", [(0, _a11yEnhance["default"])(optionsA11yEnhance)]);
213
+ (0, _defineProperty2["default"])(TabLineRoot, "enhance", [(0, _a11yEnhance["default"])({
214
+ onNeighborChange: function onNeighborChange(neighborElement, props) {
215
+ if (neighborElement) {
216
+ neighborElement.focus();
217
+ if (props.behavior === 'auto') {
218
+ neighborElement.click();
219
+ }
220
+ }
221
+ },
222
+ childSelector: ['role', 'tab']
223
+ })]);
205
224
  function TabLineItem(props) {
206
225
  var _ref2 = arguments[0];
207
- var STabLineItem = _flexBox.Box;
226
+ var STabLineItem = _baseComponents.Box;
208
227
  var Children = props.Children,
209
228
  styles = props.styles,
210
229
  addonLeft = props.addonLeft,
211
230
  addonRight = props.addonRight,
212
- neighborLocation = props.neighborLocation;
213
- return /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"].Detect, {
231
+ neighborLocation = props.neighborLocation,
232
+ buttonRefsList = props.buttonRefsList,
233
+ index = props.index;
234
+ var buttonRef = _react["default"].useRef();
235
+ buttonRefsList[index] = buttonRef;
236
+ return /*#__PURE__*/_react["default"].createElement(_baseComponents.NeighborLocation.Detect, {
214
237
  neighborLocation: neighborLocation
215
238
  }, function (neighborLocation) {
216
239
  var _ref6;
@@ -219,7 +242,8 @@ function TabLineItem(props) {
219
242
  "tabIndex": 0,
220
243
  "neighborLocation": neighborLocation,
221
244
  "type": 'button',
222
- "role": 'tab'
245
+ "role": 'tab',
246
+ "ref": buttonRef
223
247
  }, _ref2))), addonLeft ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
224
248
  tag: addonLeft
225
249
  }) : null, (0, _addonTextChildren["default"])(Children, TabLine.Item.Text, TabLine.Item.Addon), addonRight ? /*#__PURE__*/_react["default"].createElement(TabLine.Item.Addon, {
@@ -230,17 +254,24 @@ function TabLineItem(props) {
230
254
  function Text(props) {
231
255
  var _ref3 = arguments[0],
232
256
  _ref7;
233
- var styles = props.styles;
234
- var SText = _flexBox.Box;
257
+ var styles = props.styles,
258
+ _props$ellipsis = props.ellipsis,
259
+ ellipsis = _props$ellipsis === void 0 ? true : _props$ellipsis,
260
+ size = props.size,
261
+ buttonRefsList = props.buttonRefsList,
262
+ index = props.index;
263
+ var SText = _typography.Text;
235
264
  return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SText, _ref7.cn("SText", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
236
- "tag": 'span'
265
+ "ellipsis": ellipsis,
266
+ "size": size,
267
+ "hint:triggerRef": buttonRefsList[index]
237
268
  }, _ref3))));
238
269
  }
239
270
  function Addon(props) {
240
271
  var _ref4 = arguments[0],
241
272
  _ref8;
242
273
  var styles = props.styles;
243
- var SAddon = _flexBox.Box;
274
+ var SAddon = _baseComponents.Box;
244
275
  return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SAddon, _ref8.cn("SAddon", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
245
276
  "tag": 'span'
246
277
  }, _ref4))));
@@ -1 +1 @@
1
- {"version":3,"file":"TabLine.js","names":["_core","require","_addonTextChildren","_interopRequireDefault","_a11yEnhance","_flexBox","_neighborLocation","_react","style","sstyled","insert","optionsA11yEnhance","onNeighborChange","neighborElement","props","focus","behavior","click","childSelector","TabLineRoot","_Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","animation","undefined","React","createRef","_this$state$animation","state","started","setState","_objectSpread2","value","e","handlers","_inherits2","_createClass2","key","uncontrolledProps","componentDidUpdate","prevValue","asProps","animate","componentDidMount","componentWillUnmount","clearTimeout","animationStartTimeout","fromNode","itemRefs","toNode","containerNode","containerRef","current","containerRect","getBoundingClientRect","fromRect","toRect","fromLeft","x","fromWidth","width","toLeft","toWidth","setTimeout","handleAnimationStart","getItemProps","_index","_this2","_this$asProps","size","isSelected","bindHandlerClick","ref","node","getCaretProps","left","onTransitionEnd","handleAnimationEnd","render","_ref","_ref5","STabLine","Box","SCaret","_this$asProps2","styles","Children","controlsLength","createElement","cn","assignProps","Component","defaultValue","underlined","a11yEnhance","TabLineItem","_ref2","arguments[0]","STabLineItem","addonLeft","addonRight","neighborLocation","Detect","_ref6","TabLine","Item","Addon","tag","addonTextChildren","Text","_ref3","_ref7","SText","_ref4","_ref8","SAddon","createComponent","wrapTabLine","exports","wrapper","_default"],"sources":["../../src/TabLine.jsx"],"sourcesContent":["import { createComponent, Component, sstyled, Root } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport a11yEnhance from '@semcore/core/lib/utils/enhances/a11yEnhance';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation from '@semcore/neighbor-location';\nimport React from 'react';\n\nimport style from './style/tab-line.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement, props) => {\n if (neighborElement) {\n neighborElement.focus();\n if (props.behavior === 'auto') {\n neighborElement.click();\n }\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabLineRoot extends Component {\n static displayName = 'TabLine';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n size: 'm',\n underlined: true,\n behavior: 'auto',\n };\n\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n state = { animation: null };\n prevValue = undefined;\n itemRefs = {};\n containerRef = React.createRef();\n animationStartTimeout = -1;\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n componentDidUpdate() {\n if (\n this.prevValue !== null &&\n this.asProps.value !== null &&\n this.prevValue !== this.asProps.value\n ) {\n this.animate();\n }\n this.prevValue = this.asProps.value;\n }\n\n componentDidMount() {\n this.prevValue = this.asProps.value;\n }\n\n componentWillUnmount() {\n clearTimeout(this.animationStartTimeout);\n }\n\n animate() {\n const fromNode = this.itemRefs[this.prevValue];\n const toNode = this.itemRefs[this.asProps.value];\n const containerNode = this.containerRef.current;\n\n if (!fromNode || !toNode || !containerNode) return;\n const containerRect = containerNode.getBoundingClientRect();\n const fromRect = fromNode.getBoundingClientRect();\n const toRect = toNode.getBoundingClientRect();\n const animation = {\n fromLeft: fromRect.x - containerRect.x,\n fromWidth: fromRect.width,\n toLeft: toRect.x - containerRect.x,\n toWidth: toRect.width,\n started: false,\n };\n this.setState({ animation });\n clearTimeout(this.animationStartTimeout);\n this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);\n }\n\n handleAnimationStart = () => {\n if (this.state.animation?.started === false) {\n this.setState({ animation: { ...this.state.animation, started: true } });\n }\n };\n\n handleAnimationEnd = () => {\n this.setState({ animation: null });\n };\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props, _index) {\n const { value, size } = this.asProps;\n const isSelected = value === props.value;\n return {\n size,\n 'selected': isSelected,\n 'onClick': this.bindHandlerClick(props.value),\n 'tabIndex': isSelected ? 0 : -1,\n 'aria-selected': isSelected,\n 'ref': (node) => {\n this.itemRefs[props.value] = node;\n },\n };\n }\n\n getCaretProps() {\n const { animation } = this.state;\n if (!animation) return {};\n if (animation.started) {\n return {\n style: {\n left: animation.toLeft,\n width: animation.toWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n } else {\n return {\n style: {\n left: animation.fromLeft,\n width: animation.fromWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n }\n }\n\n render() {\n const STabLine = Root;\n const SCaret = Box;\n const { styles, Children, controlsLength } = this.asProps;\n const { animation } = this.state;\n\n return sstyled(styles)(\n <STabLine render={Box} role='tablist' ref={this.containerRef}>\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n {animation && <SCaret {...this.getCaretProps()} />}\n </STabLine>,\n );\n }\n}\n\nfunction TabLineItem(props) {\n const STabLineItem = Root;\n const { Children, styles, addonLeft, addonRight, neighborLocation } = props;\n\n return (\n <NeighborLocation.Detect neighborLocation={neighborLocation}>\n {(neighborLocation) =>\n sstyled(styles)(\n <STabLineItem\n render={Box}\n tag='button'\n tabIndex={0}\n neighborLocation={neighborLocation}\n type='button'\n role='tab'\n >\n {addonLeft ? <TabLine.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabLine.Item.Text, TabLine.Item.Addon)}\n {addonRight ? <TabLine.Item.Addon tag={addonRight} /> : null}\n </STabLineItem>,\n )}\n </NeighborLocation.Detect>\n );\n}\n\nfunction Text(props) {\n const { styles } = props;\n const SText = Root;\n return sstyled(styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const { styles } = props;\n const SAddon = Root;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst TabLine = createComponent(TabLineRoot, {\n Item: [TabLineItem, { Text, Addon }],\n});\n\nexport const wrapTabLine = (wrapper) => wrapper;\n\nexport default TabLine;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TabLine.js","names":["_core","require","_baseComponents","_addonTextChildren","_interopRequireDefault","_a11yEnhance","_typography","_react","style","sstyled","insert","TabLineRoot","_Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","animation","undefined","React","createRef","_this$state$animation","state","started","setState","_objectSpread2","value","e","handlers","_inherits2","_createClass2","key","uncontrolledProps","componentDidUpdate","prevValue","asProps","animate","componentDidMount","componentWillUnmount","animationStartTimeout","clearTimeout","fromNode","itemRefs","toString","toNode","containerNode","containerRef","current","containerRect","getBoundingClientRect","fromRect","toRect","fromLeft","x","fromWidth","width","toLeft","toWidth","setTimeout","handleAnimationStart","getItemProps","props","index","_this2","_this$asProps","size","isSelected","bindHandlerClick","ref","node","buttonRefsList","getItemTextProps","tabLineSize","getCaretProps","left","onTransitionEnd","handleAnimationEnd","render","_ref","_ref5","STabLine","Box","SCaret","_this$asProps2","styles","Children","controlsLength","createElement","cn","assignProps","NeighborLocation","Component","defaultValue","underlined","behavior","a11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabLineItem","_ref2","arguments[0]","STabLineItem","addonLeft","addonRight","neighborLocation","buttonRef","useRef","Detect","_ref6","TabLine","Item","Addon","tag","addonTextChildren","Text","_ref3","_ref7","_props$ellipsis","ellipsis","SText","SemcoreText","_ref4","_ref8","SAddon","createComponent","wrapTabLine","exports","wrapper","_default"],"sources":["../../src/TabLine.tsx"],"sourcesContent":["import { NeighborLocation, Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { createComponent, Component, sstyled, Root } from '@semcore/core';\nimport addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';\nimport a11yEnhance from '@semcore/core/lib/utils/enhances/a11yEnhance';\nimport { Text as SemcoreText } from '@semcore/typography';\nimport React from 'react';\n\nimport style from './style/tab-line.shadow.css';\nimport type { NSTabLine } from './TabLine.type';\n\ntype State = {\n animation: {\n fromLeft: number;\n fromWidth: number;\n toLeft: number;\n toWidth: number;\n started: boolean;\n } | null;\n};\n\nclass TabLineRoot extends Component<\n Intergalactic.InternalTypings.InferComponentProps<NSTabLine.Component>,\n typeof TabLineRoot.enhance,\n NSTabLine.Handlers,\n {},\n State\n> {\n static displayName = 'TabLine';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n size: 'm',\n underlined: true,\n behavior: 'auto',\n };\n\n static enhance = [a11yEnhance({\n onNeighborChange: (neighborElement, props) => {\n if (neighborElement) {\n neighborElement.focus();\n if (props.behavior === 'auto') {\n neighborElement.click();\n }\n }\n },\n childSelector: ['role', 'tab'],\n })] as const;\n\n state: State = { animation: null };\n prevValue: NSTabLine.Props['value'] = undefined;\n itemRefs: Record<string, HTMLDivElement> = {};\n containerRef = React.createRef<HTMLDivElement>();\n animationStartTimeout: ReturnType<typeof setTimeout> | null = null;\n buttonRefsList: Array<React.MutableRefObject<HTMLButtonElement | undefined>> = [];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n componentDidUpdate() {\n if (\n this.prevValue !== null &&\n this.asProps.value !== null &&\n this.prevValue !== this.asProps.value\n ) {\n this.animate();\n }\n this.prevValue = this.asProps.value;\n }\n\n componentDidMount() {\n this.prevValue = this.asProps.value;\n }\n\n componentWillUnmount() {\n if (this.animationStartTimeout) {\n clearTimeout(this.animationStartTimeout);\n }\n }\n\n animate() {\n if (this.prevValue === undefined || this.asProps.value === undefined) return;\n\n const fromNode = this.itemRefs[this.prevValue.toString()];\n const toNode = this.itemRefs[this.asProps.value.toString()];\n const containerNode = this.containerRef.current;\n\n if (!fromNode || !toNode || !containerNode) return;\n const containerRect = containerNode.getBoundingClientRect();\n const fromRect = fromNode.getBoundingClientRect();\n const toRect = toNode.getBoundingClientRect();\n const animation = {\n fromLeft: fromRect.x - containerRect.x,\n fromWidth: fromRect.width,\n toLeft: toRect.x - containerRect.x,\n toWidth: toRect.width,\n started: false,\n };\n this.setState({ animation });\n\n if (this.animationStartTimeout) {\n clearTimeout(this.animationStartTimeout);\n }\n\n this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);\n }\n\n handleAnimationStart = () => {\n if (this.state.animation?.started === false) {\n this.setState({ animation: { ...this.state.animation, started: true } });\n }\n };\n\n handleAnimationEnd = () => {\n this.setState({ animation: null });\n };\n\n bindHandlerClick = (value: NSTabLine.Props['value']) => (e: React.SyntheticEvent) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props: NSTabLine.Item.Props, index: number) {\n const { value, size } = this.asProps;\n const isSelected = value === props.value;\n return {\n size,\n 'selected': isSelected,\n 'onClick': this.bindHandlerClick(props.value),\n 'tabIndex': isSelected ? 0 : -1,\n 'aria-selected': isSelected,\n 'ref': (node: HTMLDivElement) => {\n if (props.value === undefined) return;\n\n this.itemRefs[props.value.toString()] = node;\n },\n 'buttonRefsList': this.buttonRefsList,\n index,\n };\n }\n\n getItemTextProps(props: NSTabLine.Item.Text.Props, index: number) {\n const { size: tabLineSize } = this.asProps;\n const size = props.size\n ? props.size\n : tabLineSize === 'm' ? 200 : 300;\n\n return {\n size,\n buttonRefsList: this.buttonRefsList,\n index,\n };\n }\n\n getCaretProps() {\n const { animation } = this.state;\n if (!animation) return {};\n if (animation.started) {\n return {\n style: {\n left: animation.toLeft,\n width: animation.toWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n } else {\n return {\n style: {\n left: animation.fromLeft,\n width: animation.fromWidth,\n },\n onTransitionEnd: this.handleAnimationEnd,\n };\n }\n }\n\n render() {\n const STabLine = Root;\n const SCaret = Box;\n const { styles, Children, controlsLength } = this.asProps;\n const { animation } = this.state;\n\n return sstyled(styles)(\n <STabLine render={Box} role='tablist' ref={this.containerRef}>\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n {animation && <SCaret {...this.getCaretProps()} />}\n </STabLine>,\n );\n }\n}\n\nfunction TabLineItem(\n props: Intergalactic.InternalTypings.InferChildComponentProps<\n NSTabLine.Item.Component,\n typeof TabLineRoot,\n 'Item'\n >,\n) {\n const STabLineItem = Root;\n const { Children, styles, addonLeft, addonRight, neighborLocation, buttonRefsList, index } = props;\n const buttonRef = React.useRef<HTMLButtonElement>();\n\n buttonRefsList[index] = buttonRef;\n\n return (\n <NeighborLocation.Detect neighborLocation={neighborLocation}>\n {(neighborLocation) =>\n sstyled(styles)(\n <STabLineItem\n render={Box}\n tag='button'\n tabIndex={0}\n neighborLocation={neighborLocation}\n type='button'\n role='tab'\n ref={buttonRef}\n >\n {addonLeft ? <TabLine.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabLine.Item.Text, TabLine.Item.Addon)}\n {addonRight ? <TabLine.Item.Addon tag={addonRight} /> : null}\n </STabLineItem>,\n )}\n </NeighborLocation.Detect>\n );\n}\n\nfunction Text(\n props: Intergalactic.InternalTypings.InferChildComponentProps<\n NSTabLine.Item.Text.Component,\n typeof TabLineRoot,\n 'ItemText'\n >,\n) {\n const { styles, ellipsis = true, size, buttonRefsList, index } = props;\n const SText = Root;\n return sstyled(styles)(<SText render={SemcoreText} ellipsis={ellipsis} size={size} hint:triggerRef={buttonRefsList[index]} />);\n}\n\nfunction Addon(\n props: Intergalactic.InternalTypings.InferComponentProps<NSTabLine.Item.Addon.Component>,\n) {\n const { styles } = props;\n const SAddon = Root;\n return sstyled(styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst TabLine = createComponent(TabLineRoot, {\n Item: [TabLineItem, { Text, Addon }],\n}) as unknown as NSTabLine.Component;\n\nexport const wrapTabLine = <PropsExtending extends {}>(wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<NSTabLine.WrapperComponent>\n > &\n PropsExtending,\n) => React.ReactNode) => wrapper as NSTabLine.WrapperComponent<PropsExtending>;\n\nexport default TabLine;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=TabLine.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabLine.type.js","names":[],"sources":["../../src/TabLine.type.ts"],"sourcesContent":["import type { Box, BoxProps, NeighborItemProps, NeighborLocationProps } from '@semcore/base-components';\nimport type { PropGetterFn, Intergalactic } from '@semcore/core';\nimport type { NSText } from '@semcore/typography';\nimport type React from 'react';\n\ndeclare namespace NSTabLine {\n type Value = string | number | boolean;\n type Props<T extends NSTabLine.Value = NSTabLine.Value> = BoxProps &\n NeighborLocationProps & {\n /** TabLine size\n * @default m\n * */\n size?: 'm' | 'l' | false;\n /** Adds a bottom border for the entire component\n * @default true\n * */\n underlined?: boolean;\n /** Is invoked when changing the selection */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLButtonElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value of the selected tab */\n value?: T;\n /** Default value of the selected tab\n * @default null\n * */\n defaultValue?: T;\n\n /**\n * Behavior of tabs.\n * In `auto`, changes the tab immediately when press arrow.\n * In `manual`, needs to press `space` or `enter` for select a choice.\n * @default 'auto'\n */\n behavior?: 'auto' | 'manual';\n };\n type Ctx = {\n getItemProps: PropGetterFn;\n };\n type Handlers = {\n value: null;\n };\n\n namespace Item {\n type Props = BoxProps &\n NeighborItemProps & {\n /** Makes a tab selected. This property is determined automatically depending on the value. */\n selected?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Tab value */\n value?: NSTabLine.Value;\n /** Left addon tag */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n namespace Text {\n type Props = NSText.Props;\n type Component = NSText.Component;\n }\n\n namespace Addon {\n type Component = typeof Box;\n }\n\n type Component = Intergalactic.Component<'div', Props, {}, [handlers: NSTabLine.Handlers]> & {\n Text: Text.Component;\n Addon: Addon.Component;\n };\n }\n\n type WrapperComponent<PropsExtending = {}> = (<\n V extends Value,\n Tag extends Intergalactic.Tag = 'div',\n >(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n Props<V>,\n Ctx,\n [handlers: Handlers]\n > &\n PropsExtending,\n ) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', Props>;\n\n type Component = WrapperComponent & {\n Item: Item.Component;\n };\n}\n\n/** @deprecated It will be removed in v18. */\nexport type TabLineValue = NSTabLine.Value;\n/** @deprecated It will be removed in v18. */\nexport type TabLineProps<T extends TabLineValue = TabLineValue> = NSTabLine.Props<T>;\n/** @deprecated It will be removed in v18. */\nexport type TabLineItemProps = NSTabLine.Item.Props;\n/** @deprecated It will be removed in v18. */\nexport type TabLineContext = NSTabLine.Ctx;\n/** @deprecated It will be removed in v18. */\nexport type TabLineHandlers = NSTabLine.Handlers;\n\nexport type { NSTabLine };\n"],"mappings":"","ignoreList":[]}
package/lib/cjs/index.js CHANGED
@@ -4,22 +4,31 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- var _exportNames = {};
7
+ var _exportNames = {
8
+ wrapTabLine: true
9
+ };
8
10
  Object.defineProperty(exports, "default", {
9
11
  enumerable: true,
10
12
  get: function get() {
11
13
  return _TabLine["default"];
12
14
  }
13
15
  });
16
+ Object.defineProperty(exports, "wrapTabLine", {
17
+ enumerable: true,
18
+ get: function get() {
19
+ return _TabLine.wrapTabLine;
20
+ }
21
+ });
14
22
  var _TabLine = _interopRequireWildcard(require("./TabLine"));
15
- Object.keys(_TabLine).forEach(function (key) {
23
+ var _TabLine2 = require("./TabLine.type");
24
+ Object.keys(_TabLine2).forEach(function (key) {
16
25
  if (key === "default" || key === "__esModule") return;
17
26
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
- if (key in exports && exports[key] === _TabLine[key]) return;
27
+ if (key in exports && exports[key] === _TabLine2[key]) return;
19
28
  Object.defineProperty(exports, key, {
20
29
  enumerable: true,
21
30
  get: function get() {
22
- return _TabLine[key];
31
+ return _TabLine2[key];
23
32
  }
24
33
  });
25
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_TabLine","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../src/index.js"],"sourcesContent":["export { default } from './TabLine';\nexport * from './TabLine';\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAJ,QAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,QAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAd,QAAA,CAAAM,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_TabLine","_interopRequireWildcard","require","_TabLine2","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../src/index.ts"],"sourcesContent":["export { default, wrapTabLine } from './TabLine';\nexport * from './TabLine.type';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,SAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,SAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAZ,SAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -66,7 +66,7 @@ STabLineItem {
66
66
 
67
67
  &[selected]::after {
68
68
  transition-delay: calc(var(--intergalactic-duration-control, 200) * 1ms);
69
- background-color: var(--intergalactic-border-info-active, oklch(0.443 0.273 264.2 / 0.419));
69
+ background-color: var(--intergalactic-border-info-active, oklch(0.7 0.131 275.2));
70
70
  }
71
71
 
72
72
  & SText:not(:last-child) {
@@ -82,7 +82,7 @@ SCaret {
82
82
  position: absolute;
83
83
  bottom: -1px;
84
84
  height: 3px;
85
- background: var(--intergalactic-border-info-active, oklch(0.443 0.273 264.2 / 0.419));
85
+ background: var(--intergalactic-border-info-active, oklch(0.7 0.131 275.2));
86
86
  transition: calc(var(--intergalactic-duration-control, 200) * 1ms) all ease-in-out;
87
87
  }
88
88
 
@@ -97,13 +97,6 @@ STabLineItem[disabled] {
97
97
  pointer-events: none;
98
98
  }
99
99
 
100
- SText {
101
- display: inline-block;
102
- white-space: nowrap;
103
- overflow: hidden;
104
- text-overflow: ellipsis;
105
- }
106
-
107
100
  SAddon {
108
101
  display: inline-flex;
109
102
  align-items: center;
@@ -113,21 +106,11 @@ SAddon {
113
106
  STabLineItem[size='m'] {
114
107
  height: 28px;
115
108
  min-width: 18px;
116
-
117
- & SText {
118
- font-size: var(--intergalactic-fs-200, 14px);
119
- line-height: var(--intergalactic-lh-200, 142%);
120
- }
121
109
  }
122
110
 
123
111
  STabLineItem[size='l'] {
124
112
  height: 40px;
125
113
  min-width: 26px;
126
-
127
- & SText {
128
- font-size: var(--intergalactic-fs-300, 16px);
129
- line-height: var(--intergalactic-lh-300, 150%);
130
- }
131
114
  }
132
115
 
133
116
  STabLineItem[neighborLocation='left'] {
@@ -9,39 +9,28 @@ import { assignProps as _assignProps4 } from "@semcore/core";
9
9
  import { assignProps as _assignProps3 } from "@semcore/core";
10
10
  import { assignProps as _assignProps2 } from "@semcore/core";
11
11
  import { assignProps as _assignProps } from "@semcore/core";
12
+ import { NeighborLocation, Box } from '@semcore/base-components';
12
13
  import { createComponent, Component, sstyled, Root } from '@semcore/core';
13
14
  import addonTextChildren from '@semcore/core/lib/utils/addonTextChildren';
14
15
  import a11yEnhance from '@semcore/core/lib/utils/enhances/a11yEnhance';
15
- import { Box } from '@semcore/flex-box';
16
- import NeighborLocation from '@semcore/neighbor-location';
16
+ import { Text as SemcoreText } from '@semcore/typography';
17
17
  import React from 'react';
18
18
  /*!__reshadow-styles__:"./style/tab-line.shadow.css"*/
19
- var style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___STabLine_1408b_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLine_1408b_gg_.__underlined_1408b_gg_{border-bottom:1px solid var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}.___STabLineItem_1408b_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, rgba(1, 5, 0, 0.899));margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1408b_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1408b_gg_:active{text-decoration:none}@media (hover:hover){.___STabLineItem_1408b_gg_:hover{text-decoration:none}}.___STabLineItem_1408b_gg_::after,.___STabLineItem_1408b_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1408b_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLineItem_1408b_gg_:hover::before{background-color:var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}}.___STabLineItem_1408b_gg_.__selected_1408b_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, rgba(0, 40, 230, 0.419))}.___STabLineItem_1408b_gg_ .___SAddon_1408b_gg_:not(:last-child),.___STabLineItem_1408b_gg_ .___SText_1408b_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1408b_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, rgba(0, 40, 230, 0.419));transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1408b_gg_.__selected_1408b_gg_{flex-shrink:0}.___STabLineItem_1408b_gg_.__disabled_1408b_gg_{opacity:var(--intergalactic-disabled-opacity, 0.4);cursor:default;pointer-events:none}.___SText_1408b_gg_{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_1408b_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1408b_gg_._size_m_1408b_gg_{height:28px;min-width:18px}.___STabLineItem_1408b_gg_._size_m_1408b_gg_ .___SText_1408b_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%)}.___STabLineItem_1408b_gg_._size_l_1408b_gg_{height:40px;min-width:26px}.___STabLineItem_1408b_gg_._size_l_1408b_gg_ .___SText_1408b_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%)}.___STabLineItem_1408b_gg_._neighborLocation_left_1408b_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1408b_gg_.__selected_1408b_gg_::after,.___STabLineItem_1408b_gg_::after,.___STabLineItem_1408b_gg_::before{transition:none}.___SCaret_1408b_gg_{display:none}}", /*__inner_css_end__*/"1408b_gg_"),
19
+ var style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___STabLine_1qpi7_gg_{position:relative;display:flex;width:100%;max-width:100%}.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLine_1qpi7_gg_.__underlined_1qpi7_gg_{border-bottom:1px solid var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}.___STabLineItem_1qpi7_gg_{display:inline-flex;align-items:center;justify-content:center;position:relative;touch-action:manipulation;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;-webkit-text-decoration:none;text-decoration:none;-webkit-tap-highlight-color:transparent;overflow:visible;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer;border:0;background:0 0;color:var(--intergalactic-text-primary, rgba(1, 5, 0, 0.899));margin-right:var(--intergalactic-spacing-4x, 16px);font-weight:var(--intergalactic-medium, 500)}.___STabLineItem_1qpi7_gg_::-moz-focus-inner{border:0;padding:0}.___STabLineItem_1qpi7_gg_:active{-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___STabLineItem_1qpi7_gg_:hover{-webkit-text-decoration:none;text-decoration:none}}.___STabLineItem_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::before{content:\"\";position:absolute;left:0;bottom:-1px;height:3px;width:100%;background-color:transparent}.___STabLineItem_1qpi7_gg_::before{transition:background-color calc(var(--intergalactic-duration-control, 200)*1ms) ease-in-out}@media (hover:hover){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@supports (color:color(display-p3 0 0 0%)){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, rgba(0, 12, 8, 0.161))}@media (color-gamut:p3){.___STabLineItem_1qpi7_gg_:hover::before{background-color:var(--intergalactic-border-primary, color(display-p3 0.00798 0.04498 0.03219 / 0.161))}}}}.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_::after{transition-delay:calc(var(--intergalactic-duration-control, 200)*1ms);background-color:var(--intergalactic-border-info-active, rgb(135, 150, 239))}.___STabLineItem_1qpi7_gg_ .___SAddon_1qpi7_gg_:not(:last-child),.___STabLineItem_1qpi7_gg_ .___SText_1qpi7_gg_:not(:last-child){margin-right:var(--intergalactic-spacing-2x, 8px)}.___SCaret_1qpi7_gg_{position:absolute;bottom:-1px;height:3px;background:var(--intergalactic-border-info-active, rgb(135, 150, 239));transition:calc(var(--intergalactic-duration-control, 200)*1ms) all ease-in-out}.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_{flex-shrink:0}.___STabLineItem_1qpi7_gg_.__disabled_1qpi7_gg_{opacity:var(--intergalactic-disabled-opacity, 0.4);cursor:default;pointer-events:none}.___SAddon_1qpi7_gg_{display:inline-flex;align-items:center;justify-content:center}.___STabLineItem_1qpi7_gg_._size_m_1qpi7_gg_{height:28px;min-width:18px}.___STabLineItem_1qpi7_gg_._size_l_1qpi7_gg_{height:40px;min-width:26px}.___STabLineItem_1qpi7_gg_._neighborLocation_left_1qpi7_gg_{margin-right:0}@media (prefers-reduced-motion){.___STabLineItem_1qpi7_gg_.__selected_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::after,.___STabLineItem_1qpi7_gg_::before{transition:none}.___SCaret_1qpi7_gg_{display:none}}", /*__inner_css_end__*/"1qpi7_gg_"),
20
20
  /*__reshadow_css_end__*/
21
21
  {
22
- "__STabLine": "___STabLine_1408b_gg_",
23
- "_underlined": "__underlined_1408b_gg_",
24
- "__SCaret": "___SCaret_1408b_gg_",
25
- "__STabLineItem": "___STabLineItem_1408b_gg_",
26
- "_selected": "__selected_1408b_gg_",
27
- "_disabled": "__disabled_1408b_gg_",
28
- "__SText": "___SText_1408b_gg_",
29
- "__SAddon": "___SAddon_1408b_gg_",
30
- "_neighborLocation_left": "_neighborLocation_left_1408b_gg_",
31
- "_size_m": "_size_m_1408b_gg_",
32
- "_size_l": "_size_l_1408b_gg_"
22
+ "__STabLine": "___STabLine_1qpi7_gg_",
23
+ "_underlined": "__underlined_1qpi7_gg_",
24
+ "__SCaret": "___SCaret_1qpi7_gg_",
25
+ "__STabLineItem": "___STabLineItem_1qpi7_gg_",
26
+ "_selected": "__selected_1qpi7_gg_",
27
+ "_disabled": "__disabled_1qpi7_gg_",
28
+ "__SAddon": "___SAddon_1qpi7_gg_",
29
+ "_size_m": "_size_m_1qpi7_gg_",
30
+ "_size_l": "_size_l_1qpi7_gg_",
31
+ "_neighborLocation_left": "_neighborLocation_left_1qpi7_gg_",
32
+ "__SText": "___SText_1qpi7_gg_"
33
33
  });
34
- var optionsA11yEnhance = {
35
- onNeighborChange: function onNeighborChange(neighborElement, props) {
36
- if (neighborElement) {
37
- neighborElement.focus();
38
- if (props.behavior === 'auto') {
39
- neighborElement.click();
40
- }
41
- }
42
- },
43
- childSelector: ['role', 'tab']
44
- };
45
34
  var TabLineRoot = /*#__PURE__*/function (_Component) {
46
35
  function TabLineRoot() {
47
36
  var _this;
@@ -56,7 +45,8 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
56
45
  _defineProperty(_this, "prevValue", undefined);
57
46
  _defineProperty(_this, "itemRefs", {});
58
47
  _defineProperty(_this, "containerRef", /*#__PURE__*/React.createRef());
59
- _defineProperty(_this, "animationStartTimeout", -1);
48
+ _defineProperty(_this, "animationStartTimeout", null);
49
+ _defineProperty(_this, "buttonRefsList", []);
60
50
  _defineProperty(_this, "handleAnimationStart", function () {
61
51
  var _this$state$animation;
62
52
  if (((_this$state$animation = _this.state.animation) === null || _this$state$animation === void 0 ? void 0 : _this$state$animation.started) === false) {
@@ -103,13 +93,16 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
103
93
  }, {
104
94
  key: "componentWillUnmount",
105
95
  value: function componentWillUnmount() {
106
- clearTimeout(this.animationStartTimeout);
96
+ if (this.animationStartTimeout) {
97
+ clearTimeout(this.animationStartTimeout);
98
+ }
107
99
  }
108
100
  }, {
109
101
  key: "animate",
110
102
  value: function animate() {
111
- var fromNode = this.itemRefs[this.prevValue];
112
- var toNode = this.itemRefs[this.asProps.value];
103
+ if (this.prevValue === undefined || this.asProps.value === undefined) return;
104
+ var fromNode = this.itemRefs[this.prevValue.toString()];
105
+ var toNode = this.itemRefs[this.asProps.value.toString()];
113
106
  var containerNode = this.containerRef.current;
114
107
  if (!fromNode || !toNode || !containerNode) return;
115
108
  var containerRect = containerNode.getBoundingClientRect();
@@ -125,12 +118,14 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
125
118
  this.setState({
126
119
  animation: animation
127
120
  });
128
- clearTimeout(this.animationStartTimeout);
121
+ if (this.animationStartTimeout) {
122
+ clearTimeout(this.animationStartTimeout);
123
+ }
129
124
  this.animationStartTimeout = setTimeout(this.handleAnimationStart, 0);
130
125
  }
131
126
  }, {
132
127
  key: "getItemProps",
133
- value: function getItemProps(props, _index) {
128
+ value: function getItemProps(props, index) {
134
129
  var _this2 = this;
135
130
  var _this$asProps = this.asProps,
136
131
  value = _this$asProps.value,
@@ -143,8 +138,22 @@ var TabLineRoot = /*#__PURE__*/function (_Component) {
143
138
  'tabIndex': isSelected ? 0 : -1,
144
139
  'aria-selected': isSelected,
145
140
  'ref': function ref(node) {
146
- _this2.itemRefs[props.value] = node;
147
- }
141
+ if (props.value === undefined) return;
142
+ _this2.itemRefs[props.value.toString()] = node;
143
+ },
144
+ 'buttonRefsList': this.buttonRefsList,
145
+ index: index
146
+ };
147
+ }
148
+ }, {
149
+ key: "getItemTextProps",
150
+ value: function getItemTextProps(props, index) {
151
+ var tabLineSize = this.asProps.size;
152
+ var size = props.size ? props.size : tabLineSize === 'm' ? 200 : 300;
153
+ return {
154
+ size: size,
155
+ buttonRefsList: this.buttonRefsList,
156
+ index: index
148
157
  };
149
158
  }
150
159
  }, {
@@ -199,7 +208,17 @@ _defineProperty(TabLineRoot, "defaultProps", {
199
208
  underlined: true,
200
209
  behavior: 'auto'
201
210
  });
202
- _defineProperty(TabLineRoot, "enhance", [a11yEnhance(optionsA11yEnhance)]);
211
+ _defineProperty(TabLineRoot, "enhance", [a11yEnhance({
212
+ onNeighborChange: function onNeighborChange(neighborElement, props) {
213
+ if (neighborElement) {
214
+ neighborElement.focus();
215
+ if (props.behavior === 'auto') {
216
+ neighborElement.click();
217
+ }
218
+ }
219
+ },
220
+ childSelector: ['role', 'tab']
221
+ })]);
203
222
  function TabLineItem(props) {
204
223
  var _ref2 = arguments[0];
205
224
  var STabLineItem = Box;
@@ -207,7 +226,11 @@ function TabLineItem(props) {
207
226
  styles = props.styles,
208
227
  addonLeft = props.addonLeft,
209
228
  addonRight = props.addonRight,
210
- neighborLocation = props.neighborLocation;
229
+ neighborLocation = props.neighborLocation,
230
+ buttonRefsList = props.buttonRefsList,
231
+ index = props.index;
232
+ var buttonRef = React.useRef();
233
+ buttonRefsList[index] = buttonRef;
211
234
  return /*#__PURE__*/React.createElement(NeighborLocation.Detect, {
212
235
  neighborLocation: neighborLocation
213
236
  }, function (neighborLocation) {
@@ -217,7 +240,8 @@ function TabLineItem(props) {
217
240
  "tabIndex": 0,
218
241
  "neighborLocation": neighborLocation,
219
242
  "type": 'button',
220
- "role": 'tab'
243
+ "role": 'tab',
244
+ "ref": buttonRef
221
245
  }, _ref2))), addonLeft ? /*#__PURE__*/React.createElement(TabLine.Item.Addon, {
222
246
  tag: addonLeft
223
247
  }) : null, addonTextChildren(Children, TabLine.Item.Text, TabLine.Item.Addon), addonRight ? /*#__PURE__*/React.createElement(TabLine.Item.Addon, {
@@ -228,10 +252,17 @@ function TabLineItem(props) {
228
252
  function Text(props) {
229
253
  var _ref3 = arguments[0],
230
254
  _ref7;
231
- var styles = props.styles;
232
- var SText = Box;
255
+ var styles = props.styles,
256
+ _props$ellipsis = props.ellipsis,
257
+ ellipsis = _props$ellipsis === void 0 ? true : _props$ellipsis,
258
+ size = props.size,
259
+ buttonRefsList = props.buttonRefsList,
260
+ index = props.index;
261
+ var SText = SemcoreText;
233
262
  return _ref7 = sstyled(styles), /*#__PURE__*/React.createElement(SText, _ref7.cn("SText", _objectSpread({}, _assignProps3({
234
- "tag": 'span'
263
+ "ellipsis": ellipsis,
264
+ "size": size,
265
+ "hint:triggerRef": buttonRefsList[index]
235
266
  }, _ref3))));
236
267
  }
237
268
  function Addon(props) {