@automattic/vip-design-system 0.25.1 → 0.26.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/build/system/NewForm/FormAutocomplete.js +22 -6
- package/build/system/NewForm/FormAutocomplete.stories.js +13 -2
- package/build/system/NewTabs/Tabs.js +61 -0
- package/build/system/NewTabs/Tabs.stories.js +55 -0
- package/build/system/NewTabs/TabsContent.js +50 -0
- package/build/system/NewTabs/TabsList.js +49 -0
- package/build/system/NewTabs/TabsTrigger.js +83 -0
- package/build/system/NewTabs/index.js +19 -0
- package/build/system/index.js +7 -0
- package/package.json +2 -1
- package/src/system/NewForm/FormAutocomplete.js +17 -6
- package/src/system/NewForm/FormAutocomplete.stories.jsx +13 -0
- package/src/system/NewTabs/Tabs.js +44 -0
- package/src/system/NewTabs/Tabs.stories.jsx +29 -0
- package/src/system/NewTabs/TabsContent.js +33 -0
- package/src/system/NewTabs/TabsList.js +33 -0
- package/src/system/NewTabs/TabsTrigger.js +57 -0
- package/src/system/NewTabs/index.js +9 -0
- package/src/system/index.js +5 -0
|
@@ -79,6 +79,9 @@ var defaultStyles = {
|
|
|
79
79
|
'&.autocomplete__input--focused': {
|
|
80
80
|
outlineWidth: 0,
|
|
81
81
|
boxShadow: 'none'
|
|
82
|
+
},
|
|
83
|
+
'&.autocomplete__input--show-all-values': {
|
|
84
|
+
paddingRight: '40px'
|
|
82
85
|
}
|
|
83
86
|
},
|
|
84
87
|
'& .autocomplete__menu': {
|
|
@@ -93,8 +96,7 @@ var defaultStyles = {
|
|
|
93
96
|
fontSize: 'inherit'
|
|
94
97
|
},
|
|
95
98
|
'& .autocomplete__wrapper': {
|
|
96
|
-
width: '100%'
|
|
97
|
-
paddingRight: '40px'
|
|
99
|
+
width: '100%'
|
|
98
100
|
},
|
|
99
101
|
'& .autocomplete__input--show-all-values': {
|
|
100
102
|
paddingRight: 0
|
|
@@ -122,6 +124,10 @@ var FormAutocomplete = /*#__PURE__*/_react["default"].forwardRef(function (_ref,
|
|
|
122
124
|
id = _ref$id === void 0 ? 'vip-autocomplete' : _ref$id,
|
|
123
125
|
props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
|
|
124
126
|
|
|
127
|
+
var _useState = (0, _react.useState)(false),
|
|
128
|
+
isDirty = _useState[0],
|
|
129
|
+
setIsDirty = _useState[1];
|
|
130
|
+
|
|
125
131
|
var SelectLabel = function SelectLabel() {
|
|
126
132
|
return (0, _jsxRuntime.jsx)(_Label.Label, {
|
|
127
133
|
htmlFor: forLabel || id,
|
|
@@ -155,19 +161,29 @@ var FormAutocomplete = /*#__PURE__*/_react["default"].forwardRef(function (_ref,
|
|
|
155
161
|
}
|
|
156
162
|
}, [onChange, getOptionByLabel]);
|
|
157
163
|
var suggest = (0, _react.useCallback)(function (query, populateResults) {
|
|
158
|
-
var data = options
|
|
159
|
-
|
|
160
|
-
|
|
164
|
+
var data = options;
|
|
165
|
+
|
|
166
|
+
if (isDirty) {
|
|
167
|
+
data = options.filter(function (option) {
|
|
168
|
+
return optionLabel(option).toLowerCase().indexOf(query.toLowerCase()) >= 0;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
161
172
|
populateResults(data.map(function (option) {
|
|
162
173
|
return optionLabel(option);
|
|
163
174
|
}));
|
|
164
|
-
}, [options]);
|
|
175
|
+
}, [options, isDirty]);
|
|
165
176
|
(0, _react.useEffect)(function () {
|
|
166
177
|
global.document.querySelector('.autocomplete__input').setAttribute('aria-activedescendant', '');
|
|
167
178
|
}, []);
|
|
168
179
|
(0, _react.useEffect)(function () {
|
|
169
180
|
global.document.querySelector('.autocomplete__menu').setAttribute('aria-label', label + " list");
|
|
170
181
|
}, [label]);
|
|
182
|
+
(0, _react.useEffect)(function () {
|
|
183
|
+
global.document.querySelector("#" + id).addEventListener('keydown', function () {
|
|
184
|
+
setIsDirty(true);
|
|
185
|
+
});
|
|
186
|
+
}, [setIsDirty]);
|
|
171
187
|
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
172
188
|
children: [label && !isInline && (0, _jsxRuntime.jsx)(SelectLabel, {}), (0, _jsxRuntime.jsx)("div", {
|
|
173
189
|
sx: (0, _extends2["default"])({}, defaultStyles, isInline && inlineStyles),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports["default"] = exports.Inline = exports.Default = void 0;
|
|
6
|
+
exports["default"] = exports.WithDefaultValue = exports.Inline = exports.Default = void 0;
|
|
7
7
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
|
|
@@ -96,4 +96,15 @@ var Inline = function Inline() {
|
|
|
96
96
|
});
|
|
97
97
|
};
|
|
98
98
|
|
|
99
|
-
exports.Inline = Inline;
|
|
99
|
+
exports.Inline = Inline;
|
|
100
|
+
|
|
101
|
+
var WithDefaultValue = function WithDefaultValue() {
|
|
102
|
+
var customArgs = (0, _extends2["default"])({}, args, {
|
|
103
|
+
value: 'Chocolate'
|
|
104
|
+
});
|
|
105
|
+
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
106
|
+
children: (0, _jsxRuntime.jsx)(DefaultComponent, (0, _extends2["default"])({}, customArgs))
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
exports.WithDefaultValue = WithDefaultValue;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.NewTabs = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var TabsPrimitive = _interopRequireWildcard(require("@radix-ui/react-tabs"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
|
|
18
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
19
|
+
|
|
20
|
+
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); }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
/** @jsxImportSource theme-ui */
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* External dependencies
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Internal dependencies
|
|
32
|
+
*/
|
|
33
|
+
var NewTabs = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
34
|
+
var children = _ref.children,
|
|
35
|
+
_ref$onValueChange = _ref.onValueChange,
|
|
36
|
+
onValueChange = _ref$onValueChange === void 0 ? undefined : _ref$onValueChange,
|
|
37
|
+
_ref$defaultValue = _ref.defaultValue,
|
|
38
|
+
defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,
|
|
39
|
+
_ref$className = _ref.className,
|
|
40
|
+
className = _ref$className === void 0 ? null : _ref$className,
|
|
41
|
+
_ref$sx = _ref.sx,
|
|
42
|
+
sx = _ref$sx === void 0 ? {} : _ref$sx;
|
|
43
|
+
return (0, _jsxRuntime.jsx)(TabsPrimitive.Root, {
|
|
44
|
+
ref: ref,
|
|
45
|
+
defaultValue: defaultValue,
|
|
46
|
+
onValueChange: onValueChange,
|
|
47
|
+
className: (0, _classnames["default"])('vip-tabs-component', className),
|
|
48
|
+
sx: (0, _extends2["default"])({}, sx),
|
|
49
|
+
children: children
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
exports.NewTabs = NewTabs;
|
|
54
|
+
NewTabs.propTypes = {
|
|
55
|
+
className: _propTypes["default"].any,
|
|
56
|
+
sx: _propTypes["default"].object,
|
|
57
|
+
defaultValue: _propTypes["default"].node,
|
|
58
|
+
onValueChange: _propTypes["default"].func,
|
|
59
|
+
children: _propTypes["default"].node.isRequired
|
|
60
|
+
};
|
|
61
|
+
NewTabs.displayName = 'NewTabs';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Default = void 0;
|
|
5
|
+
|
|
6
|
+
var _ = require("..");
|
|
7
|
+
|
|
8
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
var _default = {
|
|
14
|
+
title: 'NewTabs',
|
|
15
|
+
component: _.NewTabs
|
|
16
|
+
};
|
|
17
|
+
exports["default"] = _default;
|
|
18
|
+
|
|
19
|
+
var Default = function Default() {
|
|
20
|
+
return (0, _jsxRuntime.jsxs)(_.NewTabs, {
|
|
21
|
+
defaultValue: "all",
|
|
22
|
+
children: [(0, _jsxRuntime.jsxs)(_.TabsList, {
|
|
23
|
+
title: "See all the content",
|
|
24
|
+
children: [(0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
25
|
+
value: "all",
|
|
26
|
+
children: "All (5)"
|
|
27
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
28
|
+
value: "live",
|
|
29
|
+
children: "Live (2)"
|
|
30
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
31
|
+
value: "dev",
|
|
32
|
+
children: "In Development (3)"
|
|
33
|
+
}), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
|
|
34
|
+
value: "protect",
|
|
35
|
+
disabled: true,
|
|
36
|
+
children: "Not accessible"
|
|
37
|
+
})]
|
|
38
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
39
|
+
value: "all",
|
|
40
|
+
children: (0, _jsxRuntime.jsx)(_.Text, {
|
|
41
|
+
children: "All content"
|
|
42
|
+
})
|
|
43
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
44
|
+
value: "live",
|
|
45
|
+
children: "Live content"
|
|
46
|
+
}), (0, _jsxRuntime.jsx)(_.TabsContent, {
|
|
47
|
+
value: "dev",
|
|
48
|
+
children: (0, _jsxRuntime.jsx)(_.Text, {
|
|
49
|
+
children: "In Development content"
|
|
50
|
+
})
|
|
51
|
+
})]
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.Default = Default;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.TabsContent = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var TabsPrimitive = _interopRequireWildcard(require("@radix-ui/react-tabs"));
|
|
13
|
+
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
/** @jsxImportSource theme-ui */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* External dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Internal dependencies
|
|
30
|
+
*/
|
|
31
|
+
var TabsContent = function TabsContent(_ref) {
|
|
32
|
+
var value = _ref.value,
|
|
33
|
+
sx = _ref.sx,
|
|
34
|
+
children = _ref.children;
|
|
35
|
+
return (0, _jsxRuntime.jsx)(TabsPrimitive.Content, {
|
|
36
|
+
className: (0, _classnames["default"])('vip-tabs-content', "vip-tabs-content-" + value),
|
|
37
|
+
value: value,
|
|
38
|
+
sx: (0, _extends2["default"])({
|
|
39
|
+
mt: 4
|
|
40
|
+
}, sx),
|
|
41
|
+
children: children
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.TabsContent = TabsContent;
|
|
46
|
+
TabsContent.propTypes = {
|
|
47
|
+
sx: _propTypes["default"].object,
|
|
48
|
+
value: _propTypes["default"].string,
|
|
49
|
+
children: _propTypes["default"].node.isRequired
|
|
50
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.TabsList = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var TabsPrimitive = _interopRequireWildcard(require("@radix-ui/react-tabs"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
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); }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
/** @jsxImportSource theme-ui */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* External dependencies
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Internal dependencies
|
|
28
|
+
*/
|
|
29
|
+
var TabsList = function TabsList(_ref) {
|
|
30
|
+
var children = _ref.children,
|
|
31
|
+
title = _ref.title,
|
|
32
|
+
sx = _ref.sx;
|
|
33
|
+
return (0, _jsxRuntime.jsx)(TabsPrimitive.List, {
|
|
34
|
+
sx: (0, _extends2["default"])({
|
|
35
|
+
borderBottom: '1px solid',
|
|
36
|
+
borderColor: 'border',
|
|
37
|
+
display: 'flex'
|
|
38
|
+
}, sx),
|
|
39
|
+
title: title,
|
|
40
|
+
children: children
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.TabsList = TabsList;
|
|
45
|
+
TabsList.propTypes = {
|
|
46
|
+
sx: _propTypes["default"].object,
|
|
47
|
+
title: _propTypes["default"].string.isRequired,
|
|
48
|
+
children: _propTypes["default"].node.isRequired
|
|
49
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.TabsTrigger = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var TabsPrimitive = _interopRequireWildcard(require("@radix-ui/react-tabs"));
|
|
13
|
+
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
/** @jsxImportSource theme-ui */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* External dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Internal dependencies
|
|
30
|
+
*/
|
|
31
|
+
var styles = {
|
|
32
|
+
cursor: 'pointer',
|
|
33
|
+
background: 'none',
|
|
34
|
+
mr: 3,
|
|
35
|
+
fontSize: 2,
|
|
36
|
+
px: 0,
|
|
37
|
+
pb: 3,
|
|
38
|
+
border: 'none',
|
|
39
|
+
color: 'muted',
|
|
40
|
+
'&[data-state="active"]': {
|
|
41
|
+
color: 'heading',
|
|
42
|
+
fontWeight: 'body',
|
|
43
|
+
boxShadow: function boxShadow(theme) {
|
|
44
|
+
return "inset 0 -1px 0 0 " + theme.colors.link + ", 0 1px 0 0 " + theme.colors.link;
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
'&:disabled': {
|
|
48
|
+
color: 'grey.70'
|
|
49
|
+
},
|
|
50
|
+
':hover': {
|
|
51
|
+
fontWeight: 'body',
|
|
52
|
+
color: 'heading'
|
|
53
|
+
},
|
|
54
|
+
'&:focus': function focus(theme) {
|
|
55
|
+
return theme.outline;
|
|
56
|
+
},
|
|
57
|
+
'&:focus-visible': function focusVisible(theme) {
|
|
58
|
+
return theme.outline;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var TabsTrigger = function TabsTrigger(_ref) {
|
|
63
|
+
var value = _ref.value,
|
|
64
|
+
_ref$disabled = _ref.disabled,
|
|
65
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
66
|
+
sx = _ref.sx,
|
|
67
|
+
children = _ref.children;
|
|
68
|
+
return (0, _jsxRuntime.jsx)(TabsPrimitive.TabsTrigger, {
|
|
69
|
+
className: (0, _classnames["default"])('vip-tabs-trigger', "vip-tabs-trigger-" + value),
|
|
70
|
+
value: value,
|
|
71
|
+
disabled: disabled,
|
|
72
|
+
sx: (0, _extends2["default"])({}, styles, sx),
|
|
73
|
+
children: children
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
exports.TabsTrigger = TabsTrigger;
|
|
78
|
+
TabsTrigger.propTypes = {
|
|
79
|
+
sx: _propTypes["default"].object,
|
|
80
|
+
value: _propTypes["default"].string,
|
|
81
|
+
disabled: _propTypes["default"].bool,
|
|
82
|
+
children: _propTypes["default"].node.isRequired
|
|
83
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _Tabs = require("./Tabs");
|
|
6
|
+
|
|
7
|
+
exports.NewTabs = _Tabs.NewTabs;
|
|
8
|
+
|
|
9
|
+
var _TabsTrigger = require("./TabsTrigger");
|
|
10
|
+
|
|
11
|
+
exports.TabsTrigger = _TabsTrigger.TabsTrigger;
|
|
12
|
+
|
|
13
|
+
var _TabsList = require("./TabsList");
|
|
14
|
+
|
|
15
|
+
exports.TabsList = _TabsList.TabsList;
|
|
16
|
+
|
|
17
|
+
var _TabsContent = require("./TabsContent");
|
|
18
|
+
|
|
19
|
+
exports.TabsContent = _TabsContent.TabsContent;
|
package/build/system/index.js
CHANGED
|
@@ -154,6 +154,13 @@ exports.Wizard = _Wizard.Wizard;
|
|
|
154
154
|
exports.WizardStep = _Wizard.WizardStep;
|
|
155
155
|
exports.WizardStepHorizontal = _Wizard.WizardStepHorizontal;
|
|
156
156
|
|
|
157
|
+
var _NewTabs = require("./NewTabs");
|
|
158
|
+
|
|
159
|
+
exports.NewTabs = _NewTabs.NewTabs;
|
|
160
|
+
exports.TabsList = _NewTabs.TabsList;
|
|
161
|
+
exports.TabsContent = _NewTabs.TabsContent;
|
|
162
|
+
exports.TabsTrigger = _NewTabs.TabsTrigger;
|
|
163
|
+
|
|
157
164
|
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); }
|
|
158
165
|
|
|
159
166
|
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; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@automattic/vip-design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"main": "build/system/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build-storybook": "build-storybook",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"@radix-ui/react-switch": "^1.0.0",
|
|
29
29
|
"@radix-ui/react-tooltip": "^1.0.0",
|
|
30
30
|
"@radix-ui/react-visually-hidden": "^1.0.0",
|
|
31
|
+
"@radix-ui/react-tabs": "^1.0.0",
|
|
31
32
|
"@storybook/addon-storysource": "^6.5.10",
|
|
32
33
|
"accessible-autocomplete": "^2.0.4",
|
|
33
34
|
"babel-loader": "^8.2.2",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* External dependencies
|
|
5
5
|
*/
|
|
6
|
-
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
6
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { Label } from '../Form/Label';
|
|
9
9
|
import Autocomplete from 'accessible-autocomplete/react';
|
|
@@ -42,6 +42,7 @@ const defaultStyles = {
|
|
|
42
42
|
'&:focus-visible': { outlineWidth: 0, boxShadow: 'none' },
|
|
43
43
|
'&:focus-within': { outlineWidth: 0, boxShadow: 'none' },
|
|
44
44
|
'&.autocomplete__input--focused': { outlineWidth: 0, boxShadow: 'none' },
|
|
45
|
+
'&.autocomplete__input--show-all-values': { paddingRight: '40px' },
|
|
45
46
|
},
|
|
46
47
|
'& .autocomplete__menu': {
|
|
47
48
|
borderWidth: '1px',
|
|
@@ -56,7 +57,6 @@ const defaultStyles = {
|
|
|
56
57
|
},
|
|
57
58
|
'& .autocomplete__wrapper': {
|
|
58
59
|
width: '100%',
|
|
59
|
-
paddingRight: '40px',
|
|
60
60
|
},
|
|
61
61
|
'& .autocomplete__input--show-all-values': {
|
|
62
62
|
paddingRight: 0,
|
|
@@ -85,6 +85,8 @@ const FormAutocomplete = React.forwardRef(
|
|
|
85
85
|
},
|
|
86
86
|
forwardRef
|
|
87
87
|
) => {
|
|
88
|
+
const [ isDirty, setIsDirty ] = useState( false );
|
|
89
|
+
|
|
88
90
|
const SelectLabel = () => <Label htmlFor={ forLabel || id }>{ label }</Label>;
|
|
89
91
|
|
|
90
92
|
const inlineLabel = !! ( isInline && label );
|
|
@@ -120,12 +122,15 @@ const FormAutocomplete = React.forwardRef(
|
|
|
120
122
|
|
|
121
123
|
const suggest = useCallback(
|
|
122
124
|
( query, populateResults ) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
125
|
+
let data = options;
|
|
126
|
+
if ( isDirty ) {
|
|
127
|
+
data = options.filter(
|
|
128
|
+
option => optionLabel( option ).toLowerCase().indexOf( query.toLowerCase() ) >= 0
|
|
129
|
+
);
|
|
130
|
+
}
|
|
126
131
|
populateResults( data.map( option => optionLabel( option ) ) );
|
|
127
132
|
},
|
|
128
|
-
[ options ]
|
|
133
|
+
[ options, isDirty ]
|
|
129
134
|
);
|
|
130
135
|
|
|
131
136
|
useEffect( () => {
|
|
@@ -140,6 +145,12 @@ const FormAutocomplete = React.forwardRef(
|
|
|
140
145
|
.setAttribute( 'aria-label', `${ label } list` );
|
|
141
146
|
}, [ label ] );
|
|
142
147
|
|
|
148
|
+
useEffect( () => {
|
|
149
|
+
global.document.querySelector( `#${ id }` ).addEventListener( 'keydown', () => {
|
|
150
|
+
setIsDirty( true );
|
|
151
|
+
} );
|
|
152
|
+
}, [ setIsDirty ] );
|
|
153
|
+
|
|
143
154
|
return (
|
|
144
155
|
<>
|
|
145
156
|
{ label && ! isInline && <SelectLabel /> }
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
9
|
+
import React from 'react';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const NewTabs = React.forwardRef(
|
|
16
|
+
(
|
|
17
|
+
{ children, onValueChange = undefined, defaultValue = undefined, className = null, sx = {} },
|
|
18
|
+
ref
|
|
19
|
+
) => {
|
|
20
|
+
return (
|
|
21
|
+
<TabsPrimitive.Root
|
|
22
|
+
ref={ ref }
|
|
23
|
+
defaultValue={ defaultValue }
|
|
24
|
+
onValueChange={ onValueChange }
|
|
25
|
+
className={ classNames( 'vip-tabs-component', className ) }
|
|
26
|
+
sx={ { ...sx } }
|
|
27
|
+
>
|
|
28
|
+
{ children }
|
|
29
|
+
</TabsPrimitive.Root>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
NewTabs.propTypes = {
|
|
35
|
+
className: PropTypes.any,
|
|
36
|
+
sx: PropTypes.object,
|
|
37
|
+
defaultValue: PropTypes.node,
|
|
38
|
+
onValueChange: PropTypes.func,
|
|
39
|
+
children: PropTypes.node.isRequired,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
NewTabs.displayName = 'NewTabs';
|
|
43
|
+
|
|
44
|
+
export { NewTabs };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { NewTabs, TabsTrigger, TabsList, TabsContent, Text } from '..';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: 'NewTabs',
|
|
8
|
+
component: NewTabs,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const Default = () => (
|
|
12
|
+
<NewTabs defaultValue="all">
|
|
13
|
+
<TabsList title="See all the content">
|
|
14
|
+
<TabsTrigger value="all">All (5)</TabsTrigger>
|
|
15
|
+
<TabsTrigger value="live">Live (2)</TabsTrigger>
|
|
16
|
+
<TabsTrigger value="dev">In Development (3)</TabsTrigger>
|
|
17
|
+
<TabsTrigger value="protect" disabled={ true }>
|
|
18
|
+
Not accessible
|
|
19
|
+
</TabsTrigger>
|
|
20
|
+
</TabsList>
|
|
21
|
+
<TabsContent value="all">
|
|
22
|
+
<Text>All content</Text>
|
|
23
|
+
</TabsContent>
|
|
24
|
+
<TabsContent value="live">Live content</TabsContent>
|
|
25
|
+
<TabsContent value="dev">
|
|
26
|
+
<Text>In Development content</Text>
|
|
27
|
+
</TabsContent>
|
|
28
|
+
</NewTabs>
|
|
29
|
+
);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
8
|
+
import classNames from 'classnames';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const TabsContent = ( { value, sx, children } ) => (
|
|
15
|
+
<TabsPrimitive.Content
|
|
16
|
+
className={ classNames( 'vip-tabs-content', `vip-tabs-content-${ value }` ) }
|
|
17
|
+
value={ value }
|
|
18
|
+
sx={ {
|
|
19
|
+
mt: 4,
|
|
20
|
+
...sx,
|
|
21
|
+
} }
|
|
22
|
+
>
|
|
23
|
+
{ children }
|
|
24
|
+
</TabsPrimitive.Content>
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
TabsContent.propTypes = {
|
|
28
|
+
sx: PropTypes.object,
|
|
29
|
+
value: PropTypes.string,
|
|
30
|
+
children: PropTypes.node.isRequired,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { TabsContent };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const TabsList = ( { children, title, sx } ) => (
|
|
14
|
+
<TabsPrimitive.List
|
|
15
|
+
sx={ {
|
|
16
|
+
borderBottom: '1px solid',
|
|
17
|
+
borderColor: 'border',
|
|
18
|
+
display: 'flex',
|
|
19
|
+
...sx,
|
|
20
|
+
} }
|
|
21
|
+
title={ title }
|
|
22
|
+
>
|
|
23
|
+
{ children }
|
|
24
|
+
</TabsPrimitive.List>
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
TabsList.propTypes = {
|
|
28
|
+
sx: PropTypes.object,
|
|
29
|
+
title: PropTypes.string.isRequired,
|
|
30
|
+
children: PropTypes.node.isRequired,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { TabsList };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
8
|
+
import classNames from 'classnames';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const styles = {
|
|
15
|
+
cursor: 'pointer',
|
|
16
|
+
background: 'none',
|
|
17
|
+
mr: 3,
|
|
18
|
+
fontSize: 2,
|
|
19
|
+
px: 0,
|
|
20
|
+
pb: 3,
|
|
21
|
+
border: 'none',
|
|
22
|
+
color: 'muted',
|
|
23
|
+
'&[data-state="active"]': {
|
|
24
|
+
color: 'heading',
|
|
25
|
+
fontWeight: 'body',
|
|
26
|
+
boxShadow: theme => `inset 0 -1px 0 0 ${ theme.colors.link }, 0 1px 0 0 ${ theme.colors.link }`,
|
|
27
|
+
},
|
|
28
|
+
'&:disabled': {
|
|
29
|
+
color: 'grey.70',
|
|
30
|
+
},
|
|
31
|
+
':hover': { fontWeight: 'body', color: 'heading' },
|
|
32
|
+
'&:focus': theme => theme.outline,
|
|
33
|
+
'&:focus-visible': theme => theme.outline,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const TabsTrigger = ( { value, disabled = false, sx, children } ) => (
|
|
37
|
+
<TabsPrimitive.TabsTrigger
|
|
38
|
+
className={ classNames( 'vip-tabs-trigger', `vip-tabs-trigger-${ value }` ) }
|
|
39
|
+
value={ value }
|
|
40
|
+
disabled={ disabled }
|
|
41
|
+
sx={ {
|
|
42
|
+
...styles,
|
|
43
|
+
...sx,
|
|
44
|
+
} }
|
|
45
|
+
>
|
|
46
|
+
{ children }
|
|
47
|
+
</TabsPrimitive.TabsTrigger>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
TabsTrigger.propTypes = {
|
|
51
|
+
sx: PropTypes.object,
|
|
52
|
+
value: PropTypes.string,
|
|
53
|
+
disabled: PropTypes.bool,
|
|
54
|
+
children: PropTypes.node.isRequired,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export { TabsTrigger };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { NewTabs } from './Tabs';
|
|
5
|
+
import { TabsTrigger } from './TabsTrigger';
|
|
6
|
+
import { TabsList } from './TabsList';
|
|
7
|
+
import { TabsContent } from './TabsContent';
|
|
8
|
+
|
|
9
|
+
export { NewTabs, TabsList, TabsTrigger, TabsContent };
|
package/src/system/index.js
CHANGED
|
@@ -55,6 +55,7 @@ import { TabItem, Tabs } from './Tabs';
|
|
|
55
55
|
import { Text } from './Text';
|
|
56
56
|
import theme from './theme';
|
|
57
57
|
import { Wizard, WizardStep, WizardStepHorizontal } from './Wizard';
|
|
58
|
+
import { NewTabs, TabsList, TabsContent, TabsTrigger } from './NewTabs';
|
|
58
59
|
|
|
59
60
|
export {
|
|
60
61
|
Accordion,
|
|
@@ -103,6 +104,10 @@ export {
|
|
|
103
104
|
ToggleRow,
|
|
104
105
|
ToggleGroup,
|
|
105
106
|
TabItem,
|
|
107
|
+
NewTabs,
|
|
108
|
+
TabsTrigger,
|
|
109
|
+
TabsContent,
|
|
110
|
+
TabsList,
|
|
106
111
|
Time,
|
|
107
112
|
Timeline,
|
|
108
113
|
Validation,
|