@semcore/tab-panel 2.6.5 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [3.0.1] - 2022-05-19
6
+
7
+ ### Changed
8
+
9
+ - Version patch update due to children dependencies update (`@semcore/utils` [3.32.0 ~> 3.32.1], `@semcore/flex-box` [4.5.1 ~> 4.5.3]).
10
+
11
+ ## [3.0.0] - 2022-05-17
12
+
13
+ ### BREAK
14
+
15
+ - Updated styles according to the library redesign policy.
16
+
17
+ ## [2.6.6] - 2022-03-14
18
+
19
+ ### Changed
20
+
21
+ - Version patch update due to children dependencies update (`@semcore/utils` [3.31.2 ~> 3.31.2], `@semcore/flex-box` [4.5.0 ~> 4.5.1]).
22
+
5
23
  ## [2.6.5] - 2022-02-24
6
24
 
7
25
  ### Added
@@ -52,18 +52,18 @@ var style = (
52
52
  /*__reshadow_css_start__*/
53
53
  _core.sstyled.insert(
54
54
  /*__inner_css_start__*/
55
- ".___STabPanel_1dv3b_gg_{display:flex;width:100%;max-width:100%;border-bottom:1px solid #cccccc}.___STabPanelItem_1dv3b_gg_{position:relative;bottom:-1px;display:inline-flex;min-width:0;height:32px;font-size:14px;line-height:1.1;color:#666666;border:1px solid transparent;border-radius:4px 4px 0 0;background:transparent;align-items:center;justify-content:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;outline:none;text-decoration:none;-webkit-tap-highlight-color:transparent;outline:0;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer}.___STabPanelItem_1dv3b_gg_::-moz-focus-inner{border:none;padding:0}.___STabPanelItem_1dv3b_gg_:active,.___STabPanelItem_1dv3b_gg_:focus,.___STabPanelItem_1dv3b_gg_:hover{outline:0;text-decoration:none}.___STabPanelItem_1dv3b_gg_:hover{color:#333333}.___STabPanelItem_1dv3b_gg_.__disabled_1dv3b_gg_{opacity:0.3;cursor:default;pointer-events:none}.___STabPanelItem_1dv3b_gg_.__keyboardFocused_1dv3b_gg_{box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3)}.___STabPanelItem_1dv3b_gg_.__selected_1dv3b_gg_{color:#0071bc;border-color:#cccccc;border-bottom-color:#fff;flex-shrink:0}.___STabPanelItem_1dv3b_gg_.__selected_1dv3b_gg_:hover{color:#0071bc}.___SText_1dv3b_gg_{display:inline-block;margin:auto 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.1}.___SAddon_1dv3b_gg_{display:inline-flex;align-items:center;justify-content:center}.___SAddon_1dv3b_gg_:not(:only-child):first-child{margin-left:8px}.___SAddon_1dv3b_gg_:not(:only-child):last-child{margin-right:8px}"
55
+ ".___STabPanel_1fc5y_gg_{display:flex;width:100%;max-width:100%;border-bottom:1px solid #c4c7cf}.___STabPanelItem_1fc5y_gg_{position:relative;bottom:-1px;display:inline-flex;min-width:0;height:32px;font-size:14px;color:#6c6e79;border:1px solid transparent;border-radius:6px 6px 0 0;background:transparent;align-items:center;justify-content:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;outline:none;text-decoration:none;-webkit-tap-highlight-color:transparent;outline:0;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer}.___STabPanelItem_1fc5y_gg_::-moz-focus-inner{border:none;padding:0}.___STabPanelItem_1fc5y_gg_:active,.___STabPanelItem_1fc5y_gg_:focus,.___STabPanelItem_1fc5y_gg_:hover{outline:0;text-decoration:none}.___STabPanelItem_1fc5y_gg_:hover{color:#191b23}.___STabPanelItem_1fc5y_gg_.__disabled_1fc5y_gg_{opacity:0.3;cursor:default;pointer-events:none}.___STabPanelItem_1fc5y_gg_.__keyboardFocused_1fc5y_gg_{box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2)}.___STabPanelItem_1fc5y_gg_.__selected_1fc5y_gg_{color:#006dca;border-color:#c4c7cf;border-bottom-color:#ffffff;flex-shrink:0}.___STabPanelItem_1fc5y_gg_.__selected_1fc5y_gg_:hover{color:#006dca}.___SText_1fc5y_gg_{display:inline-block;margin:auto 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_1fc5y_gg_{display:inline-flex;align-items:center;justify-content:center}.___SAddon_1fc5y_gg_:not(:only-child):first-child{margin-left:8px}.___SAddon_1fc5y_gg_:not(:only-child):last-child{margin-right:8px}"
56
56
  /*__inner_css_end__*/
57
- , "1trgup5_gg_")
57
+ , "16jopra_gg_")
58
58
  /*__reshadow_css_end__*/
