@kaizen/components 2.0.0 → 2.0.2
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/alpha/README.md +28 -0
- package/alpha/package.json +5 -0
- package/dist/cjs/alpha.cjs +1 -0
- package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
- package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
- package/dist/esm/alpha.mjs +1 -1
- package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
- package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
- package/dist/styles.css +443 -79
- package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
- package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
- package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
- package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
- package/locales/en.json +9 -1
- package/package.json +9 -2
- package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
- package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
- package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
- package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
- package/src/__alpha__/SingleSelect/types.ts +94 -14
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var tslib = require('tslib');
|
|
3
4
|
var React = require('react');
|
|
4
|
-
var
|
|
5
|
+
var classnames = require('classnames');
|
|
6
|
+
var reactAria = require('react-aria');
|
|
5
7
|
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
8
|
+
var useSupportsAnchorPositioning = require('./utils/useSupportsAnchorPositioning.cjs');
|
|
6
9
|
var usePositioningStyles = require('./utils/usePositioningStyles.cjs');
|
|
7
10
|
var Popover_module = require('./Popover.module.css.cjs');
|
|
8
11
|
function _interopDefault(e) {
|
|
@@ -11,44 +14,71 @@ function _interopDefault(e) {
|
|
|
11
14
|
};
|
|
12
15
|
}
|
|
13
16
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
17
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
14
18
|
var Popover = function (_a) {
|
|
15
|
-
var
|
|
19
|
+
var _b;
|
|
20
|
+
var _c;
|
|
21
|
+
var state = _a.state,
|
|
16
22
|
popoverRef = _a.popoverRef,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
children = _a.children,
|
|
24
|
+
clearButtonRef = _a.clearButtonRef,
|
|
25
|
+
restProps = tslib.__rest(_a, ["state", "popoverRef", "children", "clearButtonRef"]);
|
|
26
|
+
var anchorName = SingleSelectContext.useSingleSelectContext().anchorName;
|
|
27
|
+
var manualPopoverRef = React__default.default.useRef(null);
|
|
28
|
+
var popoverProps = reactAria.usePopover(tslib.__assign(tslib.__assign({}, restProps), {
|
|
29
|
+
popoverRef: popoverRef,
|
|
30
|
+
shouldCloseOnInteractOutside: function (element) {
|
|
31
|
+
var _a;
|
|
32
|
+
if ((_a = clearButtonRef === null || clearButtonRef === void 0 ? void 0 : clearButtonRef.current) === null || _a === void 0 ? void 0 : _a.contains(element)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}), state).popoverProps;
|
|
38
|
+
var supportsAnchorPositioning = useSupportsAnchorPositioning.useSupportsAnchorPositioning();
|
|
39
|
+
var _d = usePositioningStyles.usePositioningStyles(restProps.triggerRef, manualPopoverRef, anchorName),
|
|
40
|
+
popoverStyle = _d.popoverStyle,
|
|
41
|
+
isPositioned = _d.isPositioned,
|
|
42
|
+
updatePosition = _d.updatePosition;
|
|
29
43
|
React.useLayoutEffect(function () {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
if (!supportsAnchorPositioning || !state.isOpen) return;
|
|
45
|
+
updatePosition();
|
|
46
|
+
var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
|
|
47
|
+
if (popover === null || popover === void 0 ? void 0 : popover.showPopover) {
|
|
33
48
|
popover.showPopover();
|
|
34
|
-
}
|
|
49
|
+
}
|
|
50
|
+
return function () {
|
|
51
|
+
if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
|
|
52
|
+
popover.hidePopover();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}, [state.isOpen, supportsAnchorPositioning, updatePosition, isPositioned]);
|
|
56
|
+
React.useLayoutEffect(function () {
|
|
57
|
+
if (!supportsAnchorPositioning || state.isOpen) return;
|
|
58
|
+
var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
|
|
59
|
+
if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
|
|
35
60
|
popover.hidePopover();
|
|
36
61
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return React__default.default.createElement(reactAriaComponents.Popover, {
|
|
40
|
-
shouldUpdatePosition: false,
|
|
41
|
-
trigger: "manual",
|
|
42
|
-
isOpen: isOpen,
|
|
43
|
-
onOpenChange: setOpen,
|
|
44
|
-
ref: racPopoverRef
|
|
45
|
-
}, React__default.default.createElement("div", {
|
|
62
|
+
}, [state.isOpen, supportsAnchorPositioning]);
|
|
63
|
+
var manualPopover = React__default.default.createElement("div", {
|
|
46
64
|
// @ts-expect-error - popover attribute is not included in current ts version, ignore type error
|
|
47
65
|
popover: "manual",
|
|
48
|
-
ref:
|
|
66
|
+
ref: manualPopoverRef,
|
|
49
67
|
className: Popover_module.popover,
|
|
50
68
|
style: popoverStyle
|
|
51
|
-
}, children)
|
|
69
|
+
}, children);
|
|
70
|
+
return React__default.default.createElement(React__default.default.Fragment, null, state.isOpen && React__default.default.createElement(reactAria.Overlay, null, React__default.default.createElement("div", tslib.__assign({
|
|
71
|
+
id: "popover-id"
|
|
72
|
+
}, popoverProps, {
|
|
73
|
+
ref: popoverRef,
|
|
74
|
+
style: tslib.__assign(tslib.__assign({}, popoverProps.style), !supportsAnchorPositioning && {
|
|
75
|
+
width: (_c = restProps.triggerRef.current) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect().width
|
|
76
|
+
}),
|
|
77
|
+
className: classnames__default.default(Popover_module.popover, (_b = {}, _b[Popover_module.offsetSpacing] = !supportsAnchorPositioning, _b))
|
|
78
|
+
}), React__default.default.createElement(reactAria.DismissButton, {
|
|
79
|
+
onDismiss: state.close
|
|
80
|
+
}), supportsAnchorPositioning ? manualPopover : children, React__default.default.createElement(reactAria.DismissButton, {
|
|
81
|
+
onDismiss: state.close
|
|
82
|
+
}))));
|
|
52
83
|
};
|
|
53
|
-
Popover.displayName = 'SingleSelect.Popover';
|
|
54
84
|
exports.Popover = Popover;
|
package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs
CHANGED
|
@@ -88,7 +88,8 @@ function usePopoverPositioning(_a) {
|
|
|
88
88
|
};
|
|
89
89
|
}, [updatePosition, triggerRef]);
|
|
90
90
|
return tslib.__assign(tslib.__assign({}, position), {
|
|
91
|
-
isPositioned: isPositioned
|
|
91
|
+
isPositioned: isPositioned,
|
|
92
|
+
updatePosition: updatePosition
|
|
92
93
|
});
|
|
93
94
|
}
|
|
94
95
|
exports.usePopoverPositioning = usePopoverPositioning;
|
package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs
CHANGED
|
@@ -46,7 +46,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
|
|
|
46
46
|
bottom = _a.bottom,
|
|
47
47
|
insetInlineStart = _a.insetInlineStart,
|
|
48
48
|
maxHeight = _a.maxHeight,
|
|
49
|
-
isPositioned = _a.isPositioned
|
|
49
|
+
isPositioned = _a.isPositioned,
|
|
50
|
+
updatePosition = _a.updatePosition;
|
|
50
51
|
var positionData = React.useMemo(function () {
|
|
51
52
|
return {
|
|
52
53
|
top: top,
|
|
@@ -63,7 +64,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
|
|
|
63
64
|
}, [hasAnchorSupport, anchorName, positionData]);
|
|
64
65
|
return {
|
|
65
66
|
popoverStyle: popoverStyle,
|
|
66
|
-
isPositioned: isPositioned
|
|
67
|
+
isPositioned: isPositioned,
|
|
68
|
+
updatePosition: updatePosition
|
|
67
69
|
};
|
|
68
70
|
};
|
|
69
71
|
exports.usePositioningStyles = usePositioningStyles;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var select = require('@react-stately/select');
|
|
6
|
+
var classnames = require('classnames');
|
|
7
|
+
var reactAria = require('react-aria');
|
|
8
|
+
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
9
|
+
var List = require('../List/List.cjs');
|
|
10
|
+
var Popover = require('../Popover/Popover.cjs');
|
|
11
|
+
var SelectTrigger = require('../SelectTrigger/SelectTrigger.cjs');
|
|
12
|
+
var Select_module = require('./Select.module.css.cjs');
|
|
13
|
+
var Label = require('../../../../Label/Label.cjs');
|
|
14
|
+
var FieldMessage = require('../../../../FieldMessage/FieldMessage.cjs');
|
|
15
|
+
function _interopDefault(e) {
|
|
16
|
+
return e && e.__esModule ? e : {
|
|
17
|
+
default: e
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
21
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
22
|
+
var Select = function (props) {
|
|
23
|
+
var _a;
|
|
24
|
+
var label = props.label,
|
|
25
|
+
description = props.description,
|
|
26
|
+
labelHidden = props.labelHidden,
|
|
27
|
+
_b = props.labelPosition,
|
|
28
|
+
labelPosition = _b === void 0 ? 'top' : _b,
|
|
29
|
+
isDisabled = props.isDisabled,
|
|
30
|
+
isReadOnly = props.isReadOnly,
|
|
31
|
+
_c = props.size,
|
|
32
|
+
size = _c === void 0 ? 'medium' : _c,
|
|
33
|
+
_d = props.variant,
|
|
34
|
+
variant = _d === void 0 ? 'primary' : _d;
|
|
35
|
+
var state = select.useSelectState(tslib.__assign(tslib.__assign({}, props), {
|
|
36
|
+
items: props.items,
|
|
37
|
+
children: props.children
|
|
38
|
+
}));
|
|
39
|
+
var popoverRef = React.useRef(null);
|
|
40
|
+
var listBoxRef = React.useRef(null);
|
|
41
|
+
var triggerRef = React.useRef(null);
|
|
42
|
+
var _e = reactAria.useSelect(tslib.__assign(tslib.__assign({}, props), {
|
|
43
|
+
'aria-label': labelHidden ? label : undefined
|
|
44
|
+
}), state, triggerRef),
|
|
45
|
+
labelProps = _e.labelProps,
|
|
46
|
+
descriptionProps = _e.descriptionProps,
|
|
47
|
+
menuProps = _e.menuProps,
|
|
48
|
+
triggerProps = _e.triggerProps,
|
|
49
|
+
valueProps = _e.valueProps;
|
|
50
|
+
var uniqueId = React.useId();
|
|
51
|
+
var anchorName = "--trigger-".concat(uniqueId);
|
|
52
|
+
return React__default.default.createElement(SingleSelectContext.SingleSelectContext.Provider, {
|
|
53
|
+
value: {
|
|
54
|
+
anchorName: anchorName,
|
|
55
|
+
state: state,
|
|
56
|
+
isComboBox: false,
|
|
57
|
+
isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
|
|
58
|
+
isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
|
|
59
|
+
secondary: variant === 'secondary',
|
|
60
|
+
size: size,
|
|
61
|
+
fieldLabel: label
|
|
62
|
+
}
|
|
63
|
+
}, React__default.default.createElement("div", {
|
|
64
|
+
className: labelPosition === 'top' ? Select_module.topLabel : Select_module.sideLabel
|
|
65
|
+
}, !labelHidden && React__default.default.createElement("div", {
|
|
66
|
+
className: classnames__default.default(Select_module.label, (_a = {}, _a[Select_module.labelTop] = labelPosition === 'top', _a))
|
|
67
|
+
}, React__default.default.createElement(Label.Label, tslib.__assign({}, labelProps), label)), React__default.default.createElement("div", {
|
|
68
|
+
className: Select_module.selectTrigger
|
|
69
|
+
}, React__default.default.createElement(SelectTrigger.SelectTrigger, {
|
|
70
|
+
triggerProps: triggerProps,
|
|
71
|
+
valueProps: valueProps,
|
|
72
|
+
buttonRef: triggerRef
|
|
73
|
+
})), description && React__default.default.createElement("div", {
|
|
74
|
+
className: Select_module.description
|
|
75
|
+
}, React__default.default.createElement(FieldMessage.FieldMessage, tslib.__assign({
|
|
76
|
+
message: description
|
|
77
|
+
}, descriptionProps)))), React__default.default.createElement(Popover.Popover, {
|
|
78
|
+
state: state,
|
|
79
|
+
triggerRef: triggerRef,
|
|
80
|
+
popoverRef: popoverRef
|
|
81
|
+
}, React__default.default.createElement(List.List, {
|
|
82
|
+
listBoxOptions: menuProps,
|
|
83
|
+
state: state,
|
|
84
|
+
listBoxRef: listBoxRef
|
|
85
|
+
})));
|
|
86
|
+
};
|
|
87
|
+
exports.Select = Select;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styles = {
|
|
4
|
+
"topLabel": "Select-module_topLabel__tuilO",
|
|
5
|
+
"sideLabel": "Select-module_sideLabel__om-vC",
|
|
6
|
+
"label": "Select-module_label__X4jf-",
|
|
7
|
+
"labelTop": "Select-module_labelTop__vE3N2",
|
|
8
|
+
"selectTrigger": "Select-module_selectTrigger__ibr4f",
|
|
9
|
+
"description": "Select-module_description__hOocq"
|
|
10
|
+
};
|
|
11
|
+
module.exports = styles;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var classnames = require('classnames');
|
|
6
|
+
var reactAria = require('react-aria');
|
|
7
|
+
var Icon = require('../../../../Icon/Icon.cjs');
|
|
8
|
+
var Text = require('../../../../Text/Text.cjs');
|
|
9
|
+
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
10
|
+
var SelectTrigger_module = require('./SelectTrigger.module.css.cjs');
|
|
11
|
+
function _interopDefault(e) {
|
|
12
|
+
return e && e.__esModule ? e : {
|
|
13
|
+
default: e
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
17
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
18
|
+
var ChevronButton = function () {
|
|
19
|
+
var state = SingleSelectContext.useSingleSelectContext().state;
|
|
20
|
+
return React__default.default.createElement("div", {
|
|
21
|
+
className: SelectTrigger_module.chevronButton
|
|
22
|
+
}, React__default.default.createElement(Icon.Icon, {
|
|
23
|
+
isPresentational: true,
|
|
24
|
+
name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
|
|
25
|
+
}));
|
|
26
|
+
};
|
|
27
|
+
var SelectTrigger = function (_a) {
|
|
28
|
+
var _b;
|
|
29
|
+
var triggerProps = _a.triggerProps,
|
|
30
|
+
valueProps = _a.valueProps,
|
|
31
|
+
buttonRef = _a.buttonRef;
|
|
32
|
+
var _c = SingleSelectContext.useSingleSelectContext(),
|
|
33
|
+
state = _c.state,
|
|
34
|
+
anchorName = _c.anchorName,
|
|
35
|
+
isDisabled = _c.isDisabled,
|
|
36
|
+
isReadOnly = _c.isReadOnly,
|
|
37
|
+
secondary = _c.secondary,
|
|
38
|
+
size = _c.size;
|
|
39
|
+
var buttonProps = reactAria.useButton(triggerProps, buttonRef).buttonProps;
|
|
40
|
+
return React__default.default.createElement("button", tslib.__assign({}, buttonProps, {
|
|
41
|
+
type: "button",
|
|
42
|
+
style: {
|
|
43
|
+
'--anchor-name': anchorName
|
|
44
|
+
},
|
|
45
|
+
className: classnames__default.default(SelectTrigger_module.trigger, (_b = {}, _b[SelectTrigger_module.disabled] = isDisabled, _b[SelectTrigger_module.readOnly] = isReadOnly, _b[SelectTrigger_module.secondary] = secondary, _b[SelectTrigger_module.small] = size === 'small', _b[SelectTrigger_module.large] = size === 'large', _b)),
|
|
46
|
+
ref: buttonRef
|
|
47
|
+
}), React__default.default.createElement(Text.Text, {
|
|
48
|
+
variant: size === 'small' ? 'small' : 'body',
|
|
49
|
+
classNameOverride: isDisabled ? SelectTrigger_module.disabledText : undefined
|
|
50
|
+
}, React__default.default.createElement("span", tslib.__assign({}, valueProps), state.selectedItem ? state.selectedItem.textValue : '')), !isReadOnly && React__default.default.createElement(ChevronButton, null));
|
|
51
|
+
};
|
|
52
|
+
exports.SelectTrigger = SelectTrigger;
|
package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styles = {
|
|
4
|
+
"trigger": "SelectTrigger-module_trigger__fIe03",
|
|
5
|
+
"disabled": "SelectTrigger-module_disabled__zfAoe",
|
|
6
|
+
"secondary": "SelectTrigger-module_secondary__eOquY",
|
|
7
|
+
"readOnly": "SelectTrigger-module_readOnly__q-Epr",
|
|
8
|
+
"disabledText": "SelectTrigger-module_disabledText__acP59",
|
|
9
|
+
"small": "SelectTrigger-module_small__jE-NG",
|
|
10
|
+
"large": "SelectTrigger-module_large__r93d8",
|
|
11
|
+
"chevronButton": "SelectTrigger-module_chevronButton__611jw"
|
|
12
|
+
};
|
|
13
|
+
module.exports = styles;
|
package/dist/esm/alpha.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SingleSelect } from './src/__alpha__/SingleSelect/SingleSelect.mjs';
|
|
1
|
+
export { Item, SingleSelect } from './src/__alpha__/SingleSelect/SingleSelect.mjs';
|
|
@@ -19,7 +19,7 @@ const InlineNotification = /*#__PURE__*/function () {
|
|
|
19
19
|
otherProps = __rest(_a, ["isSubtle", "hideCloseIcon", "persistent", "classNameOverride"]);
|
|
20
20
|
return /*#__PURE__*/React.createElement(GenericNotification, __assign({
|
|
21
21
|
style: "inline",
|
|
22
|
-
persistent: persistent
|
|
22
|
+
persistent: persistent || hideCloseIcon,
|
|
23
23
|
classNameOverride: classnames(classNameOverride, [isSubtle && styles.subtle]),
|
|
24
24
|
ref: ref
|
|
25
25
|
}, otherProps));
|
|
@@ -1,77 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
1
|
+
import { __assign, __rest } from 'tslib';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Item as Item$1, Section } from '@react-stately/collections';
|
|
4
|
+
import 'react-aria';
|
|
5
|
+
import 'classnames';
|
|
6
|
+
import '../../Radio/Radio/Radio.mjs';
|
|
7
|
+
import '../../Radio/RadioField/RadioField.mjs';
|
|
8
|
+
import '../../Radio/RadioGroup/RadioGroup.mjs';
|
|
9
|
+
import '../../Divider/Divider.mjs';
|
|
10
|
+
import '../../Text/Text.mjs';
|
|
11
|
+
import './context/SingleSelectContext.mjs';
|
|
12
|
+
import '@cultureamp/i18n-react-intl';
|
|
13
|
+
import '../../VisuallyHidden/VisuallyHidden.mjs';
|
|
14
|
+
import '@react-aria/i18n';
|
|
15
|
+
import { Select } from './subcomponents/Select/Select.mjs';
|
|
16
|
+
import { ComboBox } from './subcomponents/ComboBox/ComboBox.mjs';
|
|
11
17
|
const SingleSelect = /*#__PURE__*/function () {
|
|
12
|
-
const SingleSelect = function (
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var uniqueId = useId();
|
|
21
|
-
var anchorName = "--trigger-".concat(uniqueId);
|
|
22
|
-
var state = useSelectState({
|
|
23
|
-
items: items
|
|
24
|
-
});
|
|
25
|
-
var handleOnSelectionChange = React.useCallback(function (keys) {
|
|
26
|
-
var key = null;
|
|
27
|
-
if (keys instanceof Set && keys.size > 0) {
|
|
28
|
-
key = Array.from(keys)[0];
|
|
29
|
-
}
|
|
30
|
-
state.setSelectedKey(key);
|
|
31
|
-
if (onSelectionChange) {
|
|
32
|
-
onSelectionChange(key);
|
|
33
|
-
}
|
|
34
|
-
}, [state, onSelectionChange]);
|
|
35
|
-
// Cloning children here to allow users to pass in a custom ListItem or ListSection
|
|
36
|
-
// and still have the SingleSelect handle selection state
|
|
37
|
-
var injectedChildren = useMemo(function () {
|
|
38
|
-
if (! /*#__PURE__*/isValidElement(children)) return null;
|
|
39
|
-
var selectedKeys = state.selectedKey ? new Set([state.selectedKey]) : new Set();
|
|
40
|
-
return /*#__PURE__*/cloneElement(children, {
|
|
41
|
-
selectionMode: 'single',
|
|
42
|
-
selectedKeys: selectedKeys,
|
|
43
|
-
onSelectionChange: handleOnSelectionChange,
|
|
44
|
-
autoFocus: 'first'
|
|
45
|
-
});
|
|
46
|
-
}, [children, handleOnSelectionChange, state.selectedKey]);
|
|
47
|
-
return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
|
|
48
|
-
value: {
|
|
49
|
-
isOpen: state.isOpen,
|
|
50
|
-
setOpen: state.setOpen,
|
|
51
|
-
selectedKey: state.selectedKey,
|
|
52
|
-
items: items,
|
|
53
|
-
anchorName: anchorName
|
|
54
|
-
}
|
|
55
|
-
}, /*#__PURE__*/React.createElement(Select
|
|
56
|
-
// TODO: allow user to pass in label
|
|
57
|
-
, __assign({
|
|
58
|
-
"aria-label": 'single-select',
|
|
59
|
-
onSelectionChange: function (key) {
|
|
60
|
-
return handleOnSelectionChange(key != null ? new Set([key]) : new Set());
|
|
61
|
-
},
|
|
62
|
-
placeholder: ""
|
|
63
|
-
}, restProps), /*#__PURE__*/React.createElement(Trigger, {
|
|
64
|
-
buttonRef: buttonRef
|
|
65
|
-
}), state.isOpen && (/*#__PURE__*/React.createElement(Popover, {
|
|
66
|
-
buttonRef: buttonRef,
|
|
67
|
-
popoverRef: popoverRef,
|
|
68
|
-
racPopoverRef: racPopoverRef
|
|
69
|
-
}, injectedChildren))));
|
|
18
|
+
const SingleSelect = function (props) {
|
|
19
|
+
var isComboBox = props.isComboBox,
|
|
20
|
+
children = props.children,
|
|
21
|
+
rest = __rest(props, ["isComboBox", "children"]);
|
|
22
|
+
if (isComboBox) {
|
|
23
|
+
return /*#__PURE__*/React.createElement(ComboBox, __assign({}, rest), children);
|
|
24
|
+
}
|
|
25
|
+
return /*#__PURE__*/React.createElement(Select, __assign({}, rest), children);
|
|
70
26
|
};
|
|
71
|
-
SingleSelect.
|
|
72
|
-
SingleSelect.
|
|
73
|
-
SingleSelect.ListItem = ListItem;
|
|
74
|
-
SingleSelect.ListSection = ListSection;
|
|
27
|
+
SingleSelect.Item = Item;
|
|
28
|
+
SingleSelect.Section = Section;
|
|
75
29
|
return SingleSelect;
|
|
76
30
|
}();
|
|
77
|
-
|
|
31
|
+
const Item = /*#__PURE__*/function () {
|
|
32
|
+
const Item = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
33
|
+
// @ts-expect-error: StatelyItem doesn't know about our internal item props
|
|
34
|
+
return /*#__PURE__*/React.createElement(Item$1, __assign({}, props, {
|
|
35
|
+
ref: ref
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
// @ts-expect-error: doesn't know that the Item can have this static property
|
|
39
|
+
Item.getCollectionNode = Item$1.getCollectionNode;
|
|
40
|
+
Item.displayName = 'SingleSelectItem';
|
|
41
|
+
return Item;
|
|
42
|
+
}();
|
|
43
|
+
export { Item, SingleSelect };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { __assign } from 'tslib';
|
|
2
|
+
import React, { useRef, useId } from 'react';
|
|
3
|
+
import { useComboBoxState } from '@react-stately/combobox';
|
|
4
|
+
import classnames from 'classnames';
|
|
5
|
+
import { useFilter, useComboBox } from 'react-aria';
|
|
6
|
+
import { FieldMessage } from '../../../../FieldMessage/FieldMessage.mjs';
|
|
7
|
+
import { Label } from '../../../../Label/Label.mjs';
|
|
8
|
+
import { SingleSelectContext } from '../../context/SingleSelectContext.mjs';
|
|
9
|
+
import { ComboBoxTrigger } from '../ComboBoxTrigger/ComboBoxTrigger.mjs';
|
|
10
|
+
import { List } from '../List/List.mjs';
|
|
11
|
+
import { Popover } from '../Popover/Popover.mjs';
|
|
12
|
+
import styles from './ComboBox.module.css.mjs';
|
|
13
|
+
var ComboBox = function (props) {
|
|
14
|
+
var _a;
|
|
15
|
+
var items = props.items,
|
|
16
|
+
children = props.children,
|
|
17
|
+
label = props.label,
|
|
18
|
+
description = props.description,
|
|
19
|
+
labelHidden = props.labelHidden,
|
|
20
|
+
_b = props.labelPosition,
|
|
21
|
+
labelPosition = _b === void 0 ? 'top' : _b,
|
|
22
|
+
isReadOnly = props.isReadOnly,
|
|
23
|
+
isDisabled = props.isDisabled,
|
|
24
|
+
_c = props.size,
|
|
25
|
+
size = _c === void 0 ? 'medium' : _c,
|
|
26
|
+
_d = props.variant,
|
|
27
|
+
variant = _d === void 0 ? 'primary' : _d;
|
|
28
|
+
var contains = useFilter({
|
|
29
|
+
sensitivity: 'base'
|
|
30
|
+
}).contains;
|
|
31
|
+
var state = useComboBoxState(__assign(__assign({}, props), {
|
|
32
|
+
items: items,
|
|
33
|
+
defaultFilter: contains,
|
|
34
|
+
children: children,
|
|
35
|
+
menuTrigger: 'focus'
|
|
36
|
+
}));
|
|
37
|
+
var inputRef = useRef(null);
|
|
38
|
+
var popoverRef = useRef(null);
|
|
39
|
+
var listBoxRef = useRef(null);
|
|
40
|
+
var buttonRef = useRef(null);
|
|
41
|
+
var clearButtonRef = useRef(null);
|
|
42
|
+
var triggerWrapperRef = useRef(null);
|
|
43
|
+
var _e = useComboBox(__assign(__assign({}, props), {
|
|
44
|
+
'aria-label': labelHidden ? label : undefined,
|
|
45
|
+
inputRef: inputRef,
|
|
46
|
+
buttonRef: buttonRef,
|
|
47
|
+
popoverRef: popoverRef,
|
|
48
|
+
listBoxRef: listBoxRef
|
|
49
|
+
}), state),
|
|
50
|
+
labelProps = _e.labelProps,
|
|
51
|
+
descriptionProps = _e.descriptionProps,
|
|
52
|
+
inputProps = _e.inputProps,
|
|
53
|
+
listBoxProps = _e.listBoxProps,
|
|
54
|
+
buttonProps = _e.buttonProps;
|
|
55
|
+
var uniqueId = useId();
|
|
56
|
+
var anchorName = "--trigger-".concat(uniqueId);
|
|
57
|
+
return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
|
|
58
|
+
value: {
|
|
59
|
+
anchorName: anchorName,
|
|
60
|
+
state: state,
|
|
61
|
+
isComboBox: true,
|
|
62
|
+
isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
|
|
63
|
+
isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
|
|
64
|
+
secondary: variant === 'secondary',
|
|
65
|
+
size: size,
|
|
66
|
+
fieldLabel: label
|
|
67
|
+
}
|
|
68
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
69
|
+
className: labelPosition === 'top' ? styles.topLabel : styles.sideLabel
|
|
70
|
+
}, !labelHidden && (/*#__PURE__*/React.createElement("div", {
|
|
71
|
+
className: classnames(styles.label, (_a = {}, _a[styles.labelTop] = labelPosition === 'top', _a))
|
|
72
|
+
}, /*#__PURE__*/React.createElement(Label, __assign({}, labelProps), label))), /*#__PURE__*/React.createElement("div", {
|
|
73
|
+
className: styles.comboBoxTrigger
|
|
74
|
+
}, /*#__PURE__*/React.createElement(ComboBoxTrigger, {
|
|
75
|
+
inputProps: inputProps,
|
|
76
|
+
inputRef: inputRef,
|
|
77
|
+
buttonRef: buttonRef,
|
|
78
|
+
buttonProps: buttonProps,
|
|
79
|
+
clearButtonRef: clearButtonRef,
|
|
80
|
+
triggerWrapperRef: triggerWrapperRef
|
|
81
|
+
})), description && (/*#__PURE__*/React.createElement("div", {
|
|
82
|
+
className: styles.description
|
|
83
|
+
}, /*#__PURE__*/React.createElement(FieldMessage, __assign({
|
|
84
|
+
message: description
|
|
85
|
+
}, descriptionProps))))), /*#__PURE__*/React.createElement(Popover, {
|
|
86
|
+
state: state,
|
|
87
|
+
triggerRef: triggerWrapperRef,
|
|
88
|
+
popoverRef: popoverRef,
|
|
89
|
+
clearButtonRef: clearButtonRef
|
|
90
|
+
}, /*#__PURE__*/React.createElement(List, {
|
|
91
|
+
listBoxOptions: listBoxProps,
|
|
92
|
+
state: state,
|
|
93
|
+
listBoxRef: listBoxRef
|
|
94
|
+
})));
|
|
95
|
+
};
|
|
96
|
+
export { ComboBox };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
var styles = {
|
|
2
|
+
"topLabel": "ComboBox-module_topLabel__a2t80",
|
|
3
|
+
"sideLabel": "ComboBox-module_sideLabel__B-jX4",
|
|
4
|
+
"label": "ComboBox-module_label__eTnD9",
|
|
5
|
+
"labelTop": "ComboBox-module_labelTop__h6r-z",
|
|
6
|
+
"comboBoxTrigger": "ComboBox-module_comboBoxTrigger__yvqGb",
|
|
7
|
+
"description": "ComboBox-module_description__MDKJ7"
|
|
8
|
+
};
|
|
9
|
+
export { styles as default };
|