@pingux/astro 2.133.0 → 2.134.0-alpha.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/lib/cjs/components/Box/Box.styles.d.ts +4 -0
- package/lib/cjs/components/Box/Box.styles.js +5 -0
- package/lib/cjs/components/IconButton/IconButton.styles.d.ts +41 -0
- package/lib/cjs/components/IconButton/IconButton.styles.js +14 -1
- package/lib/cjs/components/ListBox/Option.js +11 -2
- package/lib/cjs/components/SelectField/SelectField.stories.d.ts +1 -0
- package/lib/cjs/components/SelectField/SelectField.stories.js +22 -2
- package/lib/cjs/components/SelectField/SelectField.test.js +11 -0
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +48 -27
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.js +26 -0
- package/lib/cjs/components/TableBase/TableBase.js +36 -6
- package/lib/cjs/components/TableBase/TableBase.stories.d.ts +14 -0
- package/lib/cjs/components/TableBase/TableBase.stories.js +193 -6
- package/lib/cjs/components/TableBase/TableBase.styles.d.ts +17 -1
- package/lib/cjs/components/TableBase/TableBase.styles.js +11 -2
- package/lib/cjs/components/TableBase/TableBase.test.js +267 -0
- package/lib/cjs/components/TableBase/stories/NextGenTableBase.js +2 -4
- package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +0 -5
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +0 -5
- package/lib/cjs/styles/themes/astro/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themes/astro/customProperties/icons.js +1 -1
- package/lib/cjs/styles/themes/astro/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/forms.d.ts +22 -0
- package/lib/cjs/styles/themes/next-gen/forms.js +12 -0
- package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +58 -6
- package/lib/cjs/styles/themes/next-gen/variants/button.d.ts +38 -2
- package/lib/cjs/styles/themes/next-gen/variants/button.js +29 -19
- package/lib/cjs/styles/themes/next-gen/variants/cards.d.ts +0 -1
- package/lib/cjs/styles/themes/next-gen/variants/cards.js +1 -3
- package/lib/cjs/styles/themes/next-gen/variants/tableBase.d.ts +4 -2
- package/lib/cjs/styles/themes/next-gen/variants/tableBase.js +4 -2
- package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +9 -3
- package/lib/cjs/styles/themes/next-gen/variants/variants.js +7 -2
- package/lib/cjs/types/selectField.d.ts +5 -0
- package/lib/components/Box/Box.styles.js +5 -0
- package/lib/components/IconButton/IconButton.styles.js +14 -1
- package/lib/components/ListBox/Option.js +12 -3
- package/lib/components/SelectField/SelectField.stories.js +19 -0
- package/lib/components/SelectField/SelectField.test.js +11 -0
- package/lib/components/SelectFieldBase/SelectFieldBase.js +41 -20
- package/lib/components/SelectFieldBase/SelectFieldBase.test.js +26 -0
- package/lib/components/TableBase/TableBase.js +38 -8
- package/lib/components/TableBase/TableBase.stories.js +195 -8
- package/lib/components/TableBase/TableBase.styles.js +11 -2
- package/lib/components/TableBase/TableBase.test.js +267 -1
- package/lib/components/TableBase/stories/NextGenTableBase.js +3 -5
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +0 -5
- package/lib/styles/themes/astro/customProperties/icons.js +1 -1
- package/lib/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/styles/themes/next-gen/forms.js +12 -0
- package/lib/styles/themes/next-gen/variants/button.js +29 -19
- package/lib/styles/themes/next-gen/variants/cards.js +1 -3
- package/lib/styles/themes/next-gen/variants/tableBase.js +4 -2
- package/lib/styles/themes/next-gen/variants/variants.js +7 -2
- package/package.json +1 -1
@@ -5,6 +5,7 @@ declare const _default: {
|
|
5
5
|
indeterminateCheckboxIcon: {
|
6
6
|
width: string;
|
7
7
|
height: string;
|
8
|
+
borderRadius: string;
|
8
9
|
'& rect[id="indeterminate-checkbox-icon-wrapper"]': {
|
9
10
|
fill: string;
|
10
11
|
stroke: string;
|
@@ -15,6 +16,9 @@ declare const _default: {
|
|
15
16
|
stroke: string;
|
16
17
|
};
|
17
18
|
};
|
19
|
+
'&.is-focused': {
|
20
|
+
boxShadow: string;
|
21
|
+
};
|
18
22
|
};
|
19
23
|
};
|
20
24
|
export default _default;
|
@@ -5,12 +5,14 @@ _Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
6
6
|
});
|
7
7
|
exports["default"] = void 0;
|
8
|
+
var _colors = require("../../styles/colors");
|
8
9
|
var base = {
|
9
10
|
display: 'flex'
|
10
11
|
};
|
11
12
|
var indeterminateCheckboxIcon = {
|
12
13
|
width: '24px',
|
13
14
|
height: '24px',
|
15
|
+
borderRadius: '4px',
|
14
16
|
'& rect[id="indeterminate-checkbox-icon-wrapper"]': {
|
15
17
|
fill: 'active',
|
16
18
|
stroke: 'active'
|
@@ -20,6 +22,9 @@ var indeterminateCheckboxIcon = {
|
|
20
22
|
fill: 'neutral.80',
|
21
23
|
stroke: 'neutral.80'
|
22
24
|
}
|
25
|
+
},
|
26
|
+
'&.is-focused': {
|
27
|
+
boxShadow: "inset 0px 0px 0px 1px ".concat(_colors.focus)
|
23
28
|
}
|
24
29
|
};
|
25
30
|
var _default = {
|
@@ -722,5 +722,46 @@ declare const _default: {
|
|
722
722
|
cursor: string;
|
723
723
|
p: string;
|
724
724
|
};
|
725
|
+
clearSelectionButton: {
|
726
|
+
width: string;
|
727
|
+
height: string;
|
728
|
+
position: string;
|
729
|
+
right: string;
|
730
|
+
top: string;
|
731
|
+
bg: string;
|
732
|
+
'.is-float-label &': {
|
733
|
+
top: string;
|
734
|
+
};
|
735
|
+
justifyContent: string;
|
736
|
+
appearance: string;
|
737
|
+
alignItems: string;
|
738
|
+
alignSelf: string;
|
739
|
+
display: string;
|
740
|
+
flexGrow: number;
|
741
|
+
flexShrink: number;
|
742
|
+
borderRadius: string;
|
743
|
+
cursor: string;
|
744
|
+
p: string;
|
745
|
+
path: {
|
746
|
+
fill: string;
|
747
|
+
};
|
748
|
+
outline: string;
|
749
|
+
'&.is-focused': {
|
750
|
+
outline: string;
|
751
|
+
outlineColor: string;
|
752
|
+
outlineOffset: string;
|
753
|
+
};
|
754
|
+
'&.is-hovered': {
|
755
|
+
bg: string;
|
756
|
+
boxShadow: string;
|
757
|
+
};
|
758
|
+
'&.is-pressed': {
|
759
|
+
path: {
|
760
|
+
fill: string;
|
761
|
+
};
|
762
|
+
bg: string;
|
763
|
+
boxShadow: string;
|
764
|
+
};
|
765
|
+
};
|
725
766
|
};
|
726
767
|
export default _default;
|
@@ -14,6 +14,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
14
14
|
});
|
15
15
|
exports.square = exports["default"] = exports.base = void 0;
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
17
|
+
var _tShirtSizes = _interopRequireDefault(require("../../styles/themes/astro/customProperties/tShirtSizes"));
|
17
18
|
var _Badge = require("../Badge/Badge.styles");
|
18
19
|
var _Buttons = require("../Button/Buttons.styles");
|
19
20
|
var _CollapsiblePanel = require("../CollapsiblePanel/CollapsiblePanel.styles");
|
@@ -147,6 +148,17 @@ var searchClearButton = _objectSpread(_objectSpread({}, base), {}, {
|
|
147
148
|
position: 'absolute',
|
148
149
|
right: 10
|
149
150
|
});
|
151
|
+
var clearSelectionButton = _objectSpread(_objectSpread({}, base), {}, {
|
152
|
+
width: _tShirtSizes["default"].md,
|
153
|
+
height: _tShirtSizes["default"].md,
|
154
|
+
position: 'absolute',
|
155
|
+
right: '15px',
|
156
|
+
top: '7px',
|
157
|
+
bg: 'white',
|
158
|
+
'.is-float-label &': {
|
159
|
+
top: '9px'
|
160
|
+
}
|
161
|
+
});
|
150
162
|
var filter = _objectSpread(_objectSpread({}, base), {}, {
|
151
163
|
bg: 'white',
|
152
164
|
border: '1px solid',
|
@@ -196,6 +208,7 @@ var _default = {
|
|
196
208
|
applicationPortal: applicationPortal,
|
197
209
|
applicationPortalPinned: applicationPortalPinned,
|
198
210
|
searchClearButton: searchClearButton,
|
199
|
-
filter: filter
|
211
|
+
filter: filter,
|
212
|
+
clearSelectionButton: clearSelectionButton
|
200
213
|
};
|
201
214
|
exports["default"] = _default;
|
@@ -19,6 +19,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
|
|
19
19
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
20
20
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
21
21
|
var _react = _interopRequireWildcard(require("react"));
|
22
|
+
var _CheckIcon = _interopRequireDefault(require("@pingux/mdi-react/CheckIcon"));
|
22
23
|
var _CircleSmallIcon = _interopRequireDefault(require("@pingux/mdi-react/CircleSmallIcon"));
|
23
24
|
var _listbox = require("@react-aria/listbox");
|
24
25
|
var _MultivaluesContext = require("../../context/MultivaluesContext");
|
@@ -99,6 +100,8 @@ var Option = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
99
100
|
state.selectionManager.setFocusedKey(item.key);
|
100
101
|
}
|
101
102
|
};
|
103
|
+
var _useGetTheme = (0, _hooks.useGetTheme)(),
|
104
|
+
isOnyx = _useGetTheme.themeState.isOnyx;
|
102
105
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(null, {
|
103
106
|
isDisabled: isDisabled || isSeparator,
|
104
107
|
isFocused: focused,
|
@@ -139,12 +142,18 @@ var Option = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
139
142
|
mr: "xs",
|
140
143
|
className: classNames,
|
141
144
|
variant: "listBox.checkboxIcon"
|
142
|
-
}) : isSelected && (0, _react2.jsx)(_Icon["default"], {
|
145
|
+
}) : isSelected && !isOnyx && (0, _react2.jsx)(_Icon["default"], {
|
143
146
|
icon: _CircleSmallIcon["default"],
|
144
147
|
title: {
|
145
148
|
name: 'Circle Small Icon'
|
146
149
|
}
|
147
|
-
}), rendered)
|
150
|
+
}), rendered, isSelected && isOnyx && (0, _react2.jsx)(_Icon["default"], {
|
151
|
+
icon: _CheckIcon["default"],
|
152
|
+
title: {
|
153
|
+
name: 'Check Icon'
|
154
|
+
},
|
155
|
+
color: "green-500"
|
156
|
+
}));
|
148
157
|
});
|
149
158
|
var _default = Option;
|
150
159
|
exports["default"] = _default;
|
@@ -57,3 +57,4 @@ export declare const DynamicItems: {
|
|
57
57
|
export declare const AsyncLoading: () => React.JSX.Element;
|
58
58
|
export declare const WithoutStatusIndicator: (args: any) => React.JSX.Element;
|
59
59
|
export declare const WithHelpHint: (args: any) => React.JSX.Element;
|
60
|
+
export declare const WithClearButton: (args: any) => React.JSX.Element;
|
@@ -21,7 +21,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
21
21
|
_Object$defineProperty(exports, "__esModule", {
|
22
22
|
value: true
|
23
23
|
});
|
24
|
-
exports["default"] = exports.WithoutStatusIndicator = exports.WithSlots = exports.WithSections = exports.WithNoneOption = exports.WithHelpHint = exports.WithCustomHeight = exports.NoOptionsAvailable = exports.HelperText = exports.FloatLabel = exports.DynamicItems = exports.DisabledOptions = exports.DisabledField = exports.Default = exports.Controlled = exports.AsyncLoading = void 0;
|
24
|
+
exports["default"] = exports.WithoutStatusIndicator = exports.WithSlots = exports.WithSections = exports.WithNoneOption = exports.WithHelpHint = exports.WithCustomHeight = exports.WithClearButton = exports.NoOptionsAvailable = exports.HelperText = exports.FloatLabel = exports.DynamicItems = exports.DisabledOptions = exports.DisabledField = exports.Default = exports.Controlled = exports.AsyncLoading = void 0;
|
25
25
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
26
26
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/values"));
|
27
27
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
@@ -484,4 +484,24 @@ var WithHelpHint = function WithHelpHint(args) {
|
|
484
484
|
key: "yellow"
|
485
485
|
}, "Yellow")));
|
486
486
|
};
|
487
|
-
exports.WithHelpHint = WithHelpHint;
|
487
|
+
exports.WithHelpHint = WithHelpHint;
|
488
|
+
var WithClearButton = function WithClearButton(args) {
|
489
|
+
var _useState5 = (0, _react.useState)('red'),
|
490
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
491
|
+
selectedKey = _useState6[0],
|
492
|
+
setSelectedKey = _useState6[1];
|
493
|
+
return (0, _react2.jsx)(_reactAria.OverlayProvider, null, (0, _react2.jsx)(_index.SelectField, (0, _extends2["default"])({}, args, {
|
494
|
+
width: "100%",
|
495
|
+
label: "What's your favorite color?",
|
496
|
+
hasClearButton: true,
|
497
|
+
selectedKey: selectedKey,
|
498
|
+
onSelectionChange: setSelectedKey
|
499
|
+
}), (0, _react2.jsx)(_index.Item, {
|
500
|
+
key: "red"
|
501
|
+
}, "Red"), (0, _react2.jsx)(_index.Item, {
|
502
|
+
key: "blue"
|
503
|
+
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
504
|
+
key: "yellow"
|
505
|
+
}, "Yellow")));
|
506
|
+
};
|
507
|
+
exports.WithClearButton = WithClearButton;
|
@@ -194,4 +194,15 @@ test('should show hintText text if prop is passed', function () {
|
|
194
194
|
_testWrapper.fireEvent.mouseMove(helpHintButton);
|
195
195
|
_testWrapper.fireEvent.mouseEnter(helpHintButton);
|
196
196
|
expect(_testWrapper.screen.getByText(hintText)).toBeInTheDocument();
|
197
|
+
});
|
198
|
+
test('should have clear button if hasClearButton prop is true', function () {
|
199
|
+
getComponent({
|
200
|
+
selectedKey: 'a',
|
201
|
+
hasClearButton: true,
|
202
|
+
clearButtonProps: {
|
203
|
+
'data-testid': 'clear-button'
|
204
|
+
}
|
205
|
+
});
|
206
|
+
var clearButton = _testWrapper.screen.getByTestId('clear-button');
|
207
|
+
expect(clearButton).toBeInTheDocument();
|
197
208
|
});
|
@@ -19,21 +19,16 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
|
|
19
19
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
20
20
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
21
21
|
var _react = _interopRequireWildcard(require("react"));
|
22
|
+
var _CloseIcon = _interopRequireDefault(require("@pingux/mdi-react/CloseIcon"));
|
22
23
|
var _uuid = require("uuid");
|
24
|
+
var _ = require("../..");
|
23
25
|
var _useGetTheme2 = _interopRequireDefault(require("../../hooks/useGetTheme"));
|
24
26
|
var _labelModes = require("../../utils/devUtils/constants/labelModes");
|
25
27
|
var _pendoID = require("../../utils/devUtils/constants/pendoID");
|
26
28
|
var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
|
27
|
-
var _Box = _interopRequireDefault(require("../Box"));
|
28
|
-
var _Button = _interopRequireDefault(require("../Button"));
|
29
|
-
var _FieldHelperText = _interopRequireDefault(require("../FieldHelperText"));
|
30
|
-
var _Icon = _interopRequireDefault(require("../Icon"));
|
31
|
-
var _Label = _interopRequireDefault(require("../Label"));
|
32
|
-
var _Loader = _interopRequireDefault(require("../Loader"));
|
33
|
-
var _Text = _interopRequireDefault(require("../Text"));
|
34
29
|
var _HiddenSelect = require("./HiddenSelect");
|
35
30
|
var _react2 = require("@emotion/react");
|
36
|
-
var _excluded = ["columnStyleProps", "defaultText", "fieldContainerProps", "fieldControlInputProps", "fieldControlWrapperProps", "fieldLabelProps", "helperText", "isLoadingInitial", "isDisabled", "label", "labelMode", "name", "overlay", "placeholder", "slots", "state", "status", "trigger", "triggerProps", "triggerRef", "valueProps", "selectProps"];
|
31
|
+
var _excluded = ["columnStyleProps", "defaultText", "fieldContainerProps", "fieldControlInputProps", "fieldControlWrapperProps", "fieldLabelProps", "helperText", "isLoadingInitial", "isDisabled", "label", "labelMode", "name", "overlay", "placeholder", "slots", "state", "status", "trigger", "triggerProps", "triggerRef", "valueProps", "selectProps", "hasClearButton", "clearButtonProps", "onClear"];
|
37
32
|
/**
|
38
33
|
* Select field (dropdown) that does not rely on native browser or mobile implementations.
|
39
34
|
*
|
@@ -68,6 +63,9 @@ var SelectFieldBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
68
63
|
triggerRef = props.triggerRef,
|
69
64
|
valueProps = props.valueProps,
|
70
65
|
selectProps = props.selectProps,
|
66
|
+
hasClearButton = props.hasClearButton,
|
67
|
+
clearButtonProps = props.clearButtonProps,
|
68
|
+
onClear = props.onClear,
|
71
69
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
72
70
|
var _getAriaAttributeProp = (0, _ariaAttributes.getAriaAttributeProps)(others),
|
73
71
|
ariaProps = _getAriaAttributeProp.ariaProps;
|
@@ -78,44 +76,67 @@ var SelectFieldBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
78
76
|
var helperTextId = (0, _react.useMemo)(function () {
|
79
77
|
return (0, _uuid.v4)();
|
80
78
|
}, []);
|
81
|
-
var
|
79
|
+
var handleOnClear = function handleOnClear() {
|
80
|
+
if (onClear) {
|
81
|
+
onClear();
|
82
|
+
}
|
83
|
+
state.setSelectedKey(null);
|
84
|
+
};
|
85
|
+
var buttonRendered = !(hasClearButton && state.selectedKey) && (0, _react2.jsx)(_.Box, {
|
86
|
+
as: "span",
|
87
|
+
"aria-hidden": "true",
|
88
|
+
variant: "forms.select.arrow"
|
89
|
+
}, (0, _react2.jsx)(_.Icon, {
|
90
|
+
icon: state.isOpen ? MenuUp : MenuDown,
|
91
|
+
title: {
|
92
|
+
name: 'Menu down'
|
93
|
+
},
|
94
|
+
size: "md"
|
95
|
+
}));
|
96
|
+
var clearButton = hasClearButton && state.selectedKey && (0, _react2.jsx)(_.IconButton, (0, _extends2["default"])({
|
97
|
+
tabIndex: 0,
|
98
|
+
as: "span",
|
99
|
+
role: "button",
|
100
|
+
"aria-label": "Clear selection",
|
101
|
+
variant: "clearSelectionButton",
|
102
|
+
onPress: handleOnClear,
|
103
|
+
color: "text.secondary"
|
104
|
+
}, clearButtonProps), (0, _react2.jsx)(_.Icon, {
|
105
|
+
icon: _CloseIcon["default"],
|
106
|
+
title: {
|
107
|
+
name: 'Clear selection Icon'
|
108
|
+
}
|
109
|
+
}));
|
110
|
+
var defaultTrigger = (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
111
|
+
isRow: true
|
112
|
+
}, fieldControlWrapperProps, {
|
82
113
|
variant: "forms.input.fieldControlWrapper"
|
83
|
-
}), (0, _react2.jsx)(
|
114
|
+
}), (0, _react2.jsx)(_.Button, (0, _extends2["default"])({
|
84
115
|
className: fieldControlInputProps.className,
|
85
116
|
ref: triggerRef,
|
86
117
|
variant: "forms.select"
|
87
118
|
}, triggerProps, ariaProps, {
|
88
119
|
"aria-describedby": helperText && helperTextId
|
89
|
-
}), slots === null || slots === void 0 ? void 0 : slots.leftOfData, (0, _react2.jsx)(
|
120
|
+
}), slots === null || slots === void 0 ? void 0 : slots.leftOfData, (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
90
121
|
as: "span",
|
91
122
|
variant: "forms.select.currentValue"
|
92
|
-
}, valueProps), state.selectedItem ? state.selectedItem.rendered : (0, _react2.jsx)(
|
123
|
+
}, valueProps), state.selectedItem ? state.selectedItem.rendered : (0, _react2.jsx)(_.Text, {
|
93
124
|
variant: "placeholder"
|
94
|
-
}, labelMode === _labelModes.modes.FLOAT ? '' : placeholder || defaultText)), isLoadingInitial && (0, _react2.jsx)(
|
125
|
+
}, labelMode === _labelModes.modes.FLOAT ? '' : placeholder || defaultText)), isLoadingInitial && (0, _react2.jsx)(_.Loader, {
|
95
126
|
variant: "loader.withinInput"
|
96
|
-
}),
|
97
|
-
|
98
|
-
"aria-hidden": "true",
|
99
|
-
variant: "forms.select.arrow"
|
100
|
-
}, (0, _react2.jsx)(_Icon["default"], {
|
101
|
-
icon: state.isOpen ? MenuUp : MenuDown,
|
102
|
-
title: {
|
103
|
-
name: 'Menu down'
|
104
|
-
},
|
105
|
-
size: "md"
|
106
|
-
}))), slots === null || slots === void 0 ? void 0 : slots.inContainer);
|
107
|
-
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
127
|
+
}), buttonRendered), clearButton, slots === null || slots === void 0 ? void 0 : slots.inContainer);
|
128
|
+
return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
108
129
|
ref: ref,
|
109
130
|
variant: "forms.input.fieldContainer"
|
110
131
|
}, (0, _pendoID.getPendoID)('SelectField'), fieldContainerProps, {
|
111
132
|
sx: _objectSpread(_objectSpread({}, columnStyleProps === null || columnStyleProps === void 0 ? void 0 : columnStyleProps.sx), fieldContainerProps === null || fieldContainerProps === void 0 ? void 0 : fieldContainerProps.sx)
|
112
|
-
}), (0, _react2.jsx)(
|
133
|
+
}), (0, _react2.jsx)(_.Label, fieldLabelProps, label), (0, _react2.jsx)(_HiddenSelect.HiddenSelect, (0, _extends2["default"])({
|
113
134
|
state: state,
|
114
135
|
triggerRef: triggerRef,
|
115
136
|
label: label,
|
116
137
|
name: name,
|
117
138
|
isDisabled: isDisabled
|
118
|
-
}, selectProps)), trigger || defaultTrigger, overlay, helperText && (0, _react2.jsx)(
|
139
|
+
}, selectProps)), trigger || defaultTrigger, overlay, helperText && (0, _react2.jsx)(_.FieldHelperText, {
|
119
140
|
status: status,
|
120
141
|
id: helperTextId
|
121
142
|
}, helperText));
|
@@ -51,6 +51,7 @@ var defaultProps = {
|
|
51
51
|
value: testValue,
|
52
52
|
items: items
|
53
53
|
};
|
54
|
+
var onClear = jest.fn();
|
54
55
|
var SelectFieldWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
55
56
|
var _useSelectField = (0, _hooks.useSelectField)(props, ref),
|
56
57
|
selectFieldProps = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_useSelectField), _useSelectField));
|
@@ -436,4 +437,29 @@ test('popover closes on button blur', function () {
|
|
436
437
|
}, item.name);
|
437
438
|
});
|
438
439
|
}
|
440
|
+
});
|
441
|
+
test('should have clear button if hasClearButton prop is true', function () {
|
442
|
+
getComponent({
|
443
|
+
selectedKey: 'a',
|
444
|
+
hasClearButton: true,
|
445
|
+
clearButtonProps: {
|
446
|
+
'data-testid': 'clear-button'
|
447
|
+
}
|
448
|
+
});
|
449
|
+
var clearButton = _testWrapper.screen.getByTestId('clear-button');
|
450
|
+
expect(clearButton).toBeInTheDocument();
|
451
|
+
});
|
452
|
+
test('should have call onClear function', function () {
|
453
|
+
getComponent({
|
454
|
+
selectedKey: 'a',
|
455
|
+
hasClearButton: true,
|
456
|
+
clearButtonProps: {
|
457
|
+
'data-testid': 'clear-button'
|
458
|
+
},
|
459
|
+
onClear: onClear
|
460
|
+
});
|
461
|
+
var clearButton = _testWrapper.screen.getByTestId('clear-button');
|
462
|
+
expect(clearButton).toBeInTheDocument();
|
463
|
+
_userEvent["default"].click(clearButton);
|
464
|
+
expect(onClear).toHaveBeenCalledTimes(1);
|
439
465
|
});
|
@@ -63,7 +63,6 @@ var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
63
63
|
var bodyRef = (0, _react.useRef)(null);
|
64
64
|
var collection = state.collection;
|
65
65
|
var _useTable = (0, _table.useTable)(_objectSpread(_objectSpread({}, props), {}, {
|
66
|
-
'aria-describedby': props['aria-describedby'] || 'table-caption',
|
67
66
|
scrollRef: bodyRef
|
68
67
|
}), state, tableRef),
|
69
68
|
gridProps = _useTable.gridProps;
|
@@ -105,8 +104,7 @@ var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
105
104
|
as: "caption",
|
106
105
|
display: "table-caption",
|
107
106
|
variant: "tableBase.caption",
|
108
|
-
textAlign: "left"
|
109
|
-
id: props['aria-describedby'] || 'table-caption'
|
107
|
+
textAlign: "left"
|
110
108
|
}, caption), (0, _react2.jsx)(TableRowGroup, {
|
111
109
|
type: "thead",
|
112
110
|
hasCaption: !!caption,
|
@@ -133,7 +131,18 @@ var TableBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
133
131
|
})), (0, _react2.jsx)(TableRowGroup, (0, _extends2["default"])({
|
134
132
|
ref: bodyRef,
|
135
133
|
type: "tbody"
|
136
|
-
}, tableBodyProps),
|
134
|
+
}, tableBodyProps), collection.size === 0 && (0, _react2.jsx)(_.Box, {
|
135
|
+
role: "row",
|
136
|
+
key: "loading",
|
137
|
+
"data-testid": "loading",
|
138
|
+
as: "tr",
|
139
|
+
alignItems: "center",
|
140
|
+
justifyContent: "center",
|
141
|
+
px: "lg",
|
142
|
+
py: "md"
|
143
|
+
}, (0, _react2.jsx)(_.Loader, {
|
144
|
+
color: "active"
|
145
|
+
})), (0, _map["default"])(_context3 = (0, _from["default"])(collection)).call(_context3, function (row) {
|
137
146
|
var _context4;
|
138
147
|
return (0, _react2.jsx)(TableRow, {
|
139
148
|
key: row.key,
|
@@ -195,6 +204,7 @@ function TableHeaderRow(props) {
|
|
195
204
|
}), children);
|
196
205
|
}
|
197
206
|
function TableColumnHeader(props) {
|
207
|
+
var _column$props;
|
198
208
|
var column = props.column,
|
199
209
|
state = props.state,
|
200
210
|
className = props.className,
|
@@ -207,19 +217,37 @@ function TableColumnHeader(props) {
|
|
207
217
|
var _useFocusRing = (0, _focus.useFocusRing)(),
|
208
218
|
isFocusVisible = _useFocusRing.isFocusVisible,
|
209
219
|
focusProps = _useFocusRing.focusProps;
|
220
|
+
var allowsSorting = (_column$props = column.props) === null || _column$props === void 0 ? void 0 : _column$props.allowsSorting;
|
221
|
+
var _useGetTheme = (0, _hooks.useGetTheme)(),
|
222
|
+
icons = _useGetTheme.icons;
|
223
|
+
var Ascending = icons.Ascending,
|
224
|
+
Descending = icons.Descending;
|
225
|
+
var sortDescriptor = state.sortDescriptor;
|
226
|
+
var arrowIcon = (sortDescriptor === null || sortDescriptor === void 0 ? void 0 : sortDescriptor.column) === column.key && (sortDescriptor === null || sortDescriptor === void 0 ? void 0 : sortDescriptor.direction) === 'ascending' ? Ascending : Descending;
|
227
|
+
var sortIcon = (0, _react2.jsx)(_.Icon, {
|
228
|
+
icon: arrowIcon,
|
229
|
+
size: "xs",
|
230
|
+
"aria-hidden": "true",
|
231
|
+
title: {
|
232
|
+
name: (sortDescriptor === null || sortDescriptor === void 0 ? void 0 : sortDescriptor.direction) === 'ascending' ? 'Sort ascending' : 'Sort descending'
|
233
|
+
}
|
234
|
+
});
|
210
235
|
var _useStatusClasses2 = (0, _hooks.useStatusClasses)(className, {
|
211
236
|
isFocused: isFocusVisible
|
212
237
|
}),
|
213
238
|
classNames = _useStatusClasses2.classNames;
|
214
239
|
return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
240
|
+
isRow: true,
|
215
241
|
ref: ref,
|
216
242
|
as: "th",
|
217
243
|
variant: "tableBase.head",
|
218
244
|
className: classNames,
|
245
|
+
alignItems: "center",
|
219
246
|
sx: _objectSpread({
|
247
|
+
gap: 'sm',
|
220
248
|
width: layoutState === null || layoutState === void 0 ? void 0 : layoutState.getColumnWidth(column.key)
|
221
249
|
}, column.props.sx)
|
222
|
-
}, (0, _utils.mergeProps)(columnHeaderProps, focusProps, column.props)), column.rendered);
|
250
|
+
}, (0, _utils.mergeProps)(columnHeaderProps, focusProps, column.props)), column.rendered, allowsSorting && sortIcon);
|
223
251
|
}
|
224
252
|
function TableRow(props) {
|
225
253
|
var item = props.item,
|
@@ -232,6 +260,7 @@ function TableRow(props) {
|
|
232
260
|
}, state, ref),
|
233
261
|
rowProps = _useTableRow.rowProps;
|
234
262
|
var isSelected = state.selectionManager.isSelected(item.key);
|
263
|
+
var isDisabled = state.disabledKeys.has(item.key);
|
235
264
|
var _useFocusRing2 = (0, _focus.useFocusRing)(),
|
236
265
|
isFocusVisible = _useFocusRing2.isFocusVisible,
|
237
266
|
focusProps = _useFocusRing2.focusProps;
|
@@ -247,7 +276,8 @@ function TableRow(props) {
|
|
247
276
|
isSelected: isSelected,
|
248
277
|
isHovered: isHovered,
|
249
278
|
isPressed: isPressed,
|
250
|
-
isFocused: isFocusVisible
|
279
|
+
isFocused: isFocusVisible,
|
280
|
+
isDisabled: isDisabled
|
251
281
|
}),
|
252
282
|
classNames = _useStatusClasses3.classNames;
|
253
283
|
return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
import { StoryFn } from '@storybook/react';
|
2
3
|
import { TableBaseProps } from '../../types/tableBase';
|
3
4
|
declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0a347bb9").R, import("@storybook/types").Args>;
|
@@ -6,3 +7,16 @@ export declare const Default: StoryFn<TableBaseProps<object>>;
|
|
6
7
|
export declare const MultiSelection: StoryFn<TableBaseProps<object>>;
|
7
8
|
export declare const WithStickyHeader: StoryFn<TableBaseProps<object>>;
|
8
9
|
export declare const WithPagination: StoryFn<TableBaseProps<object>>;
|
10
|
+
export declare const DynamicWithSorting: {
|
11
|
+
(): React.JSX.Element;
|
12
|
+
parameters: {
|
13
|
+
a11y: {
|
14
|
+
config: {
|
15
|
+
rules: {
|
16
|
+
id: string;
|
17
|
+
enabled: boolean;
|
18
|
+
}[];
|
19
|
+
};
|
20
|
+
};
|
21
|
+
};
|
22
|
+
};
|