59
59
  , {
60
- "__STabPanel": "___STabPanel_1dv3b_gg_",
61
- "__STabPanelItem": "___STabPanelItem_1dv3b_gg_",
62
- "_disabled": "__disabled_1dv3b_gg_",
63
- "_keyboardFocused": "__keyboardFocused_1dv3b_gg_",
64
- "_selected": "__selected_1dv3b_gg_",
65
- "__SText": "___SText_1dv3b_gg_",
66
- "__SAddon": "___SAddon_1dv3b_gg_"
60
+ "__STabPanel": "___STabPanel_1fc5y_gg_",
61
+ "__STabPanelItem": "___STabPanelItem_1fc5y_gg_",
62
+ "_disabled": "__disabled_1fc5y_gg_",
63
+ "_keyboardFocused": "__keyboardFocused_1fc5y_gg_",
64
+ "_selected": "__selected_1fc5y_gg_",
65
+ "__SText": "___SText_1fc5y_gg_",
66
+ "__SAddon": "___SAddon_1fc5y_gg_"
67
67
  });
68
68
  var optionsA11yEnhance = {
69
69
  onNeighborChange: function onNeighborChange(neighborElement) {
@@ -121,7 +121,7 @@ var TabPanelRoot = /*#__PURE__*/function (_Component) {
121
121
  }, {
122
122
  key: "render",
123
123
  value: function render() {
124
- var _ref = this ? this.asProps : arguments[0],
124
+ var _ref = this.asProps,
125
125
  _ref5;
126
126
 
127
127
  var STabPanel = _flexBox.Box;
@@ -142,7 +142,7 @@ var TabPanelRoot = /*#__PURE__*/function (_Component) {
142
142
  (0, _defineProperty2["default"])(TabPanelRoot, "enhance", [(0, _a11yEnhance["default"])(optionsA11yEnhance)]);
143
143
 
144
144
  function TabPanelItem(props) {
145
- var _ref2 = this ? this.asProps : arguments[0],
145
+ var _ref2 = arguments[0],
146
146
  _ref6;
147
147
 
148
148
  var STabPanelItem = _flexBox.Box;
@@ -164,7 +164,7 @@ function TabPanelItem(props) {
164
164
  TabPanelItem.enhance = [(0, _keyboardFocusEnhance["default"])()];
165
165
 
166
166
  function Text(props) {
167
- var _ref3 = this ? this.asProps : arguments[0],
167
+ var _ref3 = arguments[0],
168
168
  _ref7;
169
169
 
170
170
  var SText = _flexBox.Box;
@@ -175,7 +175,7 @@ function Text(props) {
175
175
  }
176
176
 
177
177
  function Addon(props) {
178
- var _ref4 = this ? this.asProps : arguments[0],
178
+ var _ref4 = arguments[0],
179
179
  _ref8;
180
180
 
181
181
  var SAddon = _flexBox.Box;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TabPanel.js"],"names":["optionsA11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabPanelRoot","value","e","handlers","props","asProps","isSelected","selected","onClick","bindHandlerClick","tabIndex","STabPanel","Box","styles","Component","style","defaultValue","TabPanelItem","STabPanelItem","Children","addonLeft","addonRight","TabPanel","Item","Text","Addon","enhance","SText","SAddon"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport a11yEnhance from '@semcore/utils/lib/enhances/a11yEnhance';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nimport style from './style/tab-panel.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement) => {\n if (neighborElement) {\n neighborElement.focus();\n neighborElement.click();\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabPanelRoot extends Component {\n static displayName = 'TabPanel';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n };\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props) {\n const { value } = this.asProps;\n const isSelected = value === props.value;\n return {\n selected: isSelected,\n onClick: this.bindHandlerClick(props.value),\n tabIndex: isSelected ? 0 : -1,\n 'aria-posinset': value,\n 'aria-selected': isSelected,\n };\n }\n\n render() {\n const STabPanel = Root;\n const { styles } = this.asProps;\n\n return sstyled(styles)(<STabPanel render={Box} role=\"tablist\" />);\n }\n}\n\nfunction TabPanelItem(props) {\n const STabPanelItem = Root;\n const { Children, styles, addonLeft, addonRight } = props;\n\n return sstyled(styles)(\n <STabPanelItem render={Box} type=\"button\" tag=\"button\" role=\"tab\">\n {addonLeft ? <TabPanel.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabPanel.Item.Text, TabPanel.Item.Addon)}\n {addonRight ? <TabPanel.Item.Addon tag={addonRight} /> : null}\n </STabPanelItem>,\n );\n}\n\nTabPanelItem.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Box} tag=\"span\" />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag=\"span\" />);\n}\n\nconst TabPanel = createComponent(TabPanelRoot, {\n Item: [TabPanelItem, { Text, Addon }],\n});\n\nexport default TabPanel;\n"],"file":"TabPanel.js"}
1
+ {"version":3,"sources":["../../src/TabPanel.jsx"],"names":["optionsA11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabPanelRoot","value","e","handlers","props","asProps","isSelected","selected","onClick","bindHandlerClick","tabIndex","STabPanel","Box","styles","Component","style","defaultValue","TabPanelItem","STabPanelItem","Children","addonLeft","addonRight","TabPanel","Item","Text","Addon","enhance","SText","SAddon"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport a11yEnhance from '@semcore/utils/lib/enhances/a11yEnhance';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nimport style from './style/tab-panel.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement) => {\n if (neighborElement) {\n neighborElement.focus();\n neighborElement.click();\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabPanelRoot extends Component {\n static displayName = 'TabPanel';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n };\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props) {\n const { value } = this.asProps;\n const isSelected = value === props.value;\n return {\n selected: isSelected,\n onClick: this.bindHandlerClick(props.value),\n tabIndex: isSelected ? 0 : -1,\n 'aria-posinset': value,\n 'aria-selected': isSelected,\n };\n }\n\n render() {\n const STabPanel = Root;\n const { styles } = this.asProps;\n\n return sstyled(styles)(<STabPanel render={Box} role=\"tablist\" />);\n }\n}\n\nfunction TabPanelItem(props) {\n const STabPanelItem = Root;\n const { Children, styles, addonLeft, addonRight } = props;\n\n return sstyled(styles)(\n <STabPanelItem render={Box} type=\"button\" tag=\"button\" role=\"tab\">\n {addonLeft ? <TabPanel.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabPanel.Item.Text, TabPanel.Item.Addon)}\n {addonRight ? <TabPanel.Item.Addon tag={addonRight} /> : null}\n </STabPanelItem>,\n );\n}\n\nTabPanelItem.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Box} tag=\"span\" />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag=\"span\" />);\n}\n\nconst TabPanel = createComponent(TabPanelRoot, {\n Item: [TabPanelItem, { Text, Addon }],\n});\n\nexport default TabPanel;\n"],"file":"TabPanel.js"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';
3
+ import { Box, IBoxProps } from '@semcore/flex-box';
4
+ import { IKeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';
5
+
6
+ export type TabPanelValue = string | number | boolean;
7
+
8
+ export interface ITabPanelProps<T extends TabPanelValue = TabPanelValue> extends IBoxProps {
9
+ /** Is invoked when changing the selection */
10
+ onChange?: (value: T, e?: React.SyntheticEvent<HTMLButtonElement>) => void;
11
+ /** Value of the selected tab */
12
+ value?: T;
13
+ /** Default value of the selected tab
14
+ * @default null
15
+ * */
16
+ defaultValue?: T;
17
+ }
18
+
19
+ export interface ITabPanelItemProps extends IBoxProps, IKeyboardFocusProps {
20
+ /** Makes a tab selected. This property is determined automatically depending on the value. */
21
+ selected?: boolean;
22
+ /** Disabled state */
23
+ disabled?: boolean;
24
+ /** Tab value */
25
+ value?: TabPanelValue;
26
+ /** Left addon tag */
27
+ addonLeft?: React.ElementType;
28
+ /** Right addon tag */
29
+ addonRight?: React.ElementType;
30
+ }
31
+
32
+ export interface ITabPanelContext {
33
+ getItemProps: PropGetterFn;
34
+ }
35
+
36
+ export interface ITabPanelHandlers {
37
+ value: (value: TabPanelValue) => void;
38
+ }
39
+
40
+ declare const TabPanel: (<T, V extends TabPanelValue = TabPanelValue>(
41
+ props: CProps<ITabPanelProps<V> & T, ITabPanelContext, ITabPanelHandlers>,
42
+ ) => ReturnEl) & {
43
+ Item: (<T>(props: CProps<ITabPanelItemProps & T, {}, ITabPanelHandlers>) => ReturnEl) & {
44
+ Text: typeof Box;
45
+ Addon: typeof Box;
46
+ };
47
+ };
48
+
49
+ export default TabPanel;
package/lib/cjs/index.js CHANGED
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- var _exportNames = {};
9
8
  Object.defineProperty(exports, "default", {
10
9
  enumerable: true,
11
10
  get: function get() {
@@ -13,21 +12,5 @@ Object.defineProperty(exports, "default", {
13
12
  }
14
13
  });
15
14
 
16
- var _TabPanel = _interopRequireWildcard(require("./TabPanel"));
17
-
18
- Object.keys(_TabPanel).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
- if (key in exports && exports[key] === _TabPanel[key]) return;
22
- Object.defineProperty(exports, key, {
23
- enumerable: true,
24
- get: function get() {
25
- return _TabPanel[key];
26
- }
27
- });
28
- });
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ var _TabPanel = _interopRequireDefault(require("./TabPanel"));
33
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default } from './TabPanel';\nexport * from './TabPanel';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export { default } from './TabPanel';\n"],"file":"index.js"}
@@ -4,7 +4,7 @@ STabPanel {
4
4
  display: flex;
5
5
  width: 100%;
6
6
  max-width: 100%;
7
- border-bottom: 1px solid var(--gray80);
7
+ border-bottom: 1px solid var(--gray-200);
8
8
  }
9
9
 
10
10
  STabPanelItem {
@@ -14,10 +14,9 @@ STabPanelItem {
14
14
  min-width: 0;
15
15
  height: 32px;
16
16
  font-size: var(--fs-200);
17
- line-height: 1.1;
18
- color: var(--gray40);
17
+ color: var(--gray-500);
19
18
  border: 1px solid transparent;
20
- border-radius: 4px 4px 0 0;
19
+ border-radius: 6px 6px 0 0;
21
20
  background: transparent;
22
21
  align-items: center;
23
22
  justify-content: center;
@@ -49,7 +48,7 @@ STabPanelItem {
49
48
  }
50
49
 
51
50
  &:hover {
52
- color: var(--gray20);
51
+ color: var(--gray-800);
53
52
  }
54
53
  }
55
54
 
@@ -60,17 +59,17 @@ STabPanelItem[disabled] {
60
59
  }
61
60
 
62
61
  STabPanelItem[keyboardFocused] {
63
- box-shadow: var(--keyborad-focus);
62
+ box-shadow: var(--keyboard-focus);
64
63
  }
65
64
 
66
65
  STabPanelItem[selected] {
67
- color: var(--denim-blue);
68
- border-color: var(--gray80);
69
- border-bottom-color: white;
66
+ color: var(--blue-500);
67
+ border-color: var(--gray-200);
68
+ border-bottom-color: var(--white);
70
69
  flex-shrink: 0;
71
70
 
72
71
  &:hover {
73
- color: var(--denim-blue);
72
+ color: var(--blue-500);
74
73
  }
75
74
  }
76
75
 
@@ -80,7 +79,6 @@ SText {
80
79
  white-space: nowrap;
81
80
  overflow: hidden;
82
81
  text-overflow: ellipsis;
83
- line-height: 1.1;
84
82
  }
85
83
 
86
84
  SAddon {
@@ -31,18 +31,18 @@ var style = (
31
31
  /*__reshadow_css_start__*/
32
32
  _sstyled.insert(
33
33
  /*__inner_css_start__*/
34
- ".___STabPanel_1dv3b_gg_{display:flex;width:100%;max-width:100%;border-bottom:1px solid #cccccc}.___STabPanelItem_1dv3b_gg_{position:relative;bottom:-1px;display:inline-flex;min-width:0;height:32px;font-size:14px;line-height:1.1;color:#666666;border:1px solid transparent;border-radius:4px 4px 0 0;background:transparent;align-items:center;justify-content:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;outline:none;text-decoration:none;-webkit-tap-highlight-color:transparent;outline:0;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer}.___STabPanelItem_1dv3b_gg_::-moz-focus-inner{border:none;padding:0}.___STabPanelItem_1dv3b_gg_:active,.___STabPanelItem_1dv3b_gg_:focus,.___STabPanelItem_1dv3b_gg_:hover{outline:0;text-decoration:none}.___STabPanelItem_1dv3b_gg_:hover{color:#333333}.___STabPanelItem_1dv3b_gg_.__disabled_1dv3b_gg_{opacity:0.3;cursor:default;pointer-events:none}.___STabPanelItem_1dv3b_gg_.__keyboardFocused_1dv3b_gg_{box-shadow:0 0 0 3px rgba(43, 148, 225, 0.3)}.___STabPanelItem_1dv3b_gg_.__selected_1dv3b_gg_{color:#0071bc;border-color:#cccccc;border-bottom-color:#fff;flex-shrink:0}.___STabPanelItem_1dv3b_gg_.__selected_1dv3b_gg_:hover{color:#0071bc}.___SText_1dv3b_gg_{display:inline-block;margin:auto 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.1}.___SAddon_1dv3b_gg_{display:inline-flex;align-items:center;justify-content:center}.___SAddon_1dv3b_gg_:not(:only-child):first-child{margin-left:8px}.___SAddon_1dv3b_gg_:not(:only-child):last-child{margin-right:8px}"
34
+ ".___STabPanel_1fc5y_gg_{display:flex;width:100%;max-width:100%;border-bottom:1px solid #c4c7cf}.___STabPanelItem_1fc5y_gg_{position:relative;bottom:-1px;display:inline-flex;min-width:0;height:32px;font-size:14px;color:#6c6e79;border:1px solid transparent;border-radius:6px 6px 0 0;background:transparent;align-items:center;justify-content:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;padding:0;margin:0;box-shadow:none;outline:none;text-decoration:none;-webkit-tap-highlight-color:transparent;outline:0;text-align:center;vertical-align:middle;font-family:inherit;cursor:pointer}.___STabPanelItem_1fc5y_gg_::-moz-focus-inner{border:none;padding:0}.___STabPanelItem_1fc5y_gg_:active,.___STabPanelItem_1fc5y_gg_:focus,.___STabPanelItem_1fc5y_gg_:hover{outline:0;text-decoration:none}.___STabPanelItem_1fc5y_gg_:hover{color:#191b23}.___STabPanelItem_1fc5y_gg_.__disabled_1fc5y_gg_{opacity:0.3;cursor:default;pointer-events:none}.___STabPanelItem_1fc5y_gg_.__keyboardFocused_1fc5y_gg_{box-shadow:0 0 0 3px rgba(0, 143, 248, 0.2)}.___STabPanelItem_1fc5y_gg_.__selected_1fc5y_gg_{color:#006dca;border-color:#c4c7cf;border-bottom-color:#ffffff;flex-shrink:0}.___STabPanelItem_1fc5y_gg_.__selected_1fc5y_gg_:hover{color:#006dca}.___SText_1fc5y_gg_{display:inline-block;margin:auto 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.___SAddon_1fc5y_gg_{display:inline-flex;align-items:center;justify-content:center}.___SAddon_1fc5y_gg_:not(:only-child):first-child{margin-left:8px}.___SAddon_1fc5y_gg_:not(:only-child):last-child{margin-right:8px}"
35
35
  /*__inner_css_end__*/
36
- , "1trgup5_gg_")
36
+ , "16jopra_gg_")
37
37
  /*__reshadow_css_end__*/
38
38
  , {
39
- "__STabPanel": "___STabPanel_1dv3b_gg_",
40
- "__STabPanelItem": "___STabPanelItem_1dv3b_gg_",
41
- "_disabled": "__disabled_1dv3b_gg_",
42
- "_keyboardFocused": "__keyboardFocused_1dv3b_gg_",
43
- "_selected": "__selected_1dv3b_gg_",
44
- "__SText": "___SText_1dv3b_gg_",
45
- "__SAddon": "___SAddon_1dv3b_gg_"
39
+ "__STabPanel": "___STabPanel_1fc5y_gg_",
40
+ "__STabPanelItem": "___STabPanelItem_1fc5y_gg_",
41
+ "_disabled": "__disabled_1fc5y_gg_",
42
+ "_keyboardFocused": "__keyboardFocused_1fc5y_gg_",
43
+ "_selected": "__selected_1fc5y_gg_",
44
+ "__SText": "___SText_1fc5y_gg_",
45
+ "__SAddon": "___SAddon_1fc5y_gg_"
46
46
  });
47
47
  var optionsA11yEnhance = {
48
48
  onNeighborChange: function onNeighborChange(neighborElement) {
@@ -102,7 +102,7 @@ var TabPanelRoot = /*#__PURE__*/function (_Component) {
102
102
  }, {
103
103
  key: "render",
104
104
  value: function render() {
105
- var _ref = this ? this.asProps : arguments[0],
105
+ var _ref = this.asProps,
106
106
  _ref5;
107
107
 
108
108
  var STabPanel = Box;
@@ -127,7 +127,7 @@ _defineProperty(TabPanelRoot, "defaultProps", {
127
127
  _defineProperty(TabPanelRoot, "enhance", [a11yEnhance(optionsA11yEnhance)]);
128
128
 
129
129
  function TabPanelItem(props) {
130
- var _ref2 = this ? this.asProps : arguments[0],
130
+ var _ref2 = arguments[0],
131
131
  _ref6;
132
132
 
133
133
  var STabPanelItem = Box;
@@ -149,7 +149,7 @@ function TabPanelItem(props) {
149
149
  TabPanelItem.enhance = [keyboardFocusEnhance()];
150
150
 
151
151
  function Text(props) {
152
- var _ref3 = this ? this.asProps : arguments[0],
152
+ var _ref3 = arguments[0],
153
153
  _ref7;
154
154
 
155
155
  var SText = Box;
@@ -160,7 +160,7 @@ function Text(props) {
160
160
  }
161
161
 
162
162
  function Addon(props) {
163
- var _ref4 = this ? this.asProps : arguments[0],
163
+ var _ref4 = arguments[0],
164
164
  _ref8;
165
165
 
166
166
  var SAddon = Box;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TabPanel.js"],"names":["React","createComponent","Component","sstyled","Root","Box","addonTextChildren","a11yEnhance","keyboardFocusEnhance","optionsA11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabPanelRoot","value","e","handlers","props","asProps","isSelected","selected","onClick","bindHandlerClick","tabIndex","STabPanel","styles","style","defaultValue","TabPanelItem","STabPanelItem","Children","addonLeft","addonRight","TabPanel","Item","Text","Addon","enhance","SText","SAddon"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport a11yEnhance from '@semcore/utils/lib/enhances/a11yEnhance';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nimport style from './style/tab-panel.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement) => {\n if (neighborElement) {\n neighborElement.focus();\n neighborElement.click();\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabPanelRoot extends Component {\n static displayName = 'TabPanel';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n };\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props) {\n const { value } = this.asProps;\n const isSelected = value === props.value;\n return {\n selected: isSelected,\n onClick: this.bindHandlerClick(props.value),\n tabIndex: isSelected ? 0 : -1,\n 'aria-posinset': value,\n 'aria-selected': isSelected,\n };\n }\n\n render() {\n const STabPanel = Root;\n const { styles } = this.asProps;\n\n return sstyled(styles)(<STabPanel render={Box} role=\"tablist\" />);\n }\n}\n\nfunction TabPanelItem(props) {\n const STabPanelItem = Root;\n const { Children, styles, addonLeft, addonRight } = props;\n\n return sstyled(styles)(\n <STabPanelItem render={Box} type=\"button\" tag=\"button\" role=\"tab\">\n {addonLeft ? <TabPanel.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabPanel.Item.Text, TabPanel.Item.Addon)}\n {addonRight ? <TabPanel.Item.Addon tag={addonRight} /> : null}\n </STabPanelItem>,\n );\n}\n\nTabPanelItem.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Box} tag=\"span\" />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag=\"span\" />);\n}\n\nconst TabPanel = createComponent(TabPanelRoot, {\n Item: [TabPanelItem, { Text, Addon }],\n});\n\nexport default TabPanel;\n"],"file":"TabPanel.js"}
1
+ {"version":3,"sources":["../../src/TabPanel.jsx"],"names":["React","createComponent","Component","sstyled","Root","Box","addonTextChildren","a11yEnhance","keyboardFocusEnhance","optionsA11yEnhance","onNeighborChange","neighborElement","focus","click","childSelector","TabPanelRoot","value","e","handlers","props","asProps","isSelected","selected","onClick","bindHandlerClick","tabIndex","STabPanel","styles","style","defaultValue","TabPanelItem","STabPanelItem","Children","addonLeft","addonRight","TabPanel","Item","Text","Addon","enhance","SText","SAddon"],"mappings":"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","sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport a11yEnhance from '@semcore/utils/lib/enhances/a11yEnhance';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nimport style from './style/tab-panel.shadow.css';\n\nconst optionsA11yEnhance = {\n onNeighborChange: (neighborElement) => {\n if (neighborElement) {\n neighborElement.focus();\n neighborElement.click();\n }\n },\n childSelector: ['role', 'tab'],\n};\n\nclass TabPanelRoot extends Component {\n static displayName = 'TabPanel';\n static style = style;\n static defaultProps = {\n defaultValue: null,\n };\n static enhance = [a11yEnhance(optionsA11yEnhance)];\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n bindHandlerClick = (value) => (e) => {\n this.handlers.value(value, e);\n };\n\n getItemProps(props) {\n const { value } = this.asProps;\n const isSelected = value === props.value;\n return {\n selected: isSelected,\n onClick: this.bindHandlerClick(props.value),\n tabIndex: isSelected ? 0 : -1,\n 'aria-posinset': value,\n 'aria-selected': isSelected,\n };\n }\n\n render() {\n const STabPanel = Root;\n const { styles } = this.asProps;\n\n return sstyled(styles)(<STabPanel render={Box} role=\"tablist\" />);\n }\n}\n\nfunction TabPanelItem(props) {\n const STabPanelItem = Root;\n const { Children, styles, addonLeft, addonRight } = props;\n\n return sstyled(styles)(\n <STabPanelItem render={Box} type=\"button\" tag=\"button\" role=\"tab\">\n {addonLeft ? <TabPanel.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, TabPanel.Item.Text, TabPanel.Item.Addon)}\n {addonRight ? <TabPanel.Item.Addon tag={addonRight} /> : null}\n </STabPanelItem>,\n );\n}\n\nTabPanelItem.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n const { styles } = props;\n return sstyled(styles)(<SText render={Box} tag=\"span\" />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n const { styles } = props;\n return sstyled(styles)(<SAddon render={Box} tag=\"span\" />);\n}\n\nconst TabPanel = createComponent(TabPanelRoot, {\n Item: [TabPanelItem, { Text, Addon }],\n});\n\nexport default TabPanel;\n"],"file":"TabPanel.js"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';
3
+ import { Box, IBoxProps } from '@semcore/flex-box';
4
+ import { IKeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';
5
+
6
+ export type TabPanelValue = string | number | boolean;
7
+
8
+ export interface ITabPanelProps<T extends TabPanelValue = TabPanelValue> extends IBoxProps {
9
+ /** Is invoked when changing the selection */
10
+ onChange?: (value: T, e?: React.SyntheticEvent<HTMLButtonElement>) => void;
11
+ /** Value of the selected tab */
12
+ value?: T;
13
+ /** Default value of the selected tab
14
+ * @default null
15
+ * */
16
+ defaultValue?: T;
17
+ }
18
+
19
+ export interface ITabPanelItemProps extends IBoxProps, IKeyboardFocusProps {
20
+ /** Makes a tab selected. This property is determined automatically depending on the value. */
21
+ selected?: boolean;
22
+ /** Disabled state */
23
+ disabled?: boolean;
24
+ /** Tab value */
25
+ value?: TabPanelValue;
26
+ /** Left addon tag */
27
+ addonLeft?: React.ElementType;
28
+ /** Right addon tag */
29
+ addonRight?: React.ElementType;
30
+ }
31
+
32
+ export interface ITabPanelContext {
33
+ getItemProps: PropGetterFn;
34
+ }
35
+
36
+ export interface ITabPanelHandlers {
37
+ value: (value: TabPanelValue) => void;
38
+ }
39
+
40
+ declare const TabPanel: (<T, V extends TabPanelValue = TabPanelValue>(
41
+ props: CProps<ITabPanelProps<V> & T, ITabPanelContext, ITabPanelHandlers>,
42
+ ) => ReturnEl) & {
43
+ Item: (<T>(props: CProps<ITabPanelItemProps & T, {}, ITabPanelHandlers>) => ReturnEl) & {
44
+ Text: typeof Box;
45
+ Addon: typeof Box;
46
+ };
47
+ };
48
+
49
+ export default TabPanel;
package/lib/es6/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export { default } from './TabPanel';
2
- export * from './TabPanel';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,YAAxB;AACA,cAAc,YAAd","sourcesContent":["export { default } from './TabPanel';\nexport * from './TabPanel';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,YAAxB","sourcesContent":["export { default } from './TabPanel';\n"],"file":"index.js"}
@@ -4,7 +4,7 @@ STabPanel {
4
4
  display: flex;
5
5
  width: 100%;
6
6
  max-width: 100%;
7
- border-bottom: 1px solid var(--gray80);
7
+ border-bottom: 1px solid var(--gray-200);
8
8
  }
9
9
 
10
10
  STabPanelItem {
@@ -14,10 +14,9 @@ STabPanelItem {
14
14
  min-width: 0;
15
15
  height: 32px;
16
16
  font-size: var(--fs-200);
17
- line-height: 1.1;
18
- color: var(--gray40);
17
+ color: var(--gray-500);
19
18
  border: 1px solid transparent;
20
- border-radius: 4px 4px 0 0;
19
+ border-radius: 6px 6px 0 0;
21
20
  background: transparent;
22
21
  align-items: center;
23
22
  justify-content: center;
@@ -49,7 +48,7 @@ STabPanelItem {
49
48
  }
50
49
 
51
50
  &:hover {
52
- color: var(--gray20);
51
+ color: var(--gray-800);
53
52
  }
54
53
  }
55
54
 
@@ -60,17 +59,17 @@ STabPanelItem[disabled] {
60
59
  }
61
60
 
62
61
  STabPanelItem[keyboardFocused] {
63
- box-shadow: var(--keyborad-focus);
62
+ box-shadow: var(--keyboard-focus);
64
63
  }
65
64
 
66
65
  STabPanelItem[selected] {
67
- color: var(--denim-blue);
68
- border-color: var(--gray80);
69
- border-bottom-color: white;
66
+ color: var(--blue-500);
67
+ border-color: var(--gray-200);
68
+ border-bottom-color: var(--white);
70
69
  flex-shrink: 0;
71
70
 
72
71
  &:hover {
73
- color: var(--denim-blue);
72
+ color: var(--blue-500);
74
73
  }
75
74
  }
76
75
 
@@ -80,7 +79,6 @@ SText {
80
79
  white-space: nowrap;
81
80
  overflow: hidden;
82
81
  text-overflow: ellipsis;
83
- line-height: 1.1;
84
82
  }
85
83
 
86
84
  SAddon {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/tab-panel",
3
3
  "description": "SEMRush TabPanel Component",
4
- "version": "2.6.5",
4
+ "version": "3.0.1",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -27,5 +27,8 @@
27
27
  "type": "git",
28
28
  "url": "https://github.com/semrush/intergalactic.git",
29
29
  "directory": "semcore/tab-panel"
30
+ },
31
+ "devDependencies": {
32
+ "@semcore/jest-preset-ui": "1.0.0"
30
33
  }
31
34
  }
File without changes
package/src/index.js CHANGED
@@ -1,2 +1 @@
1
1
  export { default } from './TabPanel';
2
- export * from './TabPanel';
@@ -4,7 +4,7 @@ STabPanel {
4
4
  display: flex;
5
5
  width: 100%;
6
6
  max-width: 100%;
7
- border-bottom: 1px solid var(--gray80);
7
+ border-bottom: 1px solid var(--gray-200);
8
8
  }
9
9
 
10
10
  STabPanelItem {
@@ -14,10 +14,9 @@ STabPanelItem {
14
14
  min-width: 0;
15
15
  height: 32px;
16
16
  font-size: var(--fs-200);
17
- line-height: 1.1;
18
- color: var(--gray40);
17
+ color: var(--gray-500);
19
18
  border: 1px solid transparent;
20
- border-radius: 4px 4px 0 0;
19
+ border-radius: 6px 6px 0 0;
21
20
  background: transparent;
22
21
  align-items: center;
23
22
  justify-content: center;
@@ -49,7 +48,7 @@ STabPanelItem {
49
48
  }
50
49
 
51
50
  &:hover {
52
- color: var(--gray20);
51
+ color: var(--gray-800);
53
52
  }
54
53
  }
55
54
 
@@ -60,17 +59,17 @@ STabPanelItem[disabled] {
60
59
  }
61
60
 
62
61
  STabPanelItem[keyboardFocused] {
63
- box-shadow: var(--keyborad-focus);
62
+ box-shadow: var(--keyboard-focus);
64
63
  }
65
64
 
66
65
  STabPanelItem[selected] {
67
- color: var(--denim-blue);
68
- border-color: var(--gray80);
69
- border-bottom-color: white;
66
+ color: var(--blue-500);
67
+ border-color: var(--gray-200);
68
+ border-bottom-color: var(--white);
70
69
  flex-shrink: 0;
71
70
 
72
71
  &:hover {
73
- color: var(--denim-blue);
72
+ color: var(--blue-500);
74
73
  }
75
74
  }
76
75
 
@@ -80,7 +79,6 @@ SText {
80
79
  white-space: nowrap;
81
80
  overflow: hidden;
82
81
  text-overflow: ellipsis;
83
- line-height: 1.1;
84
82
  }
85
83
 
86
84
  SAddon {