@veracity/vui 1.3.0 → 1.3.1-rc.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/checkbox/checkbox.d.ts.map +1 -1
- package/dist/cjs/checkbox/checkbox.js +1 -1
- package/dist/cjs/checkbox/checkbox.types.d.ts +1 -1
- package/dist/cjs/checkbox/checkbox.types.d.ts.map +1 -1
- package/dist/cjs/header/headerAccount.js +1 -1
- package/dist/cjs/radio/radio.d.ts.map +1 -1
- package/dist/cjs/radio/radio.js +1 -1
- package/dist/cjs/radio/radio.types.d.ts +1 -1
- package/dist/cjs/radio/radio.types.d.ts.map +1 -1
- package/dist/cjs/select/select.js +1 -1
- package/dist/cjs/select/select.types.d.ts +3 -3
- package/dist/cjs/select/select.types.d.ts.map +1 -1
- package/dist/cjs/select/selectButton.d.ts.map +1 -1
- package/dist/cjs/select/selectButton.js +1 -1
- package/dist/cjs/select/useSelect.d.ts +3 -2
- package/dist/cjs/select/useSelect.d.ts.map +1 -1
- package/dist/cjs/select/useSelect.js +8 -5
- package/dist/cjs/select/useSelect.types.d.ts +3 -1
- package/dist/cjs/select/useSelect.types.d.ts.map +1 -1
- package/dist/esm/checkbox/checkbox.d.ts.map +1 -1
- package/dist/esm/checkbox/checkbox.js +1 -1
- package/dist/esm/checkbox/checkbox.types.d.ts +1 -1
- package/dist/esm/checkbox/checkbox.types.d.ts.map +1 -1
- package/dist/esm/header/headerAccount.js +1 -1
- package/dist/esm/radio/radio.d.ts.map +1 -1
- package/dist/esm/radio/radio.js +1 -1
- package/dist/esm/radio/radio.types.d.ts +1 -1
- package/dist/esm/radio/radio.types.d.ts.map +1 -1
- package/dist/esm/select/select.js +1 -1
- package/dist/esm/select/select.types.d.ts +3 -3
- package/dist/esm/select/select.types.d.ts.map +1 -1
- package/dist/esm/select/selectButton.d.ts.map +1 -1
- package/dist/esm/select/selectButton.js +1 -1
- package/dist/esm/select/useSelect.d.ts +3 -2
- package/dist/esm/select/useSelect.d.ts.map +1 -1
- package/dist/esm/select/useSelect.js +8 -5
- package/dist/esm/select/useSelect.types.d.ts +3 -1
- package/dist/esm/select/useSelect.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/checkbox/checkbox.tsx +1 -0
- package/src/checkbox/checkbox.types.ts +1 -1
- package/src/header/headerAccount.tsx +1 -1
- package/src/radio/radio.tsx +8 -1
- package/src/radio/radio.types.ts +1 -1
- package/src/select/select.tsx +1 -1
- package/src/select/select.types.ts +3 -3
- package/src/select/selectButton.tsx +1 -0
- package/src/select/useSelect.tsx +11 -5
- package/src/select/useSelect.types.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAwBpE,eAAO,MAAM,YAAY,ulJAkBxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAwBpE,eAAO,MAAM,YAAY,ulJAkBxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,uDAoFnB,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -110,7 +110,7 @@ exports.Checkbox = (0, core_1.vui)((props, ref) => {
|
|
|
110
110
|
'aria-disabled': disabled
|
|
111
111
|
});
|
|
112
112
|
return (react_1.default.createElement(exports.CheckboxBase, Object.assign({ className: (0, utils_1.cs)('vui-checkbox', className), controlHoverColor: controlHoverColor, ref: ref }, styles.container, aliasedProps, rest),
|
|
113
|
-
react_1.default.createElement(CheckboxControl, Object.assign({ className: "vui-checkboxControl", color: color, focusWithinRing: 3, mr: controlMr }, controlStyles),
|
|
113
|
+
react_1.default.createElement(CheckboxControl, Object.assign({ bg: "white", className: "vui-checkboxControl", color: color, focusWithinRing: 3, mr: controlMr }, controlStyles),
|
|
114
114
|
react_1.default.createElement(CheckboxInput, Object.assign({ className: "vui-checkboxInput", onChange: handleOnChange, ref: inputRef, type: "checkbox" }, { checked, defaultChecked, disabled, id, name, required, value }, inputProps)),
|
|
115
115
|
react_1.default.createElement(icon_1.default, { className: "vui-checkboxIcon", h: "100%", name: icon, w: "100%" })), children !== null && children !== void 0 ? children : (label && (react_1.default.createElement(t_1.default, Object.assign({ className: "vui-checkboxLabel", lineHeight: "normal" }, styles.label), label)))));
|
|
116
116
|
});
|
|
@@ -22,7 +22,7 @@ export declare type CheckboxProps = SystemProps & ThemingProps<'Checkbox'> & {
|
|
|
22
22
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null;
|
|
23
23
|
/** Displays the checkbox as indeterminate. */
|
|
24
24
|
isIndeterminate?: boolean;
|
|
25
|
-
/** Socket
|
|
25
|
+
/** Socket for the text next to the checkbox. */
|
|
26
26
|
label?: string;
|
|
27
27
|
/** Passed to the inner input. */
|
|
28
28
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.types.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,aAAa,GAAG,WAAW,GACrC,YAAY,CAAC,UAAU,CAAC,GAAG;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,2DAA2D;IAC3D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,
|
|
1
|
+
{"version":3,"file":"checkbox.types.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,aAAa,GAAG,WAAW,GACrC,YAAY,CAAC,UAAU,CAAC,GAAG;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,2DAA2D;IAC3D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,iCAAiC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,CAAA;AAEH,oBAAY,kBAAkB,GAAG;IAC/B,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
|
|
@@ -57,7 +57,7 @@ function HeaderAccount(props) {
|
|
|
57
57
|
const popoverOptions = isMobile ? (0, utils_1.merge)(options, mobilePopoverOptions) : options;
|
|
58
58
|
const contentScreenProps = isMobile
|
|
59
59
|
? { h: `calc(100vh - ${headerHeight}px)`, left: 0, position: 'fixed', top: headerHeight, w: '100vw' }
|
|
60
|
-
: { maxH: 360, py: 1,
|
|
60
|
+
: { maxH: 360, py: 1, minW: 320, w: 'auto' };
|
|
61
61
|
const name = (0, utils_1.isObject)(userInfo) ? userInfo.displayName : '';
|
|
62
62
|
return (react_1.default.createElement(popover_1.default, Object.assign({ isLazy: false, offset: [0, 8], options: popoverOptions, placement: "bottom-end" }, rest),
|
|
63
63
|
react_1.default.createElement(popover_1.default.Trigger, Object.assign({ as: avatar_1.default, className: "vui-headerAccountTrigger", colorScheme: "prussian", isInteractive: true, ml: 2, name: name, title: "Account", variant: "solid" }, styles.trigger, triggerProps)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAuB3D,eAAO,MAAM,SAAS,olJAkBrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAuB3D,eAAO,MAAM,SAAS,olJAkBrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,oDA4FhB,CAAA;AAEF,eAAe,KAAK,CAAA"}
|
package/dist/cjs/radio/radio.js
CHANGED
|
@@ -115,7 +115,7 @@ exports.Radio = (0, core_1.vui)((props, ref) => {
|
|
|
115
115
|
'aria-disabled': disabled
|
|
116
116
|
});
|
|
117
117
|
return (react_1.default.createElement(exports.RadioBase, Object.assign({ className: (0, utils_1.cs)('vui-radio', className), controlHoverColor: controlHoverColor, ref: ref }, styles.container, aliasedProps, rest),
|
|
118
|
-
react_1.default.createElement(RadioControl, Object.assign({ className: "vui-radioControl", color: color, focusWithinRing: 3, mr: controlMr }, controlStyles),
|
|
118
|
+
react_1.default.createElement(RadioControl, Object.assign({ bg: "white", className: "vui-radioControl", color: color, focusWithinRing: 3, mr: controlMr }, controlStyles),
|
|
119
119
|
react_1.default.createElement(RadioInput, Object.assign({ className: "vui-radioInput", onChange: handleOnChange, ref: inputRef, type: "radio" }, { checked, defaultChecked, disabled, id, name, required, value }, inputProps)),
|
|
120
120
|
react_1.default.createElement(icon_1.default, { className: "vui-radioIcon", h: "100%", name: icon, w: "100%" })), children !== null && children !== void 0 ? children : (label && (react_1.default.createElement(t_1.default, Object.assign({ className: "vui-radioLabel", lineHeight: "normal" }, styles.label), label)))));
|
|
121
121
|
});
|
|
@@ -18,7 +18,7 @@ export declare type RadioProps = SystemProps & ThemingProps<'Radio'> & {
|
|
|
18
18
|
inputProps?: HTMLAttributes<HTMLInputElement>;
|
|
19
19
|
/** Ref passed to the inner input element. */
|
|
20
20
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null;
|
|
21
|
-
/** Socket
|
|
21
|
+
/** Socket for the text next to the item. */
|
|
22
22
|
label?: string;
|
|
23
23
|
/** Passed to the inner input. */
|
|
24
24
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.types.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,UAAU,GAAG,WAAW,GAClC,YAAY,CAAC,OAAO,CAAC,GAAG;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,
|
|
1
|
+
{"version":3,"file":"radio.types.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,UAAU,GAAG,WAAW,GAClC,YAAY,CAAC,OAAO,CAAC,GAAG;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,iCAAiC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,CAAA;AAEH,oBAAY,eAAe,GAAG;IAC5B,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
|
|
@@ -31,7 +31,7 @@ const useSelect_1 = __importDefault(require("./useSelect"));
|
|
|
31
31
|
*/
|
|
32
32
|
function Select(props) {
|
|
33
33
|
const { children, defaultValue, disabled, isInvalid, isMultiple, name, onChange, options, placeholder = 'Please select', readOnly, size, value, variant } = props, rest = __rest(props, ["children", "defaultValue", "disabled", "isInvalid", "isMultiple", "name", "onChange", "options", "placeholder", "readOnly", "size", "value", "variant"]);
|
|
34
|
-
const selectProps = (0, useSelect_1.default)({ defaultValue, isMultiple, onChange, value });
|
|
34
|
+
const selectProps = (0, useSelect_1.default)({ defaultValue, isMultiple, onChange, value, options });
|
|
35
35
|
if (utils_1.__DEV__ && isMultiple && !Array.isArray(selectProps.value)) {
|
|
36
36
|
console.error('<Select /> is used with isMultiple but its value is not an array: ', value);
|
|
37
37
|
}
|
|
@@ -16,7 +16,7 @@ export declare type SelectProps = ThemingProps<'Select'> & PopoverProps & UseSel
|
|
|
16
16
|
/** Name of the input. Used in custom change event to support form library integration. */
|
|
17
17
|
name?: string;
|
|
18
18
|
/** Data prop to display an array of options in the popover. */
|
|
19
|
-
options
|
|
19
|
+
options: SelectOptionData[];
|
|
20
20
|
/** Displayed inside the trigger when no value is selected. */
|
|
21
21
|
placeholder?: string;
|
|
22
22
|
/** Select cannot be opened and is styled accordingly. */
|
|
@@ -26,9 +26,9 @@ export declare type SelectOptionData = {
|
|
|
26
26
|
/** Option is displayed as disabled. */
|
|
27
27
|
disabled?: boolean;
|
|
28
28
|
/** Text label of the option. */
|
|
29
|
-
text
|
|
29
|
+
text: string;
|
|
30
30
|
/** Value of a given option. */
|
|
31
|
-
value
|
|
31
|
+
value: SelectValue;
|
|
32
32
|
};
|
|
33
33
|
export declare type SelectOptionProps = ListItemProps & {
|
|
34
34
|
/** Currently selected value. Can be a string/number or array of those when using 'isMultiple'. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.types.d.ts","sourceRoot":"","sources":["../../../src/select/select.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAY,iBAAiB,GAAG,WAAW,CAAA;AAE3C,oBAAY,kBAAkB,GAAG,mBAAmB,CAAA;AAEpD,oBAAY,aAAa,GAAG,IAAI,CAC9B,WAAW,EACX,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAC/G,GACC,mBAAmB,CAAA;AAErB,oBAAY,gBAAgB,GAAG,SAAS,CAAA;AAExC,oBAAY,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAC9C,YAAY,GACZ,cAAc,GAAG;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"select.types.d.ts","sourceRoot":"","sources":["../../../src/select/select.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAY,iBAAiB,GAAG,WAAW,CAAA;AAE3C,oBAAY,kBAAkB,GAAG,mBAAmB,CAAA;AAEpD,oBAAY,aAAa,GAAG,IAAI,CAC9B,WAAW,EACX,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAC/G,GACC,mBAAmB,CAAA;AAErB,oBAAY,gBAAgB,GAAG,SAAS,CAAA;AAExC,oBAAY,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAC9C,YAAY,GACZ,cAAc,GAAG;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,oBAAY,gBAAgB,GAAG;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,KAAK,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,oBAAY,iBAAiB,GAAG,aAAa,GAAG;IAC9C,mGAAmG;IACnG,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectButton.d.ts","sourceRoot":"","sources":["../../../src/select/selectButton.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"selectButton.d.ts","sourceRoot":"","sources":["../../../src/select/selectButton.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,YAAY,2EAgDvB,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
|
@@ -73,6 +73,6 @@ exports.SelectButton = (0, core_1.vui)((props, ref) => {
|
|
|
73
73
|
hoverBorderColor: 'red.80'
|
|
74
74
|
}
|
|
75
75
|
: {};
|
|
76
|
-
return (react_1.default.createElement(popover_1.PopoverTrigger, Object.assign({ as: button_1.LineButton, className: (0, utils_1.cs)('vui-selectButton', className), colorScheme: "prussian", disabled: disabled, focusRing: 2, fontWeight: "regular", iconRight: react_1.default.createElement(button_1.default.Icon, { color: iconColor, ml: "auto", name: "falAngleDown" }), isFullWidth: true, px: 1, ref: ref, text: react_1.default.createElement(button_1.default.Text, { color: textColor }, text), userSelect: "text" }, styles.button, readOnlyProps, isInvalidProps, rest)));
|
|
76
|
+
return (react_1.default.createElement(popover_1.PopoverTrigger, Object.assign({ as: button_1.LineButton, bg: "white", className: (0, utils_1.cs)('vui-selectButton', className), colorScheme: "prussian", disabled: disabled, focusRing: 2, fontWeight: "regular", iconRight: react_1.default.createElement(button_1.default.Icon, { color: iconColor, ml: "auto", name: "falAngleDown" }), isFullWidth: true, px: 1, ref: ref, text: react_1.default.createElement(button_1.default.Text, { color: textColor }, text), userSelect: "text" }, styles.button, readOnlyProps, isInvalidProps, rest)));
|
|
77
77
|
});
|
|
78
78
|
exports.default = exports.SelectButton;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ChangeEvent } from '../utils';
|
|
2
|
+
import { SelectValue } from './select.types';
|
|
2
3
|
import { UseSelectProps } from './useSelect.types';
|
|
3
4
|
/** Handles controlled/uncontrolled value state. Supports single and multiple values. */
|
|
4
5
|
export default function useSelect(props: UseSelectProps): {
|
|
5
6
|
onChange: (e: ChangeEvent) => void;
|
|
6
|
-
value:
|
|
7
|
-
valueText:
|
|
7
|
+
value: SelectValue | SelectValue[] | undefined;
|
|
8
|
+
valueText: SelectValue | undefined;
|
|
8
9
|
};
|
|
9
10
|
export declare type UseSelectReturnType = ReturnType<typeof useSelect>;
|
|
10
11
|
//# sourceMappingURL=useSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSelect.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,UAAU,CAAA;AAClE,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAQlD,wFAAwF;AACxF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE,cAAc;kBASjB,WAAW;;;EAehD;AAED,oBAAY,mBAAmB,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA"}
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const react_1 = require("react");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
+
const getValueText = (value, options) => {
|
|
6
|
+
const option = options === null || options === void 0 ? void 0 : options.find((o) => (o === null || o === void 0 ? void 0 : o.value) === value);
|
|
7
|
+
return (option === null || option === void 0 ? void 0 : option.text) || value;
|
|
8
|
+
};
|
|
5
9
|
/** Handles controlled/uncontrolled value state. Supports single and multiple values. */
|
|
6
10
|
function useSelect(props) {
|
|
7
|
-
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp } = props;
|
|
11
|
+
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp, options } = props;
|
|
8
12
|
// Not using useControlled here, because we need custom value setter when uncontrolled
|
|
9
13
|
const [stateValue, setStateValue] = (0, react_1.useState)(defaultValue);
|
|
10
14
|
const isControlled = valueProp !== undefined;
|
|
@@ -12,15 +16,14 @@ function useSelect(props) {
|
|
|
12
16
|
/** Sends a change event to the external consumer, but internall keeps the actual value as primitive or array. */
|
|
13
17
|
const onChange = (0, utils_1.useCallbackRef)((e) => {
|
|
14
18
|
onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(e);
|
|
15
|
-
if (!isControlled)
|
|
19
|
+
if (!isControlled)
|
|
16
20
|
setStateValue(value => (Array.isArray(value) ? (0, utils_1.toggleItem)(value, e.target.value).sort() : e.target.value));
|
|
17
|
-
}
|
|
18
21
|
});
|
|
19
22
|
const valueText = isMultiple && Array.isArray(value)
|
|
20
23
|
? value[0]
|
|
21
|
-
? `${value[0]}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
24
|
+
? `${getValueText(value[0], options)}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
22
25
|
: undefined
|
|
23
|
-
: value;
|
|
26
|
+
: getValueText(value, options);
|
|
24
27
|
return { onChange, value, valueText };
|
|
25
28
|
}
|
|
26
29
|
exports.default = useSelect;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeEvent } from '../utils';
|
|
2
|
-
import { SelectValue } from './select.types';
|
|
2
|
+
import { SelectOptionData, SelectValue } from './select.types';
|
|
3
3
|
export declare type UseSelectProps = {
|
|
4
4
|
/** Currently selected value in controlled mode. */
|
|
5
5
|
value?: SelectValue | SelectValue[];
|
|
@@ -7,6 +7,8 @@ export declare type UseSelectProps = {
|
|
|
7
7
|
defaultValue?: SelectValue | SelectValue[];
|
|
8
8
|
/** Allows choosing multiple values. Popover won't close automatically on item click. */
|
|
9
9
|
isMultiple?: boolean;
|
|
10
|
+
/** List of all available options */
|
|
11
|
+
options: SelectOptionData[];
|
|
10
12
|
/**
|
|
11
13
|
* Callback triggered when an option is selected.
|
|
12
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.types.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSelect.types.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9D,oBAAY,cAAc,GAAG;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACnC,mDAAmD;IACnD,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oCAAoC;IACpC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;CACpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAwBpE,eAAO,MAAM,YAAY,ulJAkBxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAwBpE,eAAO,MAAM,YAAY,ulJAkBxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,uDAoFnB,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -69,7 +69,7 @@ export const Checkbox = vui((props, ref) => {
|
|
|
69
69
|
'aria-disabled': disabled
|
|
70
70
|
});
|
|
71
71
|
return (React.createElement(CheckboxBase, { className: cs('vui-checkbox', className), controlHoverColor: controlHoverColor, ref: ref, ...styles.container, ...aliasedProps, ...rest },
|
|
72
|
-
React.createElement(CheckboxControl, { className: "vui-checkboxControl", color: color, focusWithinRing: 3, mr: controlMr, ...controlStyles },
|
|
72
|
+
React.createElement(CheckboxControl, { bg: "white", className: "vui-checkboxControl", color: color, focusWithinRing: 3, mr: controlMr, ...controlStyles },
|
|
73
73
|
React.createElement(CheckboxInput, { className: "vui-checkboxInput", onChange: handleOnChange, ref: inputRef, type: "checkbox", ...{ checked, defaultChecked, disabled, id, name, required, value }, ...inputProps }),
|
|
74
74
|
React.createElement(Icon, { className: "vui-checkboxIcon", h: "100%", name: icon, w: "100%" })),
|
|
75
75
|
children ??
|
|
@@ -22,7 +22,7 @@ export declare type CheckboxProps = SystemProps & ThemingProps<'Checkbox'> & {
|
|
|
22
22
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null;
|
|
23
23
|
/** Displays the checkbox as indeterminate. */
|
|
24
24
|
isIndeterminate?: boolean;
|
|
25
|
-
/** Socket
|
|
25
|
+
/** Socket for the text next to the checkbox. */
|
|
26
26
|
label?: string;
|
|
27
27
|
/** Passed to the inner input. */
|
|
28
28
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.types.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,aAAa,GAAG,WAAW,GACrC,YAAY,CAAC,UAAU,CAAC,GAAG;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,2DAA2D;IAC3D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,
|
|
1
|
+
{"version":3,"file":"checkbox.types.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,aAAa,GAAG,WAAW,GACrC,YAAY,CAAC,UAAU,CAAC,GAAG;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,2DAA2D;IAC3D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,iCAAiC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,CAAA;AAEH,oBAAY,kBAAkB,GAAG;IAC/B,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
|
|
@@ -17,7 +17,7 @@ export function HeaderAccount(props) {
|
|
|
17
17
|
const popoverOptions = isMobile ? merge(options, mobilePopoverOptions) : options;
|
|
18
18
|
const contentScreenProps = isMobile
|
|
19
19
|
? { h: `calc(100vh - ${headerHeight}px)`, left: 0, position: 'fixed', top: headerHeight, w: '100vw' }
|
|
20
|
-
: { maxH: 360, py: 1,
|
|
20
|
+
: { maxH: 360, py: 1, minW: 320, w: 'auto' };
|
|
21
21
|
const name = isObject(userInfo) ? userInfo.displayName : '';
|
|
22
22
|
return (React.createElement(Popover, { isLazy: false, offset: [0, 8], options: popoverOptions, placement: "bottom-end", ...rest },
|
|
23
23
|
React.createElement(Popover.Trigger, { as: Avatar, className: "vui-headerAccountTrigger", colorScheme: "prussian", isInteractive: true, ml: 2, name: name, title: "Account", variant: "solid", ...styles.trigger, ...triggerProps }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAuB3D,eAAO,MAAM,SAAS,olJAkBrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAuB3D,eAAO,MAAM,SAAS,olJAkBrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,oDA4FhB,CAAA;AAEF,eAAe,KAAK,CAAA"}
|
package/dist/esm/radio/radio.js
CHANGED
|
@@ -74,7 +74,7 @@ export const Radio = vui((props, ref) => {
|
|
|
74
74
|
'aria-disabled': disabled
|
|
75
75
|
});
|
|
76
76
|
return (React.createElement(RadioBase, { className: cs('vui-radio', className), controlHoverColor: controlHoverColor, ref: ref, ...styles.container, ...aliasedProps, ...rest },
|
|
77
|
-
React.createElement(RadioControl, { className: "vui-radioControl", color: color, focusWithinRing: 3, mr: controlMr, ...controlStyles },
|
|
77
|
+
React.createElement(RadioControl, { bg: "white", className: "vui-radioControl", color: color, focusWithinRing: 3, mr: controlMr, ...controlStyles },
|
|
78
78
|
React.createElement(RadioInput, { className: "vui-radioInput", onChange: handleOnChange, ref: inputRef, type: "radio", ...{ checked, defaultChecked, disabled, id, name, required, value }, ...inputProps }),
|
|
79
79
|
React.createElement(Icon, { className: "vui-radioIcon", h: "100%", name: icon, w: "100%" })),
|
|
80
80
|
children ??
|
|
@@ -18,7 +18,7 @@ export declare type RadioProps = SystemProps & ThemingProps<'Radio'> & {
|
|
|
18
18
|
inputProps?: HTMLAttributes<HTMLInputElement>;
|
|
19
19
|
/** Ref passed to the inner input element. */
|
|
20
20
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null;
|
|
21
|
-
/** Socket
|
|
21
|
+
/** Socket for the text next to the item. */
|
|
22
22
|
label?: string;
|
|
23
23
|
/** Passed to the inner input. */
|
|
24
24
|
name?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.types.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,UAAU,GAAG,WAAW,GAClC,YAAY,CAAC,OAAO,CAAC,GAAG;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,
|
|
1
|
+
{"version":3,"file":"radio.types.d.ts","sourceRoot":"","sources":["../../../src/radio/radio.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEhE,oBAAY,UAAU,GAAG,WAAW,GAClC,YAAY,CAAC,OAAO,CAAC,GAAG;IACtB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,iCAAiC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,CAAA;AAEH,oBAAY,eAAe,GAAG;IAC5B,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA"}
|
|
@@ -14,7 +14,7 @@ import useSelect from './useSelect';
|
|
|
14
14
|
*/
|
|
15
15
|
export function Select(props) {
|
|
16
16
|
const { children, defaultValue, disabled, isInvalid, isMultiple, name, onChange, options, placeholder = 'Please select', readOnly, size, value, variant, ...rest } = props;
|
|
17
|
-
const selectProps = useSelect({ defaultValue, isMultiple, onChange, value });
|
|
17
|
+
const selectProps = useSelect({ defaultValue, isMultiple, onChange, value, options });
|
|
18
18
|
if (__DEV__ && isMultiple && !Array.isArray(selectProps.value)) {
|
|
19
19
|
console.error('<Select /> is used with isMultiple but its value is not an array: ', value);
|
|
20
20
|
}
|
|
@@ -16,7 +16,7 @@ export declare type SelectProps = ThemingProps<'Select'> & PopoverProps & UseSel
|
|
|
16
16
|
/** Name of the input. Used in custom change event to support form library integration. */
|
|
17
17
|
name?: string;
|
|
18
18
|
/** Data prop to display an array of options in the popover. */
|
|
19
|
-
options
|
|
19
|
+
options: SelectOptionData[];
|
|
20
20
|
/** Displayed inside the trigger when no value is selected. */
|
|
21
21
|
placeholder?: string;
|
|
22
22
|
/** Select cannot be opened and is styled accordingly. */
|
|
@@ -26,9 +26,9 @@ export declare type SelectOptionData = {
|
|
|
26
26
|
/** Option is displayed as disabled. */
|
|
27
27
|
disabled?: boolean;
|
|
28
28
|
/** Text label of the option. */
|
|
29
|
-
text
|
|
29
|
+
text: string;
|
|
30
30
|
/** Value of a given option. */
|
|
31
|
-
value
|
|
31
|
+
value: SelectValue;
|
|
32
32
|
};
|
|
33
33
|
export declare type SelectOptionProps = ListItemProps & {
|
|
34
34
|
/** Currently selected value. Can be a string/number or array of those when using 'isMultiple'. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.types.d.ts","sourceRoot":"","sources":["../../../src/select/select.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAY,iBAAiB,GAAG,WAAW,CAAA;AAE3C,oBAAY,kBAAkB,GAAG,mBAAmB,CAAA;AAEpD,oBAAY,aAAa,GAAG,IAAI,CAC9B,WAAW,EACX,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAC/G,GACC,mBAAmB,CAAA;AAErB,oBAAY,gBAAgB,GAAG,SAAS,CAAA;AAExC,oBAAY,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAC9C,YAAY,GACZ,cAAc,GAAG;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"select.types.d.ts","sourceRoot":"","sources":["../../../src/select/select.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAY,iBAAiB,GAAG,WAAW,CAAA;AAE3C,oBAAY,kBAAkB,GAAG,mBAAmB,CAAA;AAEpD,oBAAY,aAAa,GAAG,IAAI,CAC9B,WAAW,EACX,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAC/G,GACC,mBAAmB,CAAA;AAErB,oBAAY,gBAAgB,GAAG,SAAS,CAAA;AAExC,oBAAY,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAC9C,YAAY,GACZ,cAAc,GAAG;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,oBAAY,gBAAgB,GAAG;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,KAAK,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,oBAAY,iBAAiB,GAAG,aAAa,GAAG;IAC9C,mGAAmG;IACnG,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectButton.d.ts","sourceRoot":"","sources":["../../../src/select/selectButton.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"selectButton.d.ts","sourceRoot":"","sources":["../../../src/select/selectButton.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,YAAY,2EAgDvB,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
|
@@ -32,6 +32,6 @@ export const SelectButton = vui((props, ref) => {
|
|
|
32
32
|
hoverBorderColor: 'red.80'
|
|
33
33
|
}
|
|
34
34
|
: {};
|
|
35
|
-
return (React.createElement(PopoverTrigger, { as: LineButton, className: cs('vui-selectButton', className), colorScheme: "prussian", disabled: disabled, focusRing: 2, fontWeight: "regular", iconRight: React.createElement(Button.Icon, { color: iconColor, ml: "auto", name: "falAngleDown" }), isFullWidth: true, px: 1, ref: ref, text: React.createElement(Button.Text, { color: textColor }, text), userSelect: "text", ...styles.button, ...readOnlyProps, ...isInvalidProps, ...rest }));
|
|
35
|
+
return (React.createElement(PopoverTrigger, { as: LineButton, bg: "white", className: cs('vui-selectButton', className), colorScheme: "prussian", disabled: disabled, focusRing: 2, fontWeight: "regular", iconRight: React.createElement(Button.Icon, { color: iconColor, ml: "auto", name: "falAngleDown" }), isFullWidth: true, px: 1, ref: ref, text: React.createElement(Button.Text, { color: textColor }, text), userSelect: "text", ...styles.button, ...readOnlyProps, ...isInvalidProps, ...rest }));
|
|
36
36
|
});
|
|
37
37
|
export default SelectButton;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ChangeEvent } from '../utils';
|
|
2
|
+
import { SelectValue } from './select.types';
|
|
2
3
|
import { UseSelectProps } from './useSelect.types';
|
|
3
4
|
/** Handles controlled/uncontrolled value state. Supports single and multiple values. */
|
|
4
5
|
export default function useSelect(props: UseSelectProps): {
|
|
5
6
|
onChange: (e: ChangeEvent) => void;
|
|
6
|
-
value:
|
|
7
|
-
valueText:
|
|
7
|
+
value: SelectValue | SelectValue[] | undefined;
|
|
8
|
+
valueText: SelectValue | undefined;
|
|
8
9
|
};
|
|
9
10
|
export declare type UseSelectReturnType = ReturnType<typeof useSelect>;
|
|
10
11
|
//# sourceMappingURL=useSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSelect.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,UAAU,CAAA;AAClE,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAQlD,wFAAwF;AACxF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE,cAAc;kBASjB,WAAW;;;EAehD;AAED,oBAAY,mBAAmB,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { toggleItem, useCallbackRef } from '../utils';
|
|
3
|
+
const getValueText = (value, options) => {
|
|
4
|
+
const option = options?.find((o) => o?.value === value);
|
|
5
|
+
return option?.text || value;
|
|
6
|
+
};
|
|
3
7
|
/** Handles controlled/uncontrolled value state. Supports single and multiple values. */
|
|
4
8
|
export default function useSelect(props) {
|
|
5
|
-
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp } = props;
|
|
9
|
+
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp, options } = props;
|
|
6
10
|
// Not using useControlled here, because we need custom value setter when uncontrolled
|
|
7
11
|
const [stateValue, setStateValue] = useState(defaultValue);
|
|
8
12
|
const isControlled = valueProp !== undefined;
|
|
@@ -10,14 +14,13 @@ export default function useSelect(props) {
|
|
|
10
14
|
/** Sends a change event to the external consumer, but internall keeps the actual value as primitive or array. */
|
|
11
15
|
const onChange = useCallbackRef((e) => {
|
|
12
16
|
onChangeProp?.(e);
|
|
13
|
-
if (!isControlled)
|
|
17
|
+
if (!isControlled)
|
|
14
18
|
setStateValue(value => (Array.isArray(value) ? toggleItem(value, e.target.value).sort() : e.target.value));
|
|
15
|
-
}
|
|
16
19
|
});
|
|
17
20
|
const valueText = isMultiple && Array.isArray(value)
|
|
18
21
|
? value[0]
|
|
19
|
-
? `${value[0]}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
22
|
+
? `${getValueText(value[0], options)}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
20
23
|
: undefined
|
|
21
|
-
: value;
|
|
24
|
+
: getValueText(value, options);
|
|
22
25
|
return { onChange, value, valueText };
|
|
23
26
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeEvent } from '../utils';
|
|
2
|
-
import { SelectValue } from './select.types';
|
|
2
|
+
import { SelectOptionData, SelectValue } from './select.types';
|
|
3
3
|
export declare type UseSelectProps = {
|
|
4
4
|
/** Currently selected value in controlled mode. */
|
|
5
5
|
value?: SelectValue | SelectValue[];
|
|
@@ -7,6 +7,8 @@ export declare type UseSelectProps = {
|
|
|
7
7
|
defaultValue?: SelectValue | SelectValue[];
|
|
8
8
|
/** Allows choosing multiple values. Popover won't close automatically on item click. */
|
|
9
9
|
isMultiple?: boolean;
|
|
10
|
+
/** List of all available options */
|
|
11
|
+
options: SelectOptionData[];
|
|
10
12
|
/**
|
|
11
13
|
* Callback triggered when an option is selected.
|
|
12
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.types.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSelect.types.d.ts","sourceRoot":"","sources":["../../../src/select/useSelect.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9D,oBAAY,cAAc,GAAG;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACnC,mDAAmD;IACnD,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oCAAoC;IACpC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;CACpC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veracity/vui",
|
|
3
|
-
"version": "1.3.0",
|
|
3
|
+
"version": "1.3.1-rc.0",
|
|
4
4
|
"description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -25,7 +25,7 @@ export type CheckboxProps = SystemProps &
|
|
|
25
25
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null
|
|
26
26
|
/** Displays the checkbox as indeterminate. */
|
|
27
27
|
isIndeterminate?: boolean
|
|
28
|
-
/** Socket
|
|
28
|
+
/** Socket for the text next to the checkbox. */
|
|
29
29
|
label?: string
|
|
30
30
|
/** Passed to the inner input. */
|
|
31
31
|
name?: string
|
|
@@ -23,7 +23,7 @@ export function HeaderAccount(props: HeaderAccountProps) {
|
|
|
23
23
|
|
|
24
24
|
const contentScreenProps = isMobile
|
|
25
25
|
? { h: `calc(100vh - ${headerHeight}px)`, left: 0, position: 'fixed', top: headerHeight, w: '100vw' }
|
|
26
|
-
: { maxH: 360, py: 1,
|
|
26
|
+
: { maxH: 360, py: 1, minW: 320, w: 'auto' }
|
|
27
27
|
|
|
28
28
|
const name = isObject<HeaderAccountUserInfoData>(userInfo) ? userInfo.displayName : ''
|
|
29
29
|
|
package/src/radio/radio.tsx
CHANGED
|
@@ -116,7 +116,14 @@ export const Radio = vui<'span', RadioProps>((props, ref) => {
|
|
|
116
116
|
{...aliasedProps}
|
|
117
117
|
{...rest}
|
|
118
118
|
>
|
|
119
|
-
<RadioControl
|
|
119
|
+
<RadioControl
|
|
120
|
+
bg="white"
|
|
121
|
+
className="vui-radioControl"
|
|
122
|
+
color={color}
|
|
123
|
+
focusWithinRing={3}
|
|
124
|
+
mr={controlMr}
|
|
125
|
+
{...controlStyles}
|
|
126
|
+
>
|
|
120
127
|
<RadioInput
|
|
121
128
|
className="vui-radioInput"
|
|
122
129
|
onChange={handleOnChange}
|
package/src/radio/radio.types.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type RadioProps = SystemProps &
|
|
|
21
21
|
inputProps?: HTMLAttributes<HTMLInputElement>
|
|
22
22
|
/** Ref passed to the inner input element. */
|
|
23
23
|
inputRef?: React.MutableRefObject<HTMLInputElement | null> | null
|
|
24
|
-
/** Socket
|
|
24
|
+
/** Socket for the text next to the item. */
|
|
25
25
|
label?: string
|
|
26
26
|
/** Passed to the inner input. */
|
|
27
27
|
name?: string
|
package/src/select/select.tsx
CHANGED
|
@@ -33,7 +33,7 @@ export function Select(props: SelectProps) {
|
|
|
33
33
|
...rest
|
|
34
34
|
} = props
|
|
35
35
|
|
|
36
|
-
const selectProps = useSelect({ defaultValue, isMultiple, onChange, value })
|
|
36
|
+
const selectProps = useSelect({ defaultValue, isMultiple, onChange, value, options })
|
|
37
37
|
|
|
38
38
|
if (__DEV__ && isMultiple && !Array.isArray(selectProps.value)) {
|
|
39
39
|
console.error('<Select /> is used with isMultiple but its value is not an array: ', value)
|
|
@@ -27,7 +27,7 @@ export type SelectProps = ThemingProps<'Select'> &
|
|
|
27
27
|
/** Name of the input. Used in custom change event to support form library integration. */
|
|
28
28
|
name?: string
|
|
29
29
|
/** Data prop to display an array of options in the popover. */
|
|
30
|
-
options
|
|
30
|
+
options: SelectOptionData[]
|
|
31
31
|
/** Displayed inside the trigger when no value is selected. */
|
|
32
32
|
placeholder?: string
|
|
33
33
|
/** Select cannot be opened and is styled accordingly. */
|
|
@@ -38,9 +38,9 @@ export type SelectOptionData = {
|
|
|
38
38
|
/** Option is displayed as disabled. */
|
|
39
39
|
disabled?: boolean
|
|
40
40
|
/** Text label of the option. */
|
|
41
|
-
text
|
|
41
|
+
text: string
|
|
42
42
|
/** Value of a given option. */
|
|
43
|
-
value
|
|
43
|
+
value: SelectValue
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export type SelectOptionProps = ListItemProps & {
|
package/src/select/useSelect.tsx
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { useState } from 'react'
|
|
2
2
|
|
|
3
3
|
import { ChangeEvent, toggleItem, useCallbackRef } from '../utils'
|
|
4
|
+
import { SelectOptionData, SelectValue } from './select.types'
|
|
4
5
|
import { UseSelectProps } from './useSelect.types'
|
|
5
6
|
|
|
7
|
+
const getValueText = (value: SelectValue, options: SelectOptionData[]) => {
|
|
8
|
+
const option = options?.find((o: SelectOptionData) => o?.value === value)
|
|
9
|
+
|
|
10
|
+
return option?.text || value
|
|
11
|
+
}
|
|
12
|
+
|
|
6
13
|
/** Handles controlled/uncontrolled value state. Supports single and multiple values. */
|
|
7
14
|
export default function useSelect(props: UseSelectProps) {
|
|
8
|
-
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp } = props
|
|
15
|
+
const { defaultValue, isMultiple, onChange: onChangeProp, value: valueProp, options } = props
|
|
9
16
|
|
|
10
17
|
// Not using useControlled here, because we need custom value setter when uncontrolled
|
|
11
18
|
const [stateValue, setStateValue] = useState(defaultValue)
|
|
@@ -16,17 +23,16 @@ export default function useSelect(props: UseSelectProps) {
|
|
|
16
23
|
const onChange = useCallbackRef((e: ChangeEvent) => {
|
|
17
24
|
onChangeProp?.(e)
|
|
18
25
|
|
|
19
|
-
if (!isControlled)
|
|
26
|
+
if (!isControlled)
|
|
20
27
|
setStateValue(value => (Array.isArray(value) ? toggleItem(value, e.target.value).sort() : e.target.value))
|
|
21
|
-
}
|
|
22
28
|
})
|
|
23
29
|
|
|
24
30
|
const valueText =
|
|
25
31
|
isMultiple && Array.isArray(value)
|
|
26
32
|
? value[0]
|
|
27
|
-
? `${value[0]}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
33
|
+
? `${getValueText(value[0], options)}${value.length > 1 ? ` (+${value.length - 1})` : ''}`
|
|
28
34
|
: undefined
|
|
29
|
-
: value
|
|
35
|
+
: getValueText(value as SelectValue, options)
|
|
30
36
|
|
|
31
37
|
return { onChange, value, valueText }
|
|
32
38
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeEvent } from '../utils'
|
|
2
|
-
import { SelectValue } from './select.types'
|
|
2
|
+
import { SelectOptionData, SelectValue } from './select.types'
|
|
3
3
|
|
|
4
4
|
export type UseSelectProps = {
|
|
5
5
|
/** Currently selected value in controlled mode. */
|
|
@@ -8,6 +8,8 @@ export type UseSelectProps = {
|
|
|
8
8
|
defaultValue?: SelectValue | SelectValue[]
|
|
9
9
|
/** Allows choosing multiple values. Popover won't close automatically on item click. */
|
|
10
10
|
isMultiple?: boolean
|
|
11
|
+
/** List of all available options */
|
|
12
|
+
options: SelectOptionData[]
|
|
11
13
|
/**
|
|
12
14
|
* Callback triggered when an option is selected.
|
|
13
15
|
*
|