@hitachivantara/uikit-react-core 5.50.0 → 5.51.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/dist/cjs/DropDownMenu/DropDownMenu.cjs +1 -1
- package/dist/cjs/Select/Option.cjs +53 -0
- package/dist/cjs/Select/Option.cjs.map +1 -0
- package/dist/cjs/Select/OptionGroup.cjs +34 -0
- package/dist/cjs/Select/OptionGroup.cjs.map +1 -0
- package/dist/cjs/Select/Select.cjs +214 -0
- package/dist/cjs/Select/Select.cjs.map +1 -0
- package/dist/cjs/Select/Select.styles.cjs +44 -0
- package/dist/cjs/Select/Select.styles.cjs.map +1 -0
- package/dist/cjs/Select/SelectButton.cjs +92 -0
- package/dist/cjs/Select/SelectButton.cjs.map +1 -0
- package/dist/cjs/index.cjs +10 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/DropDownMenu/DropDownMenu.js +1 -1
- package/dist/esm/Select/Option.js +53 -0
- package/dist/esm/Select/Option.js.map +1 -0
- package/dist/esm/Select/OptionGroup.js +34 -0
- package/dist/esm/Select/OptionGroup.js.map +1 -0
- package/dist/esm/Select/Select.js +213 -0
- package/dist/esm/Select/Select.js.map +1 -0
- package/dist/esm/Select/Select.styles.js +44 -0
- package/dist/esm/Select/Select.styles.js.map +1 -0
- package/dist/esm/Select/SelectButton.js +92 -0
- package/dist/esm/Select/SelectButton.js.map +1 -0
- package/dist/esm/index.js +224 -214
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +563 -450
- package/package.json +6 -6
|
@@ -12,8 +12,8 @@ const focusableElementFinder = require("../utils/focusableElementFinder.cjs");
|
|
|
12
12
|
const DropDownMenu_styles = require("./DropDownMenu.styles.cjs");
|
|
13
13
|
const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
|
|
14
14
|
const Button = require("../Button/Button.cjs");
|
|
15
|
-
const Panel = require("../Panel/Panel.cjs");
|
|
16
15
|
const List = require("../List/List.cjs");
|
|
16
|
+
const Panel = require("../Panel/Panel.cjs");
|
|
17
17
|
const HvDropDownMenu = (props) => {
|
|
18
18
|
const {
|
|
19
19
|
id: idProp,
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const useOption = require("@mui/base/useOption");
|
|
6
|
+
const utils = require("@mui/material/utils");
|
|
7
|
+
const useDefaultProps = require("../hooks/useDefaultProps.cjs");
|
|
8
|
+
const generic = require("../types/generic.cjs");
|
|
9
|
+
const classes = require("../utils/classes.cjs");
|
|
10
|
+
const focusUtils = require("../utils/focusUtils.cjs");
|
|
11
|
+
const ListItem = require("../ListContainer/ListItem/ListItem.cjs");
|
|
12
|
+
const { staticClasses, useClasses } = classes.createClasses("HvOption", {
|
|
13
|
+
root: {},
|
|
14
|
+
highlighted: {
|
|
15
|
+
...focusUtils.outlineStyles
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const HvOption = generic.fixedForwardRef(function HvOption2(props, ref) {
|
|
19
|
+
const {
|
|
20
|
+
classes: classesProp,
|
|
21
|
+
className,
|
|
22
|
+
disabled = false,
|
|
23
|
+
label,
|
|
24
|
+
value,
|
|
25
|
+
children,
|
|
26
|
+
...others
|
|
27
|
+
} = useDefaultProps.useDefaultProps("HvOption", props);
|
|
28
|
+
const { classes: classes2, cx } = useClasses(classesProp);
|
|
29
|
+
const optionRef = React.useRef(null);
|
|
30
|
+
const rootRef = utils.useForkRef(optionRef, ref);
|
|
31
|
+
const computedLabel = label ?? (typeof children === "string" ? children : optionRef.current?.textContent?.trim());
|
|
32
|
+
const { getRootProps, selected, highlighted } = useOption.useOption({
|
|
33
|
+
disabled,
|
|
34
|
+
label: computedLabel,
|
|
35
|
+
rootRef,
|
|
36
|
+
value
|
|
37
|
+
});
|
|
38
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
ListItem.HvListItem,
|
|
40
|
+
{
|
|
41
|
+
ref,
|
|
42
|
+
selected,
|
|
43
|
+
className: cx(classes2.root, className, {
|
|
44
|
+
[classes2.highlighted]: highlighted
|
|
45
|
+
}),
|
|
46
|
+
...getRootProps(),
|
|
47
|
+
...others,
|
|
48
|
+
children
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
exports.HvOption = HvOption;
|
|
53
|
+
exports.optionClasses = staticClasses;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Option.cjs","sources":["../../../src/Select/Option.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { useOption } from \"@mui/base/useOption\";\nimport { OptionOwnProps } from \"@mui/base/Option\";\nimport { useForkRef } from \"@mui/material/utils\";\n\nimport { HvListItem, HvListItemProps } from \"../ListContainer\";\nimport { useDefaultProps } from \"../hooks/useDefaultProps\";\nimport { fixedForwardRef } from \"../types/generic\";\nimport { ExtractNames, createClasses } from \"../utils/classes\";\nimport { outlineStyles } from \"../utils/focusUtils\";\n\nconst { staticClasses, useClasses } = createClasses(\"HvOption\", {\n root: {},\n highlighted: {\n ...outlineStyles,\n },\n});\n\nexport { staticClasses as optionClasses };\n\nexport type HvOptionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvOptionProps<OptionValue extends {}>\n extends Omit<HvListItemProps, \"value\" | \"disabled\">,\n Pick<OptionOwnProps<OptionValue>, \"disabled\" | \"label\" | \"value\"> {\n classes?: HvOptionClasses;\n}\n\nexport const HvOption = fixedForwardRef(function HvOption<\n OptionValue extends {}\n>(props: HvOptionProps<OptionValue>, ref: React.Ref<HTMLLIElement>) {\n const {\n classes: classesProp,\n className,\n disabled = false,\n label,\n value,\n children,\n ...others\n } = useDefaultProps(\"HvOption\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const optionRef = useRef<HTMLElement>(null);\n const rootRef = useForkRef(optionRef, ref);\n\n const computedLabel =\n label ??\n (typeof children === \"string\"\n ? children\n : optionRef.current?.textContent?.trim());\n\n const { getRootProps, selected, highlighted } = useOption({\n disabled,\n label: computedLabel,\n rootRef,\n value,\n });\n\n return (\n <HvListItem\n ref={ref}\n selected={selected}\n className={cx(classes.root, className, {\n [classes.highlighted]: highlighted,\n })}\n {...getRootProps()}\n {...others}\n >\n {children}\n </HvListItem>\n );\n});\n"],"names":["createClasses","outlineStyles","fixedForwardRef","HvOption","useDefaultProps","classes","useRef","useForkRef","useOption","jsx","HvListItem"],"mappings":";;;;;;;;;;;AAWA,MAAM,EAAE,eAAe,eAAeA,QAAAA,cAAc,YAAY;AAAA,EAC9D,MAAM,CAAC;AAAA,EACP,aAAa;AAAA,IACX,GAAGC,WAAA;AAAA,EACL;AACF,CAAC;AAYM,MAAM,WAAWC,QAAAA,gBAAgB,SAASC,UAE/C,OAAmC,KAA+B;AAC5D,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACDC,gBAAgB,gBAAA,YAAY,KAAK;AACrC,QAAM,EAAE,SAAAC,UAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,YAAYC,aAAoB,IAAI;AACpC,QAAA,UAAUC,MAAAA,WAAW,WAAW,GAAG;AAEnC,QAAA,gBACJ,UACC,OAAO,aAAa,WACjB,WACA,UAAU,SAAS,aAAa,KAAK;AAE3C,QAAM,EAAE,cAAc,UAAU,YAAA,IAAgBC,UAAAA,UAAU;AAAA,IACxD;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAAC,2BAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,GAAGL,SAAQ,MAAM,WAAW;AAAA,QACrC,CAACA,SAAQ,WAAW,GAAG;AAAA,MAAA,CACxB;AAAA,MACA,GAAG,aAAa;AAAA,MAChB,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const OptionGroup = require("@mui/base/OptionGroup");
|
|
6
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
7
|
+
const classes = require("../utils/classes.cjs");
|
|
8
|
+
const useDefaultProps = require("../hooks/useDefaultProps.cjs");
|
|
9
|
+
const { staticClasses, useClasses } = classes.createClasses("HvOptionGroup", {
|
|
10
|
+
root: {
|
|
11
|
+
listStyle: "none",
|
|
12
|
+
...uikitStyles.theme.typography.label
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const HvOptionGroup = React.forwardRef(
|
|
16
|
+
(props, ref) => {
|
|
17
|
+
const {
|
|
18
|
+
className,
|
|
19
|
+
classes: classesProp,
|
|
20
|
+
...others
|
|
21
|
+
} = useDefaultProps.useDefaultProps("HvOptionGroup", props);
|
|
22
|
+
const { classes: classes2, cx } = useClasses(classesProp);
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24
|
+
OptionGroup.OptionGroup,
|
|
25
|
+
{
|
|
26
|
+
ref,
|
|
27
|
+
className: cx(classes2.root, className),
|
|
28
|
+
...others
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
exports.HvOptionGroup = HvOptionGroup;
|
|
34
|
+
exports.optionGroupClasses = staticClasses;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionGroup.cjs","sources":["../../../src/Select/OptionGroup.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { OptionGroup, OptionGroupProps } from \"@mui/base/OptionGroup\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { ExtractNames, createClasses } from \"../utils/classes\";\nimport { useDefaultProps } from \"../hooks/useDefaultProps\";\n\nconst { staticClasses, useClasses } = createClasses(\"HvOptionGroup\", {\n root: {\n listStyle: \"none\",\n ...theme.typography.label,\n },\n});\n\nexport { staticClasses as optionGroupClasses };\n\nexport type HvOptionGroupClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvOptionGroupProps extends OptionGroupProps {\n classes?: HvOptionGroupClasses;\n}\n\nexport const HvOptionGroup = forwardRef<HTMLLIElement, HvOptionGroupProps>(\n (props, ref) => {\n const {\n className,\n classes: classesProp,\n ...others\n } = useDefaultProps(\"HvOptionGroup\", props);\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <OptionGroup\n ref={ref}\n className={cx(classes.root, className)}\n {...others}\n />\n );\n }\n);\n"],"names":["createClasses","theme","forwardRef","useDefaultProps","classes","jsx","OptionGroup"],"mappings":";;;;;;;;AAOA,MAAM,EAAE,eAAe,eAAeA,QAAAA,cAAc,iBAAiB;AAAA,EACnE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,GAAGC,YAAAA,MAAM,WAAW;AAAA,EACtB;AACF,CAAC;AAUM,MAAM,gBAAgBC,MAAA;AAAA,EAC3B,CAAC,OAAO,QAAQ;AACR,UAAA;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT,GAAG;AAAA,IAAA,IACDC,gBAAgB,gBAAA,iBAAiB,KAAK;AAC1C,UAAM,EAAE,SAAAC,UAAS,GAAG,IAAI,WAAW,WAAW;AAG5C,WAAAC,2BAAA;AAAA,MAACC,YAAA;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAGF,SAAQ,MAAM,SAAS;AAAA,QACpC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;;;"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const clsx = require("clsx");
|
|
6
|
+
const useSelect = require("@mui/base/useSelect");
|
|
7
|
+
const utils = require("@mui/material/utils");
|
|
8
|
+
const Popper = require("@mui/base/Popper");
|
|
9
|
+
const generic = require("../types/generic.cjs");
|
|
10
|
+
const useDefaultProps = require("../hooks/useDefaultProps.cjs");
|
|
11
|
+
const Select_styles = require("./Select.styles.cjs");
|
|
12
|
+
const setId = require("../utils/setId.cjs");
|
|
13
|
+
const useUniqueId = require("../hooks/useUniqueId.cjs");
|
|
14
|
+
const SelectButton = require("./SelectButton.cjs");
|
|
15
|
+
const Panel = require("../Panel/Panel.cjs");
|
|
16
|
+
const FormElement = require("../Forms/FormElement/FormElement.cjs");
|
|
17
|
+
const Label = require("../Forms/Label/Label.cjs");
|
|
18
|
+
const InfoMessage = require("../Forms/InfoMessage/InfoMessage.cjs");
|
|
19
|
+
const ListContainer = require("../ListContainer/ListContainer.cjs");
|
|
20
|
+
const WarningText = require("../Forms/WarningText/WarningText.cjs");
|
|
21
|
+
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
22
|
+
const clsx__default = /* @__PURE__ */ _interopDefault(clsx);
|
|
23
|
+
function defaultRenderValue(options) {
|
|
24
|
+
if (Array.isArray(options)) {
|
|
25
|
+
if (options.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: options.map((o) => o.label).join(", ") });
|
|
28
|
+
}
|
|
29
|
+
return options?.label ?? null;
|
|
30
|
+
}
|
|
31
|
+
const mergeIds = (...ids) => clsx__default.default(ids) || void 0;
|
|
32
|
+
const HvSelect = generic.fixedForwardRef(function HvSelect2(props, ref) {
|
|
33
|
+
const {
|
|
34
|
+
children,
|
|
35
|
+
classes: classesProp,
|
|
36
|
+
className,
|
|
37
|
+
id: idProp,
|
|
38
|
+
name,
|
|
39
|
+
required,
|
|
40
|
+
disabled: disabledProp,
|
|
41
|
+
readOnly,
|
|
42
|
+
label,
|
|
43
|
+
open: openProp,
|
|
44
|
+
defaultOpen,
|
|
45
|
+
multiple,
|
|
46
|
+
autoComplete,
|
|
47
|
+
options: optionsProp,
|
|
48
|
+
variableWidth,
|
|
49
|
+
value: valueProp,
|
|
50
|
+
defaultValue,
|
|
51
|
+
placeholder,
|
|
52
|
+
"aria-label": ariaLabel,
|
|
53
|
+
"aria-labelledby": ariaLabelledBy,
|
|
54
|
+
description,
|
|
55
|
+
"aria-describedby": ariaDescribedBy,
|
|
56
|
+
status,
|
|
57
|
+
statusMessage,
|
|
58
|
+
"aria-errormessage": ariaErrorMessage,
|
|
59
|
+
getSerializedValue,
|
|
60
|
+
onClick,
|
|
61
|
+
onChange,
|
|
62
|
+
onOpenChange,
|
|
63
|
+
...others
|
|
64
|
+
} = useDefaultProps.useDefaultProps("HvSelect", props);
|
|
65
|
+
const { classes, cx } = Select_styles.useClasses(classesProp);
|
|
66
|
+
const [placement, setPlacement] = React.useState("bottom-start");
|
|
67
|
+
const buttonRef = React.useRef(null);
|
|
68
|
+
const handleButtonRef = utils.useForkRef(ref, buttonRef);
|
|
69
|
+
const {
|
|
70
|
+
contextValue,
|
|
71
|
+
disabled,
|
|
72
|
+
getButtonProps,
|
|
73
|
+
getListboxProps,
|
|
74
|
+
getHiddenInputProps,
|
|
75
|
+
getOptionMetadata,
|
|
76
|
+
value,
|
|
77
|
+
open
|
|
78
|
+
} = useSelect.useSelect({
|
|
79
|
+
componentName: "HvSelect",
|
|
80
|
+
name,
|
|
81
|
+
required,
|
|
82
|
+
disabled: disabledProp,
|
|
83
|
+
multiple,
|
|
84
|
+
open: openProp,
|
|
85
|
+
defaultOpen,
|
|
86
|
+
value: valueProp,
|
|
87
|
+
defaultValue,
|
|
88
|
+
options: optionsProp,
|
|
89
|
+
buttonRef: handleButtonRef,
|
|
90
|
+
getSerializedValue,
|
|
91
|
+
onChange,
|
|
92
|
+
onOpenChange: handleOpenChange
|
|
93
|
+
});
|
|
94
|
+
const id = useUniqueId.useUniqueId(idProp);
|
|
95
|
+
const labelId = useUniqueId.useUniqueId(setId.setId(idProp, "label"));
|
|
96
|
+
const descriptionId = useUniqueId.useUniqueId(setId.setId(idProp, "description"));
|
|
97
|
+
const errorMessageId = useUniqueId.useUniqueId(setId.setId(idProp, "error"));
|
|
98
|
+
const [validationMessage] = utils.useControlled({
|
|
99
|
+
name: "HvSelect.statusMessage",
|
|
100
|
+
controlled: statusMessage,
|
|
101
|
+
default: "Required"
|
|
102
|
+
});
|
|
103
|
+
const [validationState, setValidationState] = utils.useControlled({
|
|
104
|
+
name: "HvSelect.status",
|
|
105
|
+
controlled: status,
|
|
106
|
+
default: "standBy"
|
|
107
|
+
});
|
|
108
|
+
function handleOpenChange(newOpen) {
|
|
109
|
+
if (!newOpen) {
|
|
110
|
+
const hasValue = multiple ? value.length > 0 : !!value;
|
|
111
|
+
setValidationState(required && !hasValue ? "invalid" : "valid");
|
|
112
|
+
}
|
|
113
|
+
onOpenChange?.(newOpen);
|
|
114
|
+
}
|
|
115
|
+
const canShowError = ariaErrorMessage == null && (status !== void 0 && statusMessage !== void 0 || status === void 0 && required);
|
|
116
|
+
const isInvalid = validationState === "invalid";
|
|
117
|
+
const actualValue = multiple ? value.map((v) => getOptionMetadata(v)).filter((v) => v !== void 0) : getOptionMetadata(value) ?? null;
|
|
118
|
+
const isOpen = open && !!children;
|
|
119
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
120
|
+
FormElement.HvFormElement,
|
|
121
|
+
{
|
|
122
|
+
name,
|
|
123
|
+
required,
|
|
124
|
+
disabled,
|
|
125
|
+
readOnly,
|
|
126
|
+
status: validationState,
|
|
127
|
+
className: cx(classes.root, className, {
|
|
128
|
+
[classes.disabled]: disabled,
|
|
129
|
+
[classes.readOnly]: readOnly
|
|
130
|
+
}),
|
|
131
|
+
...others,
|
|
132
|
+
children: [
|
|
133
|
+
(label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.labelContainer, children: [
|
|
134
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
135
|
+
Label.HvLabel,
|
|
136
|
+
{
|
|
137
|
+
id: labelId,
|
|
138
|
+
htmlFor: id,
|
|
139
|
+
label,
|
|
140
|
+
className: classes.label
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
description && /* @__PURE__ */ jsxRuntime.jsx(InfoMessage.HvInfoMessage, { id: descriptionId, className: classes.description, children: description })
|
|
144
|
+
] }),
|
|
145
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
146
|
+
SelectButton.HvSelectButton,
|
|
147
|
+
{
|
|
148
|
+
id,
|
|
149
|
+
open: isOpen,
|
|
150
|
+
disabled,
|
|
151
|
+
readOnly,
|
|
152
|
+
className: cx(classes.select, {
|
|
153
|
+
[classes.invalid]: validationState === "invalid"
|
|
154
|
+
}),
|
|
155
|
+
placement,
|
|
156
|
+
"aria-label": ariaLabel,
|
|
157
|
+
"aria-labelledby": mergeIds(label && labelId, ariaLabelledBy),
|
|
158
|
+
"aria-invalid": isInvalid ? true : void 0,
|
|
159
|
+
"aria-errormessage": errorMessageId,
|
|
160
|
+
"aria-describedby": mergeIds(
|
|
161
|
+
description && descriptionId,
|
|
162
|
+
ariaDescribedBy
|
|
163
|
+
),
|
|
164
|
+
...getButtonProps(),
|
|
165
|
+
children: defaultRenderValue(actualValue) ?? placeholder
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
+
Popper.Popper,
|
|
170
|
+
{
|
|
171
|
+
open: isOpen,
|
|
172
|
+
keepMounted: true,
|
|
173
|
+
disablePortal: true,
|
|
174
|
+
anchorEl: buttonRef.current,
|
|
175
|
+
className: classes.popper,
|
|
176
|
+
placement,
|
|
177
|
+
modifiers: [
|
|
178
|
+
{
|
|
179
|
+
enabled: true,
|
|
180
|
+
phase: "main",
|
|
181
|
+
fn: ({ state }) => setPlacement(state.placement)
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
+
Panel.HvPanel,
|
|
186
|
+
{
|
|
187
|
+
style: {
|
|
188
|
+
width: variableWidth ? "auto" : (buttonRef.current?.clientWidth || 0) + 2
|
|
189
|
+
},
|
|
190
|
+
className: cx(classes.panel, className, {
|
|
191
|
+
[classes.panelOpenedUp]: placement.includes("top"),
|
|
192
|
+
[classes.panelOpenedDown]: placement.includes("bottom")
|
|
193
|
+
}),
|
|
194
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(useSelect.SelectProvider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(ListContainer.HvListContainer, { condensed: true, selectable: true, ...getListboxProps(), children }) })
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
),
|
|
199
|
+
/* @__PURE__ */ jsxRuntime.jsx("input", { ...getHiddenInputProps(), autoComplete }),
|
|
200
|
+
canShowError && /* @__PURE__ */ jsxRuntime.jsx(
|
|
201
|
+
WarningText.HvWarningText,
|
|
202
|
+
{
|
|
203
|
+
id: errorMessageId,
|
|
204
|
+
disableBorder: true,
|
|
205
|
+
className: classes.error,
|
|
206
|
+
children: validationMessage
|
|
207
|
+
}
|
|
208
|
+
)
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
});
|
|
213
|
+
exports.selectClasses = Select_styles.staticClasses;
|
|
214
|
+
exports.HvSelect = HvSelect;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.cjs","sources":["../../../src/Select/Select.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport React, { useRef, useState } from \"react\";\nimport type { Placement } from \"@popperjs/core\";\nimport clsx from \"clsx\";\n\nimport {\n SelectProvider,\n UseSelectParameters,\n useSelect,\n} from \"@mui/base/useSelect\";\nimport { useControlled, useForkRef } from \"@mui/material/utils\";\nimport { Popper } from \"@mui/base/Popper\";\nimport { SelectOption } from \"@mui/base/useOption\";\n\nimport {\n HvFormElement,\n HvFormElementProps,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n} from \"../Forms\";\nimport { ExtractNames } from \"../utils/classes\";\nimport { fixedForwardRef } from \"../types/generic\";\nimport { useDefaultProps } from \"../hooks/useDefaultProps\";\nimport { staticClasses, useClasses } from \"./Select.styles\";\nimport { setId } from \"../utils/setId\";\nimport { useUniqueId } from \"../hooks/useUniqueId\";\nimport { HvPanel } from \"../Panel\";\nimport { HvListContainer } from \"../ListContainer\";\nimport { HvSelectButton } from \"./SelectButton\";\n\nfunction defaultRenderValue<Value>(\n options: SelectOption<Value> | SelectOption<Value>[] | null\n) {\n if (Array.isArray(options)) {\n if (options.length === 0) return null;\n return <>{options.map((o) => o.label).join(\", \")}</>;\n }\n\n return options?.label ?? null;\n}\n\nconst mergeIds = (...ids: clsx.ClassValue[]) => clsx(ids) || undefined;\n\nexport { staticClasses as selectClasses };\n\nexport type HvSelectClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSelectProps<\n OptionValue extends {},\n Multiple extends boolean = false\n> extends Omit<HvFormElementProps, \"value\" | \"defaultValue\" | \"onChange\">,\n Pick<\n UseSelectParameters<OptionValue, Multiple>,\n | \"name\"\n | \"required\"\n | \"disabled\"\n | \"multiple\"\n | \"open\"\n | \"defaultOpen\"\n | \"value\"\n | \"defaultValue\"\n | \"buttonRef\"\n | \"options\"\n | \"getSerializedValue\"\n | \"onChange\"\n | \"onOpenChange\"\n > {\n classes?: HvSelectClasses;\n placeholder?: React.ReactNode;\n autoComplete?: string;\n /** Whether the width of the select panel can vary independently. */\n variableWidth?: boolean;\n}\n\n/**\n * The `HvSelect` component is a form control element that allows selection from a list of options.\n *\n * It aims to be aligned with the native HTML `<select>` and `<option>` APIs and be easily integrated with forms.\n *\n * @example\n * <HvSelect name=\"pets\">\n * <HvOption value=\"dog\">Dog</HvOption>\n * <HvOption value=\"cat\">Cat</HvOption>\n * </HvSelect>\n * */\nexport const HvSelect = fixedForwardRef(function HvSelect<\n OptionValue extends {},\n Multiple extends boolean\n>(\n props: HvSelectProps<OptionValue, Multiple>,\n ref: React.Ref<HTMLButtonElement>\n) {\n const {\n children,\n classes: classesProp,\n className,\n id: idProp,\n name,\n required,\n disabled: disabledProp,\n readOnly,\n label,\n open: openProp,\n defaultOpen,\n multiple,\n autoComplete,\n options: optionsProp,\n variableWidth,\n value: valueProp,\n defaultValue,\n placeholder,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n getSerializedValue,\n onClick,\n onChange,\n onOpenChange,\n ...others\n } = useDefaultProps(\"HvSelect\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const [placement, setPlacement] = useState<Placement>(\"bottom-start\");\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const handleButtonRef = useForkRef(ref, buttonRef);\n\n const {\n contextValue,\n disabled,\n getButtonProps,\n getListboxProps,\n getHiddenInputProps,\n getOptionMetadata,\n value,\n open,\n } = useSelect<OptionValue, Multiple>({\n componentName: \"HvSelect\",\n name,\n required,\n disabled: disabledProp,\n multiple,\n open: openProp,\n defaultOpen,\n value: valueProp,\n defaultValue,\n options: optionsProp,\n buttonRef: handleButtonRef,\n getSerializedValue,\n onChange,\n onOpenChange: handleOpenChange,\n });\n\n const id = useUniqueId(idProp);\n const labelId = useUniqueId(setId(idProp, \"label\"));\n const descriptionId = useUniqueId(setId(idProp, \"description\"));\n const errorMessageId = useUniqueId(setId(idProp, \"error\"));\n\n const [validationMessage] = useControlled({\n name: \"HvSelect.statusMessage\",\n controlled: statusMessage,\n default: \"Required\",\n });\n const [validationState, setValidationState] = useControlled<HvFormStatus>({\n name: \"HvSelect.status\",\n controlled: status,\n default: \"standBy\",\n });\n\n function handleOpenChange(newOpen: boolean) {\n if (!newOpen) {\n const hasValue = multiple ? (value as OptionValue[]).length > 0 : !!value;\n setValidationState(required && !hasValue ? \"invalid\" : \"valid\");\n }\n onOpenChange?.(newOpen);\n }\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isInvalid = validationState === \"invalid\";\n\n const actualValue = multiple\n ? (value as OptionValue[])\n .map((v) => getOptionMetadata(v))\n .filter((v): v is SelectOption<OptionValue> => v !== undefined)\n : getOptionMetadata(value as OptionValue) ?? null;\n\n const isOpen = open && !!children;\n\n return (\n <HvFormElement\n name={name}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n status={validationState}\n className={cx(classes.root, className, {\n [classes.disabled]: disabled,\n [classes.readOnly]: readOnly,\n })}\n {...others}\n >\n {(label || description) && (\n <div className={classes.labelContainer}>\n {label && (\n <HvLabel\n id={labelId}\n htmlFor={id}\n label={label}\n className={classes.label}\n />\n )}\n {description && (\n <HvInfoMessage id={descriptionId} className={classes.description}>\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n <HvSelectButton\n id={id}\n open={isOpen}\n disabled={disabled}\n readOnly={readOnly}\n className={cx(classes.select, {\n [classes.invalid]: validationState === \"invalid\",\n })}\n placement={placement}\n aria-label={ariaLabel}\n aria-labelledby={mergeIds(label && labelId, ariaLabelledBy)}\n aria-invalid={isInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={mergeIds(\n description && descriptionId,\n ariaDescribedBy\n )}\n {...getButtonProps()}\n >\n {defaultRenderValue(actualValue) ?? placeholder}\n </HvSelectButton>\n <Popper\n open={isOpen}\n keepMounted\n disablePortal\n anchorEl={buttonRef.current}\n className={classes.popper}\n placement={placement}\n modifiers={[\n {\n enabled: true,\n phase: \"main\",\n fn: ({ state }) => setPlacement(state.placement),\n },\n ]}\n >\n <HvPanel\n style={{\n width: variableWidth\n ? \"auto\"\n : (buttonRef.current?.clientWidth || 0) + 2,\n }}\n className={cx(classes.panel, className, {\n [classes.panelOpenedUp]: placement.includes(\"top\"),\n [classes.panelOpenedDown]: placement.includes(\"bottom\"),\n })}\n >\n <SelectProvider value={contextValue}>\n <HvListContainer condensed selectable {...getListboxProps()}>\n {children}\n </HvListContainer>\n </SelectProvider>\n </HvPanel>\n </Popper>\n\n <input {...getHiddenInputProps()} autoComplete={autoComplete} />\n\n {canShowError && (\n <HvWarningText\n id={errorMessageId}\n disableBorder\n className={classes.error}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n});\n"],"names":["jsx","Fragment","clsx","fixedForwardRef","HvSelect","useDefaultProps","useClasses","useState","useRef","useForkRef","useSelect","useUniqueId","setId","useControlled","jsxs","HvFormElement","HvLabel","HvInfoMessage","HvSelectButton","Popper","HvPanel","SelectProvider","HvListContainer","HvWarningText"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
4
|
+
const classes = require("../utils/classes.cjs");
|
|
5
|
+
const { staticClasses, useClasses } = classes.createClasses("HvSelect", {
|
|
6
|
+
root: {
|
|
7
|
+
position: "relative",
|
|
8
|
+
"&$disabled,&$readOnly": {
|
|
9
|
+
pointerEvents: "none"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
disabled: {},
|
|
13
|
+
readOnly: {},
|
|
14
|
+
invalid: {
|
|
15
|
+
border: `1px solid ${uikitStyles.theme.colors.negative}`
|
|
16
|
+
},
|
|
17
|
+
labelContainer: {
|
|
18
|
+
display: "flex",
|
|
19
|
+
alignItems: "flex-start"
|
|
20
|
+
},
|
|
21
|
+
label: {
|
|
22
|
+
display: "block",
|
|
23
|
+
paddingBottom: 6
|
|
24
|
+
},
|
|
25
|
+
description: {},
|
|
26
|
+
select: {},
|
|
27
|
+
popper: {
|
|
28
|
+
zIndex: uikitStyles.theme.zIndices.popover
|
|
29
|
+
},
|
|
30
|
+
panel: {
|
|
31
|
+
border: `1px solid ${uikitStyles.theme.colors.secondary}`,
|
|
32
|
+
marginTop: -1,
|
|
33
|
+
marginBottom: -1
|
|
34
|
+
},
|
|
35
|
+
panelOpenedUp: {
|
|
36
|
+
borderRadius: `${uikitStyles.theme.radii.base} ${uikitStyles.theme.radii.base} 0 0`
|
|
37
|
+
},
|
|
38
|
+
panelOpenedDown: {
|
|
39
|
+
borderRadius: `0 0 ${uikitStyles.theme.radii.base} ${uikitStyles.theme.radii.base}`
|
|
40
|
+
},
|
|
41
|
+
error: {}
|
|
42
|
+
});
|
|
43
|
+
exports.staticClasses = staticClasses;
|
|
44
|
+
exports.useClasses = useClasses;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.styles.cjs","sources":["../../../src/Select/Select.styles.ts"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"../utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvSelect\", {\n root: {\n position: \"relative\",\n \"&$disabled,&$readOnly\": {\n pointerEvents: \"none\",\n },\n },\n disabled: {},\n readOnly: {},\n invalid: {\n border: `1px solid ${theme.colors.negative}`,\n },\n labelContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n label: {\n display: \"block\",\n paddingBottom: 6,\n },\n description: {},\n select: {},\n popper: {\n zIndex: theme.zIndices.popover,\n },\n panel: {\n border: `1px solid ${theme.colors.secondary}`,\n marginTop: -1,\n marginBottom: -1,\n },\n panelOpenedUp: {\n borderRadius: `${theme.radii.base} ${theme.radii.base} 0 0`,\n },\n panelOpenedDown: {\n borderRadius: `0 0 ${theme.radii.base} ${theme.radii.base}`,\n },\n error: {},\n});\n"],"names":["createClasses","theme"],"mappings":";;;;AAIO,MAAM,EAAE,eAAe,eAAeA,QAAAA,cAAc,YAAY;AAAA,EACrE,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,yBAAyB;AAAA,MACvB,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA,EACX,SAAS;AAAA,IACP,QAAQ,aAAaC,YAAM,MAAA,OAAO,QAAQ;AAAA,EAC5C;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;AAAA,EACA,aAAa,CAAC;AAAA,EACd,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA,IACN,QAAQA,YAAAA,MAAM,SAAS;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,aAAaA,YAAM,MAAA,OAAO,SAAS;AAAA,IAC3C,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,eAAe;AAAA,IACb,cAAc,GAAGA,YAAM,MAAA,MAAM,IAAI,IAAIA,kBAAM,MAAM,IAAI;AAAA,EACvD;AAAA,EACA,iBAAiB;AAAA,IACf,cAAc,OAAOA,YAAAA,MAAM,MAAM,IAAI,IAAIA,YAAA,MAAM,MAAM,IAAI;AAAA,EAC3D;AAAA,EACA,OAAO,CAAC;AACV,CAAC;;;"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
6
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
7
|
+
const useDefaultProps = require("../hooks/useDefaultProps.cjs");
|
|
8
|
+
const classes = require("../utils/classes.cjs");
|
|
9
|
+
const Button = require("../Button/Button.cjs");
|
|
10
|
+
const { staticClasses, useClasses } = classes.createClasses("HvSelectButton", {
|
|
11
|
+
root: {
|
|
12
|
+
width: "100%",
|
|
13
|
+
minWidth: "unset",
|
|
14
|
+
userSelect: "none",
|
|
15
|
+
position: "relative",
|
|
16
|
+
paddingLeft: uikitStyles.theme.space.xs,
|
|
17
|
+
justifyContent: "flex-start"
|
|
18
|
+
},
|
|
19
|
+
disabled: {},
|
|
20
|
+
readOnly: {
|
|
21
|
+
userSelect: "text",
|
|
22
|
+
backgroundColor: uikitStyles.theme.colors.atmo2
|
|
23
|
+
},
|
|
24
|
+
open: {
|
|
25
|
+
backgroundColor: uikitStyles.theme.colors.atmo1
|
|
26
|
+
},
|
|
27
|
+
openUp: {
|
|
28
|
+
borderRadius: `0px 0px ${uikitStyles.theme.radii.base} ${uikitStyles.theme.radii.base}`
|
|
29
|
+
},
|
|
30
|
+
openDown: {
|
|
31
|
+
borderRadius: `${uikitStyles.theme.radii.base} ${uikitStyles.theme.radii.base} 0px 0px`
|
|
32
|
+
},
|
|
33
|
+
selection: {
|
|
34
|
+
color: "inherit",
|
|
35
|
+
flex: 1,
|
|
36
|
+
textAlign: "start",
|
|
37
|
+
overflow: "clip visible",
|
|
38
|
+
textOverflow: "ellipsis",
|
|
39
|
+
whiteSpace: "nowrap"
|
|
40
|
+
},
|
|
41
|
+
placeholder: {},
|
|
42
|
+
arrowContainer: {
|
|
43
|
+
marginRight: uikitStyles.theme.spacing(-2)
|
|
44
|
+
},
|
|
45
|
+
arrow: {
|
|
46
|
+
transition: "rotate 0.2s ease"
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const HvSelectButton = React.forwardRef((props, ref) => {
|
|
50
|
+
const {
|
|
51
|
+
classes: classesProp,
|
|
52
|
+
className,
|
|
53
|
+
open,
|
|
54
|
+
placement = "bottom",
|
|
55
|
+
disabled,
|
|
56
|
+
readOnly,
|
|
57
|
+
children,
|
|
58
|
+
adornment,
|
|
59
|
+
...others
|
|
60
|
+
} = useDefaultProps.useDefaultProps("HvSelectButton", props);
|
|
61
|
+
const { classes: classes2, cx } = useClasses(classesProp);
|
|
62
|
+
const endIcon = adornment ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
63
|
+
uikitReactIcons.DropDownXS,
|
|
64
|
+
{
|
|
65
|
+
iconSize: "XS",
|
|
66
|
+
style: { rotate: open ? "180deg" : void 0 },
|
|
67
|
+
className: classes2.arrow
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
+
Button.HvButton,
|
|
72
|
+
{
|
|
73
|
+
ref,
|
|
74
|
+
variant: "secondarySubtle",
|
|
75
|
+
disabled: disabled || readOnly,
|
|
76
|
+
className: cx(classes2.root, className, {
|
|
77
|
+
[classes2.open]: open,
|
|
78
|
+
[classes2.openUp]: open && placement.includes("top"),
|
|
79
|
+
[classes2.openDown]: open && placement.includes("bottom"),
|
|
80
|
+
[classes2.disabled]: disabled,
|
|
81
|
+
[classes2.readOnly]: readOnly
|
|
82
|
+
}),
|
|
83
|
+
classes: { endIcon: classes2.arrowContainer },
|
|
84
|
+
endIcon,
|
|
85
|
+
...others,
|
|
86
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes2.selection, children: children && typeof children === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes2.placeholder, children }) : children })
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
exports.HvSelectButton = HvSelectButton;
|
|
91
|
+
exports.staticClasses = staticClasses;
|
|
92
|
+
exports.useClasses = useClasses;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectButton.cjs","sources":["../../../src/Select/SelectButton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { Placement } from \"@popperjs/core\";\nimport { DropDownXS } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { useDefaultProps } from \"../hooks/useDefaultProps\";\nimport { ExtractNames, createClasses } from \"../utils/classes\";\nimport { HvButton } from \"../Button\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvSelectButton\", {\n root: {\n width: \"100%\",\n minWidth: \"unset\",\n userSelect: \"none\",\n position: \"relative\",\n paddingLeft: theme.space.xs,\n justifyContent: \"flex-start\",\n },\n disabled: {},\n readOnly: {\n userSelect: \"text\",\n backgroundColor: theme.colors.atmo2,\n },\n open: {\n backgroundColor: theme.colors.atmo1,\n },\n openUp: {\n borderRadius: `0px 0px ${theme.radii.base} ${theme.radii.base}`,\n },\n openDown: {\n borderRadius: `${theme.radii.base} ${theme.radii.base} 0px 0px`,\n },\n\n selection: {\n color: \"inherit\",\n flex: 1,\n textAlign: \"start\",\n\n overflow: \"clip visible\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n placeholder: {},\n arrowContainer: {\n marginRight: theme.spacing(-2),\n },\n arrow: {\n transition: \"rotate 0.2s ease\",\n },\n});\n\nexport type HvSelectButtonClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSelectButtonProps\n extends React.HTMLAttributes<HTMLButtonElement> {\n readOnly?: boolean;\n open?: boolean;\n disabled?: boolean;\n placement?: Placement;\n adornment?: React.ReactNode;\n classes?: HvSelectButtonClasses;\n}\n\n/**\n * HvSelect internal header button component\n */\nexport const HvSelectButton = forwardRef<\n HTMLButtonElement,\n HvSelectButtonProps\n>((props, ref) => {\n const {\n classes: classesProp,\n className,\n open,\n placement = \"bottom\",\n disabled,\n readOnly,\n children,\n adornment,\n ...others\n } = useDefaultProps(\"HvSelectButton\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const endIcon = adornment ?? (\n <DropDownXS\n iconSize=\"XS\"\n style={{ rotate: open ? \"180deg\" : undefined }}\n className={classes.arrow}\n />\n );\n\n return (\n <HvButton\n ref={ref}\n variant=\"secondarySubtle\"\n disabled={disabled || readOnly}\n className={cx(classes.root, className, {\n [classes.open]: open,\n [classes.openUp]: open && placement.includes(\"top\"),\n [classes.openDown]: open && placement.includes(\"bottom\"),\n [classes.disabled]: disabled,\n [classes.readOnly]: readOnly,\n })}\n classes={{ endIcon: classes.arrowContainer }}\n endIcon={endIcon}\n {...others}\n >\n <div className={classes.selection}>\n {children && typeof children === \"string\" ? (\n <div className={classes.placeholder}>{children}</div>\n ) : (\n children\n )}\n </div>\n </HvButton>\n );\n});\n"],"names":["createClasses","theme","forwardRef","useDefaultProps","classes","jsx","DropDownXS","HvButton"],"mappings":";;;;;;;;;AASO,MAAM,EAAE,eAAe,eAAeA,QAAAA,cAAc,kBAAkB;AAAA,EAC3E,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAaC,YAAAA,MAAM,MAAM;AAAA,IACzB,gBAAgB;AAAA,EAClB;AAAA,EACA,UAAU,CAAC;AAAA,EACX,UAAU;AAAA,IACR,YAAY;AAAA,IACZ,iBAAiBA,YAAAA,MAAM,OAAO;AAAA,EAChC;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiBA,YAAAA,MAAM,OAAO;AAAA,EAChC;AAAA,EACA,QAAQ;AAAA,IACN,cAAc,WAAWA,YAAAA,MAAM,MAAM,IAAI,IAAIA,YAAA,MAAM,MAAM,IAAI;AAAA,EAC/D;AAAA,EACA,UAAU;AAAA,IACR,cAAc,GAAGA,YAAM,MAAA,MAAM,IAAI,IAAIA,kBAAM,MAAM,IAAI;AAAA,EACvD;AAAA,EAEA,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,IAEX,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AAAA,EACA,aAAa,CAAC;AAAA,EACd,gBAAgB;AAAA,IACd,aAAaA,YAAM,MAAA,QAAQ,EAAE;AAAA,EAC/B;AAAA,EACA,OAAO;AAAA,IACL,YAAY;AAAA,EACd;AACF,CAAC;AAiBM,MAAM,iBAAiBC,MAAA,WAG5B,CAAC,OAAO,QAAQ;AACV,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACDC,gBAAgB,gBAAA,kBAAkB,KAAK;AAC3C,QAAM,EAAE,SAAAC,UAAS,GAAG,IAAI,WAAW,WAAW;AAE9C,QAAM,UAAU,aACdC,2BAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,OAAO,EAAE,QAAQ,OAAO,WAAW,OAAU;AAAA,MAC7C,WAAWF,SAAQ;AAAA,IAAA;AAAA,EAAA;AAKrB,SAAAC,2BAAA;AAAA,IAACE,OAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,UAAU,YAAY;AAAA,MACtB,WAAW,GAAGH,SAAQ,MAAM,WAAW;AAAA,QACrC,CAACA,SAAQ,IAAI,GAAG;AAAA,QAChB,CAACA,SAAQ,MAAM,GAAG,QAAQ,UAAU,SAAS,KAAK;AAAA,QAClD,CAACA,SAAQ,QAAQ,GAAG,QAAQ,UAAU,SAAS,QAAQ;AAAA,QACvD,CAACA,SAAQ,QAAQ,GAAG;AAAA,QACpB,CAACA,SAAQ,QAAQ,GAAG;AAAA,MAAA,CACrB;AAAA,MACD,SAAS,EAAE,SAASA,SAAQ,eAAe;AAAA,MAC3C;AAAA,MACC,GAAG;AAAA,MAEJ,yCAAC,OAAI,EAAA,WAAWA,SAAQ,WACrB,sBAAY,OAAO,aAAa,WAC/BC,2BAAA,IAAC,SAAI,WAAWD,SAAQ,aAAc,SAAA,CAAS,IAE/C,UAEJ;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;;;;"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -62,6 +62,10 @@ const InfoMessage_styles = require("./Forms/InfoMessage/InfoMessage.styles.cjs")
|
|
|
62
62
|
const InfoMessage = require("./Forms/InfoMessage/InfoMessage.cjs");
|
|
63
63
|
const WarningText_styles = require("./Forms/WarningText/WarningText.styles.cjs");
|
|
64
64
|
const WarningText = require("./Forms/WarningText/WarningText.cjs");
|
|
65
|
+
const Select_styles = require("./Select/Select.styles.cjs");
|
|
66
|
+
const Select = require("./Select/Select.cjs");
|
|
67
|
+
const Option = require("./Select/Option.cjs");
|
|
68
|
+
const OptionGroup = require("./Select/OptionGroup.cjs");
|
|
65
69
|
const SelectionList_styles = require("./SelectionList/SelectionList.styles.cjs");
|
|
66
70
|
const SelectionList = require("./SelectionList/SelectionList.cjs");
|
|
67
71
|
const Suggestions_styles = require("./Forms/Suggestions/Suggestions.styles.cjs");
|
|
@@ -405,6 +409,12 @@ exports.infoMessageClasses = InfoMessage_styles.staticClasses;
|
|
|
405
409
|
exports.HvInfoMessage = InfoMessage.HvInfoMessage;
|
|
406
410
|
exports.warningTextClasses = WarningText_styles.staticClasses;
|
|
407
411
|
exports.HvWarningText = WarningText.HvWarningText;
|
|
412
|
+
exports.selectClasses = Select_styles.staticClasses;
|
|
413
|
+
exports.HvSelect = Select.HvSelect;
|
|
414
|
+
exports.HvOption = Option.HvOption;
|
|
415
|
+
exports.optionClasses = Option.optionClasses;
|
|
416
|
+
exports.HvOptionGroup = OptionGroup.HvOptionGroup;
|
|
417
|
+
exports.optionGroupClasses = OptionGroup.optionGroupClasses;
|
|
408
418
|
exports.selectionListClasses = SelectionList_styles.staticClasses;
|
|
409
419
|
exports.HvSelectionList = SelectionList.HvSelectionList;
|
|
410
420
|
exports.suggestionsClasses = Suggestions_styles.staticClasses;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -11,8 +11,8 @@ import { useClasses } from "./DropDownMenu.styles.js";
|
|
|
11
11
|
import { staticClasses } from "./DropDownMenu.styles.js";
|
|
12
12
|
import { HvBaseDropdown } from "../BaseDropdown/BaseDropdown.js";
|
|
13
13
|
import { HvButton } from "../Button/Button.js";
|
|
14
|
-
import { HvPanel } from "../Panel/Panel.js";
|
|
15
14
|
import { HvList } from "../List/List.js";
|
|
15
|
+
import { HvPanel } from "../Panel/Panel.js";
|
|
16
16
|
const HvDropDownMenu = (props) => {
|
|
17
17
|
const {
|
|
18
18
|
id: idProp,
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useOption } from "@mui/base/useOption";
|
|
4
|
+
import { useForkRef } from "@mui/material/utils";
|
|
5
|
+
import { useDefaultProps } from "../hooks/useDefaultProps.js";
|
|
6
|
+
import { fixedForwardRef } from "../types/generic.js";
|
|
7
|
+
import { createClasses } from "../utils/classes.js";
|
|
8
|
+
import { outlineStyles } from "../utils/focusUtils.js";
|
|
9
|
+
import { HvListItem } from "../ListContainer/ListItem/ListItem.js";
|
|
10
|
+
const { staticClasses, useClasses } = createClasses("HvOption", {
|
|
11
|
+
root: {},
|
|
12
|
+
highlighted: {
|
|
13
|
+
...outlineStyles
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const HvOption = fixedForwardRef(function HvOption2(props, ref) {
|
|
17
|
+
const {
|
|
18
|
+
classes: classesProp,
|
|
19
|
+
className,
|
|
20
|
+
disabled = false,
|
|
21
|
+
label,
|
|
22
|
+
value,
|
|
23
|
+
children,
|
|
24
|
+
...others
|
|
25
|
+
} = useDefaultProps("HvOption", props);
|
|
26
|
+
const { classes, cx } = useClasses(classesProp);
|
|
27
|
+
const optionRef = useRef(null);
|
|
28
|
+
const rootRef = useForkRef(optionRef, ref);
|
|
29
|
+
const computedLabel = label ?? (typeof children === "string" ? children : optionRef.current?.textContent?.trim());
|
|
30
|
+
const { getRootProps, selected, highlighted } = useOption({
|
|
31
|
+
disabled,
|
|
32
|
+
label: computedLabel,
|
|
33
|
+
rootRef,
|
|
34
|
+
value
|
|
35
|
+
});
|
|
36
|
+
return /* @__PURE__ */ jsx(
|
|
37
|
+
HvListItem,
|
|
38
|
+
{
|
|
39
|
+
ref,
|
|
40
|
+
selected,
|
|
41
|
+
className: cx(classes.root, className, {
|
|
42
|
+
[classes.highlighted]: highlighted
|
|
43
|
+
}),
|
|
44
|
+
...getRootProps(),
|
|
45
|
+
...others,
|
|
46
|
+
children
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
export {
|
|
51
|
+
HvOption,
|
|
52
|
+
staticClasses as optionClasses
|
|
53
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Option.js","sources":["../../../src/Select/Option.tsx"],"sourcesContent":["import { useRef } from \"react\";\nimport { useOption } from \"@mui/base/useOption\";\nimport { OptionOwnProps } from \"@mui/base/Option\";\nimport { useForkRef } from \"@mui/material/utils\";\n\nimport { HvListItem, HvListItemProps } from \"../ListContainer\";\nimport { useDefaultProps } from \"../hooks/useDefaultProps\";\nimport { fixedForwardRef } from \"../types/generic\";\nimport { ExtractNames, createClasses } from \"../utils/classes\";\nimport { outlineStyles } from \"../utils/focusUtils\";\n\nconst { staticClasses, useClasses } = createClasses(\"HvOption\", {\n root: {},\n highlighted: {\n ...outlineStyles,\n },\n});\n\nexport { staticClasses as optionClasses };\n\nexport type HvOptionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvOptionProps<OptionValue extends {}>\n extends Omit<HvListItemProps, \"value\" | \"disabled\">,\n Pick<OptionOwnProps<OptionValue>, \"disabled\" | \"label\" | \"value\"> {\n classes?: HvOptionClasses;\n}\n\nexport const HvOption = fixedForwardRef(function HvOption<\n OptionValue extends {}\n>(props: HvOptionProps<OptionValue>, ref: React.Ref<HTMLLIElement>) {\n const {\n classes: classesProp,\n className,\n disabled = false,\n label,\n value,\n children,\n ...others\n } = useDefaultProps(\"HvOption\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const optionRef = useRef<HTMLElement>(null);\n const rootRef = useForkRef(optionRef, ref);\n\n const computedLabel =\n label ??\n (typeof children === \"string\"\n ? children\n : optionRef.current?.textContent?.trim());\n\n const { getRootProps, selected, highlighted } = useOption({\n disabled,\n label: computedLabel,\n rootRef,\n value,\n });\n\n return (\n <HvListItem\n ref={ref}\n selected={selected}\n className={cx(classes.root, className, {\n [classes.highlighted]: highlighted,\n })}\n {...getRootProps()}\n {...others}\n >\n {children}\n </HvListItem>\n );\n});\n"],"names":["HvOption"],"mappings":";;;;;;;;;AAWA,MAAM,EAAE,eAAe,eAAe,cAAc,YAAY;AAAA,EAC9D,MAAM,CAAC;AAAA,EACP,aAAa;AAAA,IACX,GAAG;AAAA,EACL;AACF,CAAC;AAYM,MAAM,WAAW,gBAAgB,SAASA,UAE/C,OAAmC,KAA+B;AAC5D,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,YAAY,KAAK;AACrC,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAExC,QAAA,YAAY,OAAoB,IAAI;AACpC,QAAA,UAAU,WAAW,WAAW,GAAG;AAEnC,QAAA,gBACJ,UACC,OAAO,aAAa,WACjB,WACA,UAAU,SAAS,aAAa,KAAK;AAE3C,QAAM,EAAE,cAAc,UAAU,YAAA,IAAgB,UAAU;AAAA,IACxD;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,GAAG,QAAQ,MAAM,WAAW;AAAA,QACrC,CAAC,QAAQ,WAAW,GAAG;AAAA,MAAA,CACxB;AAAA,MACA,GAAG,aAAa;AAAA,MAChB,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { OptionGroup } from "@mui/base/OptionGroup";
|
|
4
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
5
|
+
import { createClasses } from "../utils/classes.js";
|
|
6
|
+
import { useDefaultProps } from "../hooks/useDefaultProps.js";
|
|
7
|
+
const { staticClasses, useClasses } = createClasses("HvOptionGroup", {
|
|
8
|
+
root: {
|
|
9
|
+
listStyle: "none",
|
|
10
|
+
...theme.typography.label
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const HvOptionGroup = forwardRef(
|
|
14
|
+
(props, ref) => {
|
|
15
|
+
const {
|
|
16
|
+
className,
|
|
17
|
+
classes: classesProp,
|
|
18
|
+
...others
|
|
19
|
+
} = useDefaultProps("HvOptionGroup", props);
|
|
20
|
+
const { classes, cx } = useClasses(classesProp);
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
OptionGroup,
|
|
23
|
+
{
|
|
24
|
+
ref,
|
|
25
|
+
className: cx(classes.root, className),
|
|
26
|
+
...others
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
export {
|
|
32
|
+
HvOptionGroup,
|
|
33
|
+
staticClasses as optionGroupClasses
|
|
34
|
+
};
|