@semcore/pills 5.11.1 → 5.12.0-prerelease.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 +17 -1
- package/README.md +1 -1
- package/lib/cjs/Pills.js +54 -28
- package/lib/cjs/Pills.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/cjs/style/pills.shadow.css +6 -4
- package/lib/es6/Pills.js +54 -28
- package/lib/es6/Pills.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/lib/es6/style/pills.shadow.css +6 -4
- package/lib/types/index.d.ts +7 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
-
## [5.
|
|
5
|
+
## [5.12.0-prerelease.1] - 2023-11-23
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- New behavior `auto` instead of `radio` and `manual` instead of `tags`.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Selection of disabled `Pills.Item`.
|
|
14
|
+
|
|
15
|
+
## [5.11.2] - 2023-11-21
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Version prepatch update due to children dependencies update (`@semcore/flex-box` [5.10.1 ~> 5.10.2], `@semcore/neighbor-location` [4.9.1 ~> 4.9.2], `@semcore/utils` [4.10.2 ~> 4.10.3], `@semcore/core` [2.9.1 ~> 2.9.2]).
|
|
20
|
+
|
|
21
|
+
## [5.11.1] - 2023-11-09
|
|
6
22
|
|
|
7
23
|
### Changed
|
|
8
24
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/@semcore/pills)
|
|
5
5
|
[](https://github.com/semrush/intergalactic/blob/master/LICENSE)
|
|
6
6
|
|
|
7
|
-
> This component is part of the Intergalactic
|
|
7
|
+
> This component is part of the Intergalactic Design System
|
|
8
8
|
|
|
9
9
|
### 📖 [Component documentation](https://developer.semrush.com/intergalactic/components/pills/)
|
|
10
10
|
|
package/lib/cjs/Pills.js
CHANGED
|
@@ -19,21 +19,25 @@ var _flexBox = require("@semcore/flex-box");
|
|
|
19
19
|
var _neighborLocation = _interopRequireWildcard(require("@semcore/neighbor-location"));
|
|
20
20
|
var _keyboardFocusEnhance = _interopRequireDefault(require("@semcore/utils/lib/enhances/keyboardFocusEnhance"));
|
|
21
21
|
var _addonTextChildren = _interopRequireDefault(require("@semcore/utils/lib/addonTextChildren"));
|
|
22
|
+
var _logger = _interopRequireDefault(require("@semcore/utils/lib/logger"));
|
|
22
23
|
/*__reshadow-styles__:"./style/pills.shadow.css"*/
|
|
23
|
-
var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".
|
|
24
|
-
"__SPills": "
|
|
25
|
-
"__SPill": "
|
|
26
|
-
"_selected": "
|
|
27
|
-
"_keyboardFocused": "
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
24
|
+
var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SPill_njfhv_gg_,.___SPills_njfhv_gg_{display:inline-flex;align-items:center;justify-content:center;outline:0}.___SPills_njfhv_gg_{isolation:isolate}.___SPill_njfhv_gg_{line-height:normal;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;background:var(--intergalactic-bg-primary-neutral, #ffffff);border:1px solid var(--intergalactic-border-primary, #c4c7cf);border-radius:var(--intergalactic-control-rounded, 6px)}.___SPill_njfhv_gg_::-moz-focus-inner{border:0;padding:0}.___SPill_njfhv_gg_:active,.___SPill_njfhv_gg_:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___SPill_njfhv_gg_:hover{outline:0;-webkit-text-decoration:none;text-decoration:none;background:var(--intergalactic-bg-primary-neutral-hover, #f4f5f9)}}.___SPill_njfhv_gg_.__selected_njfhv_gg_{background:var(--intergalactic-control-secondary-info, rgba(0, 143, 248, 0.1));border-color:var(--intergalactic-border-info-active, #006dca);z-index:1}.___SPill_njfhv_gg_.__disabled_njfhv_gg_{cursor:default;pointer-events:none}.___SPill_njfhv_gg_.__disabled_njfhv_gg_>*{opacity:var(--intergalactic-disabled-opacity, 0.3)}.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_auto_njfhv_gg_,.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_radio_njfhv_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_manual_njfhv_gg_>.___SPill_njfhv_gg_.__keyboardFocused_njfhv_gg_,.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_tag_njfhv_gg_>.___SPill_njfhv_gg_.__keyboardFocused_njfhv_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));z-index:1}.___SText_njfhv_gg_{color:var(--intergalactic-text-primary, #191b23);display:inline-flex}.___SAddon_njfhv_gg_{color:var(--intergalactic-text-secondary, #6c6e79);display:inline-flex;align-items:center;justify-content:center}.___SPill_njfhv_gg_._size_m_njfhv_gg_{height:var(--intergalactic-form-control-m, 28px);min-width:var(--intergalactic-form-control-m, 28px);font-size:var(--intergalactic-fs-200, 14px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SText_njfhv_gg_,.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SText_njfhv_gg_{margin-left:var(--intergalactic-spacing-2x, 8px);margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):first-child{margin-left:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):last-child{margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:only-child{margin-left:var(--intergalactic-spacing-2x, 8px);margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_{height:var(--intergalactic-form-control-l, 40px);min-width:var(--intergalactic-form-control-l, 40px);font-size:var(--intergalactic-fs-300, 16px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:only-child,.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SText_njfhv_gg_:only-child{margin-left:var(--intergalactic-spacing-3x, 12px);margin-right:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):first-child{margin-left:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):last-child{margin-right:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._neighborLocation_right_njfhv_gg_{border-top-right-radius:0;border-bottom-right-radius:0}.___SPill_njfhv_gg_._neighborLocation_both_njfhv_gg_{border-radius:0;margin-left:-1px}.___SPill_njfhv_gg_._neighborLocation_left_njfhv_gg_{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}" /*__inner_css_end__*/, "njfhv_gg_") /*__reshadow_css_end__*/, {
|
|
25
|
+
"__SPills": "___SPills_njfhv_gg_",
|
|
26
|
+
"__SPill": "___SPill_njfhv_gg_",
|
|
27
|
+
"_selected": "__selected_njfhv_gg_",
|
|
28
|
+
"_keyboardFocused": "__keyboardFocused_njfhv_gg_",
|
|
29
|
+
"_behavior_auto": "_behavior_auto_njfhv_gg_",
|
|
30
|
+
"_behavior_radio": "_behavior_radio_njfhv_gg_",
|
|
31
|
+
"__SText": "___SText_njfhv_gg_",
|
|
32
|
+
"__SAddon": "___SAddon_njfhv_gg_",
|
|
33
|
+
"_neighborLocation_right": "_neighborLocation_right_njfhv_gg_",
|
|
34
|
+
"_neighborLocation_both": "_neighborLocation_both_njfhv_gg_",
|
|
35
|
+
"_neighborLocation_left": "_neighborLocation_left_njfhv_gg_",
|
|
36
|
+
"_disabled": "__disabled_njfhv_gg_",
|
|
37
|
+
"_behavior_manual": "_behavior_manual_njfhv_gg_",
|
|
38
|
+
"_behavior_tag": "_behavior_tag_njfhv_gg_",
|
|
39
|
+
"_size_m": "_size_m_njfhv_gg_",
|
|
40
|
+
"_size_l": "_size_l_njfhv_gg_"
|
|
37
41
|
});
|
|
38
42
|
var RootPills = /*#__PURE__*/function (_Component) {
|
|
39
43
|
(0, _inherits2["default"])(RootPills, _Component);
|
|
@@ -52,31 +56,53 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
52
56
|
_this.handlers.value(value, e);
|
|
53
57
|
};
|
|
54
58
|
});
|
|
59
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeIndex", function (startIndex, type) {
|
|
60
|
+
var selectable = false;
|
|
61
|
+
while (!selectable && startIndex >= 0 && startIndex < _this.itemValues.length) {
|
|
62
|
+
if (type === 'increment') startIndex++;
|
|
63
|
+
if (type === 'decrement') startIndex--;
|
|
64
|
+
var element = _this.itemRefs[startIndex];
|
|
65
|
+
if ((element === null || element === void 0 ? void 0 : element.disabled) === false) {
|
|
66
|
+
selectable = true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return startIndex >= 0 && startIndex < _this.itemValues.length ? startIndex : undefined;
|
|
70
|
+
});
|
|
55
71
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (event) {
|
|
56
72
|
if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;
|
|
57
|
-
|
|
73
|
+
var behavior = _this.asProps.behavior;
|
|
74
|
+
if (behavior === 'radio' || behavior === 'auto') {
|
|
58
75
|
var selectedIndex = _this.itemValues.findIndex(function (value) {
|
|
59
76
|
return value === _this.asProps.value;
|
|
60
77
|
});
|
|
61
78
|
if (selectedIndex === -1) return;
|
|
62
|
-
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
79
|
+
selectedIndex = _this.changeIndex(selectedIndex, event.key === 'ArrowLeft' ? 'decrement' : 'increment');
|
|
80
|
+
if (selectedIndex !== undefined) {
|
|
81
|
+
var _this$itemRefs$select;
|
|
82
|
+
_this.handlers.value(_this.itemValues[selectedIndex], event);
|
|
83
|
+
(_this$itemRefs$select = _this.itemRefs[selectedIndex]) === null || _this$itemRefs$select === void 0 ? void 0 : _this$itemRefs$select.focus();
|
|
84
|
+
}
|
|
66
85
|
} else {
|
|
67
|
-
var _this$itemRefs$focuse;
|
|
68
86
|
var focusedIndex = _this.itemRefs.findIndex(function (item) {
|
|
69
87
|
return item === document.activeElement;
|
|
70
88
|
});
|
|
71
89
|
if (focusedIndex === -1) return;
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
|
|
90
|
+
focusedIndex = _this.changeIndex(focusedIndex, event.key === 'ArrowLeft' ? 'decrement' : 'increment');
|
|
91
|
+
if (focusedIndex !== undefined) {
|
|
92
|
+
var _this$itemRefs$focuse;
|
|
93
|
+
(_this$itemRefs$focuse = _this.itemRefs[focusedIndex]) === null || _this$itemRefs$focuse === void 0 ? void 0 : _this$itemRefs$focuse.focus();
|
|
94
|
+
}
|
|
75
95
|
}
|
|
76
96
|
});
|
|
77
97
|
return _this;
|
|
78
98
|
}
|
|
79
99
|
(0, _createClass2["default"])(RootPills, [{
|
|
100
|
+
key: "componentDidMount",
|
|
101
|
+
value: function componentDidMount() {
|
|
102
|
+
_logger["default"].warn(this.asProps.behavior === 'tabs', 'Use behavior `manual` instead of `tabs`. \n`tabs` is deprecated and will be removed in the next major release.', 'Pills');
|
|
103
|
+
_logger["default"].warn(this.asProps.behavior === 'radio', 'Use behavior `auto` (or nothing, it is default value) instead of `radio`. \n`radio` is deprecated and will be removed in the next major release.', 'Pills');
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
80
106
|
key: "uncontrolledProps",
|
|
81
107
|
value: function uncontrolledProps() {
|
|
82
108
|
return {
|
|
@@ -102,7 +128,7 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
102
128
|
disabled: disabled,
|
|
103
129
|
selected: value === props.value,
|
|
104
130
|
behavior: behavior,
|
|
105
|
-
tabIndex: behavior === 'tabs' ? 0 : -1,
|
|
131
|
+
tabIndex: behavior === 'tabs' || behavior === 'manual' ? 0 : -1,
|
|
106
132
|
onClick: this.bindHandlerClick(props.value)
|
|
107
133
|
};
|
|
108
134
|
}
|
|
@@ -119,7 +145,7 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
119
145
|
disabled = _this$asProps2.disabled,
|
|
120
146
|
behavior = _this$asProps2.behavior;
|
|
121
147
|
return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPills, _ref5.cn("SPills", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
|
|
122
|
-
"role": behavior === 'radio' ? 'radiogroup' : 'tablist',
|
|
148
|
+
"role": behavior === 'radio' || behavior === 'auto' ? 'radiogroup' : 'tablist',
|
|
123
149
|
"aria-disabled": disabled,
|
|
124
150
|
"onKeyDown": this.handleKeyDown
|
|
125
151
|
}, _ref))), /*#__PURE__*/_react["default"].createElement(_neighborLocation["default"], _ref5.cn("NeighborLocation", {
|
|
@@ -136,8 +162,8 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
136
162
|
return {
|
|
137
163
|
size: 'm',
|
|
138
164
|
defaultValue: null,
|
|
139
|
-
behavior: behavior !== null && behavior !== void 0 ? behavior : '
|
|
140
|
-
tabIndex: behavior === 'tabs' ? -1 : 0
|
|
165
|
+
behavior: behavior !== null && behavior !== void 0 ? behavior : 'auto',
|
|
166
|
+
tabIndex: behavior === 'tabs' || behavior === 'manual' ? -1 : 0
|
|
141
167
|
};
|
|
142
168
|
});
|
|
143
169
|
(0, _defineProperty2["default"])(RootPills, "enhance", [(0, _keyboardFocusEnhance["default"])()]);
|
|
@@ -155,7 +181,7 @@ function Pill(props) {
|
|
|
155
181
|
behavior = props.behavior;
|
|
156
182
|
var neighborLocation = (0, _neighborLocation.useNeighborLocationDetect)(index);
|
|
157
183
|
var roleAreaProps = {};
|
|
158
|
-
if (behavior === 'radio') {
|
|
184
|
+
if (behavior === 'radio' || behavior === 'auto') {
|
|
159
185
|
roleAreaProps.role = 'radio';
|
|
160
186
|
roleAreaProps['aria-checked'] = selected;
|
|
161
187
|
} else {
|
package/lib/cjs/Pills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pills.js","names":["_core","_interopRequireWildcard","require","_react","_interopRequireDefault","_flexBox","_neighborLocation","_keyboardFocusEnhance","_addonTextChildren","style","sstyled","insert","RootPills","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","value","e","handlers","event","key","asProps","behavior","selectedIndex","itemValues","findIndex","_this$itemRefs$focuse","focusedIndex","itemRefs","item","document","activeElement","focus","_createClass2","uncontrolledProps","getItemProps","props","index","_this2","_this$asProps","size","disabled","ref","node","selected","tabIndex","onClick","bindHandlerClick","render","_ref","_ref5","SPills","Box","_this$asProps2","Children","styles","controlsLength","createElement","cn","_objectSpread2","assignProps","handleKeyDown","Component","_ref9","defaultValue","keyboardFocusEnhance","Pill","_ref2","arguments[0]","_ref6","SPill","addonLeft","addonRight","neighborLocation","useNeighborLocationDetect","roleAreaProps","role","Pills","Item","Addon","tag","addonTextChildren","Text","enhance","_ref3","_ref7","SText","_ref4","_ref8","SAddon","createComponent","_default","exports"],"sources":["../../src/Pills.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation, { useNeighborLocationDetect } from '@semcore/neighbor-location';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\n\nimport style from './style/pills.shadow.css';\n\nclass RootPills extends Component {\n static displayName = 'Pills';\n static style = style;\n static defaultProps = ({ behavior }) => ({\n size: 'm',\n defaultValue: null,\n behavior: behavior ?? 'tabs',\n tabIndex: behavior === 'tabs' ? -1 : 0,\n });\n itemRefs = [];\n itemValues = [];\n static enhance = [keyboardFocusEnhance()];\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, index) {\n const { value, size, disabled, behavior } = this.asProps;\n this.itemValues[index] = props.value;\n return {\n ref: (node) => {\n this.itemRefs[index] = node;\n },\n index: index,\n size,\n disabled,\n selected: value === props.value,\n behavior,\n tabIndex: behavior === 'tabs' ? 0 : -1,\n onClick: this.bindHandlerClick(props.value),\n };\n }\n\n handleKeyDown = (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n if (this.asProps.behavior === 'radio') {\n let selectedIndex = this.itemValues.findIndex((value) => value === this.asProps.value);\n if (selectedIndex === -1) return;\n\n if (event.key === 'ArrowLeft') selectedIndex--;\n if (event.key === 'ArrowRight') selectedIndex++;\n if (selectedIndex < 0 || selectedIndex >= this.itemValues.length) return;\n\n this.handlers.value(this.itemValues[selectedIndex], event);\n } else {\n let focusedIndex = this.itemRefs.findIndex((item) => item === document.activeElement);\n if (focusedIndex === -1) return;\n\n if (event.key === 'ArrowLeft') focusedIndex--;\n if (event.key === 'ArrowRight') focusedIndex++;\n\n this.itemRefs[focusedIndex]?.focus();\n }\n };\n\n render() {\n const SPills = Root;\n const { Children, styles, controlsLength, disabled, behavior } = this.asProps;\n\n return sstyled(styles)(\n <SPills\n render={Box}\n role={behavior === 'radio' ? 'radiogroup' : 'tablist'}\n aria-disabled={disabled}\n onKeyDown={this.handleKeyDown}\n >\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n </SPills>,\n );\n }\n}\n\nfunction Pill(props) {\n const SPill = Root;\n const { Children, styles, addonLeft, addonRight, selected, disabled, index, behavior } = props;\n const neighborLocation = useNeighborLocationDetect(index);\n const roleAreaProps = {};\n if (behavior === 'radio') {\n roleAreaProps.role = 'radio';\n roleAreaProps['aria-checked'] = selected;\n } else {\n roleAreaProps.role = 'tab';\n roleAreaProps['aria-selected'] = selected;\n }\n return sstyled(styles)(\n <SPill\n render={Box}\n tag='button'\n type='button'\n neighborLocation={neighborLocation}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n {...roleAreaProps}\n >\n {addonLeft ? <Pills.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, Pills.Item.Text, Pills.Item.Addon)}\n {addonRight ? <Pills.Item.Addon tag={addonRight} /> : null}\n </SPill>,\n );\n}\n\nPill.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n return sstyled(props.styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n return sstyled(props.styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Pills = createComponent(RootPills, {\n Item: [Pill, { Text, Addon }],\n});\n\nexport default Pills;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pills.js","names":["_core","_interopRequireWildcard","require","_react","_interopRequireDefault","_flexBox","_neighborLocation","_keyboardFocusEnhance","_addonTextChildren","_logger","style","sstyled","insert","RootPills","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","value","e","handlers","startIndex","type","selectable","itemValues","element","itemRefs","disabled","undefined","event","key","behavior","asProps","selectedIndex","findIndex","changeIndex","_this$itemRefs$select","focus","focusedIndex","item","document","activeElement","_this$itemRefs$focuse","_createClass2","componentDidMount","log","warn","uncontrolledProps","getItemProps","props","index","_this2","_this$asProps","size","ref","node","selected","tabIndex","onClick","bindHandlerClick","render","_ref","_ref5","SPills","Box","_this$asProps2","Children","styles","controlsLength","createElement","cn","_objectSpread2","assignProps","handleKeyDown","Component","_ref9","defaultValue","keyboardFocusEnhance","Pill","_ref2","arguments[0]","_ref6","SPill","addonLeft","addonRight","neighborLocation","useNeighborLocationDetect","roleAreaProps","role","Pills","Item","Addon","tag","addonTextChildren","Text","enhance","_ref3","_ref7","SText","_ref4","_ref8","SAddon","createComponent","_default","exports"],"sources":["../../src/Pills.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation, { useNeighborLocationDetect } from '@semcore/neighbor-location';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport log from '@semcore/utils/lib/logger';\n\nimport style from './style/pills.shadow.css';\n\nclass RootPills extends Component {\n static displayName = 'Pills';\n static style = style;\n static defaultProps = ({ behavior }) => ({\n size: 'm',\n defaultValue: null,\n behavior: behavior ?? 'auto',\n tabIndex: behavior === 'tabs' || behavior === 'manual' ? -1 : 0,\n });\n itemRefs = [];\n itemValues = [];\n static enhance = [keyboardFocusEnhance()];\n\n componentDidMount() {\n log.warn(\n this.asProps.behavior === 'tabs',\n 'Use behavior `manual` instead of `tabs`. \\n`tabs` is deprecated and will be removed in the next major release.',\n 'Pills',\n );\n\n log.warn(\n this.asProps.behavior === 'radio',\n 'Use behavior `auto` (or nothing, it is default value) instead of `radio`. \\n`radio` is deprecated and will be removed in the next major release.',\n 'Pills',\n );\n }\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, index) {\n const { value, size, disabled, behavior } = this.asProps;\n this.itemValues[index] = props.value;\n return {\n ref: (node) => {\n this.itemRefs[index] = node;\n },\n index: index,\n size,\n disabled,\n selected: value === props.value,\n behavior,\n tabIndex: behavior === 'tabs' || behavior === 'manual' ? 0 : -1,\n onClick: this.bindHandlerClick(props.value),\n };\n }\n\n changeIndex = (startIndex, type) => {\n let selectable = false;\n\n while (!selectable && startIndex >= 0 && startIndex < this.itemValues.length) {\n if (type === 'increment') startIndex++;\n if (type === 'decrement') startIndex--;\n\n const element = this.itemRefs[startIndex];\n\n if (element?.disabled === false) {\n selectable = true;\n }\n }\n\n return startIndex >= 0 && startIndex < this.itemValues.length ? startIndex : undefined;\n };\n\n handleKeyDown = (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n const behavior = this.asProps.behavior;\n if (behavior === 'radio' || behavior === 'auto') {\n let selectedIndex = this.itemValues.findIndex((value) => value === this.asProps.value);\n if (selectedIndex === -1) return;\n\n selectedIndex = this.changeIndex(\n selectedIndex,\n event.key === 'ArrowLeft' ? 'decrement' : 'increment',\n );\n\n if (selectedIndex !== undefined) {\n this.handlers.value(this.itemValues[selectedIndex], event);\n this.itemRefs[selectedIndex]?.focus();\n }\n } else {\n let focusedIndex = this.itemRefs.findIndex((item) => item === document.activeElement);\n if (focusedIndex === -1) return;\n\n focusedIndex = this.changeIndex(\n focusedIndex,\n event.key === 'ArrowLeft' ? 'decrement' : 'increment',\n );\n\n if (focusedIndex !== undefined) {\n this.itemRefs[focusedIndex]?.focus();\n }\n }\n };\n\n render() {\n const SPills = Root;\n const { Children, styles, controlsLength, disabled, behavior } = this.asProps;\n\n return sstyled(styles)(\n <SPills\n render={Box}\n role={behavior === 'radio' || behavior === 'auto' ? 'radiogroup' : 'tablist'}\n aria-disabled={disabled}\n onKeyDown={this.handleKeyDown}\n >\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n </SPills>,\n );\n }\n}\n\nfunction Pill(props) {\n const SPill = Root;\n const { Children, styles, addonLeft, addonRight, selected, disabled, index, behavior } = props;\n const neighborLocation = useNeighborLocationDetect(index);\n const roleAreaProps = {};\n if (behavior === 'radio' || behavior === 'auto') {\n roleAreaProps.role = 'radio';\n roleAreaProps['aria-checked'] = selected;\n } else {\n roleAreaProps.role = 'tab';\n roleAreaProps['aria-selected'] = selected;\n }\n return sstyled(styles)(\n <SPill\n render={Box}\n tag='button'\n type='button'\n neighborLocation={neighborLocation}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n {...roleAreaProps}\n >\n {addonLeft ? <Pills.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, Pills.Item.Text, Pills.Item.Addon)}\n {addonRight ? <Pills.Item.Addon tag={addonRight} /> : null}\n </SPill>,\n );\n}\n\nPill.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n return sstyled(props.styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n return sstyled(props.styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Pills = createComponent(RootPills, {\n Item: [Pill, { Text, Addon }],\n});\n\nexport default Pills;\n"],"mappings":"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"}
|
package/lib/cjs/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { NeighborItemProps, NeighborLocationProps } from '@semcore/neighbor-location';\nimport { KeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nexport type PillsValue = string | number | boolean | null;\n\n/** @deprecated */\nexport interface IPillsProps<T extends PillsValue = PillsValue>\n extends PillsProps<T>,\n UnknownProperties {}\nexport type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProps &\n BoxProps & {\n /** Pills size */\n size?: 'l' | 'm';\n /** Disabled state */\n disabled?: boolean;\n /** Called when the selection is changed */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLSpanElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value for the selected pill */\n value?: T;\n /** Default value for the selected pill */\n defaultValue?: T;\n /** Sets semantic role for corresponding behavior,\n * when set to `radio` pressing left and right arrows\n * selects corresponding sibling pill.\n *\n * It's recommended to use `radio` behavior in forms\n * while `tabs` behavior for navigation and layout.\n * @default tabs\n */\n behavior?: 'tabs' | 'radio';\n };\n\n/** @deprecated */\nexport interface IPillProps extends PillProps, UnknownProperties {}\nexport type PillProps = BoxProps &\n NeighborItemProps &\n KeyboardFocusProps & {\n /** Pill value */\n value?: PillsValue;\n /** Disabled state */\n disabled?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Left addon text */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n/** @deprecated */\nexport interface IPillsContext extends PillsContext, UnknownProperties {}\nexport type PillsContext = {\n getItemProps: PropGetterFn;\n};\n\n/** @deprecated */\nexport interface IPillsHandlers extends PillsHandlers, UnknownProperties {}\nexport type PillsHandlers = {\n value: (value: PillsValue) => void;\n};\n\ntype IntergalacticPillsComponent = (<\n Value extends PillsValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n PillsProps<Value>,\n PillsContext,\n [handlers: PillsHandlers]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div'>;\n\ndeclare const Pills: IntergalacticPillsComponent & {\n Item: Intergalactic.Component<'button', PillProps, [handlers: PillsHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\nexport default Pills;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { NeighborItemProps, NeighborLocationProps } from '@semcore/neighbor-location';\nimport { KeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nexport type PillsValue = string | number | boolean | null;\n\n/** @deprecated */\nexport interface IPillsProps<T extends PillsValue = PillsValue>\n extends PillsProps<T>,\n UnknownProperties {}\nexport type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProps &\n KeyboardFocusProps &\n BoxProps & {\n /** Pills size */\n size?: 'l' | 'm';\n /** Disabled state */\n disabled?: boolean;\n /** Called when the selection is changed */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLSpanElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value for the selected pill */\n value?: T;\n /** Default value for the selected pill */\n defaultValue?: T;\n /** Sets semantic role for corresponding behavior,\n * when set to `radio` pressing left and right arrows\n * selects corresponding sibling pill.\n *\n * It's recommended to use `radio` behavior in forms\n * while `tabs` behavior for navigation and layout.\n * @default tabs\n */\n behavior?: /** @deprecated use `manual` */\n | 'tabs'\n /** @deprecated use `auto` */\n | 'radio'\n | 'auto'\n | 'manual';\n };\n\n/** @deprecated */\nexport interface IPillProps extends PillProps, UnknownProperties {}\nexport type PillProps = BoxProps &\n NeighborItemProps &\n KeyboardFocusProps & {\n /** Pill value */\n value?: PillsValue;\n /** Disabled state */\n disabled?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Left addon text */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n/** @deprecated */\nexport interface IPillsContext extends PillsContext, UnknownProperties {}\nexport type PillsContext = {\n getItemProps: PropGetterFn;\n};\n\n/** @deprecated */\nexport interface IPillsHandlers extends PillsHandlers, UnknownProperties {}\nexport type PillsHandlers = {\n value: (value: PillsValue) => void;\n};\n\ntype IntergalacticPillsComponent = (<\n Value extends PillsValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n PillsProps<Value>,\n PillsContext,\n [handlers: PillsHandlers]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div'>;\n\ndeclare const Pills: IntergalacticPillsComponent & {\n Item: Intergalactic.Component<'button', PillProps, [handlers: PillsHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\nexport default Pills;\n"],"mappings":""}
|
|
@@ -64,13 +64,15 @@ SPill[disabled] {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
SPills[keyboardFocused]
|
|
67
|
+
SPills[keyboardFocused][behavior=auto], SPills[keyboardFocused][behavior=radio] {
|
|
68
68
|
box-shadow: var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
SPills[keyboardFocused][behavior=manual], SPills[keyboardFocused][behavior=tag] {
|
|
72
|
+
> SPill[keyboardFocused] {
|
|
73
|
+
box-shadow: var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
|
|
74
|
+
z-index: 1;
|
|
75
|
+
}
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
SText {
|
package/lib/es6/Pills.js
CHANGED
|
@@ -16,21 +16,25 @@ import { Box } from '@semcore/flex-box';
|
|
|
16
16
|
import NeighborLocation, { useNeighborLocationDetect } from '@semcore/neighbor-location';
|
|
17
17
|
import keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';
|
|
18
18
|
import addonTextChildren from '@semcore/utils/lib/addonTextChildren';
|
|
19
|
+
import log from '@semcore/utils/lib/logger';
|
|
19
20
|
/*__reshadow-styles__:"./style/pills.shadow.css"*/
|
|
20
|
-
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".
|
|
21
|
-
"__SPills": "
|
|
22
|
-
"__SPill": "
|
|
23
|
-
"_selected": "
|
|
24
|
-
"_keyboardFocused": "
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
21
|
+
var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SPill_njfhv_gg_,.___SPills_njfhv_gg_{display:inline-flex;align-items:center;justify-content:center;outline:0}.___SPills_njfhv_gg_{isolation:isolate}.___SPill_njfhv_gg_{line-height:normal;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;background:var(--intergalactic-bg-primary-neutral, #ffffff);border:1px solid var(--intergalactic-border-primary, #c4c7cf);border-radius:var(--intergalactic-control-rounded, 6px)}.___SPill_njfhv_gg_::-moz-focus-inner{border:0;padding:0}.___SPill_njfhv_gg_:active,.___SPill_njfhv_gg_:focus{outline:0;-webkit-text-decoration:none;text-decoration:none}@media (hover:hover){.___SPill_njfhv_gg_:hover{outline:0;-webkit-text-decoration:none;text-decoration:none;background:var(--intergalactic-bg-primary-neutral-hover, #f4f5f9)}}.___SPill_njfhv_gg_.__selected_njfhv_gg_{background:var(--intergalactic-control-secondary-info, rgba(0, 143, 248, 0.1));border-color:var(--intergalactic-border-info-active, #006dca);z-index:1}.___SPill_njfhv_gg_.__disabled_njfhv_gg_{cursor:default;pointer-events:none}.___SPill_njfhv_gg_.__disabled_njfhv_gg_>*{opacity:var(--intergalactic-disabled-opacity, 0.3)}.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_auto_njfhv_gg_,.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_radio_njfhv_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_manual_njfhv_gg_>.___SPill_njfhv_gg_.__keyboardFocused_njfhv_gg_,.___SPills_njfhv_gg_.__keyboardFocused_njfhv_gg_._behavior_tag_njfhv_gg_>.___SPill_njfhv_gg_.__keyboardFocused_njfhv_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));z-index:1}.___SText_njfhv_gg_{color:var(--intergalactic-text-primary, #191b23);display:inline-flex}.___SAddon_njfhv_gg_{color:var(--intergalactic-text-secondary, #6c6e79);display:inline-flex;align-items:center;justify-content:center}.___SPill_njfhv_gg_._size_m_njfhv_gg_{height:var(--intergalactic-form-control-m, 28px);min-width:var(--intergalactic-form-control-m, 28px);font-size:var(--intergalactic-fs-200, 14px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SText_njfhv_gg_,.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SText_njfhv_gg_{margin-left:var(--intergalactic-spacing-2x, 8px);margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):first-child{margin-left:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):last-child{margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_m_njfhv_gg_ .___SAddon_njfhv_gg_:only-child{margin-left:var(--intergalactic-spacing-2x, 8px);margin-right:var(--intergalactic-spacing-2x, 8px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_{height:var(--intergalactic-form-control-l, 40px);min-width:var(--intergalactic-form-control-l, 40px);font-size:var(--intergalactic-fs-300, 16px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:only-child,.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SText_njfhv_gg_:only-child{margin-left:var(--intergalactic-spacing-3x, 12px);margin-right:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):first-child{margin-left:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._size_l_njfhv_gg_ .___SAddon_njfhv_gg_:not(:only-child):last-child{margin-right:var(--intergalactic-spacing-3x, 12px)}.___SPill_njfhv_gg_._neighborLocation_right_njfhv_gg_{border-top-right-radius:0;border-bottom-right-radius:0}.___SPill_njfhv_gg_._neighborLocation_both_njfhv_gg_{border-radius:0;margin-left:-1px}.___SPill_njfhv_gg_._neighborLocation_left_njfhv_gg_{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}" /*__inner_css_end__*/, "njfhv_gg_") /*__reshadow_css_end__*/, {
|
|
22
|
+
"__SPills": "___SPills_njfhv_gg_",
|
|
23
|
+
"__SPill": "___SPill_njfhv_gg_",
|
|
24
|
+
"_selected": "__selected_njfhv_gg_",
|
|
25
|
+
"_keyboardFocused": "__keyboardFocused_njfhv_gg_",
|
|
26
|
+
"_behavior_auto": "_behavior_auto_njfhv_gg_",
|
|
27
|
+
"_behavior_radio": "_behavior_radio_njfhv_gg_",
|
|
28
|
+
"__SText": "___SText_njfhv_gg_",
|
|
29
|
+
"__SAddon": "___SAddon_njfhv_gg_",
|
|
30
|
+
"_neighborLocation_right": "_neighborLocation_right_njfhv_gg_",
|
|
31
|
+
"_neighborLocation_both": "_neighborLocation_both_njfhv_gg_",
|
|
32
|
+
"_neighborLocation_left": "_neighborLocation_left_njfhv_gg_",
|
|
33
|
+
"_disabled": "__disabled_njfhv_gg_",
|
|
34
|
+
"_behavior_manual": "_behavior_manual_njfhv_gg_",
|
|
35
|
+
"_behavior_tag": "_behavior_tag_njfhv_gg_",
|
|
36
|
+
"_size_m": "_size_m_njfhv_gg_",
|
|
37
|
+
"_size_l": "_size_l_njfhv_gg_"
|
|
34
38
|
});
|
|
35
39
|
var RootPills = /*#__PURE__*/function (_Component) {
|
|
36
40
|
_inherits(RootPills, _Component);
|
|
@@ -49,31 +53,53 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
49
53
|
_this.handlers.value(value, e);
|
|
50
54
|
};
|
|
51
55
|
});
|
|
56
|
+
_defineProperty(_assertThisInitialized(_this), "changeIndex", function (startIndex, type) {
|
|
57
|
+
var selectable = false;
|
|
58
|
+
while (!selectable && startIndex >= 0 && startIndex < _this.itemValues.length) {
|
|
59
|
+
if (type === 'increment') startIndex++;
|
|
60
|
+
if (type === 'decrement') startIndex--;
|
|
61
|
+
var element = _this.itemRefs[startIndex];
|
|
62
|
+
if ((element === null || element === void 0 ? void 0 : element.disabled) === false) {
|
|
63
|
+
selectable = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return startIndex >= 0 && startIndex < _this.itemValues.length ? startIndex : undefined;
|
|
67
|
+
});
|
|
52
68
|
_defineProperty(_assertThisInitialized(_this), "handleKeyDown", function (event) {
|
|
53
69
|
if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;
|
|
54
|
-
|
|
70
|
+
var behavior = _this.asProps.behavior;
|
|
71
|
+
if (behavior === 'radio' || behavior === 'auto') {
|
|
55
72
|
var selectedIndex = _this.itemValues.findIndex(function (value) {
|
|
56
73
|
return value === _this.asProps.value;
|
|
57
74
|
});
|
|
58
75
|
if (selectedIndex === -1) return;
|
|
59
|
-
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
76
|
+
selectedIndex = _this.changeIndex(selectedIndex, event.key === 'ArrowLeft' ? 'decrement' : 'increment');
|
|
77
|
+
if (selectedIndex !== undefined) {
|
|
78
|
+
var _this$itemRefs$select;
|
|
79
|
+
_this.handlers.value(_this.itemValues[selectedIndex], event);
|
|
80
|
+
(_this$itemRefs$select = _this.itemRefs[selectedIndex]) === null || _this$itemRefs$select === void 0 ? void 0 : _this$itemRefs$select.focus();
|
|
81
|
+
}
|
|
63
82
|
} else {
|
|
64
|
-
var _this$itemRefs$focuse;
|
|
65
83
|
var focusedIndex = _this.itemRefs.findIndex(function (item) {
|
|
66
84
|
return item === document.activeElement;
|
|
67
85
|
});
|
|
68
86
|
if (focusedIndex === -1) return;
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
|
|
87
|
+
focusedIndex = _this.changeIndex(focusedIndex, event.key === 'ArrowLeft' ? 'decrement' : 'increment');
|
|
88
|
+
if (focusedIndex !== undefined) {
|
|
89
|
+
var _this$itemRefs$focuse;
|
|
90
|
+
(_this$itemRefs$focuse = _this.itemRefs[focusedIndex]) === null || _this$itemRefs$focuse === void 0 ? void 0 : _this$itemRefs$focuse.focus();
|
|
91
|
+
}
|
|
72
92
|
}
|
|
73
93
|
});
|
|
74
94
|
return _this;
|
|
75
95
|
}
|
|
76
96
|
_createClass(RootPills, [{
|
|
97
|
+
key: "componentDidMount",
|
|
98
|
+
value: function componentDidMount() {
|
|
99
|
+
log.warn(this.asProps.behavior === 'tabs', 'Use behavior `manual` instead of `tabs`. \n`tabs` is deprecated and will be removed in the next major release.', 'Pills');
|
|
100
|
+
log.warn(this.asProps.behavior === 'radio', 'Use behavior `auto` (or nothing, it is default value) instead of `radio`. \n`radio` is deprecated and will be removed in the next major release.', 'Pills');
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
77
103
|
key: "uncontrolledProps",
|
|
78
104
|
value: function uncontrolledProps() {
|
|
79
105
|
return {
|
|
@@ -99,7 +125,7 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
99
125
|
disabled: disabled,
|
|
100
126
|
selected: value === props.value,
|
|
101
127
|
behavior: behavior,
|
|
102
|
-
tabIndex: behavior === 'tabs' ? 0 : -1,
|
|
128
|
+
tabIndex: behavior === 'tabs' || behavior === 'manual' ? 0 : -1,
|
|
103
129
|
onClick: this.bindHandlerClick(props.value)
|
|
104
130
|
};
|
|
105
131
|
}
|
|
@@ -116,7 +142,7 @@ var RootPills = /*#__PURE__*/function (_Component) {
|
|
|
116
142
|
disabled = _this$asProps2.disabled,
|
|
117
143
|
behavior = _this$asProps2.behavior;
|
|
118
144
|
return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(SPills, _ref5.cn("SPills", _objectSpread({}, _assignProps({
|
|
119
|
-
"role": behavior === 'radio' ? 'radiogroup' : 'tablist',
|
|
145
|
+
"role": behavior === 'radio' || behavior === 'auto' ? 'radiogroup' : 'tablist',
|
|
120
146
|
"aria-disabled": disabled,
|
|
121
147
|
"onKeyDown": this.handleKeyDown
|
|
122
148
|
}, _ref))), /*#__PURE__*/React.createElement(NeighborLocation, _ref5.cn("NeighborLocation", {
|
|
@@ -133,8 +159,8 @@ _defineProperty(RootPills, "defaultProps", function (_ref9) {
|
|
|
133
159
|
return {
|
|
134
160
|
size: 'm',
|
|
135
161
|
defaultValue: null,
|
|
136
|
-
behavior: behavior !== null && behavior !== void 0 ? behavior : '
|
|
137
|
-
tabIndex: behavior === 'tabs' ? -1 : 0
|
|
162
|
+
behavior: behavior !== null && behavior !== void 0 ? behavior : 'auto',
|
|
163
|
+
tabIndex: behavior === 'tabs' || behavior === 'manual' ? -1 : 0
|
|
138
164
|
};
|
|
139
165
|
});
|
|
140
166
|
_defineProperty(RootPills, "enhance", [keyboardFocusEnhance()]);
|
|
@@ -152,7 +178,7 @@ function Pill(props) {
|
|
|
152
178
|
behavior = props.behavior;
|
|
153
179
|
var neighborLocation = useNeighborLocationDetect(index);
|
|
154
180
|
var roleAreaProps = {};
|
|
155
|
-
if (behavior === 'radio') {
|
|
181
|
+
if (behavior === 'radio' || behavior === 'auto') {
|
|
156
182
|
roleAreaProps.role = 'radio';
|
|
157
183
|
roleAreaProps['aria-checked'] = selected;
|
|
158
184
|
} else {
|
package/lib/es6/Pills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pills.js","names":["React","createComponent","Component","sstyled","Root","Box","NeighborLocation","useNeighborLocationDetect","keyboardFocusEnhance","addonTextChildren","style","_sstyled","insert","RootPills","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","value","e","handlers","event","key","asProps","behavior","selectedIndex","itemValues","findIndex","_this$itemRefs$focuse","focusedIndex","itemRefs","item","document","activeElement","focus","_createClass","uncontrolledProps","getItemProps","props","index","_this2","_this$asProps","size","disabled","ref","node","selected","tabIndex","onClick","bindHandlerClick","render","_ref","_ref5","SPills","_this$asProps2","Children","styles","controlsLength","createElement","cn","_objectSpread","_assignProps","handleKeyDown","_ref9","defaultValue","Pill","_ref2","arguments[0]","_ref6","SPill","addonLeft","addonRight","neighborLocation","roleAreaProps","role","_assignProps2","Pills","Item","Addon","tag","Text","enhance","_ref3","_ref7","SText","_assignProps3","_ref4","_ref8","SAddon","_assignProps4"],"sources":["../../src/Pills.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation, { useNeighborLocationDetect } from '@semcore/neighbor-location';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\n\nimport style from './style/pills.shadow.css';\n\nclass RootPills extends Component {\n static displayName = 'Pills';\n static style = style;\n static defaultProps = ({ behavior }) => ({\n size: 'm',\n defaultValue: null,\n behavior: behavior ?? 'tabs',\n tabIndex: behavior === 'tabs' ? -1 : 0,\n });\n itemRefs = [];\n itemValues = [];\n static enhance = [keyboardFocusEnhance()];\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, index) {\n const { value, size, disabled, behavior } = this.asProps;\n this.itemValues[index] = props.value;\n return {\n ref: (node) => {\n this.itemRefs[index] = node;\n },\n index: index,\n size,\n disabled,\n selected: value === props.value,\n behavior,\n tabIndex: behavior === 'tabs' ? 0 : -1,\n onClick: this.bindHandlerClick(props.value),\n };\n }\n\n handleKeyDown = (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n if (this.asProps.behavior === 'radio') {\n let selectedIndex = this.itemValues.findIndex((value) => value === this.asProps.value);\n if (selectedIndex === -1) return;\n\n if (event.key === 'ArrowLeft') selectedIndex--;\n if (event.key === 'ArrowRight') selectedIndex++;\n if (selectedIndex < 0 || selectedIndex >= this.itemValues.length) return;\n\n this.handlers.value(this.itemValues[selectedIndex], event);\n } else {\n let focusedIndex = this.itemRefs.findIndex((item) => item === document.activeElement);\n if (focusedIndex === -1) return;\n\n if (event.key === 'ArrowLeft') focusedIndex--;\n if (event.key === 'ArrowRight') focusedIndex++;\n\n this.itemRefs[focusedIndex]?.focus();\n }\n };\n\n render() {\n const SPills = Root;\n const { Children, styles, controlsLength, disabled, behavior } = this.asProps;\n\n return sstyled(styles)(\n <SPills\n render={Box}\n role={behavior === 'radio' ? 'radiogroup' : 'tablist'}\n aria-disabled={disabled}\n onKeyDown={this.handleKeyDown}\n >\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n </SPills>,\n );\n }\n}\n\nfunction Pill(props) {\n const SPill = Root;\n const { Children, styles, addonLeft, addonRight, selected, disabled, index, behavior } = props;\n const neighborLocation = useNeighborLocationDetect(index);\n const roleAreaProps = {};\n if (behavior === 'radio') {\n roleAreaProps.role = 'radio';\n roleAreaProps['aria-checked'] = selected;\n } else {\n roleAreaProps.role = 'tab';\n roleAreaProps['aria-selected'] = selected;\n }\n return sstyled(styles)(\n <SPill\n render={Box}\n tag='button'\n type='button'\n neighborLocation={neighborLocation}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n {...roleAreaProps}\n >\n {addonLeft ? <Pills.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, Pills.Item.Text, Pills.Item.Addon)}\n {addonRight ? <Pills.Item.Addon tag={addonRight} /> : null}\n </SPill>,\n );\n}\n\nPill.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n return sstyled(props.styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n return sstyled(props.styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Pills = createComponent(RootPills, {\n Item: [Pill, { Text, Addon }],\n});\n\nexport default Pills;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pills.js","names":["React","createComponent","Component","sstyled","Root","Box","NeighborLocation","useNeighborLocationDetect","keyboardFocusEnhance","addonTextChildren","log","style","_sstyled","insert","RootPills","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","value","e","handlers","startIndex","type","selectable","itemValues","element","itemRefs","disabled","undefined","event","key","behavior","asProps","selectedIndex","findIndex","changeIndex","_this$itemRefs$select","focus","focusedIndex","item","document","activeElement","_this$itemRefs$focuse","_createClass","componentDidMount","warn","uncontrolledProps","getItemProps","props","index","_this2","_this$asProps","size","ref","node","selected","tabIndex","onClick","bindHandlerClick","render","_ref","_ref5","SPills","_this$asProps2","Children","styles","controlsLength","createElement","cn","_objectSpread","_assignProps","handleKeyDown","_ref9","defaultValue","Pill","_ref2","arguments[0]","_ref6","SPill","addonLeft","addonRight","neighborLocation","roleAreaProps","role","_assignProps2","Pills","Item","Addon","tag","Text","enhance","_ref3","_ref7","SText","_assignProps3","_ref4","_ref8","SAddon","_assignProps4"],"sources":["../../src/Pills.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport { Box } from '@semcore/flex-box';\nimport NeighborLocation, { useNeighborLocationDetect } from '@semcore/neighbor-location';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport addonTextChildren from '@semcore/utils/lib/addonTextChildren';\nimport log from '@semcore/utils/lib/logger';\n\nimport style from './style/pills.shadow.css';\n\nclass RootPills extends Component {\n static displayName = 'Pills';\n static style = style;\n static defaultProps = ({ behavior }) => ({\n size: 'm',\n defaultValue: null,\n behavior: behavior ?? 'auto',\n tabIndex: behavior === 'tabs' || behavior === 'manual' ? -1 : 0,\n });\n itemRefs = [];\n itemValues = [];\n static enhance = [keyboardFocusEnhance()];\n\n componentDidMount() {\n log.warn(\n this.asProps.behavior === 'tabs',\n 'Use behavior `manual` instead of `tabs`. \\n`tabs` is deprecated and will be removed in the next major release.',\n 'Pills',\n );\n\n log.warn(\n this.asProps.behavior === 'radio',\n 'Use behavior `auto` (or nothing, it is default value) instead of `radio`. \\n`radio` is deprecated and will be removed in the next major release.',\n 'Pills',\n );\n }\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, index) {\n const { value, size, disabled, behavior } = this.asProps;\n this.itemValues[index] = props.value;\n return {\n ref: (node) => {\n this.itemRefs[index] = node;\n },\n index: index,\n size,\n disabled,\n selected: value === props.value,\n behavior,\n tabIndex: behavior === 'tabs' || behavior === 'manual' ? 0 : -1,\n onClick: this.bindHandlerClick(props.value),\n };\n }\n\n changeIndex = (startIndex, type) => {\n let selectable = false;\n\n while (!selectable && startIndex >= 0 && startIndex < this.itemValues.length) {\n if (type === 'increment') startIndex++;\n if (type === 'decrement') startIndex--;\n\n const element = this.itemRefs[startIndex];\n\n if (element?.disabled === false) {\n selectable = true;\n }\n }\n\n return startIndex >= 0 && startIndex < this.itemValues.length ? startIndex : undefined;\n };\n\n handleKeyDown = (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n const behavior = this.asProps.behavior;\n if (behavior === 'radio' || behavior === 'auto') {\n let selectedIndex = this.itemValues.findIndex((value) => value === this.asProps.value);\n if (selectedIndex === -1) return;\n\n selectedIndex = this.changeIndex(\n selectedIndex,\n event.key === 'ArrowLeft' ? 'decrement' : 'increment',\n );\n\n if (selectedIndex !== undefined) {\n this.handlers.value(this.itemValues[selectedIndex], event);\n this.itemRefs[selectedIndex]?.focus();\n }\n } else {\n let focusedIndex = this.itemRefs.findIndex((item) => item === document.activeElement);\n if (focusedIndex === -1) return;\n\n focusedIndex = this.changeIndex(\n focusedIndex,\n event.key === 'ArrowLeft' ? 'decrement' : 'increment',\n );\n\n if (focusedIndex !== undefined) {\n this.itemRefs[focusedIndex]?.focus();\n }\n }\n };\n\n render() {\n const SPills = Root;\n const { Children, styles, controlsLength, disabled, behavior } = this.asProps;\n\n return sstyled(styles)(\n <SPills\n render={Box}\n role={behavior === 'radio' || behavior === 'auto' ? 'radiogroup' : 'tablist'}\n aria-disabled={disabled}\n onKeyDown={this.handleKeyDown}\n >\n <NeighborLocation controlsLength={controlsLength}>\n <Children />\n </NeighborLocation>\n </SPills>,\n );\n }\n}\n\nfunction Pill(props) {\n const SPill = Root;\n const { Children, styles, addonLeft, addonRight, selected, disabled, index, behavior } = props;\n const neighborLocation = useNeighborLocationDetect(index);\n const roleAreaProps = {};\n if (behavior === 'radio' || behavior === 'auto') {\n roleAreaProps.role = 'radio';\n roleAreaProps['aria-checked'] = selected;\n } else {\n roleAreaProps.role = 'tab';\n roleAreaProps['aria-selected'] = selected;\n }\n return sstyled(styles)(\n <SPill\n render={Box}\n tag='button'\n type='button'\n neighborLocation={neighborLocation}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n {...roleAreaProps}\n >\n {addonLeft ? <Pills.Item.Addon tag={addonLeft} /> : null}\n {addonTextChildren(Children, Pills.Item.Text, Pills.Item.Addon)}\n {addonRight ? <Pills.Item.Addon tag={addonRight} /> : null}\n </SPill>,\n );\n}\n\nPill.enhance = [keyboardFocusEnhance()];\n\nfunction Text(props) {\n const SText = Root;\n return sstyled(props.styles)(<SText render={Box} tag='span' />);\n}\n\nfunction Addon(props) {\n const SAddon = Root;\n return sstyled(props.styles)(<SAddon render={Box} tag='span' />);\n}\n\nconst Pills = createComponent(RootPills, {\n Item: [Pill, { Text, Addon }],\n});\n\nexport default Pills;\n"],"mappings":"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"}
|
package/lib/es6/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { NeighborItemProps, NeighborLocationProps } from '@semcore/neighbor-location';\nimport { KeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nexport type PillsValue = string | number | boolean | null;\n\n/** @deprecated */\nexport interface IPillsProps<T extends PillsValue = PillsValue>\n extends PillsProps<T>,\n UnknownProperties {}\nexport type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProps &\n BoxProps & {\n /** Pills size */\n size?: 'l' | 'm';\n /** Disabled state */\n disabled?: boolean;\n /** Called when the selection is changed */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLSpanElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value for the selected pill */\n value?: T;\n /** Default value for the selected pill */\n defaultValue?: T;\n /** Sets semantic role for corresponding behavior,\n * when set to `radio` pressing left and right arrows\n * selects corresponding sibling pill.\n *\n * It's recommended to use `radio` behavior in forms\n * while `tabs` behavior for navigation and layout.\n * @default tabs\n */\n behavior?: 'tabs' | 'radio';\n };\n\n/** @deprecated */\nexport interface IPillProps extends PillProps, UnknownProperties {}\nexport type PillProps = BoxProps &\n NeighborItemProps &\n KeyboardFocusProps & {\n /** Pill value */\n value?: PillsValue;\n /** Disabled state */\n disabled?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Left addon text */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n/** @deprecated */\nexport interface IPillsContext extends PillsContext, UnknownProperties {}\nexport type PillsContext = {\n getItemProps: PropGetterFn;\n};\n\n/** @deprecated */\nexport interface IPillsHandlers extends PillsHandlers, UnknownProperties {}\nexport type PillsHandlers = {\n value: (value: PillsValue) => void;\n};\n\ntype IntergalacticPillsComponent = (<\n Value extends PillsValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n PillsProps<Value>,\n PillsContext,\n [handlers: PillsHandlers]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div'>;\n\ndeclare const Pills: IntergalacticPillsComponent & {\n Item: Intergalactic.Component<'button', PillProps, [handlers: PillsHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\nexport default Pills;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { NeighborItemProps, NeighborLocationProps } from '@semcore/neighbor-location';\nimport { KeyboardFocusProps } from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\n\nexport type PillsValue = string | number | boolean | null;\n\n/** @deprecated */\nexport interface IPillsProps<T extends PillsValue = PillsValue>\n extends PillsProps<T>,\n UnknownProperties {}\nexport type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProps &\n KeyboardFocusProps &\n BoxProps & {\n /** Pills size */\n size?: 'l' | 'm';\n /** Disabled state */\n disabled?: boolean;\n /** Called when the selection is changed */\n onChange?:\n | ((value: T, e?: React.SyntheticEvent<HTMLSpanElement>) => void)\n | React.Dispatch<React.SetStateAction<T>>;\n /** Value for the selected pill */\n value?: T;\n /** Default value for the selected pill */\n defaultValue?: T;\n /** Sets semantic role for corresponding behavior,\n * when set to `radio` pressing left and right arrows\n * selects corresponding sibling pill.\n *\n * It's recommended to use `radio` behavior in forms\n * while `tabs` behavior for navigation and layout.\n * @default tabs\n */\n behavior?: /** @deprecated use `manual` */\n | 'tabs'\n /** @deprecated use `auto` */\n | 'radio'\n | 'auto'\n | 'manual';\n };\n\n/** @deprecated */\nexport interface IPillProps extends PillProps, UnknownProperties {}\nexport type PillProps = BoxProps &\n NeighborItemProps &\n KeyboardFocusProps & {\n /** Pill value */\n value?: PillsValue;\n /** Disabled state */\n disabled?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Left addon text */\n addonLeft?: React.ElementType;\n /** Right addon tag */\n addonRight?: React.ElementType;\n };\n\n/** @deprecated */\nexport interface IPillsContext extends PillsContext, UnknownProperties {}\nexport type PillsContext = {\n getItemProps: PropGetterFn;\n};\n\n/** @deprecated */\nexport interface IPillsHandlers extends PillsHandlers, UnknownProperties {}\nexport type PillsHandlers = {\n value: (value: PillsValue) => void;\n};\n\ntype IntergalacticPillsComponent = (<\n Value extends PillsValue,\n Tag extends Intergalactic.Tag = 'div',\n>(\n props: Intergalactic.InternalTypings.ComponentProps<\n Tag,\n 'div',\n PillsProps<Value>,\n PillsContext,\n [handlers: PillsHandlers]\n >,\n) => Intergalactic.InternalTypings.ComponentRenderingResults) &\n Intergalactic.InternalTypings.ComponentAdditive<'div'>;\n\ndeclare const Pills: IntergalacticPillsComponent & {\n Item: Intergalactic.Component<'button', PillProps, [handlers: PillsHandlers]> & {\n Text: typeof Box;\n Addon: typeof Box;\n };\n};\n\nexport default Pills;\n"],"mappings":""}
|
|
@@ -64,13 +64,15 @@ SPill[disabled] {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
SPills[keyboardFocused]
|
|
67
|
+
SPills[keyboardFocused][behavior=auto], SPills[keyboardFocused][behavior=radio] {
|
|
68
68
|
box-shadow: var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
SPills[keyboardFocused][behavior=manual], SPills[keyboardFocused][behavior=tag] {
|
|
72
|
+
> SPill[keyboardFocused] {
|
|
73
|
+
box-shadow: var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5));
|
|
74
|
+
z-index: 1;
|
|
75
|
+
}
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
SText {
|
package/lib/types/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface IPillsProps<T extends PillsValue = PillsValue>
|
|
|
11
11
|
extends PillsProps<T>,
|
|
12
12
|
UnknownProperties {}
|
|
13
13
|
export type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProps &
|
|
14
|
+
KeyboardFocusProps &
|
|
14
15
|
BoxProps & {
|
|
15
16
|
/** Pills size */
|
|
16
17
|
size?: 'l' | 'm';
|
|
@@ -32,7 +33,12 @@ export type PillsProps<T extends PillsValue = PillsValue> = NeighborLocationProp
|
|
|
32
33
|
* while `tabs` behavior for navigation and layout.
|
|
33
34
|
* @default tabs
|
|
34
35
|
*/
|
|
35
|
-
behavior?:
|
|
36
|
+
behavior?: /** @deprecated use `manual` */
|
|
37
|
+
| 'tabs'
|
|
38
|
+
/** @deprecated use `auto` */
|
|
39
|
+
| 'radio'
|
|
40
|
+
| 'auto'
|
|
41
|
+
| 'manual';
|
|
36
42
|
};
|
|
37
43
|
|
|
38
44
|
/** @deprecated */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/pills",
|
|
3
3
|
"description": "Semrush Pills Component",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.12.0-prerelease.1",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es6/index.js",
|
|
7
7
|
"typings": "lib/types/index.d.ts",
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"author": "UI-kit team <ui-kit-team@semrush.com>",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@semcore/flex-box": "5.
|
|
13
|
-
"@semcore/neighbor-location": "4.
|
|
14
|
-
"@semcore/utils": "4.
|
|
12
|
+
"@semcore/flex-box": "5.11.0-prerelease.1",
|
|
13
|
+
"@semcore/neighbor-location": "4.10.0-prerelease.1",
|
|
14
|
+
"@semcore/utils": "4.13.0-prerelease.1"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@semcore/core": "^2.
|
|
17
|
+
"@semcore/core": "^2.10.0-prerelease.1",
|
|
18
18
|
"react": "16.8 - 18",
|
|
19
19
|
"react-dom": "16.8 - 18"
|
|
20
20
|
},
|