@fuf-stack/uniform 1.0.2 → 1.0.3
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/CheckboxGroup/index.cjs +7 -7
- package/dist/CheckboxGroup/index.d.cts +2 -2
- package/dist/CheckboxGroup/index.d.ts +2 -2
- package/dist/CheckboxGroup/index.js +6 -6
- package/dist/{CheckboxGroup-D45rOACY.d.cts → CheckboxGroup-B1g42iP0.d.cts} +2 -2
- package/dist/{CheckboxGroup-D45rOACY.d.ts → CheckboxGroup-B1g42iP0.d.ts} +2 -2
- package/dist/FieldArray/index.cjs +7 -7
- package/dist/FieldArray/index.d.cts +2 -2
- package/dist/FieldArray/index.d.ts +2 -2
- package/dist/FieldArray/index.js +6 -6
- package/dist/{FieldArray-DAzf9zE2.d.cts → FieldArray-DVQka7Bh.d.cts} +2 -2
- package/dist/{FieldArray-DAzf9zE2.d.ts → FieldArray-DVQka7Bh.d.ts} +2 -2
- package/dist/Form/index.cjs +5 -5
- package/dist/Form/index.d.cts +3 -3
- package/dist/Form/index.d.ts +3 -3
- package/dist/Form/index.js +4 -4
- package/dist/{Form-DX5NTR-H.d.ts → Form-C_11i6PA.d.ts} +1 -1
- package/dist/{Form-D0grgL6G.d.cts → Form-Cu0lWRDN.d.cts} +1 -1
- package/dist/{FormContext-ldCpxKnY.d.cts → FormContext-LRho0tno.d.cts} +2 -2
- package/dist/{FormContext-ldCpxKnY.d.ts → FormContext-LRho0tno.d.ts} +2 -2
- package/dist/Input/index.cjs +7 -7
- package/dist/Input/index.js +6 -6
- package/dist/RadioBoxes/index.cjs +7 -7
- package/dist/RadioBoxes/index.js +6 -6
- package/dist/RadioGroup/index.cjs +7 -7
- package/dist/RadioGroup/index.js +6 -6
- package/dist/RadioTabs/index.cjs +7 -7
- package/dist/RadioTabs/index.js +6 -6
- package/dist/Select/index.cjs +7 -7
- package/dist/Select/index.d.cts +2 -2
- package/dist/Select/index.d.ts +2 -2
- package/dist/Select/index.js +6 -6
- package/dist/{Select-CY5fJfiS.d.cts → Select-CTRWinmO.d.cts} +2 -2
- package/dist/{Select-CY5fJfiS.d.ts → Select-CTRWinmO.d.ts} +2 -2
- package/dist/SubmitButton/index.cjs +5 -5
- package/dist/SubmitButton/index.js +4 -4
- package/dist/Switch/index.cjs +7 -7
- package/dist/Switch/index.js +6 -6
- package/dist/TextArea/index.cjs +7 -7
- package/dist/TextArea/index.js +6 -6
- package/dist/{chunk-TKQYWIHG.js → chunk-3NZYJNO4.js} +3 -3
- package/dist/{chunk-TKQYWIHG.js.map → chunk-3NZYJNO4.js.map} +1 -1
- package/dist/{chunk-LJ2KHIIN.cjs → chunk-3WZBQHQM.cjs} +33 -25
- package/dist/chunk-3WZBQHQM.cjs.map +1 -0
- package/dist/{chunk-YPWUPZOU.js → chunk-5BKLAK23.js} +9 -9
- package/dist/{chunk-YPWUPZOU.js.map → chunk-5BKLAK23.js.map} +1 -1
- package/dist/{chunk-BLS46GFN.js → chunk-5GBO2FHU.js} +23 -21
- package/dist/chunk-5GBO2FHU.js.map +1 -0
- package/dist/{chunk-U5WBLGZV.js → chunk-6IU7IYYB.js} +4 -2
- package/dist/{chunk-U5WBLGZV.js.map → chunk-6IU7IYYB.js.map} +1 -1
- package/dist/{chunk-K2IHP7JJ.cjs → chunk-6NSYLHQW.cjs} +68 -45
- package/dist/chunk-6NSYLHQW.cjs.map +1 -0
- package/dist/{chunk-UTFZRBBS.js → chunk-CQWA2DFV.js} +7 -5
- package/dist/chunk-CQWA2DFV.js.map +1 -0
- package/dist/{chunk-UIBHEN65.js → chunk-CWXROORZ.js} +16 -16
- package/dist/{chunk-UIBHEN65.js.map → chunk-CWXROORZ.js.map} +1 -1
- package/dist/{chunk-PTOFJKSN.js → chunk-EKJOEK5I.js} +11 -11
- package/dist/{chunk-PTOFJKSN.js.map → chunk-EKJOEK5I.js.map} +1 -1
- package/dist/{chunk-LLO7FMR7.js → chunk-F3DDS4YF.js} +15 -15
- package/dist/chunk-F3DDS4YF.js.map +1 -0
- package/dist/{chunk-OWWUTKGY.cjs → chunk-FLK6OPFY.cjs} +4 -2
- package/dist/chunk-FLK6OPFY.cjs.map +1 -0
- package/dist/{chunk-H7EXCZKM.cjs → chunk-FWIJ3N3I.cjs} +62 -54
- package/dist/chunk-FWIJ3N3I.cjs.map +1 -0
- package/dist/{chunk-XKX22KIM.cjs → chunk-FZD7GFAE.cjs} +4 -4
- package/dist/{chunk-XKX22KIM.cjs.map → chunk-FZD7GFAE.cjs.map} +1 -1
- package/dist/{chunk-XKXPFVWS.js → chunk-GVLFSVUO.js} +15 -13
- package/dist/chunk-GVLFSVUO.js.map +1 -0
- package/dist/{chunk-S3FGQTPN.js → chunk-HQTHUBVB.js} +32 -33
- package/dist/chunk-HQTHUBVB.js.map +1 -0
- package/dist/{chunk-K7QILQPE.js → chunk-HZKEIJP5.js} +31 -23
- package/dist/chunk-HZKEIJP5.js.map +1 -0
- package/dist/{chunk-L4YPB7MU.cjs → chunk-LTQCM5VQ.cjs} +9 -5
- package/dist/chunk-LTQCM5VQ.cjs.map +1 -0
- package/dist/{chunk-UHMJOD2X.js → chunk-M52AKWAI.js} +61 -38
- package/dist/chunk-M52AKWAI.js.map +1 -0
- package/dist/{chunk-E2ZEMRKR.cjs → chunk-NATEKPMG.cjs} +19 -19
- package/dist/{chunk-E2ZEMRKR.cjs.map → chunk-NATEKPMG.cjs.map} +1 -1
- package/dist/{chunk-BQGN3JTU.js → chunk-NTDKZW4E.js} +4 -4
- package/dist/{chunk-BQGN3JTU.js.map → chunk-NTDKZW4E.js.map} +1 -1
- package/dist/{chunk-WHW6WMII.js → chunk-OC76RMHG.js} +56 -48
- package/dist/chunk-OC76RMHG.js.map +1 -0
- package/dist/{chunk-PA2DQCBY.cjs → chunk-OE5BOGGX.cjs} +4 -4
- package/dist/{chunk-PA2DQCBY.cjs.map → chunk-OE5BOGGX.cjs.map} +1 -1
- package/dist/{chunk-GWJLFB26.cjs → chunk-OTZNGYQZ.cjs} +19 -17
- package/dist/chunk-OTZNGYQZ.cjs.map +1 -0
- package/dist/{chunk-LBOF5M7T.cjs → chunk-P5DV3Y52.cjs} +14 -14
- package/dist/chunk-P5DV3Y52.cjs.map +1 -0
- package/dist/{chunk-MAJ7IXH4.cjs → chunk-T6SB5UO2.cjs} +11 -16
- package/dist/chunk-T6SB5UO2.cjs.map +1 -0
- package/dist/{chunk-NPRL7X5E.cjs → chunk-TQAF2PJG.cjs} +26 -24
- package/dist/chunk-TQAF2PJG.cjs.map +1 -0
- package/dist/{chunk-SNXHPF7L.js → chunk-TRJOEV3R.js} +8 -13
- package/dist/{chunk-SNXHPF7L.js.map → chunk-TRJOEV3R.js.map} +1 -1
- package/dist/{chunk-57WY5GAE.js → chunk-V7QZNDTY.js} +9 -5
- package/dist/chunk-V7QZNDTY.js.map +1 -0
- package/dist/{chunk-3QCNVEUD.cjs → chunk-WIAZMOAH.cjs} +18 -18
- package/dist/chunk-WIAZMOAH.cjs.map +1 -0
- package/dist/{chunk-XSNA554N.cjs → chunk-XQAN6TTP.cjs} +12 -12
- package/dist/{chunk-XSNA554N.cjs.map → chunk-XQAN6TTP.cjs.map} +1 -1
- package/dist/{chunk-GNYQC5IJ.cjs → chunk-Y3AB4GV6.cjs} +7 -5
- package/dist/chunk-Y3AB4GV6.cjs.map +1 -0
- package/dist/{chunk-VTTU37OB.cjs → chunk-YOMV7IQD.cjs} +34 -35
- package/dist/chunk-YOMV7IQD.cjs.map +1 -0
- package/dist/helpers/index.cjs +2 -2
- package/dist/helpers/index.js +1 -1
- package/dist/hooks/index.cjs +4 -4
- package/dist/hooks/index.d.cts +3 -3
- package/dist/hooks/index.d.ts +3 -3
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/useInputValueDebounce/index.cjs +2 -2
- package/dist/hooks/useInputValueDebounce/index.js +1 -1
- package/dist/index.cjs +17 -17
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +16 -16
- package/dist/partials/FieldCopyTestIdButton/index.cjs +2 -2
- package/dist/partials/FieldCopyTestIdButton/index.js +1 -1
- package/dist/partials/FieldValidationError/index.cjs +2 -2
- package/dist/partials/FieldValidationError/index.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-3QCNVEUD.cjs.map +0 -1
- package/dist/chunk-57WY5GAE.js.map +0 -1
- package/dist/chunk-BLS46GFN.js.map +0 -1
- package/dist/chunk-GNYQC5IJ.cjs.map +0 -1
- package/dist/chunk-GWJLFB26.cjs.map +0 -1
- package/dist/chunk-H7EXCZKM.cjs.map +0 -1
- package/dist/chunk-K2IHP7JJ.cjs.map +0 -1
- package/dist/chunk-K7QILQPE.js.map +0 -1
- package/dist/chunk-L4YPB7MU.cjs.map +0 -1
- package/dist/chunk-LBOF5M7T.cjs.map +0 -1
- package/dist/chunk-LJ2KHIIN.cjs.map +0 -1
- package/dist/chunk-LLO7FMR7.js.map +0 -1
- package/dist/chunk-MAJ7IXH4.cjs.map +0 -1
- package/dist/chunk-NPRL7X5E.cjs.map +0 -1
- package/dist/chunk-OWWUTKGY.cjs.map +0 -1
- package/dist/chunk-S3FGQTPN.js.map +0 -1
- package/dist/chunk-UHMJOD2X.js.map +0 -1
- package/dist/chunk-UTFZRBBS.js.map +0 -1
- package/dist/chunk-VTTU37OB.cjs.map +0 -1
- package/dist/chunk-WHW6WMII.js.map +0 -1
- package/dist/chunk-XKXPFVWS.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkOE5BOGGXcjs = require('./chunk-OE5BOGGX.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkFWIJ3N3Icjs = require('./chunk-FWIJ3N3I.cjs');
|
|
11
11
|
|
|
12
12
|
// src/RadioTabs/RadioTabs.tsx
|
|
13
13
|
var _radio = require('@heroui/radio');
|
|
@@ -37,46 +37,48 @@ var RadioTabs = ({
|
|
|
37
37
|
testId: _testId = void 0,
|
|
38
38
|
variant = void 0
|
|
39
39
|
}) => {
|
|
40
|
-
const { control, debugMode, getFieldState } =
|
|
40
|
+
const { control, debugMode, getFieldState } = _chunkFWIJ3N3Icjs.useFormContext.call(void 0, );
|
|
41
41
|
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
42
|
-
const { field } =
|
|
42
|
+
const { field } = _chunkFWIJ3N3Icjs.useController.call(void 0, { control, disabled, name });
|
|
43
43
|
const { disabled: isDisabled, onBlur, onChange, ref, value } = field;
|
|
44
44
|
const showTestIdCopyButton = debugMode === "debug-testids";
|
|
45
45
|
const showLabel = label || showTestIdCopyButton;
|
|
46
46
|
const variants = radioTabsVariants();
|
|
47
47
|
const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
|
|
48
|
-
const tabOptions = options.map((option) =>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
)
|
|
48
|
+
const tabOptions = options.map((option) => {
|
|
49
|
+
return {
|
|
50
|
+
content: option == null ? void 0 : option.content,
|
|
51
|
+
disabled: option == null ? void 0 : option.disabled,
|
|
52
|
+
key: option.value,
|
|
53
|
+
label: (option == null ? void 0 : option.label) || (option == null ? void 0 : option.value),
|
|
54
|
+
testId: _pixelutils.slugify.call(void 0, `option_${(option == null ? void 0 : option.testId) || (option == null ? void 0 : option.value)}`, {
|
|
55
|
+
replaceDots: true
|
|
56
|
+
})
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
const disabledAllKeys = tabOptions == null ? void 0 : tabOptions.map((option) => {
|
|
60
|
+
return option.key;
|
|
61
|
+
});
|
|
60
62
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
61
63
|
_radio.RadioGroup,
|
|
62
64
|
{
|
|
63
65
|
classNames,
|
|
66
|
+
ref,
|
|
64
67
|
"data-invalid": invalid,
|
|
65
68
|
"data-required": required,
|
|
66
69
|
"data-testid": testId,
|
|
67
|
-
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGNYQC5IJcjs.FieldValidationError_default, { error, testId }),
|
|
68
70
|
isDisabled,
|
|
69
71
|
isInvalid: invalid,
|
|
70
72
|
isRequired: required,
|
|
73
|
+
name,
|
|
74
|
+
onBlur,
|
|
75
|
+
orientation: inline ? "horizontal" : "vertical",
|
|
76
|
+
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }),
|
|
71
77
|
label: showLabel && // eslint-disable-next-line jsx-a11y/label-has-associated-control
|
|
72
78
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { children: [
|
|
73
79
|
label,
|
|
74
|
-
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
80
|
+
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId })
|
|
75
81
|
] }),
|
|
76
|
-
name,
|
|
77
|
-
orientation: inline ? "horizontal" : "vertical",
|
|
78
|
-
onBlur,
|
|
79
|
-
ref,
|
|
80
82
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
81
83
|
_Tabs2.default,
|
|
82
84
|
{
|
|
@@ -101,4 +103,4 @@ var RadioTabs_default2 = RadioTabs_default;
|
|
|
101
103
|
|
|
102
104
|
|
|
103
105
|
exports.RadioTabs_default = RadioTabs_default; exports.RadioTabs_default2 = RadioTabs_default2;
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-TQAF2PJG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-TQAF2PJG.cjs","../src/RadioTabs/RadioTabs.tsx","../src/RadioTabs/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-TQAF2PJG.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { TabsProps } from '@fuf-stack/pixels';\nimport type { TabProps } from '@fuf-stack/pixels/Tabs';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\nimport Tabs from '@fuf-stack/pixels/Tabs';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const radioTabsVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n label:\n 'text-foreground group-data-[invalid=true]:text-danger text-sm subpixel-antialiased',\n wrapper: '',\n tabList: '',\n tab: '',\n tabContent: '',\n cursor: '',\n panel: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioTabsVariants>;\ntype ClassName = TVClassName<typeof radioTabsVariants>;\n\nexport interface RadioTabsOption {\n /** Optional content inside of the tab */\n content?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: React.ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioTabsProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioTabsOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n /** How the RadioTabs should look like. */\n variant?: TabsProps['variant'];\n}\n\n/**\n * RadioTabs component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n * and [HeroUI Tabs](https://www.heroui.com//docs/components/tabs)\n */\nconst RadioTabs = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n variant = undefined,\n}: RadioTabsProps): ReactElement => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({ control, disabled, name });\n const { disabled: isDisabled, onBlur, onChange, ref, value } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = radioTabsVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const tabOptions = options.map<TabProps>((option) => {\n return {\n content: option?.content,\n disabled: option?.disabled,\n key: option.value,\n label: option?.label || option?.value,\n testId: slugify(`option_${option?.testId || option?.value}`, {\n replaceDots: true,\n }),\n };\n });\n\n const disabledAllKeys: string[] | undefined = tabOptions?.map((option) => {\n return option.key as string;\n });\n\n return (\n <HeroRadioGroup\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n ref={ref}\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n >\n <Tabs\n disabledKeys={disabled ? disabledAllKeys : undefined}\n fullWidth={false}\n onSelectionChange={onChange}\n // make sure component is controlled\n selectedKey={value ?? ''}\n tabs={tabOptions}\n testId={testId}\n variant={variant}\n />\n </HeroRadioGroup>\n );\n};\n\nexport default RadioTabs;\n","import RadioTabs from './RadioTabs';\n\nexport type { RadioTabsProps } from './RadioTabs';\n\nexport { RadioTabs };\n\nexport default RadioTabs;\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FieldCopyTestIdButton_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NTDKZW4E.js";
|
|
4
4
|
import {
|
|
5
5
|
FieldValidationError_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CQWA2DFV.js";
|
|
7
7
|
import {
|
|
8
8
|
useController,
|
|
9
9
|
useFormContext,
|
|
10
10
|
useInput
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OC76RMHG.js";
|
|
12
12
|
import {
|
|
13
13
|
__spreadProps,
|
|
14
14
|
__spreadValues
|
|
@@ -63,8 +63,9 @@ var Switch = ({
|
|
|
63
63
|
/* @__PURE__ */ jsxs(
|
|
64
64
|
HeroSwitch,
|
|
65
65
|
{
|
|
66
|
-
|
|
66
|
+
ref,
|
|
67
67
|
classNames,
|
|
68
|
+
"aria-describedby": getInputProps()["aria-describedby"],
|
|
68
69
|
"data-invalid": invalid,
|
|
69
70
|
"data-required": required,
|
|
70
71
|
"data-testid": testId,
|
|
@@ -74,7 +75,6 @@ var Switch = ({
|
|
|
74
75
|
name,
|
|
75
76
|
onBlur,
|
|
76
77
|
onValueChange: onChange,
|
|
77
|
-
ref,
|
|
78
78
|
required,
|
|
79
79
|
size,
|
|
80
80
|
startContent,
|
|
@@ -82,16 +82,11 @@ var Switch = ({
|
|
|
82
82
|
value,
|
|
83
83
|
children: [
|
|
84
84
|
label,
|
|
85
|
-
showTestIdCopyButton
|
|
85
|
+
showTestIdCopyButton ? /* @__PURE__ */ jsx(FieldCopyTestIdButton_default, { testId }) : null
|
|
86
86
|
]
|
|
87
87
|
}
|
|
88
88
|
),
|
|
89
|
-
error
|
|
90
|
-
"div",
|
|
91
|
-
__spreadProps(__spreadValues({}, getErrorMessageProps()), {
|
|
92
|
-
children: /* @__PURE__ */ jsx(FieldValidationError_default, { error, testId })
|
|
93
|
-
})
|
|
94
|
-
) })
|
|
89
|
+
error ? /* @__PURE__ */ jsx("div", { className: classNames.errorMessage, children: /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, getErrorMessageProps()), { children: /* @__PURE__ */ jsx(FieldValidationError_default, { error, testId }) })) }) : null
|
|
95
90
|
] });
|
|
96
91
|
};
|
|
97
92
|
var Switch_default = Switch;
|
|
@@ -103,4 +98,4 @@ export {
|
|
|
103
98
|
Switch_default,
|
|
104
99
|
Switch_default2
|
|
105
100
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
101
|
+
//# sourceMappingURL=chunk-TRJOEV3R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Switch/Switch.tsx","../src/Switch/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { SwitchProps as HeroSwitchProps } from '@heroui/switch';\nimport type { ReactNode } from 'react';\n\nimport { Switch as HeroSwitch } from '@heroui/switch';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInput } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const switchVariants = tv({\n slots: {\n base: '',\n endContent: '',\n errorMessage: 'mt-1 ml-1',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-foreground group-data-[invalid=true]:!text-danger group-data-[required=true]:after:text-danger text-sm subpixel-antialiased group-data-[required=true]:after:ml-0.5 group-data-[required=true]:after:content-[\"*\"]',\n outerWrapper: 'place-content-center',\n startContent: '',\n thumb: '',\n thumbIcon: '',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof switchVariants>;\ntype ClassName = TVClassName<typeof switchVariants>;\n\nexport interface SwitchProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** whether the select should be disabled */\n disabled?: boolean;\n /** Icon to be displayed at the end of the switch (when enabled) */\n endContent?: ReactNode;\n /** component displayed next to the switch */\n label?: ReactNode;\n /** name the field is registered under */\n name: string;\n /* Size of the switch */\n size?: 'sm' | 'md' | 'lg';\n /** Icon to be displayed at the start of the switch (when disabled) */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** Icon to be displayed inside the thumb */\n thumbIcon?: HeroSwitchProps['thumbIcon'];\n}\n\n/**\n * Switch component based on [HeroUI Switch](https://www.heroui.com//docs/components/switch)\n */\nconst Switch = ({\n className = undefined,\n disabled = false,\n endContent = undefined,\n label: _label = undefined,\n name,\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n thumbIcon = undefined,\n}: SwitchProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, required, testId, invalid } = getFieldState(name, _testId);\n\n const { field } = useController({ name, control, disabled });\n const { disabled: isDisabled, value, ref, onBlur, onChange } = field;\n\n const { label, getInputProps, getErrorMessageProps } = useInput({\n errorMessage: JSON.stringify(error),\n isInvalid: invalid,\n isRequired: required,\n label: _label,\n labelPlacement: 'outside',\n placeholder: ' ',\n });\n\n const variants = switchVariants();\n const classNames = variantsToClassNames(variants, className, 'outerWrapper');\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n\n return (\n <div className={classNames.outerWrapper}>\n <HeroSwitch\n
|
|
1
|
+
{"version":3,"sources":["../src/Switch/Switch.tsx","../src/Switch/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { SwitchProps as HeroSwitchProps } from '@heroui/switch';\nimport type { ReactNode } from 'react';\n\nimport { Switch as HeroSwitch } from '@heroui/switch';\n\nimport { tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInput } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const switchVariants = tv({\n slots: {\n base: '',\n endContent: '',\n errorMessage: 'mt-1 ml-1',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-foreground group-data-[invalid=true]:!text-danger group-data-[required=true]:after:text-danger text-sm subpixel-antialiased group-data-[required=true]:after:ml-0.5 group-data-[required=true]:after:content-[\"*\"]',\n outerWrapper: 'place-content-center',\n startContent: '',\n thumb: '',\n thumbIcon: '',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof switchVariants>;\ntype ClassName = TVClassName<typeof switchVariants>;\n\nexport interface SwitchProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** whether the select should be disabled */\n disabled?: boolean;\n /** Icon to be displayed at the end of the switch (when enabled) */\n endContent?: ReactNode;\n /** component displayed next to the switch */\n label?: ReactNode;\n /** name the field is registered under */\n name: string;\n /* Size of the switch */\n size?: 'sm' | 'md' | 'lg';\n /** Icon to be displayed at the start of the switch (when disabled) */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** Icon to be displayed inside the thumb */\n thumbIcon?: HeroSwitchProps['thumbIcon'];\n}\n\n/**\n * Switch component based on [HeroUI Switch](https://www.heroui.com//docs/components/switch)\n */\nconst Switch = ({\n className = undefined,\n disabled = false,\n endContent = undefined,\n label: _label = undefined,\n name,\n size = undefined,\n startContent = undefined,\n testId: _testId = undefined,\n thumbIcon = undefined,\n}: SwitchProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, required, testId, invalid } = getFieldState(name, _testId);\n\n const { field } = useController({ name, control, disabled });\n const { disabled: isDisabled, value, ref, onBlur, onChange } = field;\n\n const { label, getInputProps, getErrorMessageProps } = useInput({\n errorMessage: JSON.stringify(error),\n isInvalid: invalid,\n isRequired: required,\n label: _label,\n labelPlacement: 'outside',\n placeholder: ' ',\n });\n\n const variants = switchVariants();\n const classNames = variantsToClassNames(variants, className, 'outerWrapper');\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n\n return (\n <div className={classNames.outerWrapper}>\n <HeroSwitch\n ref={ref}\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n aria-describedby={getInputProps()['aria-describedby']}\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n endContent={endContent}\n isDisabled={isDisabled}\n isSelected={!!value}\n name={name}\n onBlur={onBlur}\n onValueChange={onChange}\n required={required}\n size={size}\n startContent={startContent}\n thumbIcon={thumbIcon}\n value={value}\n >\n {label}\n {showTestIdCopyButton ? (\n <FieldCopyTestIdButton testId={testId} />\n ) : null}\n </HeroSwitch>\n {error ? (\n <div className={classNames.errorMessage}>\n <div {...getErrorMessageProps()}>\n <FieldValidationError error={error} testId={testId} />\n </div>\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default Switch;\n","import Switch from './Switch';\n\nexport type { SwitchProps } from './Switch';\n\nexport { Switch };\n\nexport default Switch;\n"],"mappings":";;;;;;;;;;;;;;;;;AAIA,SAAS,UAAU,kBAAkB;AAErC,SAAS,IAAI,4BAA4B;AAmFnC,SAuBI,KAvBJ;AA7EC,IAAM,iBAAiB,GAAG;AAAA,EAC/B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc;AAAA;AAAA;AAAA,IAGd,OACE;AAAA,IACF,cAAc;AAAA,IACd,cAAc;AAAA,IACd,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACF,CAAC;AA6BD,IAAM,SAAS,CAAC;AAAA,EACd,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO,SAAS;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf,QAAQ,UAAU;AAAA,EAClB,YAAY;AACd,MAAmB;AACjB,QAAM,EAAE,SAAS,WAAW,cAAc,IAAI,eAAe;AAC7D,QAAM,EAAE,OAAO,UAAU,QAAQ,QAAQ,IAAI,cAAc,MAAM,OAAO;AAExE,QAAM,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,SAAS,SAAS,CAAC;AAC3D,QAAM,EAAE,UAAU,YAAY,OAAO,KAAK,QAAQ,SAAS,IAAI;AAE/D,QAAM,EAAE,OAAO,eAAe,qBAAqB,IAAI,SAAS;AAAA,IAC9D,cAAc,KAAK,UAAU,KAAK;AAAA,IAClC,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,aAAa;AAAA,EACf,CAAC;AAED,QAAM,WAAW,eAAe;AAChC,QAAM,aAAa,qBAAqB,UAAU,WAAW,cAAc;AAE3E,QAAM,uBAAuB,cAAc;AAE3C,SACE,qBAAC,SAAI,WAAW,WAAW,cACzB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QAGA,oBAAkB,cAAc,EAAE,kBAAkB;AAAA,QACpD,gBAAc;AAAA,QACd,iBAAe;AAAA,QACf,eAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA,YAAY,CAAC,CAAC;AAAA,QACd;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,UACA,uBACC,oBAAC,iCAAsB,QAAgB,IACrC;AAAA;AAAA;AAAA,IACN;AAAA,IACC,QACC,oBAAC,SAAI,WAAW,WAAW,cACzB,8BAAC,wCAAQ,qBAAqB,IAA7B,EACC,8BAAC,gCAAqB,OAAc,QAAgB,IACtD,GACF,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,iBAAQ;;;ACxHf,IAAOA,kBAAQ;","names":["Switch_default"]}
|
|
@@ -29,7 +29,9 @@ var toFormFormat = (fields) => {
|
|
|
29
29
|
}
|
|
30
30
|
if (value && typeof value === "object") {
|
|
31
31
|
return Object.fromEntries(
|
|
32
|
-
Object.entries(value).filter(([_key, v]) =>
|
|
32
|
+
Object.entries(value).filter(([_key, v]) => {
|
|
33
|
+
return v !== "" && v !== null;
|
|
34
|
+
})
|
|
33
35
|
);
|
|
34
36
|
}
|
|
35
37
|
return value;
|
|
@@ -47,9 +49,11 @@ var toValidationFormat = (formState) => {
|
|
|
47
49
|
}
|
|
48
50
|
if (value && typeof value === "object") {
|
|
49
51
|
return Object.fromEntries(
|
|
50
|
-
Object.entries(value).filter(
|
|
51
|
-
|
|
52
|
-
).map(([k, v]) =>
|
|
52
|
+
Object.entries(value).filter(([_key, v]) => {
|
|
53
|
+
return fromNullishString(v) !== "" && fromNullishString(v) !== null;
|
|
54
|
+
}).map(([k, v]) => {
|
|
55
|
+
return [k, fromNullishString(v)];
|
|
56
|
+
})
|
|
53
57
|
);
|
|
54
58
|
}
|
|
55
59
|
return value;
|
|
@@ -63,4 +67,4 @@ export {
|
|
|
63
67
|
toFormFormat,
|
|
64
68
|
toValidationFormat
|
|
65
69
|
};
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-V7QZNDTY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/helpers/nullishFields/nullishFields.ts"],"sourcesContent":["/**\n * String markers used to preserve null, false, and 0 values during JSON processing\n */\nconst nullString = '__NULL__';\nconst falseString = '__FALSE__';\nconst zeroString = '__ZERO__';\n\n/**\n * Converts marker strings back to their original values when processing arrays\n */\nexport const fromNullishString = (value: unknown): unknown => {\n if (typeof value !== 'string') return value;\n\n switch (value) {\n case nullString:\n return null;\n case falseString:\n return false;\n case zeroString:\n return 0;\n default:\n return value;\n }\n};\n\n/**\n * Converts null/falsy values to marker strings for JSON processing\n */\nexport const toNullishString = (value: unknown): unknown => {\n if (value === null || value === '') return nullString;\n if (value === false) return falseString;\n if (value === 0) return zeroString;\n return value;\n};\n\n/**\n * Converts field values to a format suitable for forms by:\n * - Converting array values to their string markers to preserve null/falsy values\n * - Removing empty strings and null values from objects\n *\n * This conversion is required because React Hook Form does not support arrays with\n * flat values (string, number, boolean, null). Array fields must contain objects.\n * We work around this by converting array values to string markers.\n *\n * @example\n * const fields = {\n * name: 'John',\n * scores: [0, null, 75, false],\n * contact: {\n * email: '',\n * phone: null,\n * address: '123 Main St'\n * }\n * };\n *\n * // Result:\n * {\n * name: 'John',\n * scores: ['__ZERO__', '__NULL__', 75, '__FALSE__'],\n * contact: {\n * address: '123 Main St'\n * }\n * }\n */\nexport const toFormFormat = (\n fields: Record<string, unknown>,\n): Record<string, unknown> => {\n return JSON.parse(\n JSON.stringify(fields, (_, value) => {\n if (Array.isArray(value)) {\n return value.map(toNullishString);\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).filter(([_key, v]) => {\n return v !== '' && v !== null;\n }),\n );\n }\n\n return value;\n }),\n );\n};\n\n/**\n * Converts form state to a format suitable for validation by:\n * - Converting array string markers (__NULL__, __FALSE__, __ZERO__) back to their original values\n * - Converting _NULL__ to null\n * - Removing fields that contain empty strings, null, or any string markers representing null/empty values\n *\n * @example\n * const formState = {\n * name: 'John',\n * scores: [75, '__ZERO__', '_NULL__', '__FALSE__'],\n * email: null,\n * phone: '__NULL__',\n * contact: {\n * address: '123 Main St',\n * fax: null\n * }\n * };\n *\n * // Result:\n * {\n * name: 'John',\n * scores: [75, 0, null, false],\n * contact: {\n * address: '123 Main St'\n * }\n * }\n */\nexport const toValidationFormat = (\n formState: Record<string, unknown> | null | undefined,\n): Record<string, unknown> | null | undefined => {\n // Handle null or undefined input\n if (formState === undefined || formState === null) {\n return formState;\n }\n\n return JSON.parse(\n JSON.stringify(formState, (_, value) => {\n if (Array.isArray(value)) {\n return value.map(fromNullishString);\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_key, v]) => {\n return (\n fromNullishString(v) !== '' && fromNullishString(v) !== null\n );\n })\n .map(([k, v]) => {\n return [k, fromNullishString(v)];\n }),\n );\n }\n\n return value;\n }),\n );\n};\n"],"mappings":";AAGA,IAAM,aAAa;AACnB,IAAM,cAAc;AACpB,IAAM,aAAa;AAKZ,IAAM,oBAAoB,CAAC,UAA4B;AAC5D,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAKO,IAAM,kBAAkB,CAAC,UAA4B;AAC1D,MAAI,UAAU,QAAQ,UAAU,GAAI,QAAO;AAC3C,MAAI,UAAU,MAAO,QAAO;AAC5B,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO;AACT;AA+BO,IAAM,eAAe,CAC1B,WAC4B;AAC5B,SAAO,KAAK;AAAA,IACV,KAAK,UAAU,QAAQ,CAAC,GAAG,UAAU;AACnC,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAO,MAAM,IAAI,eAAe;AAAA,MAClC;AAEA,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,eAAO,OAAO;AAAA,UACZ,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;AAC1C,mBAAO,MAAM,MAAM,MAAM;AAAA,UAC3B,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AA6BO,IAAM,qBAAqB,CAChC,cAC+C;AAE/C,MAAI,cAAc,UAAa,cAAc,MAAM;AACjD,WAAO;AAAA,EACT;AAEA,SAAO,KAAK;AAAA,IACV,KAAK,UAAU,WAAW,CAAC,GAAG,UAAU;AACtC,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAO,MAAM,IAAI,iBAAiB;AAAA,MACpC;AAEA,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,eAAO,OAAO;AAAA,UACZ,OAAO,QAAQ,KAAK,EACjB,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,mBACE,kBAAkB,CAAC,MAAM,MAAM,kBAAkB,CAAC,MAAM;AAAA,UAE5D,CAAC,EACA,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM;AACf,mBAAO,CAAC,GAAG,kBAAkB,CAAC,CAAC;AAAA,UACjC,CAAC;AAAA,QACL;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkOE5BOGGXcjs = require('./chunk-OE5BOGGX.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkFWIJ3N3Icjs = require('./chunk-FWIJ3N3I.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkFLK6OPFYcjs = require('./chunk-FLK6OPFY.cjs');
|
|
14
14
|
|
|
15
15
|
// src/TextArea/TextArea.tsx
|
|
16
16
|
var _input = require('@heroui/input');
|
|
@@ -26,9 +26,9 @@ var TextArea = ({
|
|
|
26
26
|
placeholder = " ",
|
|
27
27
|
testId: _testId = void 0
|
|
28
28
|
}) => {
|
|
29
|
-
const { control, debugMode, getFieldState } =
|
|
29
|
+
const { control, debugMode, getFieldState } = _chunkFWIJ3N3Icjs.useFormContext.call(void 0, );
|
|
30
30
|
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
31
|
-
const { field } =
|
|
31
|
+
const { field } = _chunkFWIJ3N3Icjs.useController.call(void 0, {
|
|
32
32
|
control,
|
|
33
33
|
disabled,
|
|
34
34
|
name
|
|
@@ -40,7 +40,7 @@ var TextArea = ({
|
|
|
40
40
|
value: fieldValue,
|
|
41
41
|
ref
|
|
42
42
|
} = field;
|
|
43
|
-
const { onChange, onBlur, value } =
|
|
43
|
+
const { onChange, onBlur, value } = _chunkFLK6OPFYcjs.useInputValueDebounce.call(void 0, {
|
|
44
44
|
debounceDelay,
|
|
45
45
|
onBlur: fieldOnBlur,
|
|
46
46
|
onChange: fieldOnChange,
|
|
@@ -51,27 +51,27 @@ var TextArea = ({
|
|
|
51
51
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
52
52
|
_input.Textarea,
|
|
53
53
|
{
|
|
54
|
+
ref,
|
|
54
55
|
className: _pixelutils.cn.call(void 0, className),
|
|
55
|
-
classNames: {
|
|
56
|
-
inputWrapper: "bg-content1 group-data-[focus=true]:border-focus"
|
|
57
|
-
},
|
|
58
56
|
"data-testid": testId,
|
|
59
|
-
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGNYQC5IJcjs.FieldValidationError_default, { error, testId }),
|
|
60
57
|
isDisabled,
|
|
61
|
-
isRequired: required,
|
|
62
58
|
isInvalid: invalid,
|
|
63
|
-
|
|
64
|
-
label,
|
|
65
|
-
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPA2DQCBYcjs.FieldCopyTestIdButton_default, { testId })
|
|
66
|
-
] }),
|
|
59
|
+
isRequired: required,
|
|
67
60
|
labelPlacement: "outside",
|
|
68
61
|
name,
|
|
69
62
|
onBlur,
|
|
70
63
|
onChange,
|
|
71
64
|
placeholder,
|
|
72
|
-
ref,
|
|
73
65
|
value,
|
|
74
66
|
variant: "bordered",
|
|
67
|
+
classNames: {
|
|
68
|
+
inputWrapper: "bg-content1 group-data-[focus=true]:border-focus"
|
|
69
|
+
},
|
|
70
|
+
errorMessage: error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }) : null,
|
|
71
|
+
label: showLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
72
|
+
label,
|
|
73
|
+
showTestIdCopyButton ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId }) : null
|
|
74
|
+
] }) : null,
|
|
75
75
|
children
|
|
76
76
|
}
|
|
77
77
|
);
|
|
@@ -85,4 +85,4 @@ var TextArea_default2 = TextArea_default;
|
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
exports.TextArea_default = TextArea_default; exports.TextArea_default2 = TextArea_default2;
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-WIAZMOAH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-WIAZMOAH.cjs","../src/TextArea/TextArea.tsx","../src/TextArea/index.ts"],"names":["TextArea_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACZA,sCAAyC;AAEzC,oDAAmB;AAqFH,+CAAA;AAzDhB,IAAM,SAAA,EAAW,CAAC;AAAA,EAChB,SAAA,EAAW,IAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,cAAA,EAAgB,GAAA;AAAA,EAChB,SAAA,EAAW,KAAA;AAAA,EACX,MAAA,EAAQ,KAAA,CAAA;AAAA,EACR,IAAA;AAAA,EACA,YAAA,EAAc,GAAA;AAAA,EACd,MAAA,EAAQ,QAAA,EAAU,KAAA;AACpB,CAAA,EAAA,GAAqB;AACnB,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,cAAc,EAAA,EAAI,8CAAA,CAAe;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,OAAO,EAAA,EAAI,aAAA,CAAc,IAAA,EAAM,OAAO,CAAA;AAExE,EAAA,MAAM,EAAE,MAAM,EAAA,EAAI,6CAAA;AAAc,IAC9B,OAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU,aAAA;AAAA,IACV,MAAA,EAAQ,WAAA;AAAA,IACR,KAAA,EAAO,UAAA;AAAA,IACP;AAAA,EACF,EAAA,EAAI,KAAA;AAGJ,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,MAAM,EAAA,EAAI,qDAAA;AAAsB,IACxD,aAAA;AAAA,IACA,MAAA,EAAQ,WAAA;AAAA,IACR,QAAA,EAAU,aAAA;AAAA,IACV,KAAA,EAAO;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,qBAAA,EAAuB,UAAA,IAAc,eAAA;AAC3C,EAAA,MAAM,UAAA,EAAY,MAAA,GAAS,oBAAA;AAE3B,EAAA,uBACE,6BAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,aAAA,EAAa,MAAA;AAAA,MACb,UAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACX,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAe,SAAA;AAAA,MACf,IAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAQ,UAAA;AAAA,MACR,UAAA,EAAY;AAAA,QACV,YAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MACA,YAAA,EACE,MAAA,kBAAQ,6BAAA,8CAAC,EAAA,EAAqB,KAAA,EAAc,OAAA,CAAgB,EAAA,EAAK,IAAA;AAAA,MAEnE,KAAA,EACE,UAAA,kBACE,8BAAA,oBAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,qBAAA,kBACC,6BAAA,+CAAC,EAAA,EAAsB,OAAA,CAAgB,EAAA,EACrC;AAAA,MAAA,EAAA,CACN,EAAA,EACE,IAAA;AAAA,MAGL;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,iBAAA,EAAQ,QAAA;AD5Bf;AACA;AE1EA,IAAOA,kBAAAA,EAAQ,gBAAA;AF4Ef;AACA;AACE;AACA;AACF,2FAAC","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-WIAZMOAH.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { Textarea as HeroTextArea } from '@heroui/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext, useInputValueDebounce } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface TextAreaProps {\n /** Child components. The content of the textarea. */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** debounce delay in milliseconds for form state updates (default: 300ms) */\n debounceDelay?: number;\n /** Determines if the TextArea is disabled or not. */\n disabled?: boolean;\n /** Label displayed above the TextArea. */\n label?: ReactNode;\n /** Name the TextArea is registered at in HTML forms (react-hook-form). */\n name: string;\n /** placeholder for the textArea content. */\n placeholder?: string;\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * TextArea component based on [HeroUI TextArea](https://www.heroui.com//docs/components/textarea)\n */\nconst TextArea = ({\n children = null,\n className = undefined,\n debounceDelay = 300,\n disabled = false,\n label = undefined,\n name,\n placeholder = ' ',\n testId: _testId = undefined,\n}: TextAreaProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const {\n disabled: isDisabled,\n onChange: fieldOnChange,\n onBlur: fieldOnBlur,\n value: fieldValue,\n ref,\n } = field;\n\n // Use debounced handlers for form updates\n const { onChange, onBlur, value } = useInputValueDebounce({\n debounceDelay,\n onBlur: fieldOnBlur,\n onChange: fieldOnChange,\n value: fieldValue,\n });\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n return (\n <HeroTextArea\n ref={ref}\n className={cn(className)}\n data-testid={testId}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n value={value as string}\n variant=\"bordered\"\n classNames={{\n inputWrapper: 'bg-content1 group-data-[focus=true]:border-focus',\n }}\n errorMessage={\n error ? <FieldValidationError error={error} testId={testId} /> : null\n }\n label={\n showLabel ? (\n <>\n {label}\n {showTestIdCopyButton ? (\n <FieldCopyTestIdButton testId={testId} />\n ) : null}\n </>\n ) : null\n }\n >\n {children}\n </HeroTextArea>\n );\n};\n\nexport default TextArea;\n","import TextArea from './TextArea';\n\nexport type { TextAreaProps } from './TextArea';\n\nexport { TextArea };\n\nexport default TextArea;\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkOE5BOGGXcjs = require('./chunk-OE5BOGGX.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkFWIJ3N3Icjs = require('./chunk-FWIJ3N3I.cjs');
|
|
11
11
|
|
|
12
12
|
// src/RadioGroup/RadioGroup.tsx
|
|
13
13
|
var _radio = require('@heroui/radio');
|
|
@@ -39,9 +39,9 @@ var RadioGroup = ({
|
|
|
39
39
|
options,
|
|
40
40
|
testId: _testId = void 0
|
|
41
41
|
}) => {
|
|
42
|
-
const { control, debugMode, getFieldState, getValues } =
|
|
42
|
+
const { control, debugMode, getFieldState, getValues } = _chunkFWIJ3N3Icjs.useFormContext.call(void 0, );
|
|
43
43
|
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
44
|
-
const { field } =
|
|
44
|
+
const { field } = _chunkFWIJ3N3Icjs.useController.call(void 0, { control, disabled, name });
|
|
45
45
|
const { onChange, disabled: isDisabled, onBlur, ref } = field;
|
|
46
46
|
const showTestIdCopyButton = debugMode === "debug-testids";
|
|
47
47
|
const showLabel = label || showTestIdCopyButton;
|
|
@@ -59,23 +59,23 @@ var RadioGroup = ({
|
|
|
59
59
|
_radio.RadioGroup,
|
|
60
60
|
{
|
|
61
61
|
classNames,
|
|
62
|
+
ref,
|
|
62
63
|
"data-invalid": invalid,
|
|
63
64
|
"data-required": required,
|
|
64
65
|
"data-testid": testId,
|
|
65
66
|
defaultValue: getValues()[name],
|
|
66
|
-
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGNYQC5IJcjs.FieldValidationError_default, { error, testId }),
|
|
67
67
|
isDisabled,
|
|
68
68
|
isInvalid: invalid,
|
|
69
69
|
isRequired: required,
|
|
70
|
+
name,
|
|
71
|
+
onBlur,
|
|
72
|
+
orientation: inline ? "horizontal" : "vertical",
|
|
73
|
+
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }),
|
|
70
74
|
label: showLabel && // eslint-disable-next-line jsx-a11y/label-has-associated-control
|
|
71
75
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { children: [
|
|
72
76
|
label,
|
|
73
|
-
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
77
|
+
showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId })
|
|
74
78
|
] }),
|
|
75
|
-
name,
|
|
76
|
-
orientation: inline ? "horizontal" : "vertical",
|
|
77
|
-
onBlur,
|
|
78
|
-
ref,
|
|
79
79
|
children: options.map((option) => {
|
|
80
80
|
if ("value" in option) {
|
|
81
81
|
const optionTestId = _pixelutils.slugify.call(void 0,
|
|
@@ -109,4 +109,4 @@ var RadioGroup_default2 = RadioGroup_default;
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
exports.RadioGroup_default = RadioGroup_default; exports.RadioGroup_default2 = RadioGroup_default2;
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-XQAN6TTP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-XQAN6TTP.cjs","../src/RadioGroup/RadioGroup.tsx","../src/RadioGroup/index.ts"],"names":["RadioGroup_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-XQAN6TTP.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup, Radio } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const radioGroupVariants = tv({\n slots: {\n // Needs group for group-data condition\n base: 'group',\n itemBase: '',\n itemControl: 'bg-focus group-data-[invalid=true]:bg-danger',\n itemDescription: '',\n itemLabel: 'text-sm',\n itemLabelWrapper: '',\n itemWrapper:\n 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid=\"true\"]):not(group-data-[selected=\"false\"])]:border-focus', // TODO: get rid of !.\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-foreground group-data-[invalid=true]:text-danger text-sm subpixel-antialiased',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioGroupVariants>;\ntype ClassName = TVClassName<typeof radioGroupVariants>;\n\nexport interface RadioGroupOption {\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: React.ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioGroupProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioGroupOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioGroup component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioGroup = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n}: RadioGroupProps): ReactElement => {\n const { control, debugMode, getFieldState, getValues } = useFormContext();\n\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({ control, disabled, name });\n const { onChange, disabled: isDisabled, onBlur, ref } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = radioGroupVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const itemClassNames = {\n base: classNames.itemBase,\n control: classNames.itemControl,\n description: classNames.itemDescription,\n label: classNames.itemLabel,\n labelWrapper: classNames.itemLabelWrapper,\n wrapper: classNames.itemWrapper,\n };\n\n return (\n <HeroRadioGroup\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n ref={ref}\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={getValues()[name]}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n >\n {options.map((option) => {\n if ('value' in option) {\n const optionTestId = slugify(\n `${testId}_option_${option.testId || option.value}`,\n { replaceDots: true },\n );\n return (\n <Radio\n key={option.value}\n classNames={itemClassNames}\n data-testid={optionTestId}\n isDisabled={isDisabled || option.disabled}\n onChange={onChange}\n value={option.value}\n >\n {option.label ? option.label : option.value}\n </Radio>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioGroup;\n","import RadioGroup from './RadioGroup';\n\nexport type { RadioGroupProps } from './RadioGroup';\n\nexport { RadioGroup };\n\nexport default RadioGroup;\n"]}
|
|
@@ -16,10 +16,12 @@ var FieldValidationError = ({
|
|
|
16
16
|
"aria-label": `Validation errors of field ${testId}`,
|
|
17
17
|
className,
|
|
18
18
|
"data-testid": _pixelutils.slugify.call(void 0, `${testId}_error`),
|
|
19
|
-
children: errors.map(({ message }, i) =>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
children: errors.map(({ message }, i) => {
|
|
20
|
+
return (
|
|
21
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
22
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: message }) }, `error_${i}`)
|
|
23
|
+
);
|
|
24
|
+
})
|
|
23
25
|
}
|
|
24
26
|
);
|
|
25
27
|
};
|
|
@@ -32,4 +34,4 @@ var FieldValidationError_default2 = FieldValidationError_default;
|
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
exports.FieldValidationError_default = FieldValidationError_default; exports.FieldValidationError_default2 = FieldValidationError_default2;
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-Y3AB4GV6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-Y3AB4GV6.cjs","../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"names":[],"mappings":"AAAA;ACEA,oDAAwB;AAqCZ,+CAAA;AAvBZ,IAAM,qBAAA,EAAuB,CAAC;AAAA,EAC5B,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,KAAA;AAAA,EACA;AACF,CAAA,EAAA,GAAiC;AAE/B,EAAA,GAAA,CAAI,CAAC,MAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAK,EAAA,GAAK,CAAC,KAAA,CAAM,MAAA,EAAS;AACrD,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,OAAA,EAAuB,KAAA,CAAM,OAAA,CAAQ,KAAK,EAAA,EAAI,MAAA,EAAQ,CAAC,KAAK,CAAA;AAElE,EAAA,uBACE,6BAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,CAAA,2BAAA,EAA8B,MAAM,CAAA,CAAA;AAChD,MAAA;AACsC,MAAA;AAEN,MAAA;AAC9B,QAAA;AAAA;AAGI,0BAAA;AACF,QAAA;AAEH,MAAA;AAAA,IAAA;AACH,EAAA;AAEJ;AAEe;ADnB0C;AACA;AEvB1C;AFyB0C;AACA;AACA;AACA;AACA","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-Y3AB4GV6.cjs","sourcesContent":[null,"import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '@fuf-stack/pixel-utils';\n\nexport interface FieldValidationErrorProps {\n /** CSS class name */\n className?: string;\n /** Field errors */\n error: FieldError | FieldError[];\n /** HTML data-testid attribute used in e2e tests */\n testId: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n className = undefined,\n error,\n testId,\n}: FieldValidationErrorProps) => {\n // render nothing when no errors\n if (!error || (Array.isArray(error) && !error.length)) {\n return null;\n }\n\n // get errors as array\n const errors: FieldError[] = Array.isArray(error) ? error : [error];\n\n return (\n <ul\n aria-label={`Validation errors of field ${testId}`}\n className={className}\n data-testid={slugify(`${testId}_error`)}\n >\n {errors.map(({ message }, i) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{message}</div>\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkOE5BOGGXcjs = require('./chunk-OE5BOGGX.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkFWIJ3N3Icjs = require('./chunk-FWIJ3N3I.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -91,9 +91,9 @@ var Select = ({
|
|
|
91
91
|
testId: _testId = void 0
|
|
92
92
|
}) => {
|
|
93
93
|
var _a;
|
|
94
|
-
const { control, debugMode, getFieldState } =
|
|
94
|
+
const { control, debugMode, getFieldState } = _chunkFWIJ3N3Icjs.useFormContext.call(void 0, );
|
|
95
95
|
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
96
|
-
const { field } =
|
|
96
|
+
const { field } = _chunkFWIJ3N3Icjs.useController.call(void 0, { control, disabled, name });
|
|
97
97
|
const { onChange, value, ref, onBlur } = field;
|
|
98
98
|
const [isFocused, setIsFocused] = _react.useState.call(void 0, false);
|
|
99
99
|
const variants = selectVariants();
|
|
@@ -127,7 +127,7 @@ var Select = ({
|
|
|
127
127
|
"data-testid": `${testId}_wrapper`,
|
|
128
128
|
"data-required": required,
|
|
129
129
|
children: [
|
|
130
|
-
showLabel
|
|
130
|
+
showLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
131
131
|
"label",
|
|
132
132
|
{
|
|
133
133
|
className: classNames.label,
|
|
@@ -136,16 +136,38 @@ var Select = ({
|
|
|
136
136
|
id: getLabelProps().id,
|
|
137
137
|
children: [
|
|
138
138
|
label,
|
|
139
|
-
showTestIdCopyButton
|
|
139
|
+
showTestIdCopyButton ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId }) : null
|
|
140
140
|
]
|
|
141
141
|
}
|
|
142
|
-
),
|
|
142
|
+
) : null,
|
|
143
143
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
144
144
|
_reactselect2.default,
|
|
145
145
|
{
|
|
146
|
+
menuShouldBlockScroll: true,
|
|
147
|
+
unstyled: true,
|
|
146
148
|
"aria-errormessage": "",
|
|
147
|
-
"aria-labelledby": (_a = getTriggerProps()["aria-labelledby"]) == null ? void 0 : _a.split(" ")[1],
|
|
148
149
|
"aria-invalid": invalid,
|
|
150
|
+
components: {
|
|
151
|
+
Input: InputComponent,
|
|
152
|
+
Option: OptionComponent,
|
|
153
|
+
DropdownIndicator: DropdownIndicatorComponent,
|
|
154
|
+
Control: ControlComponent
|
|
155
|
+
},
|
|
156
|
+
"aria-labelledby": (_a = getTriggerProps()["aria-labelledby"]) == null ? void 0 : _a.split(" ")[1],
|
|
157
|
+
"data-testid": testId,
|
|
158
|
+
filterOption,
|
|
159
|
+
formatOptionLabel: renderOptionLabel,
|
|
160
|
+
inputValue,
|
|
161
|
+
instanceId: name,
|
|
162
|
+
isClearable: clearable,
|
|
163
|
+
isDisabled: disabled,
|
|
164
|
+
isLoading: loading,
|
|
165
|
+
name,
|
|
166
|
+
isMulti: multiSelect,
|
|
167
|
+
menuPosition: "fixed",
|
|
168
|
+
onInputChange,
|
|
169
|
+
options,
|
|
170
|
+
placeholder,
|
|
149
171
|
classNames: {
|
|
150
172
|
control: () => _pixelutils.cn.call(void 0, classNames.control, {
|
|
151
173
|
[classNames.control_focused]: isFocused && !invalid
|
|
@@ -176,26 +198,6 @@ var Select = ({
|
|
|
176
198
|
singleValue: () => _pixelutils.cn.call(void 0, classNames.singleValue, `${getValueProps().className}`),
|
|
177
199
|
valueContainer: () => classNames.valueContainer
|
|
178
200
|
},
|
|
179
|
-
components: {
|
|
180
|
-
Input: InputComponent,
|
|
181
|
-
Option: OptionComponent,
|
|
182
|
-
DropdownIndicator: DropdownIndicatorComponent,
|
|
183
|
-
Control: ControlComponent
|
|
184
|
-
},
|
|
185
|
-
"data-testid": testId,
|
|
186
|
-
filterOption,
|
|
187
|
-
formatOptionLabel: renderOptionLabel,
|
|
188
|
-
inputValue,
|
|
189
|
-
instanceId: name,
|
|
190
|
-
isClearable: clearable,
|
|
191
|
-
isDisabled: disabled,
|
|
192
|
-
isLoading: loading,
|
|
193
|
-
isMulti: multiSelect,
|
|
194
|
-
name,
|
|
195
|
-
menuPosition: "fixed",
|
|
196
|
-
menuShouldBlockScroll: true,
|
|
197
|
-
options,
|
|
198
|
-
placeholder,
|
|
199
201
|
onBlur: (_e) => {
|
|
200
202
|
setIsFocused(false);
|
|
201
203
|
return onBlur();
|
|
@@ -212,14 +214,11 @@ var Select = ({
|
|
|
212
214
|
onFocus: (_e) => {
|
|
213
215
|
setIsFocused(true);
|
|
214
216
|
},
|
|
215
|
-
onInputChange,
|
|
216
217
|
ref,
|
|
217
|
-
value: options.find((option) => option.value === value)
|
|
218
|
-
unstyled: true
|
|
218
|
+
value: options.find((option) => option.value === value)
|
|
219
219
|
}
|
|
220
220
|
),
|
|
221
|
-
error
|
|
222
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGNYQC5IJcjs.FieldValidationError_default, { error, testId }) })) }))
|
|
221
|
+
error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error, testId }) })) })) : null
|
|
223
222
|
]
|
|
224
223
|
})
|
|
225
224
|
);
|
|
@@ -233,4 +232,4 @@ var Select_default2 = Select_default;
|
|
|
233
232
|
|
|
234
233
|
|
|
235
234
|
exports.Select_default = Select_default; exports.Select_default2 = Select_default2;
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
235
|
+
//# sourceMappingURL=chunk-YOMV7IQD.cjs.map
|