@pingux/astro 1.0.0-alpha.6 → 1.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +186 -0
- package/README.md +5 -0
- package/lib/cjs/components/AccordionGridGroup/AccordionGridGroup.stories.js +4 -11
- package/lib/cjs/components/AccordionItem/AccordionItem.js +3 -1
- package/lib/cjs/components/Button/Button.js +5 -24
- package/lib/cjs/components/Button/Button.stories.js +5 -11
- package/lib/cjs/components/Button/Button.test.js +0 -24
- package/lib/cjs/components/Chip/Chip.js +26 -10
- package/lib/cjs/components/Chip/Chip.stories.js +44 -5
- package/lib/cjs/components/Chip/Chip.test.js +9 -0
- package/lib/cjs/components/{Panel/index.js → Chip/ChipContext.js} +8 -7
- package/lib/cjs/components/CopyText/CopyText.js +3 -73
- package/lib/cjs/components/IconButton/IconButton.js +17 -7
- package/lib/cjs/components/IconButton/IconButton.test.js +0 -1
- package/lib/cjs/components/ListItem/ListItem.stories.js +0 -2
- package/lib/cjs/components/ListView/ListView.js +4 -3
- package/lib/cjs/components/ListViewItem/ListViewItem.js +3 -6
- package/lib/cjs/components/MultivaluesField/MultivaluesField.js +1 -1
- package/lib/cjs/components/Stepper/Stepper.js +1 -0
- package/lib/cjs/components/Tab/Tab.js +15 -6
- package/lib/cjs/components/Tabs/Tabs.js +7 -1
- package/lib/cjs/components/Tabs/Tabs.stories.js +60 -6
- package/lib/cjs/components/Tabs/Tabs.test.js +78 -15
- package/lib/cjs/components/TextAreaField/TextAreaField.test.js +10 -0
- package/lib/cjs/components/TooltipTrigger/TooltipTrigger.stories.js +45 -2
- package/lib/cjs/{components/DropdownField → hooks/useCopyToClipboard}/index.js +2 -2
- package/lib/cjs/hooks/useCopyToClipboard/useCopyToClipboard.js +83 -0
- package/lib/cjs/hooks/useCopyToClipboard/useCopyToClipboard.test.js +79 -0
- package/lib/cjs/index.js +48 -136
- package/lib/cjs/layouts/ListLayout.stories.js +2 -1
- package/lib/cjs/layouts/SchemaFormLayout.stories.js +2 -21
- package/lib/cjs/recipes/ArrayField.stories.js +3 -3
- package/lib/cjs/recipes/CopyToClipboard.stories.js +45 -0
- package/lib/cjs/recipes/RadioButtonsWithLinks.stories.js +146 -0
- package/lib/cjs/styles/forms/input.js +4 -0
- package/lib/cjs/styles/theme.js +0 -3
- package/lib/cjs/styles/variants/accordion.js +7 -9
- package/lib/cjs/styles/variants/boxes.js +22 -19
- package/lib/cjs/styles/variants/buttons.js +38 -29
- package/lib/cjs/styles/variants/tabs.js +1 -0
- package/lib/cjs/styles/variants/variants.js +0 -3
- package/lib/components/AccordionGridGroup/AccordionGridGroup.stories.js +4 -11
- package/lib/components/AccordionItem/AccordionItem.js +3 -1
- package/lib/components/Button/Button.js +7 -24
- package/lib/components/Button/Button.stories.js +5 -10
- package/lib/components/Button/Button.test.js +0 -20
- package/lib/components/Chip/Chip.js +25 -10
- package/lib/components/Chip/Chip.stories.js +41 -5
- package/lib/components/Chip/Chip.test.js +9 -0
- package/lib/components/Chip/ChipContext.js +3 -0
- package/lib/components/CopyText/CopyText.js +2 -71
- package/lib/components/IconButton/IconButton.js +17 -9
- package/lib/components/IconButton/IconButton.test.js +0 -1
- package/lib/components/ListItem/ListItem.stories.js +0 -2
- package/lib/components/ListView/ListView.js +4 -3
- package/lib/components/ListViewItem/ListViewItem.js +3 -5
- package/lib/components/MultivaluesField/MultivaluesField.js +1 -1
- package/lib/components/Stepper/Stepper.js +1 -0
- package/lib/components/Tab/Tab.js +15 -6
- package/lib/components/Tabs/Tabs.js +7 -1
- package/lib/components/Tabs/Tabs.stories.js +56 -4
- package/lib/components/Tabs/Tabs.test.js +78 -15
- package/lib/components/TextAreaField/TextAreaField.test.js +8 -0
- package/lib/components/TooltipTrigger/TooltipTrigger.stories.js +33 -1
- package/lib/hooks/useCopyToClipboard/index.js +1 -0
- package/lib/hooks/useCopyToClipboard/useCopyToClipboard.js +69 -0
- package/lib/hooks/useCopyToClipboard/useCopyToClipboard.test.js +64 -0
- package/lib/index.js +0 -8
- package/lib/layouts/ListLayout.stories.js +2 -1
- package/lib/layouts/SchemaFormLayout.stories.js +2 -19
- package/lib/recipes/ArrayField.stories.js +3 -3
- package/lib/recipes/CopyToClipboard.stories.js +25 -0
- package/lib/recipes/RadioButtonsWithLinks.stories.js +120 -0
- package/lib/styles/forms/input.js +4 -0
- package/lib/styles/theme.js +0 -3
- package/lib/styles/variants/accordion.js +7 -9
- package/lib/styles/variants/boxes.js +21 -19
- package/lib/styles/variants/buttons.js +37 -29
- package/lib/styles/variants/tabs.js +1 -0
- package/lib/styles/variants/variants.js +0 -2
- package/package.json +2 -2
- package/lib/cjs/components/Dropdown/Dropdown.js +0 -112
- package/lib/cjs/components/Dropdown/Dropdown.test.js +0 -80
- package/lib/cjs/components/Dropdown/index.js +0 -18
- package/lib/cjs/components/DropdownField/DropdownField.js +0 -187
- package/lib/cjs/components/DropdownField/DropdownField.stories.js +0 -278
- package/lib/cjs/components/DropdownField/DropdownField.test.js +0 -80
- package/lib/cjs/components/Panel/Panel.js +0 -101
- package/lib/cjs/components/Panel/Panel.stories.js +0 -57
- package/lib/cjs/components/Panel/Panel.test.js +0 -72
- package/lib/cjs/components/Popover/Popover.js +0 -87
- package/lib/cjs/components/Popover/Popover.stories.js +0 -80
- package/lib/cjs/components/Popover/Popover.test.js +0 -91
- package/lib/cjs/components/Popover/index.js +0 -18
- package/lib/cjs/recipes/InputBoxWithLinkedChip.stories.js +0 -67
- package/lib/cjs/styles/variants/popover.js +0 -86
- package/lib/components/Dropdown/Dropdown.js +0 -90
- package/lib/components/Dropdown/Dropdown.test.js +0 -62
- package/lib/components/Dropdown/index.js +0 -1
- package/lib/components/DropdownField/DropdownField.js +0 -155
- package/lib/components/DropdownField/DropdownField.stories.js +0 -222
- package/lib/components/DropdownField/DropdownField.test.js +0 -60
- package/lib/components/DropdownField/index.js +0 -1
- package/lib/components/Panel/Panel.js +0 -71
- package/lib/components/Panel/Panel.stories.js +0 -35
- package/lib/components/Panel/Panel.test.js +0 -52
- package/lib/components/Panel/index.js +0 -1
- package/lib/components/Popover/Popover.js +0 -65
- package/lib/components/Popover/Popover.stories.js +0 -52
- package/lib/components/Popover/Popover.test.js +0 -75
- package/lib/components/Popover/index.js +0 -2
- package/lib/recipes/InputBoxWithLinkedChip.stories.js +0 -43
- package/lib/styles/variants/popover.js +0 -76
@@ -14,10 +14,6 @@ exports["default"] = void 0;
|
|
14
14
|
|
15
15
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
16
16
|
|
17
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
18
|
-
|
19
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
20
|
-
|
21
17
|
var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
|
22
18
|
|
23
19
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
@@ -38,6 +34,8 @@ var _index = require("../../index");
|
|
38
34
|
|
39
35
|
var _CopyButton = _interopRequireDefault(require("./CopyButton"));
|
40
36
|
|
37
|
+
var _useCopyToClipboard = _interopRequireDefault(require("../../hooks/useCopyToClipboard"));
|
38
|
+
|
41
39
|
var _react2 = require("@emotion/react");
|
42
40
|
|
43
41
|
var TooltipWrapper = function TooltipWrapper(_ref) {
|
@@ -100,75 +98,7 @@ var CopyText = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
100
98
|
|
101
99
|
return undefined;
|
102
100
|
}, [isCopied]);
|
103
|
-
|
104
|
-
var copyToClipboard = /*#__PURE__*/function () {
|
105
|
-
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
106
|
-
var textArea, isSuccessful;
|
107
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
108
|
-
while (1) {
|
109
|
-
switch (_context.prev = _context.next) {
|
110
|
-
case 0:
|
111
|
-
_context.prev = 0;
|
112
|
-
|
113
|
-
if (!navigator.clipboard) {
|
114
|
-
_context.next = 7;
|
115
|
-
break;
|
116
|
-
}
|
117
|
-
|
118
|
-
_context.next = 4;
|
119
|
-
return navigator.clipboard.writeText(value);
|
120
|
-
|
121
|
-
case 4:
|
122
|
-
setIsCopied(true);
|
123
|
-
_context.next = 20;
|
124
|
-
break;
|
125
|
-
|
126
|
-
case 7:
|
127
|
-
// Workaround for copying in insecure origin
|
128
|
-
textArea = document.createElement('textarea');
|
129
|
-
textArea.value = value;
|
130
|
-
textArea.style.position = 'fixed';
|
131
|
-
document.body.appendChild(textArea);
|
132
|
-
textArea.focus();
|
133
|
-
textArea.select();
|
134
|
-
isSuccessful = document.execCommand('copy');
|
135
|
-
textArea.remove();
|
136
|
-
|
137
|
-
if (!isSuccessful) {
|
138
|
-
_context.next = 19;
|
139
|
-
break;
|
140
|
-
}
|
141
|
-
|
142
|
-
setIsCopied(isSuccessful);
|
143
|
-
_context.next = 20;
|
144
|
-
break;
|
145
|
-
|
146
|
-
case 19:
|
147
|
-
throw new Error('Unable to copy message');
|
148
|
-
|
149
|
-
case 20:
|
150
|
-
_context.next = 25;
|
151
|
-
break;
|
152
|
-
|
153
|
-
case 22:
|
154
|
-
_context.prev = 22;
|
155
|
-
_context.t0 = _context["catch"](0);
|
156
|
-
// eslint-disable-next-line no-console
|
157
|
-
console.error('Failed to copy: ', _context.t0);
|
158
|
-
|
159
|
-
case 25:
|
160
|
-
case "end":
|
161
|
-
return _context.stop();
|
162
|
-
}
|
163
|
-
}
|
164
|
-
}, _callee, null, [[0, 22]]);
|
165
|
-
}));
|
166
|
-
|
167
|
-
return function copyToClipboard() {
|
168
|
-
return _ref2.apply(this, arguments);
|
169
|
-
};
|
170
|
-
}();
|
171
|
-
|
101
|
+
var copyToClipboard = (0, _useCopyToClipboard["default"])(value, setIsCopied);
|
172
102
|
var content = mode === 'link' ? children : (0, _react2.jsx)(_index.Button, (0, _extends2["default"])({
|
173
103
|
variant: "quiet",
|
174
104
|
onPress: copyToClipboard,
|
@@ -40,6 +40,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
40
40
|
|
41
41
|
var _themeUi = require("theme-ui");
|
42
42
|
|
43
|
+
var _button = require("@react-aria/button");
|
44
|
+
|
43
45
|
var _focus = require("@react-aria/focus");
|
44
46
|
|
45
47
|
var _interactions = require("@react-aria/interactions");
|
@@ -48,6 +50,8 @@ var _utils = require("@react-aria/utils");
|
|
48
50
|
|
49
51
|
var _hooks = require("../../hooks");
|
50
52
|
|
53
|
+
var _ChipContext = require("../Chip/ChipContext");
|
54
|
+
|
51
55
|
var _TooltipTrigger = _interopRequireWildcard(require("../TooltipTrigger"));
|
52
56
|
|
53
57
|
var _react2 = require("@emotion/react");
|
@@ -82,11 +86,12 @@ var IconButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
82
86
|
return buttonRef.current;
|
83
87
|
});
|
84
88
|
|
85
|
-
var
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
89
|
+
var _useButton = (0, _button.useButton)(_objectSpread({}, props), buttonRef),
|
90
|
+
buttonProps = _useButton.buttonProps,
|
91
|
+
isPressed = _useButton.isPressed;
|
92
|
+
|
93
|
+
var _useContext = (0, _react.useContext)(_ChipContext.ChipContext),
|
94
|
+
chipBg = _useContext.bg;
|
90
95
|
|
91
96
|
var _useHover = (0, _interactions.useHover)(props),
|
92
97
|
hoverProps = _useHover.hoverProps,
|
@@ -110,8 +115,13 @@ var IconButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
110
115
|
tabIndex: 0,
|
111
116
|
ref: buttonRef,
|
112
117
|
className: classNames,
|
113
|
-
"aria-label": ariaLabel || 'Icon Button'
|
114
|
-
|
118
|
+
"aria-label": ariaLabel || 'Icon Button',
|
119
|
+
sx: chipBg && isHovered && {
|
120
|
+
'path': {
|
121
|
+
fill: chipBg
|
122
|
+
}
|
123
|
+
}
|
124
|
+
}, (0, _utils.mergeProps)(hoverProps, focusProps, buttonProps, others)), children);
|
115
125
|
|
116
126
|
if (title) {
|
117
127
|
return (0, _react2.jsx)(_TooltipTrigger["default"], {
|
@@ -46,7 +46,6 @@ test('default icon button', function () {
|
|
46
46
|
|
47
47
|
expect(button).toHaveAttribute('data-testid', testId);
|
48
48
|
expect(button).toBeInstanceOf(HTMLButtonElement);
|
49
|
-
expect(button).toHaveAttribute('tabindex', '0');
|
50
49
|
expect(button).toBeInTheDocument();
|
51
50
|
});
|
52
51
|
test('icon button hover', function () {
|
@@ -56,7 +56,6 @@ var Default = function Default(args) {
|
|
56
56
|
isRow: true,
|
57
57
|
alignSelf: "center"
|
58
58
|
}, (0, _react2.jsx)(_IconButton["default"], {
|
59
|
-
variant: "icon",
|
60
59
|
size: 26
|
61
60
|
}, (0, _react2.jsx)(_Icon["default"], {
|
62
61
|
icon: _MoreVertIcon["default"],
|
@@ -91,7 +90,6 @@ var WithSubtitle = function WithSubtitle(args) {
|
|
91
90
|
isRow: true,
|
92
91
|
alignSelf: "center"
|
93
92
|
}, (0, _react2.jsx)(_IconButton["default"], {
|
94
|
-
variant: "icon",
|
95
93
|
size: 26
|
96
94
|
}, (0, _react2.jsx)(_Icon["default"], {
|
97
95
|
icon: _MoreVertIcon["default"],
|
@@ -81,18 +81,19 @@ var collectionTypes = {
|
|
81
81
|
exports.collectionTypes = collectionTypes;
|
82
82
|
|
83
83
|
function useListLayout(state) {
|
84
|
+
var ROW_HEIGHT = 81;
|
84
85
|
var collator = (0, _i18n.useCollator)({
|
85
86
|
usage: 'search',
|
86
87
|
sensitivity: 'base'
|
87
88
|
});
|
88
89
|
var layout = (0, _react.useMemo)(function () {
|
89
90
|
return new _layout.ListLayout({
|
90
|
-
estimatedRowHeight:
|
91
|
+
estimatedRowHeight: ROW_HEIGHT,
|
91
92
|
estimatedHeadingHeight: 26,
|
92
93
|
paddingRight: 4,
|
93
94
|
paddingLeft: 4,
|
94
|
-
loaderHeight:
|
95
|
-
placeholderHeight:
|
95
|
+
loaderHeight: ROW_HEIGHT,
|
96
|
+
placeholderHeight: ROW_HEIGHT,
|
96
97
|
collator: collator
|
97
98
|
});
|
98
99
|
}, [collator]);
|
@@ -32,8 +32,6 @@ var _ListViewContext = require("../ListView/ListViewContext");
|
|
32
32
|
|
33
33
|
var _Box = _interopRequireDefault(require("../Box"));
|
34
34
|
|
35
|
-
var _Separator = _interopRequireDefault(require("../Separator"));
|
36
|
-
|
37
35
|
var _hooks = require("../../hooks");
|
38
36
|
|
39
37
|
var _react2 = require("@emotion/react");
|
@@ -90,7 +88,8 @@ var ListViewItem = function ListViewItem(props) {
|
|
90
88
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
91
89
|
isHovered: isHovered,
|
92
90
|
isSelected: isSelected,
|
93
|
-
isFocused: isDisabled ? false : isFocusVisible
|
91
|
+
isFocused: isDisabled ? false : isFocusVisible,
|
92
|
+
hasSeparator: hasSeparator
|
94
93
|
}),
|
95
94
|
classNames = _useStatusClasses.classNames;
|
96
95
|
|
@@ -111,9 +110,7 @@ var ListViewItem = function ListViewItem(props) {
|
|
111
110
|
isSelected: isSelected,
|
112
111
|
className: classNames,
|
113
112
|
"data-id": dataId
|
114
|
-
}, listItemProps), item.rendered))
|
115
|
-
m: "0px"
|
116
|
-
}));
|
113
|
+
}, listItemProps), item.rendered)));
|
117
114
|
};
|
118
115
|
|
119
116
|
ListViewItem.propTypes = {
|
@@ -52,6 +52,7 @@ var CollectionTab = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
52
52
|
tabsDisabled = props.isDisabled,
|
53
53
|
orientation = props.orientation,
|
54
54
|
mode = props.mode,
|
55
|
+
slots = props.slots,
|
55
56
|
tooltipTriggerProps = props.tooltipTriggerProps;
|
56
57
|
var key = item.key,
|
57
58
|
rendered = item.rendered,
|
@@ -62,9 +63,10 @@ var CollectionTab = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
62
63
|
tabLabelProps = itemProps.tabLabelProps,
|
63
64
|
tabLineProps = itemProps.tabLineProps,
|
64
65
|
content = itemProps.content,
|
65
|
-
|
66
|
-
|
66
|
+
titleAttr = itemProps.titleAttr,
|
67
|
+
otherItemProps = (0, _objectWithoutProperties2["default"])(itemProps, ["icon", "isDisabled", "separator", "tabLabelProps", "tabLineProps", "content", "titleAttr"]);
|
67
68
|
var state = (0, _react.useContext)(_Tabs.TabsContext);
|
69
|
+
var isDisabled = tabsDisabled || tabDisabled || state.disabledKeys.has(key);
|
68
70
|
var isSelected = state.selectedKey === key;
|
69
71
|
|
70
72
|
var _useFocusRing = (0, _focus.useFocusRing)(),
|
@@ -99,14 +101,17 @@ var CollectionTab = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
99
101
|
}, state, tabRef),
|
100
102
|
tabProps = _useTab.tabProps;
|
101
103
|
|
102
|
-
var tab = (0, _react2.jsx)(_Box["default"],
|
104
|
+
var tab = (0, _react2.jsx)(_Box["default"], {
|
105
|
+
isRow: true
|
106
|
+
}, slots === null || slots === void 0 ? void 0 : slots.beforeTab, (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
103
107
|
className: classNames,
|
104
108
|
variant: "tab"
|
105
109
|
}, (0, _utils.mergeProps)(focusProps, hoverProps, tabProps), otherItemProps, {
|
106
|
-
ref: tabRef
|
110
|
+
ref: tabRef,
|
111
|
+
title: titleAttr || undefined
|
107
112
|
}), icon, (0, _react2.jsx)(_Text["default"], (0, _extends2["default"])({
|
108
113
|
variant: "tabLabel"
|
109
|
-
}, tabLabelProps), rendered), isSelected && !isDisabled && (0, _react2.jsx)(TabLine, tabLineProps));
|
114
|
+
}, tabLabelProps), rendered), isSelected && !isDisabled && (0, _react2.jsx)(TabLine, tabLineProps)), slots === null || slots === void 0 ? void 0 : slots.afterTab);
|
110
115
|
|
111
116
|
if (mode === 'tooltip') {
|
112
117
|
return (0, _react2.jsx)(_react["default"].Fragment, null, separator, (0, _react2.jsx)(_TooltipTrigger["default"], (0, _extends2["default"])({}, tooltipTriggerProps, {
|
@@ -130,7 +135,11 @@ CollectionTab.propTypes = {
|
|
130
135
|
}),
|
131
136
|
mode: _propTypes["default"].oneOf(['default', 'tooltip']),
|
132
137
|
orientation: _propTypes["default"].oneOf(['horizontal', 'vertical']),
|
133
|
-
tooltipTriggerProps: _propTypes["default"].shape({})
|
138
|
+
tooltipTriggerProps: _propTypes["default"].shape({}),
|
139
|
+
slots: _propTypes["default"].shape({
|
140
|
+
beforeTab: _propTypes["default"].node,
|
141
|
+
afterTab: _propTypes["default"].node
|
142
|
+
})
|
134
143
|
};
|
135
144
|
|
136
145
|
var TabLine = function TabLine(props) {
|
@@ -107,12 +107,15 @@ var Tabs = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
107
107
|
}, tabListProps, raTabListProps, {
|
108
108
|
ref: tabListRef
|
109
109
|
}), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (item) {
|
110
|
+
var _item$props;
|
111
|
+
|
110
112
|
return (0, _react2.jsx)(_Tab.CollectionTab, {
|
111
113
|
key: item.key,
|
112
114
|
item: item,
|
113
115
|
isDisabled: isDisabled,
|
114
116
|
orientation: orientation,
|
115
|
-
mode: mode
|
117
|
+
mode: mode,
|
118
|
+
slots: item === null || item === void 0 ? void 0 : (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.slots
|
116
119
|
});
|
117
120
|
})), (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
118
121
|
variant: "tabPanel",
|
@@ -123,6 +126,9 @@ Tabs.propTypes = {
|
|
123
126
|
/** The default tab key to be selected. (uncontrolled) */
|
124
127
|
defaultSelectedKey: _propTypes["default"].string,
|
125
128
|
|
129
|
+
/** Array of keys to disable within the tab list. */
|
130
|
+
disabledKeys: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
131
|
+
|
126
132
|
/** The tab key that is currently selected. (controlled) */
|
127
133
|
selectedKey: _propTypes["default"].string,
|
128
134
|
|
@@ -10,7 +10,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
10
10
|
value: true
|
11
11
|
});
|
12
12
|
|
13
|
-
exports.TabPanelProps = exports.Orientation = exports.CustomTabLine = exports.DisabledAllTabs = exports.DisabledSingleTab = exports.Centered = exports.WithTooltips = exports.WithIcon = exports.Controlled = exports.Uncontrolled = exports["default"] = void 0;
|
13
|
+
exports.ContentSlots = exports.TabPanelProps = exports.Orientation = exports.CustomTabLine = exports.DisabledAllTabs = exports.DisabledSingleTab = exports.Centered = exports.WithTooltips = exports.WithIcon = exports.Controlled = exports.Uncontrolled = exports["default"] = void 0;
|
14
14
|
|
15
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
16
16
|
|
@@ -20,6 +20,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
20
20
|
|
21
21
|
var _GlobeModelIcon = _interopRequireDefault(require("mdi-react/GlobeModelIcon"));
|
22
22
|
|
23
|
+
var _LockIcon = _interopRequireDefault(require("mdi-react/LockIcon"));
|
24
|
+
|
23
25
|
var _Tabs = _interopRequireDefault(require("./Tabs"));
|
24
26
|
|
25
27
|
var _Tab = _interopRequireDefault(require("../Tab"));
|
@@ -28,6 +30,8 @@ var _Icon = _interopRequireDefault(require("../Icon"));
|
|
28
30
|
|
29
31
|
var _Text = _interopRequireDefault(require("../Text"));
|
30
32
|
|
33
|
+
var _index = require("../../index");
|
34
|
+
|
31
35
|
var _react2 = require("@emotion/react");
|
32
36
|
|
33
37
|
var _default = {
|
@@ -166,13 +170,12 @@ exports.Centered = Centered;
|
|
166
170
|
|
167
171
|
var DisabledSingleTab = function DisabledSingleTab() {
|
168
172
|
return (0, _react2.jsx)(_Tabs["default"], {
|
169
|
-
|
170
|
-
|
173
|
+
items: tabs,
|
174
|
+
disabledKeys: ['Tab 2']
|
171
175
|
}, function (item) {
|
172
176
|
return (0, _react2.jsx)(_Tab["default"], {
|
173
177
|
key: item.name,
|
174
|
-
title: item.name
|
175
|
-
isDisabled: item.name === 'Tab 1'
|
178
|
+
title: item.name
|
176
179
|
}, item.children);
|
177
180
|
});
|
178
181
|
};
|
@@ -238,4 +241,55 @@ var TabPanelProps = function TabPanelProps() {
|
|
238
241
|
});
|
239
242
|
};
|
240
243
|
|
241
|
-
exports.TabPanelProps = TabPanelProps;
|
244
|
+
exports.TabPanelProps = TabPanelProps;
|
245
|
+
|
246
|
+
var ContentSlots = function ContentSlots() {
|
247
|
+
var beforeTabNode = (0, _react2.jsx)(_Icon["default"], {
|
248
|
+
icon: _LockIcon["default"],
|
249
|
+
sx: {
|
250
|
+
marginTop: 10,
|
251
|
+
marginRight: 5
|
252
|
+
}
|
253
|
+
});
|
254
|
+
var nodeSx = {
|
255
|
+
alignItems: 'center',
|
256
|
+
backgroundColor: 'neutral.95',
|
257
|
+
borderRadius: '50%',
|
258
|
+
color: 'neutral.30',
|
259
|
+
fontSize: 'sm',
|
260
|
+
height: 20,
|
261
|
+
justifyContent: 'center',
|
262
|
+
marginLeft: 6,
|
263
|
+
marginTop: 10,
|
264
|
+
minWidth: 20
|
265
|
+
};
|
266
|
+
var afterTabNode = (0, _react2.jsx)(_index.Chip, {
|
267
|
+
sx: nodeSx
|
268
|
+
}, "14");
|
269
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_Tabs["default"], {
|
270
|
+
items: tabs,
|
271
|
+
mb: 50
|
272
|
+
}, (0, _react2.jsx)(_Tab["default"], {
|
273
|
+
key: "tab1",
|
274
|
+
title: "Tab 1",
|
275
|
+
slots: {
|
276
|
+
beforeTab: beforeTabNode
|
277
|
+
}
|
278
|
+
}, (0, _react2.jsx)(_Text["default"], null, "This is content for Tab 1")), (0, _react2.jsx)(_Tab["default"], {
|
279
|
+
key: "tab2",
|
280
|
+
title: "Tab 2"
|
281
|
+
}, (0, _react2.jsx)(_Text["default"], null, "This is content for Tab 2"))), (0, _react2.jsx)(_Tabs["default"], {
|
282
|
+
items: tabs
|
283
|
+
}, (0, _react2.jsx)(_Tab["default"], {
|
284
|
+
key: "tab1",
|
285
|
+
title: "Tab 1"
|
286
|
+
}, (0, _react2.jsx)(_Text["default"], null, "Compose Filter")), (0, _react2.jsx)(_Tab["default"], {
|
287
|
+
key: "tab2",
|
288
|
+
title: "Tab 2",
|
289
|
+
slots: {
|
290
|
+
afterTab: afterTabNode
|
291
|
+
}
|
292
|
+
}, (0, _react2.jsx)(_Text["default"], null, "Users Matched"))));
|
293
|
+
};
|
294
|
+
|
295
|
+
exports.ContentSlots = ContentSlots;
|
@@ -257,6 +257,35 @@ test('disabled all tabs', function () {
|
|
257
257
|
expect(tab1).not.toContainElement(_testWrapper.screen.queryByRole('presentation'));
|
258
258
|
testTabPanel(0);
|
259
259
|
});
|
260
|
+
test('disabled tab is not accessible on click or focus', function () {
|
261
|
+
getComponent({
|
262
|
+
disabledKeys: [defaultTabs[1].name]
|
263
|
+
});
|
264
|
+
testTabPanel(0);
|
265
|
+
|
266
|
+
var _getTabs5 = getTabs(),
|
267
|
+
tabs = _getTabs5.tabs,
|
268
|
+
tab0 = _getTabs5.tab0,
|
269
|
+
tab1 = _getTabs5.tab1,
|
270
|
+
tab2 = _getTabs5.tab2; // Ensure that clicking a disabled tab does nothing
|
271
|
+
|
272
|
+
|
273
|
+
_userEvent["default"].click(tab1);
|
274
|
+
|
275
|
+
testTabPanel(0); // Ensure that disabled tab is not accessible via focus
|
276
|
+
|
277
|
+
_userEvent["default"].tab();
|
278
|
+
|
279
|
+
testSingleTab(tabs, tab0, 'toHaveFocus');
|
280
|
+
|
281
|
+
_testWrapper.fireEvent.keyDown(tab0, {
|
282
|
+
key: 'ArrowRight',
|
283
|
+
code: 'ArrowRight'
|
284
|
+
});
|
285
|
+
|
286
|
+
testSingleTab(tabs, tab2, 'toHaveFocus');
|
287
|
+
testTabPanel(2);
|
288
|
+
});
|
260
289
|
test('controlled tabs', function () {
|
261
290
|
var selectedKey = defaultTabs[1].name;
|
262
291
|
var onSelectionChange = jest.fn();
|
@@ -267,11 +296,11 @@ test('controlled tabs', function () {
|
|
267
296
|
}),
|
268
297
|
rerender = _getComponent.rerender;
|
269
298
|
|
270
|
-
var
|
271
|
-
tabs =
|
272
|
-
tab0 =
|
273
|
-
tab1 =
|
274
|
-
tab2 =
|
299
|
+
var _getTabs6 = getTabs(),
|
300
|
+
tabs = _getTabs6.tabs,
|
301
|
+
tab0 = _getTabs6.tab0,
|
302
|
+
tab1 = _getTabs6.tab1,
|
303
|
+
tab2 = _getTabs6.tab2; // Expect the second tab to be selected
|
275
304
|
|
276
305
|
|
277
306
|
expect(onSelectionChange).not.toHaveBeenCalled();
|
@@ -309,9 +338,9 @@ test('tab line props', function () {
|
|
309
338
|
}),
|
310
339
|
rerender = _getComponent2.rerender;
|
311
340
|
|
312
|
-
var
|
313
|
-
tabs =
|
314
|
-
tab0 =
|
341
|
+
var _getTabs7 = getTabs(),
|
342
|
+
tabs = _getTabs7.tabs,
|
343
|
+
tab0 = _getTabs7.tab0;
|
315
344
|
|
316
345
|
var tabLine = _testWrapper.screen.getByRole('presentation'); // Expect the tab line to have a red background
|
317
346
|
|
@@ -340,9 +369,9 @@ test('tab with icon', function () {
|
|
340
369
|
tabs: newTabs
|
341
370
|
});
|
342
371
|
|
343
|
-
var
|
344
|
-
tabs =
|
345
|
-
tab0 =
|
372
|
+
var _getTabs8 = getTabs(),
|
373
|
+
tabs = _getTabs8.tabs,
|
374
|
+
tab0 = _getTabs8.tab0;
|
346
375
|
|
347
376
|
var icon = _testWrapper.screen.getByTestId('icon'); // Expect the tab to have the given icon element
|
348
377
|
|
@@ -350,7 +379,7 @@ test('tab with icon', function () {
|
|
350
379
|
testSingleTab(tabs, tab0, 'toContainElement', [icon]);
|
351
380
|
});
|
352
381
|
test('tooltip renders on tab\'s hover in `tooltip` mode', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
353
|
-
var
|
382
|
+
var _getTabs9, tab0;
|
354
383
|
|
355
384
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
356
385
|
while (1) {
|
@@ -360,7 +389,7 @@ test('tooltip renders on tab\'s hover in `tooltip` mode', /*#__PURE__*/(0, _asyn
|
|
360
389
|
mode: 'tooltip'
|
361
390
|
});
|
362
391
|
expect(_testWrapper.screen.queryByRole('tooltip')).not.toBeInTheDocument();
|
363
|
-
|
392
|
+
_getTabs9 = getTabs(), tab0 = _getTabs9.tab0;
|
364
393
|
|
365
394
|
_testWrapper.fireEvent.mouseMove(tab0);
|
366
395
|
|
@@ -386,12 +415,46 @@ test('tabs without selected keys show null tab panel content', function () {
|
|
386
415
|
test('hover tab style', function () {
|
387
416
|
getComponent();
|
388
417
|
|
389
|
-
var
|
390
|
-
tab0 =
|
418
|
+
var _getTabs10 = getTabs(),
|
419
|
+
tab0 = _getTabs10.tab0;
|
391
420
|
|
392
421
|
expect(tab0).not.toHaveClass('is-hovered');
|
393
422
|
|
394
423
|
_userEvent["default"].hover(tab0);
|
395
424
|
|
396
425
|
expect(tab0).toHaveClass('is-hovered');
|
426
|
+
});
|
427
|
+
test('will render slots.beforeTab if provided', function () {
|
428
|
+
var testText = 'test-text';
|
429
|
+
var testComponent = (0, _react2.jsx)("div", null, testText);
|
430
|
+
var tabs = [{
|
431
|
+
name: 'Tab 1',
|
432
|
+
children: 'Tab 1 body',
|
433
|
+
props: {
|
434
|
+
slots: {
|
435
|
+
beforeTab: testComponent
|
436
|
+
}
|
437
|
+
}
|
438
|
+
}];
|
439
|
+
getComponent({}, {
|
440
|
+
tabs: tabs
|
441
|
+
});
|
442
|
+
expect(_testWrapper.screen.getByText(testText)).toBeInTheDocument();
|
443
|
+
});
|
444
|
+
test('will render slots.afterTab if provided', function () {
|
445
|
+
var testText = 'test-text';
|
446
|
+
var testComponent = (0, _react2.jsx)("div", null, testText);
|
447
|
+
var tabs = [{
|
448
|
+
name: 'Tab 1',
|
449
|
+
children: 'Tab 1 body',
|
450
|
+
props: {
|
451
|
+
slots: {
|
452
|
+
afterTab: testComponent
|
453
|
+
}
|
454
|
+
}
|
455
|
+
}];
|
456
|
+
getComponent({}, {
|
457
|
+
tabs: tabs
|
458
|
+
});
|
459
|
+
expect(_testWrapper.screen.getByText(testText)).toBeInTheDocument();
|
397
460
|
});
|
@@ -128,6 +128,16 @@ test('form wrapper will have default max label column width when no custom width
|
|
128
128
|
|
129
129
|
expect(textAreaContainer).toHaveStyle('grid-template-columns: 40% auto');
|
130
130
|
});
|
131
|
+
test('passing read only prop applys the is-read-only class to the textarea', function () {
|
132
|
+
var isReadOnly = true;
|
133
|
+
getComponent({
|
134
|
+
isReadOnly: isReadOnly
|
135
|
+
});
|
136
|
+
|
137
|
+
var textArea = _testWrapper.screen.getByLabelText(defaultProps.label);
|
138
|
+
|
139
|
+
expect(textArea).toHaveClass('is-read-only');
|
140
|
+
});
|
131
141
|
test('form wrapper will have a max label column width when custom width set', function () {
|
132
142
|
var labelMode = 'left';
|
133
143
|
var containerProps = {
|
@@ -8,16 +8,20 @@ _Object$defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
9
9
|
});
|
10
10
|
|
11
|
-
exports.Disabled = exports.isOpen = exports.withDelayProp = exports.withDirectionProp = exports.withAlignProp = exports.Default = exports["default"] = void 0;
|
11
|
+
exports.TextWithTooltip = exports.ChipWithTooltip = exports.IconWithTooltip = exports.Disabled = exports.isOpen = exports.withDelayProp = exports.withDirectionProp = exports.withAlignProp = exports.Default = exports["default"] = void 0;
|
12
12
|
|
13
13
|
var _react = _interopRequireDefault(require("react"));
|
14
14
|
|
15
15
|
var _EarthIcon = _interopRequireDefault(require("mdi-react/EarthIcon"));
|
16
16
|
|
17
|
+
var _PersonIcon = _interopRequireDefault(require("mdi-react/PersonIcon"));
|
18
|
+
|
17
19
|
var _index = require("../../index");
|
18
20
|
|
19
21
|
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
20
22
|
|
23
|
+
var _Text = _interopRequireDefault(require("../Text"));
|
24
|
+
|
21
25
|
var _react2 = require("@emotion/react");
|
22
26
|
|
23
27
|
var _default = {
|
@@ -80,4 +84,43 @@ Disabled.parameters = {
|
|
80
84
|
story: 'The tooltip can be disabled without disabling the button press events.'
|
81
85
|
}
|
82
86
|
}
|
83
|
-
};
|
87
|
+
};
|
88
|
+
|
89
|
+
var IconWithTooltip = function IconWithTooltip() {
|
90
|
+
return (0, _react2.jsx)(_index.Box, {
|
91
|
+
pl: 50
|
92
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_IconButton["default"], {
|
93
|
+
variant: "tooltipIconButton"
|
94
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
95
|
+
icon: _PersonIcon["default"]
|
96
|
+
})), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
97
|
+
};
|
98
|
+
|
99
|
+
exports.IconWithTooltip = IconWithTooltip;
|
100
|
+
|
101
|
+
var ChipWithTooltip = function ChipWithTooltip() {
|
102
|
+
return (0, _react2.jsx)(_index.Box, {
|
103
|
+
pl: 50
|
104
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_index.Button, {
|
105
|
+
variant: "tooltipChip",
|
106
|
+
bg: "neutral.10"
|
107
|
+
}, (0, _react2.jsx)(_Text["default"], {
|
108
|
+
variant: "label",
|
109
|
+
sx: {
|
110
|
+
textTransform: 'uppercase'
|
111
|
+
},
|
112
|
+
color: "white"
|
113
|
+
}, "Some text")), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
114
|
+
};
|
115
|
+
|
116
|
+
exports.ChipWithTooltip = ChipWithTooltip;
|
117
|
+
|
118
|
+
var TextWithTooltip = function TextWithTooltip() {
|
119
|
+
return (0, _react2.jsx)(_index.Box, {
|
120
|
+
pl: 50
|
121
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_index.Button, {
|
122
|
+
variant: "tooltipInline"
|
123
|
+
}, "Some text"), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
124
|
+
};
|
125
|
+
|
126
|
+
exports.TextWithTooltip = TextWithTooltip;
|
@@ -11,8 +11,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
11
11
|
_Object$defineProperty(exports, "default", {
|
12
12
|
enumerable: true,
|
13
13
|
get: function get() {
|
14
|
-
return
|
14
|
+
return _useCopyToClipboard["default"];
|
15
15
|
}
|
16
16
|
});
|
17
17
|
|
18
|
-
var
|
18
|
+
var _useCopyToClipboard = _interopRequireDefault(require("./useCopyToClipboard"));
|