@uxf/ui 1.0.0-beta.30 → 1.0.0-beta.32
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/avatar-file-input/avatar-file-input.js +15 -19
- package/checkbox/checkbox.js +3 -4
- package/combobox/combobox.d.ts +10 -16
- package/combobox/combobox.js +16 -14
- package/combobox/combobox.stories.d.ts +3 -2
- package/combobox/combobox.stories.js +21 -6
- package/dropdown/dropdown.js +1 -0
- package/icon/camera-icon.d.ts +3 -0
- package/icon/camera-icon.js +11 -0
- package/icon/chevron-down-icon.d.ts +3 -0
- package/icon/chevron-down-icon.js +11 -0
- package/icon/chevron-up-icon.d.ts +3 -0
- package/icon/chevron-up-icon.js +11 -0
- package/icon/icon.stories.js +3 -5
- package/icon/index.d.ts +4 -0
- package/icon/index.js +9 -1
- package/icon/pin-icon.d.ts +3 -0
- package/icon/pin-icon.js +11 -0
- package/package.json +1 -1
- package/radio/radio.js +1 -0
- package/radio-group/radio-group.js +1 -0
- package/raster-image/raster-image.js +1 -0
- package/select/select.d.ts +11 -18
- package/select/select.js +18 -25
- package/select/select.stories.d.ts +3 -2
- package/select/select.stories.js +23 -4
- package/textarea/textarea.js +1 -0
|
@@ -31,15 +31,11 @@ const react_1 = __importStar(require("react"));
|
|
|
31
31
|
const forwardRef_1 = require("../utils/forwardRef");
|
|
32
32
|
const error_message_1 = require("../error-message");
|
|
33
33
|
const raster_image_1 = require("../raster-image");
|
|
34
|
-
|
|
35
|
-
return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", style: { height: "36px" } },
|
|
36
|
-
react_1.default.createElement("path", { d: "M144 288C144 226.1 194.1 176 256 176C317.9 176 368 226.1 368 288C368 349.9 317.9 400 256 400C194.1 400 144 349.9 144 288zM256 224C220.7 224 192 252.7 192 288C192 323.3 220.7 352 256 352C291.3 352 320 323.3 320 288C320 252.7 291.3 224 256 224zM362.9 64.82L373.3 96H448C483.3 96 512 124.7 512 160V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V160C0 124.7 28.65 96 64 96H138.7L149.1 64.82C155.6 45.22 173.9 32 194.6 32H317.4C338.1 32 356.4 45.22 362.9 64.82H362.9zM64 144C55.16 144 48 151.2 48 160V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V160C464 151.2 456.8 144 448 144H338.7L317.4 80H194.6L173.3 144H64z" })));
|
|
37
|
-
}
|
|
34
|
+
const icon_1 = require("../icon");
|
|
38
35
|
function AvatarFileInput(props, ref) {
|
|
39
|
-
const { className, disabled, error, form, id, invalid, label, name, onBlur, onChange, onFocus, onUploadError, readOnly, required, style, uploadHandler, value, } = props;
|
|
40
36
|
const innerRef = (0, react_1.useRef)(null);
|
|
41
|
-
const input = (0, useInputFocus_1.useInputFocus)(innerRef, onBlur, onFocus);
|
|
42
|
-
const errorId = invalid && id ? `${id}--errormessage` : undefined;
|
|
37
|
+
const input = (0, useInputFocus_1.useInputFocus)(innerRef, props.onBlur, props.onFocus);
|
|
38
|
+
const errorId = props.invalid && props.id ? `${props.id}--errormessage` : undefined;
|
|
43
39
|
const [uploading, setUploading] = (0, react_1.useState)(false);
|
|
44
40
|
const _onChange = (0, react_1.useCallback)(async (e) => {
|
|
45
41
|
var _a;
|
|
@@ -49,25 +45,25 @@ function AvatarFileInput(props, ref) {
|
|
|
49
45
|
const file = files[0];
|
|
50
46
|
try {
|
|
51
47
|
setUploading(true);
|
|
52
|
-
const response = await uploadHandler(file);
|
|
53
|
-
await onChange(response);
|
|
48
|
+
const response = await props.uploadHandler(file);
|
|
49
|
+
await props.onChange(response);
|
|
54
50
|
}
|
|
55
51
|
catch (err) {
|
|
56
|
-
onUploadError(err);
|
|
52
|
+
props.onUploadError(err);
|
|
57
53
|
}
|
|
58
54
|
finally {
|
|
59
55
|
setUploading(false);
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
|
-
}, [
|
|
63
|
-
return (react_1.default.createElement("div", { className: `_form-field ${className || ""}`, style: style },
|
|
64
|
-
react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-avatar-file-input", input.focused && classes_1.CLASSES.IS_FOCUSED, disabled && classes_1.CLASSES.IS_DISABLED, readOnly && classes_1.CLASSES.IS_READONLY, invalid && classes_1.CLASSES.IS_INVALID, value && "is-disabled:opacity-50") },
|
|
65
|
-
react_1.default.createElement("label", { className: "sr-only", htmlFor: id }, label),
|
|
58
|
+
}, [props]);
|
|
59
|
+
return (react_1.default.createElement("div", { className: `_form-field ${props.className || ""}`, style: props.style },
|
|
60
|
+
react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-avatar-file-input", input.focused && classes_1.CLASSES.IS_FOCUSED, props.disabled && classes_1.CLASSES.IS_DISABLED, props.readOnly && classes_1.CLASSES.IS_READONLY, props.invalid && classes_1.CLASSES.IS_INVALID, props.value && "is-disabled:opacity-50") },
|
|
61
|
+
react_1.default.createElement("label", { className: "sr-only", htmlFor: props.id }, props.label),
|
|
66
62
|
react_1.default.createElement("div", { className: "rounded-inherit relative flex h-full w-full flex-col items-center justify-center" },
|
|
67
|
-
react_1.default.createElement(CameraIcon,
|
|
68
|
-
react_1.default.createElement("p", { className: "mt-1 text-xs" }, uploading ? "nahrávám..." : value ? "změnit foto" : "přidat foto")),
|
|
69
|
-
!!value && (react_1.default.createElement(raster_image_1.RasterImage, { alt: "", className: (0, cx_1.cx)("rounded-inherit absolute left-0 top-0 block h-full w-full object-cover", uploading && "opacity-0"), height: 96, src: value, width: 96 })),
|
|
70
|
-
react_1.default.createElement("input", { accept: "image/*", "aria-describedby": errorId, "aria-invalid": invalid, className: "input-reset rounded-inherit absolute left-0 top-0 h-full w-full cursor-pointer opacity-0", disabled: disabled, form: form, id: id, name: name, onBlur: input.onBlur, onChange: _onChange, onFocus: input.onFocus, readOnly: readOnly, ref: (0, composeRefs_1.composeRefs)(innerRef, ref), required: required, tabIndex: readOnly ? -1 : undefined, type: "file" })),
|
|
71
|
-
invalid && error && react_1.default.createElement(error_message_1.ErrorMessage, { id: errorId }, error)));
|
|
63
|
+
react_1.default.createElement(icon_1.Icon, { Component: icon_1.CameraIcon, size: 36, className: "text-gray-800" }),
|
|
64
|
+
react_1.default.createElement("p", { className: "mt-1 text-xs text-gray-800" }, uploading ? "nahrávám..." : props.value ? "změnit foto" : "přidat foto")),
|
|
65
|
+
!!props.value && (react_1.default.createElement(raster_image_1.RasterImage, { alt: "", className: (0, cx_1.cx)("rounded-inherit absolute left-0 top-0 block h-full w-full object-cover", uploading && "opacity-0"), height: 96, src: props.value, width: 96 })),
|
|
66
|
+
react_1.default.createElement("input", { accept: "image/*", "aria-describedby": errorId, "aria-invalid": props.invalid, className: "input-reset rounded-inherit absolute left-0 top-0 h-full w-full cursor-pointer opacity-0", disabled: props.disabled, form: props.form, id: props.id, name: props.name, onBlur: input.onBlur, onChange: _onChange, onFocus: input.onFocus, readOnly: props.readOnly, ref: (0, composeRefs_1.composeRefs)(innerRef, ref), required: props.required, tabIndex: props.readOnly ? -1 : undefined, type: "file" })),
|
|
67
|
+
props.invalid && props.error && react_1.default.createElement(error_message_1.ErrorMessage, { id: errorId }, props.error)));
|
|
72
68
|
}
|
|
73
69
|
exports.default = (0, forwardRef_1.forwardRef)("AvatarFileInput", AvatarFileInput);
|
package/checkbox/checkbox.js
CHANGED
|
@@ -16,9 +16,8 @@ function SquareIcon() {
|
|
|
16
16
|
react_2.default.createElement("path", { d: "M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 80H64C55.16 80 48 87.16 48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80z" })));
|
|
17
17
|
}
|
|
18
18
|
function Checkbox(props) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
react_2.default.createElement(
|
|
22
|
-
checked ? react_2.default.createElement(CheckIcon, null) : react_2.default.createElement(SquareIcon, null)));
|
|
19
|
+
return (react_2.default.createElement(react_1.Switch, { checked: props.checked, className: (0, cx_1.cx)(props.checked && classes_1.CLASSES.IS_SELECTED, props.disabled && classes_1.CLASSES.IS_DISABLED, "uxf-checkbox", props.className), disabled: props.disabled, onChange: props.onChange, style: props.style },
|
|
20
|
+
react_2.default.createElement("span", { className: "sr-only" }, props.label),
|
|
21
|
+
props.checked ? react_2.default.createElement(CheckIcon, null) : react_2.default.createElement(SquareIcon, null)));
|
|
23
22
|
}
|
|
24
23
|
exports.default = Checkbox;
|
package/combobox/combobox.d.ts
CHANGED
|
@@ -1,27 +1,21 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { FormControlProps } from "../types";
|
|
3
|
+
export declare type ComboboxValue = number | string;
|
|
3
4
|
export declare type ComboboxOption<T = ComboboxValue> = {
|
|
4
|
-
key?: number | string;
|
|
5
5
|
id: T;
|
|
6
6
|
label: string;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
};
|
|
9
|
-
export interface ComboboxProps<
|
|
10
|
-
className?: string;
|
|
11
|
-
disabled?: boolean;
|
|
12
|
-
error?: string;
|
|
13
|
-
invalid?: boolean;
|
|
14
|
-
onChange: (value: O | null) => void;
|
|
15
|
-
onBlur?: FocusEventHandler<HTMLDivElement>;
|
|
16
|
-
onFocus?: FocusEventHandler<HTMLDivElement>;
|
|
17
|
-
name: string;
|
|
9
|
+
export interface ComboboxProps<Value = ComboboxValue, Option = ComboboxOption<Value>> extends FormControlProps<Value | null> {
|
|
18
10
|
id: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
helperText?: ReactNode;
|
|
19
13
|
label: string;
|
|
20
14
|
placeholder?: string;
|
|
21
|
-
options:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
options: Option[];
|
|
16
|
+
error?: string;
|
|
17
|
+
keyExtractor?: (option: Option) => string | number;
|
|
18
|
+
renderOption?: (option: Option) => ReactNode;
|
|
25
19
|
}
|
|
26
20
|
declare const _default: React.ForwardRefExoticComponent<ComboboxProps<ComboboxValue, ComboboxOption<ComboboxValue>> & React.RefAttributes<HTMLDivElement>>;
|
|
27
21
|
export default _default;
|
package/combobox/combobox.js
CHANGED
|
@@ -24,33 +24,35 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
const react_1 = require("@headlessui/react");
|
|
27
|
-
const dropdown_1 = require("../dropdown");
|
|
28
27
|
const use_dropdown_1 = require("../hooks/use-dropdown");
|
|
29
28
|
const classes_1 = require("@uxf/core/constants/classes");
|
|
30
29
|
const useInputFocus_1 = require("@uxf/core/hooks/useInputFocus");
|
|
31
30
|
const composeRefs_1 = require("@uxf/core/utils/composeRefs");
|
|
32
31
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
33
32
|
const react_2 = __importStar(require("react"));
|
|
34
|
-
const error_message_1 = require("../error-message");
|
|
35
33
|
const label_1 = require("../label");
|
|
36
34
|
const forwardRef_1 = require("@uxf/ui/utils/forwardRef");
|
|
35
|
+
const icon_1 = require("../icon");
|
|
37
36
|
function Combobox(props, ref) {
|
|
38
|
-
const { className, disabled, error, id, invalid, label, onBlur, onChange, onFocus, options, placeholder, readOnly, value, } = props;
|
|
39
37
|
const [query, setQuery] = (0, react_2.useState)("");
|
|
40
|
-
const selectedOption = options.find((option) => option.id === value);
|
|
38
|
+
const selectedOption = props.options.find((option) => option.id === props.value);
|
|
41
39
|
const filteredData = query === ""
|
|
42
|
-
? options
|
|
43
|
-
: options.filter((item) => String(item.label).toLowerCase().includes(query.toLowerCase()));
|
|
40
|
+
? props.options
|
|
41
|
+
: props.options.filter((item) => String(item.label).toLowerCase().includes(query.toLowerCase()));
|
|
44
42
|
const innerRef = (0, react_2.useRef)(null);
|
|
45
|
-
const
|
|
46
|
-
const errorId = invalid ? `${id}--errormessage` : undefined;
|
|
47
|
-
const input = (0, useInputFocus_1.useInputFocus)(innerRef, onBlur, onFocus);
|
|
43
|
+
const input = (0, useInputFocus_1.useInputFocus)(innerRef, props.onBlur, props.onFocus);
|
|
48
44
|
const dropdown = (0, use_dropdown_1.useDropdown)("bottom", true);
|
|
49
45
|
const stableRef = (0, react_2.useMemo)(() => (0, composeRefs_1.composeRefs)(innerRef, ref, dropdown.reference), [ref, dropdown.reference]);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
react_2.default.createElement(react_1.Combobox.
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
const errorId = props.isInvalid ? `${props.id}--error-message` : undefined;
|
|
47
|
+
return (react_2.default.createElement(react_1.Combobox, { as: "div", className: (0, cx_1.cx)("uxf-combobox", props.isInvalid && classes_1.CLASSES.IS_INVALID, props.isRequired && "is-required", props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.className), onChange: (v) => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, v.id); }, value: selectedOption, disabled: props.isDisabled || props.isReadOnly }, (renderProps) => (react_2.default.createElement(react_2.default.Fragment, null,
|
|
48
|
+
react_2.default.createElement(react_1.Combobox.Label, { as: label_1.Label, onClick: props.isDisabled || props.isReadOnly ? undefined : input.focus }, props.label),
|
|
49
|
+
react_2.default.createElement(react_1.Combobox.Button, { as: "div", className: (0, cx_1.cx)("uxf-combobox__button", (renderProps.open || input.focused) && classes_1.CLASSES.IS_FOCUSED, renderProps.disabled && classes_1.CLASSES.IS_DISABLED, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isInvalid && classes_1.CLASSES.IS_INVALID), onBlur: input.onBlur, onFocus: input.onFocus, tabIndex: props.isDisabled || props.isReadOnly ? undefined : 0, ref: stableRef, "aria-invalid": props.isInvalid, "aria-describedby": errorId },
|
|
50
|
+
react_2.default.createElement(react_1.Combobox.Input, { className: (0, cx_1.cx)("uxf-combobox__input"), displayValue: (item) => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : ""; }, onBlur: props.onBlur, onChange: (event) => setQuery(event.target.value), placeholder: props.placeholder, ref: stableRef, type: "text" }),
|
|
51
|
+
renderProps.open ? (react_2.default.createElement(icon_1.Icon, { Component: icon_1.ChevronUpIcon, size: 12 })) : (react_2.default.createElement(icon_1.Icon, { Component: icon_1.ChevronDownIcon, size: 12 }))),
|
|
52
|
+
react_2.default.createElement(react_1.Combobox.Options, { className: "uxf-dropdown", ref: dropdown.floating, style: dropdown.style }, filteredData.map((option) => {
|
|
53
|
+
var _a, _b, _c, _d;
|
|
54
|
+
return (react_2.default.createElement(react_1.Combobox.Option, { key: (_b = (_a = props.keyExtractor) === null || _a === void 0 ? void 0 : _a.call(props, option)) !== null && _b !== void 0 ? _b : option.id, value: option, className: (optionState) => (0, cx_1.cx)("uxf-dropdown__item", optionState.active && classes_1.CLASSES.IS_ACTIVE, optionState.disabled && classes_1.CLASSES.IS_DISABLED, optionState.selected && classes_1.CLASSES.IS_SELECTED) }, (_d = (_c = props.renderOption) === null || _c === void 0 ? void 0 : _c.call(props, option)) !== null && _d !== void 0 ? _d : option.label));
|
|
55
|
+
})),
|
|
56
|
+
react_2.default.createElement("div", { className: "uxf-combobox__helper-text" }, props.isInvalid && props.error ? props.error : props.helperText)))));
|
|
55
57
|
}
|
|
56
58
|
exports.default = (0, forwardRef_1.forwardRef)("Combobox", Combobox);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComboboxValue } from "./combobox";
|
|
2
2
|
import React from "react";
|
|
3
3
|
declare const _default: {
|
|
4
4
|
title: string;
|
|
5
|
-
component: React.ForwardRefExoticComponent<import("./combobox").ComboboxProps<
|
|
5
|
+
component: React.ForwardRefExoticComponent<import("./combobox").ComboboxProps<ComboboxValue, import("./combobox").ComboboxOption<ComboboxValue>> & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
};
|
|
7
7
|
export default _default;
|
|
8
8
|
export declare function Default(): JSX.Element;
|
|
9
|
+
export declare function ComponentStructure(): JSX.Element;
|
|
@@ -22,27 +22,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Default = void 0;
|
|
29
|
+
exports.ComponentStructure = exports.Default = void 0;
|
|
27
30
|
const react_1 = __importStar(require("react"));
|
|
28
31
|
const index_1 = require("./index");
|
|
32
|
+
const component_structure_analyzer_1 = __importDefault(require("../utils/component-structure-analyzer"));
|
|
29
33
|
exports.default = {
|
|
30
34
|
title: "UI/Combobox",
|
|
31
35
|
component: index_1.Combobox,
|
|
32
36
|
};
|
|
33
37
|
const options = [
|
|
34
38
|
{ id: "one", label: "Option one" },
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
{ id: "two", label: "Option two" },
|
|
40
|
+
{ id: "three", label: "Option three" },
|
|
37
41
|
];
|
|
38
42
|
function Default() {
|
|
39
43
|
const [value, setValue] = (0, react_1.useState)();
|
|
40
44
|
const handleChange = (v) => {
|
|
41
45
|
// eslint-disable-next-line no-console
|
|
42
46
|
console.log("Select value: ", v);
|
|
43
|
-
setValue(v
|
|
47
|
+
setValue(v);
|
|
44
48
|
};
|
|
45
|
-
return (react_1.default.createElement("div", { className: "space-y-
|
|
46
|
-
react_1.default.createElement(index_1.Combobox, { id: "combobox-1", name: "combobox", label: "
|
|
49
|
+
return (react_1.default.createElement("div", { className: "space-y-8" },
|
|
50
|
+
react_1.default.createElement(index_1.Combobox, { id: "combobox-1", name: "combobox", label: "Combobox", options: options, onChange: handleChange, value: value }),
|
|
51
|
+
react_1.default.createElement(index_1.Combobox, { id: "combobox-1", name: "combobox", label: "Combobox with helper text", options: options, onChange: handleChange, value: value, helperText: "Start typing to see options..." }),
|
|
52
|
+
react_1.default.createElement(index_1.Combobox, { id: "combobox-1", name: "combobox", label: "Combobox invalid", options: options, onChange: handleChange, value: value, helperText: "Start typing to see options...", isInvalid: true, isRequired: true, error: "Error message" })));
|
|
47
53
|
}
|
|
48
54
|
exports.Default = Default;
|
|
55
|
+
function ComponentStructure() {
|
|
56
|
+
const [value, setValue] = (0, react_1.useState)(null);
|
|
57
|
+
const handleChange = (v) => {
|
|
58
|
+
setValue(v);
|
|
59
|
+
};
|
|
60
|
+
return (react_1.default.createElement(component_structure_analyzer_1.default, null,
|
|
61
|
+
react_1.default.createElement(index_1.Combobox, { id: "combobox-structure", name: "combobox", label: "Combobox with helper text", options: options, onChange: handleChange, value: value, helperText: "Start typing to see options..." })));
|
|
62
|
+
}
|
|
63
|
+
exports.ComponentStructure = ComponentStructure;
|
package/dropdown/dropdown.js
CHANGED
|
@@ -9,6 +9,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
9
9
|
const forwardRef_1 = require("@uxf/ui/utils/forwardRef");
|
|
10
10
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
11
11
|
function Item(props, ref) {
|
|
12
|
+
// eslint-disable-next-line react/destructuring-assignment
|
|
12
13
|
const { children, className, ...restProps } = props;
|
|
13
14
|
const anchorProps = (0, useAnchorProps_1.useAnchorProps)({
|
|
14
15
|
className: `uxf-dropdown-item ${className || ""}`,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
function CameraIcon(props) {
|
|
8
|
+
return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props },
|
|
9
|
+
react_1.default.createElement("path", { fill: "currentColor", d: "M144 288C144 226.1 194.1 176 256 176C317.9 176 368 226.1 368 288C368 349.9 317.9 400 256 400C194.1 400 144 349.9 144 288zM256 224C220.7 224 192 252.7 192 288C192 323.3 220.7 352 256 352C291.3 352 320 323.3 320 288C320 252.7 291.3 224 256 224zM362.9 64.82L373.3 96H448C483.3 96 512 124.7 512 160V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V160C0 124.7 28.65 96 64 96H138.7L149.1 64.82C155.6 45.22 173.9 32 194.6 32H317.4C338.1 32 356.4 45.22 362.9 64.82H362.9zM64 144C55.16 144 48 151.2 48 160V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V160C464 151.2 456.8 144 448 144H338.7L317.4 80H194.6L173.3 144H64z" })));
|
|
10
|
+
}
|
|
11
|
+
exports.default = CameraIcon;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
function ChevronDownIcon(props) {
|
|
8
|
+
return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props },
|
|
9
|
+
react_1.default.createElement("path", { fill: "currentColor", d: "M256 429.3l22.6-22.6 192-192L493.3 192 448 146.7l-22.6 22.6L256 338.7 86.6 169.4 64 146.7 18.7 192l22.6 22.6 192 192L256 429.3z" })));
|
|
10
|
+
}
|
|
11
|
+
exports.default = ChevronDownIcon;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
function ChevronUpIcon(props) {
|
|
8
|
+
return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", ...props },
|
|
9
|
+
react_1.default.createElement("path", { fill: "currentColor", d: "M256 82.7l22.6 22.6 192 192L493.3 320 448 365.3l-22.6-22.6L256 173.3 86.6 342.6 64 365.3 18.7 320l22.6-22.6 192-192L256 82.7z" })));
|
|
10
|
+
}
|
|
11
|
+
exports.default = ChevronUpIcon;
|
package/icon/icon.stories.js
CHANGED
|
@@ -10,8 +10,6 @@ exports.default = {
|
|
|
10
10
|
title: "UI/Icon",
|
|
11
11
|
component: index_1.Icon,
|
|
12
12
|
};
|
|
13
|
-
const CameraIcon = (props) => (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 29.65 40", ...props },
|
|
14
|
-
react_1.default.createElement("path", { fill: "currentColor", fillRule: "evenodd", d: "M0 14.83C0 6.61 6.61 0 14.83 0c8.11 0 14.83 6.61 14.83 14.83 0 8.64-8.85 19.41-14.83 25.17C8.75 34.24 0 23.47 0 14.83zm9.28 0c0-3.09 2.45-5.55 5.55-5.55 2.99 0 5.44 2.45 5.44 5.55 0 2.99-2.45 5.44-5.44 5.44-3.1 0-5.55-2.46-5.55-5.44z", clipRule: "evenodd" })));
|
|
15
13
|
function Default() {
|
|
16
14
|
return (react_1.default.createElement("div", { className: "space-y-2" },
|
|
17
15
|
react_1.default.createElement("div", { className: "mb-2 text-sm" },
|
|
@@ -22,7 +20,7 @@ function Default() {
|
|
|
22
20
|
react_1.default.createElement("span", { className: "font-semibold" }, "Red"),
|
|
23
21
|
", Size: ",
|
|
24
22
|
react_1.default.createElement("span", { className: "font-semibold" }, "16")),
|
|
25
|
-
react_1.default.createElement(index_1.Icon, { Component:
|
|
23
|
+
react_1.default.createElement(index_1.Icon, { Component: index_1.PinIcon, size: 16, className: "text-red-600" }),
|
|
26
24
|
react_1.default.createElement("div", { className: "mb-2 text-sm" },
|
|
27
25
|
"Type: ",
|
|
28
26
|
react_1.default.createElement("span", { className: "font-semibold" }, "Custom component"),
|
|
@@ -31,7 +29,7 @@ function Default() {
|
|
|
31
29
|
react_1.default.createElement("span", { className: "font-semibold" }, "Blue"),
|
|
32
30
|
", Size: ",
|
|
33
31
|
react_1.default.createElement("span", { className: "font-semibold" }, "24")),
|
|
34
|
-
react_1.default.createElement(index_1.Icon, { Component:
|
|
32
|
+
react_1.default.createElement(index_1.Icon, { Component: index_1.PinIcon, size: 24, className: "text-blue-600" }),
|
|
35
33
|
react_1.default.createElement("div", { className: "mb-2 text-sm" },
|
|
36
34
|
"Type: ",
|
|
37
35
|
react_1.default.createElement("span", { className: "font-semibold" }, "Custom component"),
|
|
@@ -40,7 +38,7 @@ function Default() {
|
|
|
40
38
|
react_1.default.createElement("span", { className: "font-semibold" }, "Green"),
|
|
41
39
|
", Size: ",
|
|
42
40
|
react_1.default.createElement("span", { className: "font-semibold" }, "48")),
|
|
43
|
-
react_1.default.createElement(index_1.Icon, { Component:
|
|
41
|
+
react_1.default.createElement(index_1.Icon, { Component: index_1.PinIcon, size: 48, className: "text-green-600" }),
|
|
44
42
|
react_1.default.createElement("div", { className: "mb-2 text-sm" },
|
|
45
43
|
"Type: ",
|
|
46
44
|
react_1.default.createElement("span", { className: "font-semibold" }, "SVG sprite"),
|
package/icon/index.d.ts
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
1
|
export { default as Icon } from "./icon";
|
|
2
|
+
export { default as PinIcon } from "./pin-icon";
|
|
3
|
+
export { default as ChevronDownIcon } from "./chevron-down-icon";
|
|
4
|
+
export { default as ChevronUpIcon } from "./chevron-up-icon";
|
|
5
|
+
export { default as CameraIcon } from "./camera-icon";
|
package/icon/index.js
CHANGED
|
@@ -3,6 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Icon = void 0;
|
|
6
|
+
exports.CameraIcon = exports.ChevronUpIcon = exports.ChevronDownIcon = exports.PinIcon = exports.Icon = void 0;
|
|
7
7
|
var icon_1 = require("./icon");
|
|
8
8
|
Object.defineProperty(exports, "Icon", { enumerable: true, get: function () { return __importDefault(icon_1).default; } });
|
|
9
|
+
var pin_icon_1 = require("./pin-icon");
|
|
10
|
+
Object.defineProperty(exports, "PinIcon", { enumerable: true, get: function () { return __importDefault(pin_icon_1).default; } });
|
|
11
|
+
var chevron_down_icon_1 = require("./chevron-down-icon");
|
|
12
|
+
Object.defineProperty(exports, "ChevronDownIcon", { enumerable: true, get: function () { return __importDefault(chevron_down_icon_1).default; } });
|
|
13
|
+
var chevron_up_icon_1 = require("./chevron-up-icon");
|
|
14
|
+
Object.defineProperty(exports, "ChevronUpIcon", { enumerable: true, get: function () { return __importDefault(chevron_up_icon_1).default; } });
|
|
15
|
+
var camera_icon_1 = require("./camera-icon");
|
|
16
|
+
Object.defineProperty(exports, "CameraIcon", { enumerable: true, get: function () { return __importDefault(camera_icon_1).default; } });
|
package/icon/pin-icon.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
function PinIcon(props) {
|
|
8
|
+
return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 29.65 40", ...props },
|
|
9
|
+
react_1.default.createElement("path", { fill: "currentColor", fillRule: "evenodd", d: "M0 14.83C0 6.61 6.61 0 14.83 0c8.11 0 14.83 6.61 14.83 14.83 0 8.64-8.85 19.41-14.83 25.17C8.75 34.24 0 23.47 0 14.83zm9.28 0c0-3.09 2.45-5.55 5.55-5.55 2.99 0 5.44 2.45 5.44 5.55 0 2.99-2.45 5.44-5.44 5.44-3.1 0-5.55-2.46-5.55-5.44z", clipRule: "evenodd" })));
|
|
10
|
+
}
|
|
11
|
+
exports.default = PinIcon;
|
package/package.json
CHANGED
package/radio/radio.js
CHANGED
|
@@ -8,6 +8,7 @@ const cx_1 = require("@uxf/core/utils/cx");
|
|
|
8
8
|
const react_1 = __importDefault(require("react"));
|
|
9
9
|
const forwardRef_1 = require("../utils/forwardRef");
|
|
10
10
|
function Radio(props, ref) {
|
|
11
|
+
// eslint-disable-next-line react/destructuring-assignment
|
|
11
12
|
const { active, checked, className, disabled, invalid, label, ...restProps } = props;
|
|
12
13
|
return (react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-radio__control", active && classes_1.CLASSES.IS_FOCUSED, checked && classes_1.CLASSES.IS_SELECTED, disabled && classes_1.CLASSES.IS_DISABLED, invalid && classes_1.CLASSES.IS_INVALID, className), ref: ref, ...restProps },
|
|
13
14
|
react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-radio", active && classes_1.CLASSES.IS_FOCUSED, checked && classes_1.CLASSES.IS_SELECTED, disabled && classes_1.CLASSES.IS_DISABLED, invalid && classes_1.CLASSES.IS_INVALID) },
|
|
@@ -32,6 +32,7 @@ const radio_1 = require("../radio");
|
|
|
32
32
|
const error_message_1 = require("../error-message");
|
|
33
33
|
const use_input_submit_1 = require("../hooks/use-input-submit");
|
|
34
34
|
function RadioGroup(props, ref) {
|
|
35
|
+
// eslint-disable-next-line react/destructuring-assignment
|
|
35
36
|
const { className, disabled, error, forceColumn, hiddenLabel, id, invalid, label, onBlur, onChange, onFocus, options, style, value, } = props;
|
|
36
37
|
const innerRef = (0, react_1.useRef)(null);
|
|
37
38
|
(0, use_input_submit_1.useInputSubmit)(innerRef, "radio-group", disabled);
|
|
@@ -9,6 +9,7 @@ const image_1 = require("../utils/image");
|
|
|
9
9
|
const resizer_1 = require("@uxf/core/utils/resizer");
|
|
10
10
|
function RasterImage(props) {
|
|
11
11
|
var _a, _b;
|
|
12
|
+
// eslint-disable-next-line react/destructuring-assignment
|
|
12
13
|
const { alt, className, height, imgClassName, loading = "lazy", mode = "responsive", src, width, ...restProps } = props;
|
|
13
14
|
const Element = src ? "picture" : "div";
|
|
14
15
|
return (react_1.default.createElement(Element, { className: `uxf-raster-image ${className || ""}` }, src ? (react_1.default.createElement(react_1.default.Fragment, null,
|
package/select/select.d.ts
CHANGED
|
@@ -1,27 +1,20 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { FormControlProps } from "../types";
|
|
2
3
|
export declare type SelectValue = number | string;
|
|
3
4
|
export declare type SelectOption<T = SelectValue> = {
|
|
4
|
-
key?: number | string;
|
|
5
5
|
id: T;
|
|
6
|
-
label:
|
|
6
|
+
label: ReactNode;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
};
|
|
9
|
-
export interface SelectProps<
|
|
9
|
+
export interface SelectProps<Value = SelectValue, Option = SelectOption<Value>> extends FormControlProps<Value | null> {
|
|
10
|
+
id?: string;
|
|
10
11
|
className?: string;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
name: string;
|
|
18
|
-
id: string;
|
|
19
|
-
label: string;
|
|
20
|
-
placeholder?: string;
|
|
21
|
-
options: O[];
|
|
22
|
-
readOnly?: boolean;
|
|
23
|
-
required?: boolean;
|
|
24
|
-
value?: V;
|
|
12
|
+
helperText?: ReactNode;
|
|
13
|
+
label?: ReactNode;
|
|
14
|
+
placeholder?: ReactNode;
|
|
15
|
+
options: Option[];
|
|
16
|
+
keyExtractor?: (option: Option) => string | number;
|
|
17
|
+
renderOption?: (option: Option) => ReactNode;
|
|
25
18
|
}
|
|
26
19
|
declare const _default: React.ForwardRefExoticComponent<SelectProps<SelectValue, SelectOption<SelectValue>> & React.RefAttributes<HTMLDivElement>>;
|
|
27
20
|
export default _default;
|
package/select/select.js
CHANGED
|
@@ -24,42 +24,35 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
const react_1 = require("@headlessui/react");
|
|
27
|
-
const dropdown_1 = require("../dropdown");
|
|
28
27
|
const use_dropdown_1 = require("../hooks/use-dropdown");
|
|
29
28
|
const classes_1 = require("@uxf/core/constants/classes");
|
|
30
29
|
const useInputFocus_1 = require("@uxf/core/hooks/useInputFocus");
|
|
31
30
|
const composeRefs_1 = require("@uxf/core/utils/composeRefs");
|
|
32
31
|
const cx_1 = require("@uxf/core/utils/cx");
|
|
33
32
|
const react_2 = __importStar(require("react"));
|
|
34
|
-
const error_message_1 = require("../error-message");
|
|
35
33
|
const label_1 = require("../label");
|
|
36
34
|
const forwardRef_1 = require("@uxf/ui/utils/forwardRef");
|
|
37
|
-
|
|
38
|
-
return (react_2.default.createElement("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fass", "data-icon": "chevron-down", className: "svg-inline--fa fa-chevron-down ", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", style: { height: "1em" } },
|
|
39
|
-
react_2.default.createElement("path", { fill: "currentColor", d: "M256 429.3l22.6-22.6 192-192L493.3 192 448 146.7l-22.6 22.6L256 338.7 86.6 169.4 64 146.7 18.7 192l22.6 22.6 192 192L256 429.3z" })));
|
|
40
|
-
}
|
|
41
|
-
function ChevronUp() {
|
|
42
|
-
return (react_2.default.createElement("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fass", "data-icon": "chevron-up", className: "svg-inline--fa fa-chevron-up ", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", style: { height: "1em" } },
|
|
43
|
-
react_2.default.createElement("path", { fill: "currentColor", d: "M256 82.7l22.6 22.6 192 192L493.3 320 448 365.3l-22.6-22.6L256 173.3 86.6 342.6 64 365.3 18.7 320l22.6-22.6 192-192L256 82.7z" })));
|
|
44
|
-
}
|
|
35
|
+
const icon_1 = require("../icon");
|
|
45
36
|
function Select(props, ref) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const
|
|
37
|
+
var _a;
|
|
38
|
+
const generatedId = (0, react_2.useId)();
|
|
39
|
+
const id = (_a = props.id) !== null && _a !== void 0 ? _a : generatedId;
|
|
40
|
+
const selectedOption = props.options.find((option) => option.id === props.value);
|
|
49
41
|
const innerRef = (0, react_2.useRef)(null);
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const input = (0, useInputFocus_1.useInputFocus)(innerRef, onBlur, onFocus);
|
|
42
|
+
const errorId = props.isInvalid ? `${id}--error-message` : undefined;
|
|
43
|
+
const input = (0, useInputFocus_1.useInputFocus)(innerRef, props.onBlur, props.onFocus);
|
|
53
44
|
const dropdown = (0, use_dropdown_1.useDropdown)("bottom", true);
|
|
54
45
|
const stableRef = (0, react_2.useMemo)(() => (0, composeRefs_1.composeRefs)(innerRef, ref, dropdown.reference), [ref, dropdown.reference]);
|
|
55
|
-
return (react_2.default.createElement(react_1.Listbox, { as: "div", className:
|
|
56
|
-
react_2.default.createElement(react_1.Listbox.Label, { as: label_1.Label, onClick:
|
|
57
|
-
react_2.default.createElement(react_1.Listbox.Button, { as: "div", className: ""
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
return (react_2.default.createElement(react_1.Listbox, { as: "div", className: (0, cx_1.cx)("uxf-select", props.isInvalid && classes_1.CLASSES.IS_INVALID, props.isRequired && "is-required", props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.className), onChange: (v) => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, v.id); }, value: selectedOption, disabled: props.isDisabled || props.isReadOnly }, (renderProps) => (react_2.default.createElement(react_2.default.Fragment, null,
|
|
47
|
+
react_2.default.createElement(react_1.Listbox.Label, { as: label_1.Label, onClick: props.isDisabled || props.isReadOnly ? undefined : input.focus }, props.label),
|
|
48
|
+
react_2.default.createElement(react_1.Listbox.Button, { as: "div", className: (0, cx_1.cx)("uxf-select__button", (renderProps.open || input.focused) && classes_1.CLASSES.IS_FOCUSED, renderProps.disabled && classes_1.CLASSES.IS_DISABLED, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isInvalid && classes_1.CLASSES.IS_INVALID), onBlur: input.onBlur, onFocus: input.onFocus, tabIndex: props.isDisabled || props.isReadOnly ? undefined : 0, ref: stableRef, "aria-invalid": props.isInvalid, "aria-describedby": errorId },
|
|
49
|
+
react_2.default.createElement("div", { className: "uxf-select__button-text" }, (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || props.placeholder),
|
|
50
|
+
renderProps.open ? (react_2.default.createElement(icon_1.Icon, { Component: icon_1.ChevronUpIcon, size: 12 })) : (react_2.default.createElement(icon_1.Icon, { Component: icon_1.ChevronDownIcon, size: 12 })),
|
|
51
|
+
" "),
|
|
52
|
+
react_2.default.createElement("div", { className: "uxf-select__helper-text" }, props.helperText),
|
|
53
|
+
react_2.default.createElement(react_1.Listbox.Options, { ref: dropdown.floating, style: dropdown.style, className: "uxf-dropdown" }, props.options.map((option) => {
|
|
54
|
+
var _a, _b, _c, _d;
|
|
55
|
+
return (react_2.default.createElement(react_1.Listbox.Option, { key: (_b = (_a = props.keyExtractor) === null || _a === void 0 ? void 0 : _a.call(props, option)) !== null && _b !== void 0 ? _b : option.id, value: option, className: (optionState) => (0, cx_1.cx)("uxf-dropdown__item", optionState.active && classes_1.CLASSES.IS_ACTIVE, optionState.disabled && classes_1.CLASSES.IS_DISABLED, optionState.selected && classes_1.CLASSES.IS_SELECTED) }, (_d = (_c = props.renderOption) === null || _c === void 0 ? void 0 : _c.call(props, option)) !== null && _d !== void 0 ? _d : option.label));
|
|
56
|
+
}))))));
|
|
64
57
|
}
|
|
65
58
|
exports.default = (0, forwardRef_1.forwardRef)("Select", Select);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SelectValue } from "./select";
|
|
2
2
|
import React from "react";
|
|
3
3
|
declare const _default: {
|
|
4
4
|
title: string;
|
|
5
|
-
component: React.ForwardRefExoticComponent<import("./select").SelectProps<
|
|
5
|
+
component: React.ForwardRefExoticComponent<import("./select").SelectProps<SelectValue, import("./select").SelectOption<SelectValue>> & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
};
|
|
7
7
|
export default _default;
|
|
8
8
|
export declare function Default(): JSX.Element;
|
|
9
|
+
export declare function ComponentStructure(): JSX.Element;
|
package/select/select.stories.js
CHANGED
|
@@ -22,10 +22,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Default = void 0;
|
|
29
|
+
exports.ComponentStructure = exports.Default = void 0;
|
|
27
30
|
const index_1 = require("./index");
|
|
28
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
+
const component_structure_analyzer_1 = __importDefault(require("../utils/component-structure-analyzer"));
|
|
29
33
|
exports.default = {
|
|
30
34
|
title: "UI/Select",
|
|
31
35
|
component: index_1.Select,
|
|
@@ -40,9 +44,24 @@ function Default() {
|
|
|
40
44
|
const handleChange = (v) => {
|
|
41
45
|
// eslint-disable-next-line no-console
|
|
42
46
|
console.log("Select value: ", v);
|
|
43
|
-
setValue(v
|
|
47
|
+
setValue(v);
|
|
44
48
|
};
|
|
45
|
-
return (react_1.default.createElement("div", { className: "space-y-
|
|
46
|
-
react_1.default.createElement(index_1.Select, {
|
|
49
|
+
return (react_1.default.createElement("div", { className: "space-y-4" },
|
|
50
|
+
react_1.default.createElement(index_1.Select, { label: "Default select", options: options, onChange: handleChange, value: value, helperText: "Helper text" }),
|
|
51
|
+
react_1.default.createElement(index_1.Select, { label: "Invalid select", options: options, onChange: handleChange, value: value, helperText: "Helper text", isInvalid: true }),
|
|
52
|
+
react_1.default.createElement(index_1.Select, { label: "Disabled select", options: options, onChange: handleChange, value: value, helperText: "Helper text", isDisabled: true }),
|
|
53
|
+
react_1.default.createElement(index_1.Select, { label: "Read only select", options: options, onChange: handleChange, value: value, helperText: "Helper text", isReadOnly: true }),
|
|
54
|
+
react_1.default.createElement(index_1.Select, { label: "Required select", options: options, onChange: handleChange, value: value, helperText: "Helper text", isRequired: true })));
|
|
47
55
|
}
|
|
48
56
|
exports.Default = Default;
|
|
57
|
+
function ComponentStructure() {
|
|
58
|
+
const [value, setValue] = (0, react_1.useState)(null);
|
|
59
|
+
const handleChange = (v) => {
|
|
60
|
+
// eslint-disable-next-line no-console
|
|
61
|
+
console.log("Select value: ", v);
|
|
62
|
+
setValue(v);
|
|
63
|
+
};
|
|
64
|
+
return (react_1.default.createElement(component_structure_analyzer_1.default, null,
|
|
65
|
+
react_1.default.createElement(index_1.Select, { id: "select-1", name: "select", label: "Choose option...", options: options, onChange: handleChange, value: value })));
|
|
66
|
+
}
|
|
67
|
+
exports.ComponentStructure = ComponentStructure;
|
package/textarea/textarea.js
CHANGED
|
@@ -45,6 +45,7 @@ function autoHeightHandler(element, rows = 4) {
|
|
|
45
45
|
}
|
|
46
46
|
const EVENTS = ["input", "cut", "paste", "drop"];
|
|
47
47
|
function Textarea(props, ref) {
|
|
48
|
+
// eslint-disable-next-line react/destructuring-assignment
|
|
48
49
|
const { autoComplete, className, disabled, disableAutoHeight, error, form, id, invalid, label, maxLength, minLength, name, onBlur, onChange, onFocus, placeholder, readOnly, required, rows, style, value, } = props;
|
|
49
50
|
const innerRef = (0, react_1.useRef)(null);
|
|
50
51
|
const input = (0, useInputFocus_1.useInputFocus)(innerRef, onBlur, onFocus);
|