@fuf-stack/uniform 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FieldArray/index.cjs +13 -0
- package/dist/FieldArray/index.cjs.map +1 -0
- package/dist/FieldArray/index.d.cts +8 -0
- package/dist/FieldArray/index.d.ts +8 -0
- package/dist/FieldArray/index.js +13 -0
- package/dist/FieldArray/index.js.map +1 -0
- package/dist/FieldArray-DUvn98Fe.d.cts +27 -0
- package/dist/FieldArray-DUvn98Fe.d.ts +27 -0
- package/dist/Form/index.cjs +2 -2
- package/dist/Form/index.cjs.map +1 -1
- package/dist/Form/index.d.cts +2 -2
- package/dist/Form/index.d.ts +2 -2
- package/dist/Form/index.js +1 -1
- package/dist/{Form-Bv0R3QNk.d.cts → Form-nJbG1hNH.d.cts} +1 -1
- package/dist/{Form-Bv0R3QNk.d.ts → Form-nJbG1hNH.d.ts} +1 -1
- package/dist/Grid/index.cjs.map +1 -1
- package/dist/Input/index.cjs +3 -3
- package/dist/Input/index.cjs.map +1 -1
- package/dist/Input/index.js +2 -2
- package/dist/RadioGroup/index.cjs +13 -0
- package/dist/RadioGroup/index.cjs.map +1 -0
- package/dist/RadioGroup/index.d.cts +7 -0
- package/dist/RadioGroup/index.d.ts +7 -0
- package/dist/RadioGroup/index.js +13 -0
- package/dist/RadioGroup/index.js.map +1 -0
- package/dist/RadioGroup-BU4K9cnS.d.cts +40 -0
- package/dist/RadioGroup-BU4K9cnS.d.ts +40 -0
- package/dist/Select/index.cjs +13 -0
- package/dist/Select/index.cjs.map +1 -0
- package/dist/Select/index.d.cts +8 -0
- package/dist/Select/index.d.ts +8 -0
- package/dist/Select/index.js +13 -0
- package/dist/Select/index.js.map +1 -0
- package/dist/Select-Mp6Y00dT.d.cts +40 -0
- package/dist/Select-Mp6Y00dT.d.ts +40 -0
- package/dist/SubmitButton/index.cjs +2 -2
- package/dist/SubmitButton/index.cjs.map +1 -1
- package/dist/SubmitButton/index.js +1 -1
- package/dist/Switch/index.cjs +13 -0
- package/dist/Switch/index.cjs.map +1 -0
- package/dist/Switch/index.d.cts +7 -0
- package/dist/Switch/index.d.ts +7 -0
- package/dist/Switch/index.js +13 -0
- package/dist/Switch/index.js.map +1 -0
- package/dist/Switch-DmjDKgKs.d.cts +20 -0
- package/dist/Switch-DmjDKgKs.d.ts +20 -0
- package/dist/TextArea/index.cjs +13 -0
- package/dist/TextArea/index.cjs.map +1 -0
- package/dist/TextArea/index.d.cts +8 -0
- package/dist/TextArea/index.d.ts +8 -0
- package/dist/TextArea/index.js +13 -0
- package/dist/TextArea/index.js.map +1 -0
- package/dist/TextArea-B-sKvTkd.d.cts +25 -0
- package/dist/TextArea-B-sKvTkd.d.ts +25 -0
- package/dist/chunk-3K4JQTPQ.js +205 -0
- package/dist/chunk-3K4JQTPQ.js.map +1 -0
- package/dist/chunk-3SSUEUB5.js +81 -0
- package/dist/chunk-3SSUEUB5.js.map +1 -0
- package/dist/chunk-53AGVLUG.cjs +287 -0
- package/dist/chunk-53AGVLUG.cjs.map +1 -0
- package/dist/chunk-57OFVPRD.js +287 -0
- package/dist/chunk-57OFVPRD.js.map +1 -0
- package/dist/chunk-6GN255GP.cjs.map +1 -1
- package/dist/chunk-BBB4FEY6.cjs.map +1 -1
- package/dist/{chunk-OYXZQOGU.js → chunk-BGSQU5EH.js} +4 -4
- package/dist/{chunk-2CKPLOCK.cjs → chunk-FASB7HG3.cjs} +5 -5
- package/dist/chunk-FASB7HG3.cjs.map +1 -0
- package/dist/{chunk-BNTEIMNY.cjs → chunk-JFCOC5TW.cjs} +32 -25
- package/dist/chunk-JFCOC5TW.cjs.map +1 -0
- package/dist/chunk-JR7MAHBR.cjs +81 -0
- package/dist/chunk-JR7MAHBR.cjs.map +1 -0
- package/dist/chunk-KC3PZFGE.js +76 -0
- package/dist/chunk-KC3PZFGE.js.map +1 -0
- package/dist/{chunk-HT3LKDHX.cjs → chunk-KMMS4G7A.cjs} +4 -2
- package/dist/chunk-KMMS4G7A.cjs.map +1 -0
- package/dist/chunk-OSEU4ZUE.cjs +205 -0
- package/dist/chunk-OSEU4ZUE.cjs.map +1 -0
- package/dist/{chunk-5FMJUJ7H.js → chunk-QD6IQL6U.js} +3 -3
- package/dist/{chunk-5FMJUJ7H.js.map → chunk-QD6IQL6U.js.map} +1 -1
- package/dist/chunk-QTL5FREE.cjs.map +1 -1
- package/dist/{chunk-OV5RMSYD.js → chunk-T3CCNJHK.js} +4 -2
- package/dist/chunk-T3CCNJHK.js.map +1 -0
- package/dist/chunk-WNESYY6E.cjs +239 -0
- package/dist/chunk-WNESYY6E.cjs.map +1 -0
- package/dist/chunk-WQRM7G4C.cjs.map +1 -1
- package/dist/chunk-WRYE2CF5.cjs +76 -0
- package/dist/chunk-WRYE2CF5.cjs.map +1 -0
- package/dist/{chunk-AGAYQTFD.cjs → chunk-XJ3JTLXZ.cjs} +3 -3
- package/dist/chunk-XJ3JTLXZ.cjs.map +1 -0
- package/dist/{chunk-KFRKKWZT.js → chunk-Y4CFVCUN.js} +32 -25
- package/dist/chunk-Y4CFVCUN.js.map +1 -0
- package/dist/chunk-YAVU7ZYD.js +239 -0
- package/dist/chunk-YAVU7ZYD.js.map +1 -0
- package/dist/helpers/index.cjs.map +1 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/index.cjs +25 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +26 -6
- package/dist/partials/FieldCopyTestIdButton/index.cjs +2 -2
- package/dist/partials/FieldCopyTestIdButton/index.cjs.map +1 -1
- package/dist/partials/FieldCopyTestIdButton/index.js +1 -1
- package/dist/partials/FieldValidationError/index.cjs.map +1 -1
- package/package.json +44 -19
- package/dist/chunk-2CKPLOCK.cjs.map +0 -1
- package/dist/chunk-AGAYQTFD.cjs.map +0 -1
- package/dist/chunk-BNTEIMNY.cjs.map +0 -1
- package/dist/chunk-HT3LKDHX.cjs.map +0 -1
- package/dist/chunk-KFRKKWZT.js.map +0 -1
- package/dist/chunk-OV5RMSYD.js.map +0 -1
- /package/dist/{chunk-OYXZQOGU.js.map → chunk-BGSQU5EH.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Grid/Grid.tsx","../src/Grid/index.ts"],"names":["Grid_default"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-6GN255GP.cjs","../src/Grid/Grid.tsx","../src/Grid/index.ts"],"names":["Grid_default"],"mappings":"AAAA;ACEA,oDAAmB;AAoBf,+CAAA;AANJ,IAAM,KAAA,EAAO,CAAC;AAAA,EACZ,SAAA,EAAW,IAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,OAAA,EAAS,KAAA;AACX,CAAA,EAAA,GAAiB;AACf,EAAA,uBACE,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAW,4BAAA,YAAG,EAAc,SAAS,CAAA,EAAG,aAAA,EAAa,MAAA,EACvD,SAAA,CACH,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,EAAQ,IAAA;ADjBf;AACA;AENA,IAAOA,cAAAA,EAAQ,YAAA;AFQf;AACA;AACE;AACA;AACF,2EAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-6GN255GP.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nexport interface GridProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Defines the default grid for form components\n */\nconst Grid = ({\n children = null,\n className = undefined,\n testId = undefined,\n}: GridProps) => {\n return (\n <div className={cn('grid gap-6', className)} data-testid={testId}>\n {children}\n </div>\n );\n};\n\nexport default Grid;\n","import Grid from './Grid';\n\nexport type { GridProps } from './Grid';\n\nexport { Grid };\n\nexport default Grid;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/slugify/slugify.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-BBB4FEY6.cjs","../src/helpers/slugify/slugify.ts"],"names":[],"mappings":"AAAA;ACIA,wEAAiB;AAEV,IAAM,QAAA,EAAU,CAAC,MAAA,EAAgB,OAAA,EAAA,GAA0B;AAChE,EAAA,MAAM,YAAA,kBAAc,OAAA,2BAAS,cAAA,GAAe,GAAA;AAC5C,EAAA,OAAO,4BAAA,MAAK,EAAQ;AAAA,IAClB,GAAG,cAAA,CAAK,QAAA,CAAS,KAAA,CAAM,OAAA;AAAA,IACvB,OAAA,EAAS;AAAA,MACP,GAAG,cAAA,CAAK,QAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,OAAA;AAAA;AAAA,MAE/B,GAAA,EAAK,GAAA;AAAA;AAAA,MAEL,GAAI,YAAA,IAAgB,IAAA,EAAM,EAAE,GAAA,EAAK,IAAI,EAAA,EAAI,CAAC;AAAA,IAC5C,CAAA;AAAA,IACA,WAAA;AAAA,IACA,GAAI,QAAA,GAAW,CAAC;AAAA,EAClB,CAAC,CAAA;AACH,CAAA;ADHA;AACA;AACE;AACF,0BAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-BBB4FEY6.cjs","sourcesContent":[null,"/* eslint-disable import/prefer-default-export */\n\nimport type { Options as SlugOptions } from 'slug';\n\nimport slug from 'slug';\n\nexport const slugify = (string: string, options?: SlugOptions) => {\n const replacement = options?.replacement || '_';\n return slug(string, {\n ...slug.defaults.modes.rfc3986,\n charmap: {\n ...slug.defaults.modes.rfc3986.charmap,\n // allow dots by default\n '.': '.',\n // convert hyphens to underscores (when replacement is not hyphen)\n ...(replacement !== '-' ? { '-': '_' } : {}),\n },\n replacement,\n ...(options || {}),\n });\n};\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FieldCopyTestIdButton_default
|
|
3
|
+
} from "./chunk-T3CCNJHK.js";
|
|
1
4
|
import {
|
|
2
5
|
FieldValidationError_default
|
|
3
6
|
} from "./chunk-DBLODROX.js";
|
|
4
7
|
import {
|
|
5
8
|
useFormContext
|
|
6
9
|
} from "./chunk-BCMPSLSG.js";
|
|
7
|
-
import {
|
|
8
|
-
FieldCopyTestIdButton_default
|
|
9
|
-
} from "./chunk-OV5RMSYD.js";
|
|
10
10
|
|
|
11
11
|
// src/Input/Input.tsx
|
|
12
12
|
import { Controller } from "react-hook-form";
|
|
@@ -78,4 +78,4 @@ export {
|
|
|
78
78
|
Input_default,
|
|
79
79
|
Input_default2
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-BGSQU5EH.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
|
|
10
10
|
|
|
11
11
|
// src/Input/Input.tsx
|
|
12
12
|
var _reacthookform = require('react-hook-form');
|
|
@@ -50,7 +50,7 @@ var Input = ({
|
|
|
50
50
|
isRequired: required,
|
|
51
51
|
label: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
52
52
|
label,
|
|
53
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
53
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default, { testId })
|
|
54
54
|
] }),
|
|
55
55
|
labelPlacement: "outside",
|
|
56
56
|
name,
|
|
@@ -78,4 +78,4 @@ var Input_default2 = Input_default;
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
exports.Input_default = Input_default; exports.Input_default2 = Input_default2;
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-FASB7HG3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-FASB7HG3.cjs","../src/Input/Input.tsx","../src/Input/index.ts"],"names":["Input_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACRA,gDAA2B;AAE3B,0CAAmC;AAEnC,oDAAmB;AA4DgB,+CAAA;AA9BnC,IAAM,MAAA,EAAQ,CAAC;AAAA,EACb,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,SAAA,EAAW,KAAA;AAAA,EACX,WAAA,EAAa,KAAA,CAAA;AAAA,EACb,MAAA,EAAQ,KAAA,CAAA;AAAA,EACR,IAAA;AAAA,EACA,YAAA,EAAc,GAAA;AAAA,EACd,aAAA,EAAe,KAAA,CAAA;AAAA,EACf,MAAA,EAAQ,QAAA,EAAU,KAAA,CAAA;AAAA,EAClB,KAAA,EAAO,KAAA;AACT,CAAA,EAAA,GAAkB;AAChB,EAAA,MAAM,EAAE,OAAA,EAAS,cAAc,EAAA,EAAI,8CAAA,CAAe;AAClD,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,OAAO,EAAA,EAAI,aAAA,CAAc,IAAA,EAAM,OAAO,CAAA;AAExE,EAAA,uBACE,6BAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA,EAAQ,CAAC;AAAA,QACP,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,IAAI;AAAA,MAC9D,CAAA,EAAA,GAAM;AACJ,QAAA,uBACE,6BAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,YACvB,UAAA,EAAY;AAAA,cACV,YAAA,EAAc;AAAA,YAChB,CAAA;AAAA,YACA,aAAA,EAAa,MAAA;AAAA,YACb,UAAA;AAAA,YACA,YAAA,EAAc,MAAA,mBAAS,6BAAA,8CAAC,EAAA,EAAqB,MAAA,CAAc,CAAA;AAAA,YAC3D,UAAA;AAAA,YACA,SAAA,EAAW,OAAA;AAAA,YACX,UAAA,EAAY,QAAA;AAAA,YACZ,KAAA,kBACE,8BAAA,oBAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,8BACD,6BAAA,+CAAC,EAAA,EAAsB,OAAA,CAAgB;AAAA,YAAA,EAAA,CACzC,CAAA;AAAA,YAEF,cAAA,EAAe,SAAA;AAAA,YACf,IAAA;AAAA,YACA,MAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA;AAAA,YACA,MAAA,EAAO,IAAA;AAAA,YACP,GAAA;AAAA,YACA,YAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA,OAAA,EAAQ;AAAA,UAAA;AAAA,QACV,CAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAO,cAAA,EAAQ,KAAA;ADtBf;AACA;AEnEA,IAAOA,eAAAA,EAAQ,aAAA;AFqEf;AACA;AACE;AACA;AACF,+EAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-FASB7HG3.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { Controller } from 'react-hook-form';\n\nimport { Input as NextInput } from '@nextui-org/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface InputProps {\n /** CSS class name */\n className?: string;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** form field placeholder */\n placeholder?: string;\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [NextUI Input](https://nextui.org/docs/components/input)\n */\nconst Input = ({\n className = undefined,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n placeholder = ' ',\n startContent = undefined,\n testId: _testId = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={name}\n render={({\n field: { disabled: isDisabled, onChange, onBlur, value, ref },\n }) => {\n return (\n <NextInput\n className={cn(className)}\n classNames={{\n inputWrapper: 'group-data-[focus=true]:border-primary',\n }}\n data-testid={testId}\n endContent={endContent}\n errorMessage={error && <FieldValidationError error={error} />}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n <>\n {label}\n <FieldCopyTestIdButton testId={testId} />\n </>\n }\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={onChange}\n placeholder={placeholder}\n radius=\"sm\"\n ref={ref}\n startContent={startContent}\n type={type}\n value={value}\n variant=\"bordered\"\n />\n );\n }}\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"]}
|
|
@@ -7,18 +7,18 @@ var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
|
|
|
7
7
|
var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
|
|
8
8
|
|
|
9
9
|
// src/Form/Form.tsx
|
|
10
|
-
var _react = require('react');
|
|
11
10
|
var _reacthookform = require('react-hook-form');
|
|
12
11
|
var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
13
12
|
|
|
14
13
|
// src/Form/subcomponents/FormDebugViewer.tsx
|
|
15
|
-
|
|
14
|
+
var _react = require('react');
|
|
16
15
|
var _fa = require('react-icons/fa');
|
|
17
16
|
var _fa6 = require('react-icons/fa6');
|
|
18
17
|
|
|
19
18
|
var _pixels = require('@fuf-stack/pixels');
|
|
20
19
|
var _jsxruntime = require('react/jsx-runtime');
|
|
21
20
|
var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
|
|
21
|
+
var LOCALSTORAGE_COPY_TEST_ID_KEY = "uniform:form-debug-copy-test-id-enabled";
|
|
22
22
|
var FormDebugViewer = ({ className = void 0 }) => {
|
|
23
23
|
const {
|
|
24
24
|
watch,
|
|
@@ -26,6 +26,10 @@ var FormDebugViewer = ({ className = void 0 }) => {
|
|
|
26
26
|
validation
|
|
27
27
|
} = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
|
|
28
28
|
const [debug, setDebug] = _pixels.useLocalStorage.call(void 0, LOCALSTORAGE_DEBUG_KEY, false);
|
|
29
|
+
const [copyTestId, setCopyTestId] = _pixels.useLocalStorage.call(void 0,
|
|
30
|
+
LOCALSTORAGE_COPY_TEST_ID_KEY,
|
|
31
|
+
false
|
|
32
|
+
);
|
|
29
33
|
const [validationErrors, setValidationErrors] = _react.useState.call(void 0, null);
|
|
30
34
|
const formValues = watch();
|
|
31
35
|
_react.useEffect.call(void 0,
|
|
@@ -53,7 +57,7 @@ var FormDebugViewer = ({ className = void 0 }) => {
|
|
|
53
57
|
}
|
|
54
58
|
);
|
|
55
59
|
}
|
|
56
|
-
return /* @__PURE__ */ _jsxruntime.
|
|
60
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
57
61
|
_pixels.Card,
|
|
58
62
|
{
|
|
59
63
|
className: _pixelutils.cn.call(void 0, className),
|
|
@@ -69,18 +73,30 @@ var FormDebugViewer = ({ className = void 0 }) => {
|
|
|
69
73
|
}
|
|
70
74
|
)
|
|
71
75
|
] }),
|
|
72
|
-
children:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
78
|
+
_pixels.Button,
|
|
79
|
+
{
|
|
80
|
+
variant: copyTestId ? "solid" : "light",
|
|
81
|
+
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa6.FaBullseye, {}),
|
|
82
|
+
className: "mb-4 ml-auto mr-auto",
|
|
83
|
+
onClick: () => setCopyTestId(!copyTestId),
|
|
84
|
+
children: copyTestId ? "Hide CopyButton" : "Show CopyButton"
|
|
81
85
|
}
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
88
|
+
_pixels.Json,
|
|
89
|
+
{
|
|
90
|
+
value: {
|
|
91
|
+
values: formValues,
|
|
92
|
+
errors: validationErrors,
|
|
93
|
+
dirtyFields,
|
|
94
|
+
isValid,
|
|
95
|
+
isSubmitting
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
]
|
|
84
100
|
}
|
|
85
101
|
);
|
|
86
102
|
};
|
|
@@ -116,20 +132,11 @@ var Form = ({
|
|
|
116
132
|
},
|
|
117
133
|
// set rhf mode
|
|
118
134
|
// see: https://react-hook-form.com/docs/useform#mode
|
|
119
|
-
mode: validationTrigger
|
|
135
|
+
mode: validationTrigger
|
|
120
136
|
} : {
|
|
121
137
|
defaultValues: initialValues
|
|
122
138
|
}
|
|
123
139
|
);
|
|
124
|
-
_react.useEffect.call(void 0,
|
|
125
|
-
() => {
|
|
126
|
-
if (validationTrigger === "all-instant") {
|
|
127
|
-
methods.trigger();
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
131
|
-
[validationTrigger]
|
|
132
|
-
);
|
|
133
140
|
return (
|
|
134
141
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
135
142
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWQRM7G4Ccjs.FormContext_default, { ...methods, validation, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-row justify-between gap-6", children: [
|
|
@@ -156,4 +163,4 @@ var Form_default2 = Form_default;
|
|
|
156
163
|
|
|
157
164
|
|
|
158
165
|
exports.Form_default = Form_default; exports.Form_default2 = Form_default2;
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
166
|
+
//# sourceMappingURL=chunk-JFCOC5TW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JFCOC5TW.cjs","../src/Form/Form.tsx","../src/Form/subcomponents/FormDebugViewer.tsx","../src/Form/index.ts"],"names":["jsx","jsxs","cn","Form_default"],"mappings":"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","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JFCOC5TW.cjs","sourcesContent":[null,"import type { VetoInstance } from '@fuf-stack/veto';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, SubmitHandler } from 'react-hook-form';\n\nimport { useForm } from 'react-hook-form';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { slugify } from '../helpers';\nimport FormProvider from './subcomponents/FormContext';\nimport FormDebugViewer from './subcomponents/FormDebugViewer';\n\n/**\n * recursively removes all fields that are null or undefined before\n * the form data is passed to the veto validation function\n */\nexport const removeNullishFields = (obj: Record<string, unknown>) => {\n return JSON.parse(\n JSON.stringify(obj, (_key, value) => {\n return value === null ? undefined : value;\n }),\n );\n};\n\nexport interface FormProps {\n /** form children */\n children: ReactNode | ReactNode[];\n /** CSS class name */\n className?: string | string[];\n /** initial form values */\n initialValues?: FieldValues;\n /** name of the form */\n name?: string;\n /** form submit handler */\n onSubmit: SubmitHandler<FieldValues>;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** veto validation schema */\n validation?: VetoInstance;\n /** when the validation should be triggered */\n validationTrigger?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n}\n\n/**\n * Form component that has to wrap every uniform\n */\nconst Form = ({\n children,\n className = undefined,\n initialValues = undefined,\n name = undefined,\n onSubmit,\n testId = undefined,\n validation = undefined,\n validationTrigger = 'all',\n}: FormProps) => {\n const methods = useForm(\n validation\n ? {\n defaultValues: initialValues,\n resolver: async (values) => {\n const { data, errors, ...rest } = await validation.validateAsync(\n removeNullishFields(values),\n );\n // https://github.com/react-hook-form/resolvers/blob/master/zod/src/zod.ts\n return { values: data || {}, errors: errors || {}, ...rest };\n },\n // set rhf mode\n // see: https://react-hook-form.com/docs/useform#mode\n mode: validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <FormProvider {...methods} validation={validation}>\n <div className=\"flex w-full flex-row justify-between gap-6\">\n <form\n className={cn('flex-grow', className)}\n data-testid={slugify(testId || name || '')}\n name={name}\n onSubmit={methods.handleSubmit(onSubmit)}\n >\n {children}\n </form>\n <FormDebugViewer className=\"w-96 flex-shrink\" />\n </div>\n </FormProvider>\n );\n};\n\nexport default Form;\n","import type { VetoError } from '@fuf-stack/veto';\n\nimport { useEffect, useState } from 'react';\nimport { FaTimes } from 'react-icons/fa';\nimport { FaBug, FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button, Card, Json, useLocalStorage } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../../hooks';\n\ninterface FormDebugViewerProps {\n /** CSS class name */\n className?: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\nconst LOCALSTORAGE_COPY_TEST_ID_KEY = 'uniform:form-debug-copy-test-id-enabled';\n\n/** Renders a form debug panel with information about the current form state */\nconst FormDebugViewer = ({ className = undefined }: FormDebugViewerProps) => {\n const {\n watch,\n formState: { dirtyFields, isValid, isSubmitting },\n validation,\n } = useFormContext();\n\n const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n const [copyTestId, setCopyTestId] = useLocalStorage(\n LOCALSTORAGE_COPY_TEST_ID_KEY,\n false,\n );\n\n const [validationErrors, setValidationErrors] = useState<\n VetoError['errors'] | null\n >(null);\n\n const formValues = watch();\n\n useEffect(\n () => {\n const updateValidationErrors = async () => {\n if (validation) {\n const validateResult = await validation?.validateAsync(formValues);\n setValidationErrors(validateResult?.errors);\n }\n };\n updateValidationErrors();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(formValues)],\n );\n\n if (!debug) {\n return (\n <Button\n ariaLabel=\"Enable form debug mode\"\n onClick={() => setDebug(!debug)}\n className=\"absolute bottom-2.5 right-2.5 w-5 text-default-400\"\n variant=\"light\"\n icon={<FaBug />}\n />\n );\n }\n\n return (\n <Card\n className={cn(className)}\n header={\n <div className=\"flex w-full flex-row justify-between\">\n <span className=\"text-lg\">Debug Mode</span>\n <Button\n icon={<FaTimes className=\"text-danger\" />}\n onClick={() => setDebug(false)}\n size=\"sm\"\n variant=\"flat\"\n />\n </div>\n }\n >\n <Button\n variant={copyTestId ? 'solid' : 'light'}\n icon={<FaBullseye />}\n className=\"mb-4 ml-auto mr-auto\"\n onClick={() => setCopyTestId(!copyTestId)}\n >\n {copyTestId ? 'Hide CopyButton' : 'Show CopyButton'}\n </Button>\n <Json\n value={{\n values: formValues,\n errors: validationErrors,\n dirtyFields,\n isValid,\n isSubmitting,\n }}\n />\n </Card>\n );\n};\nexport default FormDebugViewer;\n","import Form from './Form';\n\nexport type { FormProps } from './Form';\n\nexport { Form };\n\nexport default Form;\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
|
|
10
|
+
|
|
11
|
+
// src/Switch/Switch.tsx
|
|
12
|
+
var _reacthookform = require('react-hook-form');
|
|
13
|
+
var _input = require('@nextui-org/input');
|
|
14
|
+
var _switch = require('@nextui-org/switch');
|
|
15
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
16
|
+
var Switch = ({
|
|
17
|
+
className,
|
|
18
|
+
disabled = false,
|
|
19
|
+
label: _label = void 0,
|
|
20
|
+
name,
|
|
21
|
+
testId: _testId = void 0
|
|
22
|
+
}) => {
|
|
23
|
+
const { control, getFieldState } = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
|
|
24
|
+
const { error, required, testId, invalid } = getFieldState(name, _testId);
|
|
25
|
+
const { label, getInputProps, getHelperWrapperProps, getErrorMessageProps } = _input.useInput.call(void 0, {
|
|
26
|
+
errorMessage: JSON.stringify(error),
|
|
27
|
+
isInvalid: invalid,
|
|
28
|
+
isRequired: required,
|
|
29
|
+
label: _label,
|
|
30
|
+
labelPlacement: "outside",
|
|
31
|
+
placeholder: " "
|
|
32
|
+
});
|
|
33
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
34
|
+
_reacthookform.Controller,
|
|
35
|
+
{
|
|
36
|
+
name,
|
|
37
|
+
control,
|
|
38
|
+
disabled,
|
|
39
|
+
render: ({
|
|
40
|
+
field: { disabled: isDisabled, value, ref, onBlur, onChange }
|
|
41
|
+
}) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
42
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
43
|
+
_switch.Switch,
|
|
44
|
+
{
|
|
45
|
+
"aria-describedby": getInputProps()["aria-describedby"],
|
|
46
|
+
required,
|
|
47
|
+
isSelected: !!value,
|
|
48
|
+
className,
|
|
49
|
+
classNames: {
|
|
50
|
+
label: `text-bold block text-ellipsis text-small ${invalid ? "text-danger" : ""}`
|
|
51
|
+
},
|
|
52
|
+
"data-testid": testId,
|
|
53
|
+
isDisabled,
|
|
54
|
+
value,
|
|
55
|
+
onChange,
|
|
56
|
+
onBlur,
|
|
57
|
+
name,
|
|
58
|
+
ref,
|
|
59
|
+
children: [
|
|
60
|
+
label,
|
|
61
|
+
!!required && !!_label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "!text-danger", children: " *" }),
|
|
62
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default, { testId })
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
error && // eslint-disable-next-line react/jsx-props-no-spreading
|
|
67
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...getHelperWrapperProps(), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...getErrorMessageProps(), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQTL5FREEcjs.FieldValidationError_default, { error }) }) })
|
|
68
|
+
] })
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
};
|
|
72
|
+
var Switch_default = Switch;
|
|
73
|
+
|
|
74
|
+
// src/Switch/index.ts
|
|
75
|
+
var Switch_default2 = Switch_default;
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
exports.Switch_default = Switch_default; exports.Switch_default2 = Switch_default2;
|
|
81
|
+
//# sourceMappingURL=chunk-JR7MAHBR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JR7MAHBR.cjs","../src/Switch/Switch.tsx","../src/Switch/index.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,gDAA2B;AAE3B,0CAAyB;AACzB,4CAAqC;AAkD7B,+CAAA;AA5BR,IAAM,OAAA,EAAS,CAAC;AAAA,EACd,SAAA;AAAA,EACA,SAAA,EAAW,KAAA;AAAA,EACX,KAAA,EAAO,OAAA,EAAS,KAAA,CAAA;AAAA,EAChB,IAAA;AAAA,EACA,MAAA,EAAQ,QAAA,EAAU,KAAA;AACpB,CAAA,EAAA,GAAmB;AACjB,EAAA,MAAM,EAAE,OAAA,EAAS,cAAc,EAAA,EAAI,8CAAA,CAAe;AAClD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAQ,EAAA,EAAI,aAAA,CAAc,IAAA,EAAM,OAAO,CAAA;AAExE,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,qBAAA,EAAuB,qBAAqB,EAAA,EACxE,6BAAA;AAAS,IACP,YAAA,EAAc,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AAAA,IAClC,SAAA,EAAW,OAAA;AAAA,IACX,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,cAAA,EAAgB,SAAA;AAAA,IAChB,WAAA,EAAa;AAAA,EACf,CAAC,CAAA;AAEH,EAAA,uBACE,6BAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA,EAAQ,CAAC;AAAA,QACP,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,SAAS;AAAA,MAC9D,CAAA,EAAA,mBACE,8BAAA,oBAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,8BAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAkB,aAAA,CAAc,CAAA,CAAE,kBAAkB,CAAA;AAAA,YACpD,QAAA;AAAA,YACA,UAAA,EAAY,CAAC,CAAC,KAAA;AAAA,YACd,SAAA;AAAA,YACA,UAAA,EAAY;AAAA,cACV,KAAA,EAAO,CAAA,yCAAA,EAA4C,QAAA,EAAU,cAAA,EAAgB,EAAE,CAAA;AAAA,YAAA;AACjF,YAAA;AACa,YAAA;AACb,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AAEC,cAAA;AAAA,cAAA;AAE2C,8BAAA;AAEL,YAAA;AAAA,UAAA;AAAA,QAAA;AACzC,QAAA;AACC,wBAAA;AAOC,MAAA;AAEJ,IAAA;AAAA,EAAA;AAIR;AAEA;ADnBA;AACA;AEnEA;AFqEA;AACA;AACA;AACA;AACA","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JR7MAHBR.cjs","sourcesContent":[null,"import { Controller } from 'react-hook-form';\n\nimport { useInput } from '@nextui-org/input';\nimport { Switch as NextSwitch } from '@nextui-org/switch';\n\nimport { useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface SwitchProps {\n /** CSS class name */\n className: string;\n /** whether the select should be disabled */\n disabled?: boolean;\n /** component displayed next to the switch. */\n label: React.ReactNode;\n /** name the field is registered under */\n name: string;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Switch component based on [NextUI Switch](https://nextui.org/docs/components/switch)\n */\nconst Switch = ({\n className,\n disabled = false,\n label: _label = undefined,\n name,\n testId: _testId = undefined,\n}: SwitchProps) => {\n const { control, getFieldState } = useFormContext();\n const { error, required, testId, invalid } = getFieldState(name, _testId);\n\n const { label, getInputProps, getHelperWrapperProps, getErrorMessageProps } =\n useInput({\n errorMessage: JSON.stringify(error),\n isInvalid: invalid,\n isRequired: required,\n label: _label,\n labelPlacement: 'outside',\n placeholder: ' ',\n });\n\n return (\n <Controller\n name={name}\n control={control}\n disabled={disabled}\n render={({\n field: { disabled: isDisabled, value, ref, onBlur, onChange },\n }) => (\n <>\n <NextSwitch\n aria-describedby={getInputProps()['aria-describedby']}\n required={required}\n isSelected={!!value}\n className={className}\n classNames={{\n label: `text-bold block text-ellipsis text-small ${invalid ? 'text-danger' : ''}`,\n }}\n data-testid={testId}\n isDisabled={isDisabled}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n name={name}\n ref={ref}\n >\n {label}\n {!!required && !!_label && (\n <span className=\"!text-danger\">{' \\u002A'}</span>\n )}\n <FieldCopyTestIdButton testId={testId} />\n </NextSwitch>\n {error && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <div {...getHelperWrapperProps()}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <div {...getErrorMessageProps()}>\n <FieldValidationError error={error} />\n </div>\n </div>\n )}\n </>\n )}\n />\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"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FieldCopyTestIdButton_default
|
|
3
|
+
} from "./chunk-T3CCNJHK.js";
|
|
4
|
+
import {
|
|
5
|
+
FieldValidationError_default
|
|
6
|
+
} from "./chunk-DBLODROX.js";
|
|
7
|
+
import {
|
|
8
|
+
useFormContext
|
|
9
|
+
} from "./chunk-BCMPSLSG.js";
|
|
10
|
+
|
|
11
|
+
// src/TextArea/TextArea.tsx
|
|
12
|
+
import { Controller } from "react-hook-form";
|
|
13
|
+
import { Textarea as NextTextArea } from "@nextui-org/input";
|
|
14
|
+
import { cn } from "@fuf-stack/pixel-utils";
|
|
15
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
var TextArea = ({
|
|
17
|
+
children = null,
|
|
18
|
+
className = void 0,
|
|
19
|
+
disabled = false,
|
|
20
|
+
label = void 0,
|
|
21
|
+
name,
|
|
22
|
+
placeholder = " ",
|
|
23
|
+
testId: _testId = void 0
|
|
24
|
+
}) => {
|
|
25
|
+
const { control, getFieldState } = useFormContext();
|
|
26
|
+
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
Controller,
|
|
29
|
+
{
|
|
30
|
+
control,
|
|
31
|
+
name,
|
|
32
|
+
disabled,
|
|
33
|
+
render: ({
|
|
34
|
+
field: { disabled: isDisabled, onChange, onBlur, value, ref }
|
|
35
|
+
}) => {
|
|
36
|
+
return /* @__PURE__ */ jsx(
|
|
37
|
+
NextTextArea,
|
|
38
|
+
{
|
|
39
|
+
className: cn(className),
|
|
40
|
+
classNames: {
|
|
41
|
+
inputWrapper: "group-data-[focus=true]:border-primary"
|
|
42
|
+
},
|
|
43
|
+
"data-testid": testId,
|
|
44
|
+
errorMessage: error && /* @__PURE__ */ jsx(FieldValidationError_default, { error }),
|
|
45
|
+
isDisabled,
|
|
46
|
+
isRequired: required,
|
|
47
|
+
isInvalid: invalid,
|
|
48
|
+
label: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
49
|
+
label,
|
|
50
|
+
/* @__PURE__ */ jsx(FieldCopyTestIdButton_default, { testId })
|
|
51
|
+
] }),
|
|
52
|
+
labelPlacement: "outside",
|
|
53
|
+
placeholder,
|
|
54
|
+
name,
|
|
55
|
+
value,
|
|
56
|
+
onChange,
|
|
57
|
+
onBlur,
|
|
58
|
+
ref,
|
|
59
|
+
variant: "bordered",
|
|
60
|
+
children
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
var TextArea_default = TextArea;
|
|
68
|
+
|
|
69
|
+
// src/TextArea/index.ts
|
|
70
|
+
var TextArea_default2 = TextArea_default;
|
|
71
|
+
|
|
72
|
+
export {
|
|
73
|
+
TextArea_default,
|
|
74
|
+
TextArea_default2
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=chunk-KC3PZFGE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/TextArea/TextArea.tsx","../src/TextArea/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Controller } from 'react-hook-form';\n\nimport { Textarea as NextTextArea } from '@nextui-org/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useFormContext } 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 /** 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 [NextUI TextArea](https://nextui.org/docs/components/textarea)\n */\nconst TextArea = ({\n children = null,\n className = undefined,\n disabled = false,\n label = undefined,\n name,\n placeholder = ' ',\n testId: _testId = undefined,\n}: TextAreaProps) => {\n const { control, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n return (\n <Controller\n control={control}\n name={name}\n disabled={disabled}\n render={({\n field: { disabled: isDisabled, onChange, onBlur, value, ref },\n }) => {\n return (\n <NextTextArea\n className={cn(className)}\n classNames={{\n inputWrapper: 'group-data-[focus=true]:border-primary',\n }}\n data-testid={testId}\n errorMessage={error && <FieldValidationError error={error} />}\n isDisabled={isDisabled}\n isRequired={required}\n isInvalid={invalid}\n label={\n <>\n {label}\n <FieldCopyTestIdButton testId={testId} />\n </>\n }\n labelPlacement=\"outside\"\n placeholder={placeholder}\n name={name}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n variant=\"bordered\"\n >\n {children}\n </NextTextArea>\n );\n }}\n />\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"],"mappings":";;;;;;;;;;;AAEA,SAAS,kBAAkB;AAE3B,SAAS,YAAY,oBAAoB;AAEzC,SAAS,UAAU;AAqDgB,SAKrB,UALqB,KAKrB,YALqB;AA3BnC,IAAM,WAAW,CAAC;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA,cAAc;AAAA,EACd,QAAQ,UAAU;AACpB,MAAqB;AACnB,QAAM,EAAE,SAAS,cAAc,IAAI,eAAe;AAClD,QAAM,EAAE,OAAO,SAAS,UAAU,OAAO,IAAI,cAAc,MAAM,OAAO;AAExE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,CAAC;AAAA,QACP,OAAO,EAAE,UAAU,YAAY,UAAU,QAAQ,OAAO,IAAI;AAAA,MAC9D,MAAM;AACJ,eACE;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,SAAS;AAAA,YACvB,YAAY;AAAA,cACV,cAAc;AAAA,YAChB;AAAA,YACA,eAAa;AAAA,YACb,cAAc,SAAS,oBAAC,gCAAqB,OAAc;AAAA,YAC3D;AAAA,YACA,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,OACE,iCACG;AAAA;AAAA,cACD,oBAAC,iCAAsB,QAAgB;AAAA,eACzC;AAAA,YAEF,gBAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAQ;AAAA,YAEP;AAAA;AAAA,QACH;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,mBAAQ;;;AChFf,IAAOA,oBAAQ;","names":["TextArea_default"]}
|
|
@@ -4,17 +4,19 @@ var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
|
4
4
|
var _pixels = require('@fuf-stack/pixels');
|
|
5
5
|
var _jsxruntime = require('react/jsx-runtime');
|
|
6
6
|
var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
|
|
7
|
+
var LOCALSTORAGE_COPY_TEST_ID_KEY = "uniform:form-debug-copy-test-id-enabled";
|
|
7
8
|
var FieldCopyTestIdButton = ({
|
|
8
9
|
className = void 0,
|
|
9
10
|
testId
|
|
10
11
|
}) => {
|
|
11
12
|
const [debug] = _pixels.useLocalStorage.call(void 0, LOCALSTORAGE_DEBUG_KEY, false);
|
|
13
|
+
const [copyTestId] = _pixels.useLocalStorage.call(void 0, LOCALSTORAGE_COPY_TEST_ID_KEY, false);
|
|
12
14
|
const copyToClipboard = () => {
|
|
13
15
|
navigator.clipboard.writeText(testId).catch((err) => {
|
|
14
16
|
console.error("Error copying TestId to clipboard", err);
|
|
15
17
|
});
|
|
16
18
|
};
|
|
17
|
-
if (!debug) {
|
|
19
|
+
if (!debug || !copyTestId) {
|
|
18
20
|
return null;
|
|
19
21
|
}
|
|
20
22
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -37,4 +39,4 @@ var FieldCopyTestIdButton_default2 = FieldCopyTestIdButton_default;
|
|
|
37
39
|
|
|
38
40
|
|
|
39
41
|
exports.FieldCopyTestIdButton_default = FieldCopyTestIdButton_default; exports.FieldCopyTestIdButton_default2 = FieldCopyTestIdButton_default2;
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-KMMS4G7A.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-KMMS4G7A.cjs","../src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx","../src/partials/FieldCopyTestIdButton/index.ts"],"names":["FieldCopyTestIdButton_default"],"mappings":"AAAA;ACAA,sCAA2B;AAE3B,oDAAmB;AACnB,2CAAwC;AAgC5B,+CAAA;AAzBZ,IAAM,uBAAA,EAAyB,4BAAA;AAC/B,IAAM,8BAAA,EAAgC,yCAAA;AAEtC,IAAM,sBAAA,EAAwB,CAAC;AAAA,EAC7B,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ;AACF,CAAA,EAAA,GAAkC;AAChC,EAAA,MAAM,CAAC,KAAK,EAAA,EAAI,qCAAA,sBAAgB,EAAwB,KAAK,CAAA;AAC7D,EAAA,MAAM,CAAC,UAAU,EAAA,EAAI,qCAAA,6BAAgB,EAA+B,KAAK,CAAA;AAEzE,EAAA,MAAM,gBAAA,EAAkB,CAAA,EAAA,GAAM;AAC5B,IAAA,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,MAAM,CAAA,CAAE,KAAA,CAAM,CAAC,GAAA,EAAA,GAAQ;AACnD,MAAA,OAAA,CAAQ,KAAA,CAAM,mCAAA,EAAqC,GAAG,CAAA;AAAA,IACxD,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,GAAA,CAAI,CAAC,MAAA,GAAS,CAAC,UAAA,EAAY;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,4BAAA,SAAG,EAAW,qBAAqB,CAAA;AAAA,MAC9C,OAAA,EAAQ,OAAA;AAAA,MACR,OAAA,EAAS,eAAA;AAAA,MACT,IAAA,kBAAM,6BAAA,eAAC,EAAA,CAAA,CAAW,CAAA;AAAA,MAClB,IAAA,EAAK;AAAA,IAAA;AAAA,EACP,CAAA;AAEJ,CAAA;AACA,IAAO,8BAAA,EAAQ,qBAAA;ADPf;AACA;AE5BA,IAAOA,+BAAAA,EAAQ,6BAAA;AF8Bf;AACA;AACE;AACA;AACF,+IAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-KMMS4G7A.cjs","sourcesContent":[null,"import { FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button, useLocalStorage } from '@fuf-stack/pixels';\n\nexport interface FieldCopyTestIdButtonProps {\n className?: string;\n testId: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\nconst LOCALSTORAGE_COPY_TEST_ID_KEY = 'uniform:form-debug-copy-test-id-enabled';\n\nconst FieldCopyTestIdButton = ({\n className = undefined,\n testId,\n}: FieldCopyTestIdButtonProps) => {\n const [debug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n const [copyTestId] = useLocalStorage(LOCALSTORAGE_COPY_TEST_ID_KEY, false);\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(testId).catch((err) => {\n console.error('Error copying TestId to clipboard', err);\n });\n };\n\n if (!debug || !copyTestId) {\n return null;\n }\n\n return (\n <Button\n className={cn(className, 'pointer-events-auto')}\n variant=\"light\"\n onClick={copyToClipboard}\n icon={<FaBullseye />}\n size=\"sm\"\n />\n );\n};\nexport default FieldCopyTestIdButton;\n","import FieldCopyTestIdButton from './FieldCopyTestIdButton';\n\nexport type { FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton';\n\nexport { FieldCopyTestIdButton };\n\nexport default FieldCopyTestIdButton;\n"]}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
|
|
13
|
+
|
|
14
|
+
// src/RadioGroup/RadioGroup.tsx
|
|
15
|
+
var _reacthookform = require('react-hook-form');
|
|
16
|
+
var _button = require('@nextui-org/button');
|
|
17
|
+
var _radio = require('@nextui-org/radio');
|
|
18
|
+
var _pixelutils = require('@fuf-stack/pixel-utils');
|
|
19
|
+
|
|
20
|
+
// src/RadioGroup/Variants/RadioBox.tsx
|
|
21
|
+
|
|
22
|
+
var _visuallyhidden = require('@react-aria/visually-hidden');
|
|
23
|
+
|
|
24
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
25
|
+
var RadioBox = ({ icon = void 0, ...props }) => {
|
|
26
|
+
const {
|
|
27
|
+
children,
|
|
28
|
+
Component,
|
|
29
|
+
description,
|
|
30
|
+
getBaseProps,
|
|
31
|
+
getControlProps,
|
|
32
|
+
getInputProps,
|
|
33
|
+
getLabelProps,
|
|
34
|
+
getLabelWrapperProps,
|
|
35
|
+
getWrapperProps,
|
|
36
|
+
isDisabled
|
|
37
|
+
} = _radio.useRadio.call(void 0, props);
|
|
38
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
39
|
+
Component,
|
|
40
|
+
{
|
|
41
|
+
...getBaseProps(),
|
|
42
|
+
className: _pixelutils.cn.call(void 0,
|
|
43
|
+
"group inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 border-default p-4 hover:bg-content2 data-[selected=true]:border-primary",
|
|
44
|
+
{
|
|
45
|
+
// disabled styles
|
|
46
|
+
"pointer-events-none opacity-disabled": isDisabled
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _visuallyhidden.VisuallyHidden, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { ...getInputProps() }) }),
|
|
51
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { ...getWrapperProps(), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { ...getControlProps() }) }),
|
|
52
|
+
icon,
|
|
53
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
...getLabelWrapperProps(),
|
|
57
|
+
className: _pixelutils.cn.call(void 0, getLabelWrapperProps().className, "grow"),
|
|
58
|
+
children: [
|
|
59
|
+
children && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { ...getLabelProps(), children }),
|
|
60
|
+
description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-small text-foreground opacity-70", children: description })
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// src/RadioGroup/Variants/RadioButton.tsx
|
|
70
|
+
|
|
71
|
+
var _pixels = require('@fuf-stack/pixels');
|
|
72
|
+
|
|
73
|
+
var RadioButton = ({
|
|
74
|
+
className = void 0,
|
|
75
|
+
value,
|
|
76
|
+
isDisabled = false,
|
|
77
|
+
onChange,
|
|
78
|
+
children
|
|
79
|
+
}) => {
|
|
80
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
81
|
+
_pixels.Button,
|
|
82
|
+
{
|
|
83
|
+
className: _pixelutils.cn.call(void 0, className),
|
|
84
|
+
disabled: isDisabled,
|
|
85
|
+
onClick: () => {
|
|
86
|
+
return onChange(value);
|
|
87
|
+
},
|
|
88
|
+
children
|
|
89
|
+
},
|
|
90
|
+
`index_${value}`
|
|
91
|
+
);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// src/RadioGroup/RadioGroup.tsx
|
|
95
|
+
|
|
96
|
+
var RadioGroup = ({
|
|
97
|
+
className = void 0,
|
|
98
|
+
disabled = false,
|
|
99
|
+
inline = false,
|
|
100
|
+
label = void 0,
|
|
101
|
+
name,
|
|
102
|
+
options,
|
|
103
|
+
testId: _testId = void 0,
|
|
104
|
+
variant = "default"
|
|
105
|
+
}) => {
|
|
106
|
+
const { control, getFieldState, getValues } = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
|
|
107
|
+
const { error, invalid, required, testId } = getFieldState(name, _testId);
|
|
108
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
109
|
+
_reacthookform.Controller,
|
|
110
|
+
{
|
|
111
|
+
control,
|
|
112
|
+
disabled,
|
|
113
|
+
name,
|
|
114
|
+
render: ({ field: { onChange, disabled: isDisabled, onBlur, ref } }) => {
|
|
115
|
+
let RadioComponents;
|
|
116
|
+
switch (variant) {
|
|
117
|
+
case "radioBox":
|
|
118
|
+
RadioComponents = options.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
119
|
+
RadioBox,
|
|
120
|
+
{
|
|
121
|
+
"data-testid": _chunkBBB4FEY6cjs.slugify.call(void 0,
|
|
122
|
+
`${testId}_option_${option.testId || option.value}`
|
|
123
|
+
),
|
|
124
|
+
isDisabled: isDisabled || option.disabled,
|
|
125
|
+
value: option.value,
|
|
126
|
+
onChange,
|
|
127
|
+
description: option.description,
|
|
128
|
+
icon: option.icon,
|
|
129
|
+
children: option.label ? option.label : option.value
|
|
130
|
+
},
|
|
131
|
+
option.value
|
|
132
|
+
));
|
|
133
|
+
break;
|
|
134
|
+
case "radioButton":
|
|
135
|
+
RadioComponents = options.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
136
|
+
RadioButton,
|
|
137
|
+
{
|
|
138
|
+
"data-testid": _chunkBBB4FEY6cjs.slugify.call(void 0,
|
|
139
|
+
`${testId}_option_${option.testId || option.value}`
|
|
140
|
+
),
|
|
141
|
+
isDisabled: isDisabled || option.disabled,
|
|
142
|
+
value: option.value,
|
|
143
|
+
onChange,
|
|
144
|
+
className: _pixelutils.cn.call(void 0,
|
|
145
|
+
`${getValues()[name] !== option.value ? "bg-opacity-50" : ""}`
|
|
146
|
+
),
|
|
147
|
+
children: option.label ? option.label : option.value
|
|
148
|
+
},
|
|
149
|
+
option.value
|
|
150
|
+
));
|
|
151
|
+
break;
|
|
152
|
+
default:
|
|
153
|
+
RadioComponents = options.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
154
|
+
_radio.Radio,
|
|
155
|
+
{
|
|
156
|
+
"data-testid": _chunkBBB4FEY6cjs.slugify.call(void 0,
|
|
157
|
+
`${testId}_option_${option.testId || option.value}`
|
|
158
|
+
),
|
|
159
|
+
isDisabled: isDisabled || option.disabled,
|
|
160
|
+
value: option.value,
|
|
161
|
+
onChange,
|
|
162
|
+
children: option.label ? option.label : option.value
|
|
163
|
+
},
|
|
164
|
+
option.value
|
|
165
|
+
));
|
|
166
|
+
}
|
|
167
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
168
|
+
_radio.RadioGroup,
|
|
169
|
+
{
|
|
170
|
+
className,
|
|
171
|
+
"data-testid": testId,
|
|
172
|
+
errorMessage: error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQTL5FREEcjs.FieldValidationError_default, { error }),
|
|
173
|
+
isDisabled,
|
|
174
|
+
isInvalid: invalid,
|
|
175
|
+
isRequired: required,
|
|
176
|
+
label: label && // eslint-disable-next-line jsx-a11y/label-has-associated-control
|
|
177
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { className: `${invalid ? "text-danger" : ""}`, children: [
|
|
178
|
+
label,
|
|
179
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default, { testId })
|
|
180
|
+
] }),
|
|
181
|
+
orientation: inline ? "horizontal" : "vertical",
|
|
182
|
+
onBlur,
|
|
183
|
+
onChange,
|
|
184
|
+
name,
|
|
185
|
+
ref,
|
|
186
|
+
children: variant === "radioButton" ? (
|
|
187
|
+
// TODO: NextButtonGroup uses ref to modify Button style, but we wrap it, so it does not work at the moment.
|
|
188
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _button.ButtonGroup, { children: RadioComponents })
|
|
189
|
+
) : RadioComponents
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
};
|
|
196
|
+
var RadioGroup_default = RadioGroup;
|
|
197
|
+
|
|
198
|
+
// src/RadioGroup/index.ts
|
|
199
|
+
var RadioGroup_default2 = RadioGroup_default;
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
exports.RadioGroup_default = RadioGroup_default; exports.RadioGroup_default2 = RadioGroup_default2;
|
|
205
|
+
//# sourceMappingURL=chunk-OSEU4ZUE.cjs.map
|