@gmcode/forms 0.0.3 → 0.0.4
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/index.d.mts +4 -58
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -7
package/dist/index.d.mts
CHANGED
|
@@ -3,65 +3,15 @@ import { Button, Field, FieldSet } from "@gmcode/react-ui";
|
|
|
3
3
|
import { Control, ControllerRenderProps, DefaultValues, FieldPath, FieldValues, UseFormReturn, UseFormSetValue } from "react-hook-form";
|
|
4
4
|
import { InferSchema } from "@gmcode/tsv-hookform";
|
|
5
5
|
import { ComponentProps, FC, HTMLInputAutoCompleteAttribute, HTMLInputTypeAttribute, ReactNode, SVGProps } from "react";
|
|
6
|
+
import { InputCheckboxRule, InputColorRule, InputEmailRule, InputNumberRule, InputRule, InputSelectRule, InputTextRule, Message, MessageParams, Ruleset, Schema } from "@gmcode/tsv-input";
|
|
6
7
|
import { DayPickerLocale, Matcher } from "react-day-picker";
|
|
7
8
|
import { Checkbox as Checkbox$1 } from "radix-ui";
|
|
8
9
|
import { CancelTokenCallback, FormDataErrors, GlobalEventCallback, RequestPayload } from "@inertiajs/core";
|
|
9
10
|
import { TextareaHeightChangeMeta } from "react-textarea-autosize";
|
|
10
|
-
export * from "@gmcode/tsv-input";
|
|
11
11
|
|
|
12
|
-
//#region \0rolldown/runtime.js
|
|
13
|
-
//#endregion
|
|
14
12
|
//#region src/i18n.d.ts
|
|
15
13
|
declare const i18n: i18n$1;
|
|
16
14
|
//#endregion
|
|
17
|
-
//#region ../../node_modules/.pnpm/@gmcode+tsv-core@0.1.2/node_modules/@gmcode/tsv-core/dist/index.d.mts
|
|
18
|
-
//#region src/types.d.ts
|
|
19
|
-
type Ruleset = Record<string, BasicRule>;
|
|
20
|
-
interface MessageParams {
|
|
21
|
-
[key: string]: number | string;
|
|
22
|
-
} //#endregion
|
|
23
|
-
//#region src/message.d.ts
|
|
24
|
-
declare class Message {
|
|
25
|
-
/**
|
|
26
|
-
* The message text. Usually a translation key.
|
|
27
|
-
*/
|
|
28
|
-
text: string;
|
|
29
|
-
/**
|
|
30
|
-
* Parameters for a translation function.
|
|
31
|
-
*/
|
|
32
|
-
params?: MessageParams;
|
|
33
|
-
constructor(text: string, params?: MessageParams);
|
|
34
|
-
} //#endregion
|
|
35
|
-
//#region src/basic-rule.d.ts
|
|
36
|
-
/**
|
|
37
|
-
* Validation rule base class.
|
|
38
|
-
*/
|
|
39
|
-
declare abstract class BasicRule<S = unknown> {
|
|
40
|
-
/**
|
|
41
|
-
* Manipulate value before testing.
|
|
42
|
-
*/
|
|
43
|
-
sanitize?(value: unknown): unknown;
|
|
44
|
-
/**
|
|
45
|
-
* Validation function.
|
|
46
|
-
*
|
|
47
|
-
* @returns `true` if the validation is passed or a `Message` object in case of error.
|
|
48
|
-
*/
|
|
49
|
-
abstract test(value: unknown): true | Message;
|
|
50
|
-
/**
|
|
51
|
-
* Sanitize and validate the value with error messages.
|
|
52
|
-
*/
|
|
53
|
-
validate(value: unknown): {
|
|
54
|
-
sanitized: S;
|
|
55
|
-
success: true;
|
|
56
|
-
message?: undefined;
|
|
57
|
-
} | {
|
|
58
|
-
message: Message;
|
|
59
|
-
success: false;
|
|
60
|
-
sanitized?: undefined;
|
|
61
|
-
};
|
|
62
|
-
} //#endregion
|
|
63
|
-
//#region src/regex.d.ts
|
|
64
|
-
//#endregion
|
|
65
15
|
//#region src/types/index.d.ts
|
|
66
16
|
type Method = 'get' | 'post' | 'put' | 'delete' | 'patch';
|
|
67
17
|
type RouteDefinition<TMethod extends Method | Method[]> = {
|
|
@@ -201,7 +151,7 @@ type RenderFN<TValues extends FieldValues> = ({
|
|
|
201
151
|
form: UseFormReturn<TValues>;
|
|
202
152
|
loading: boolean;
|
|
203
153
|
}) => ReactNode;
|
|
204
|
-
declare function Form<TRuleset extends Ruleset, TSchema extends
|
|
154
|
+
declare function Form<TRuleset extends Ruleset, TSchema extends Schema<TRuleset>, TValues extends InferSchema<TSchema>>({
|
|
205
155
|
children,
|
|
206
156
|
className,
|
|
207
157
|
defaults,
|
|
@@ -252,7 +202,7 @@ declare function Form<TRuleset extends Ruleset, TSchema extends index_d_exports.
|
|
|
252
202
|
preserveScroll?: boolean;
|
|
253
203
|
resetOnSuccess?: boolean;
|
|
254
204
|
route: RouteDefinition<Method>;
|
|
255
|
-
schema:
|
|
205
|
+
schema: Schema<TRuleset>;
|
|
256
206
|
setDefaultsOnSuccess?: boolean;
|
|
257
207
|
}): import("react").JSX.Element;
|
|
258
208
|
//#endregion
|
|
@@ -451,10 +401,6 @@ declare function TextareaField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
451
401
|
placeholder?: string;
|
|
452
402
|
resize?: 'both' | 'none' | 'x' | 'y';
|
|
453
403
|
}): import("react").JSX.Element;
|
|
454
|
-
declare namespace index_d_exports {
|
|
455
|
-
export { CalendarField, CheckboxField, EmailField, ErrorData, ErrorMonitor, FancyRadioField, Form, HiddenField, InfoCheckboxField, InputField, Method, NullableSelectField, NumericField, Option, PasswordField, RouteDefinition, SelectField, Submit, SwitchField, TextField, TextareaField, i18n };
|
|
456
|
-
}
|
|
457
|
-
import * as import__gmcode_tsv_input from "@gmcode/tsv-input";
|
|
458
404
|
//#endregion
|
|
459
|
-
export { CalendarField, CheckboxField, EmailField, type ErrorData, ErrorMonitor, FancyRadioField, Form, HiddenField, InfoCheckboxField, InputField, type Method, NullableSelectField, NumericField, type Option, PasswordField, type RouteDefinition, SelectField, Submit, SwitchField, TextField, TextareaField, i18n };
|
|
405
|
+
export { CalendarField, CheckboxField, EmailField, type ErrorData, ErrorMonitor, FancyRadioField, Form, HiddenField, InfoCheckboxField, InputCheckboxRule, InputColorRule, InputEmailRule, InputField, InputNumberRule, InputRule, InputSelectRule, InputTextRule, Message, type Method, NullableSelectField, NumericField, type Option, PasswordField, type RouteDefinition, Schema, SelectField, Submit, SwitchField, TextField, TextareaField, i18n };
|
|
460
406
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["TMethod","Method","url","methods","method","id","key","label","ReactNode","value","message","params","MessageParams"],"sources":["../src/i18n.ts","../src/types/index.d.ts","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/error-monitor.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./en-CnkPOj-4.mjs";import{createInstance as t}from"i18next";import{Button as n,Calendar as r,Checkbox as i,Field as a,FieldDescription as o,FieldError as s,FieldLabel as c,FieldSet as l,Input as u,InputGroup as d,InputGroupAddon as f,InputGroupButton as p,InputGroupInput as m,Label as h,RadioGroup as g,RadioGroupItem as _,Select as v,SelectContent as y,SelectItem as b,SelectTrigger as x,SelectValue as S,Spinner as C,Switch as w,TextareaAutosize as T,cn as E,flash as D}from"@gmcode/react-ui";import{Controller as O,useForm as k}from"react-hook-form";import{c as A}from"react/compiler-runtime";import{I18nextProvider as ee,useTranslation as j}from"react-i18next";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{useTsvResolver as F}from"@gmcode/tsv-hookform";import{useEffect as I,useState as L}from"react";import{useForm as R}from"@inertiajs/react";import{Minus as z,Plus as B,X as V}from"lucide-react";export*from"@gmcode/tsv-input";const H=t({fallbackLng:`en`,interpolation:{escapeValue:!1},resources:{en:e}});H.init();function U(e){return`${e.getFullYear()}-${(e.getMonth()+1+``).padStart(2,`0`)}-${(e.getDate()+``).padStart(2,`0`)}`}function W(e){if(!e)return;let t=new Date(e);if(!isNaN(t.getFullYear()))return t}function G(e){let t=A(9);if(t[0]!==`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`}let{error:n}=e,{t:r}=j();if(!n?.message)return null;if(r){let e;t[1]!==n.message||t[2]!==n.params||t[3]!==r?(e=r(n.message,n.params),t[1]=n.message,t[2]=n.params,t[3]=r,t[4]=e):e=t[4];let i;return t[5]===e?i=t[6]:(i=N(s,{errors:{message:e}}),t[5]=e,t[6]=i),i}let i;return t[7]===n?i=t[8]:(i=N(s,{errors:n}),t[7]=n,t[8]=i),i}function K({control:e,dateToString:t=U,disabled:n,inputId:i,inputName:o,label:s,locale:l,stringToDate:u=W,...d}){return N(O,{name:o,control:e,render:({field:e,fieldState:f})=>P(a,{"data-invalid":f.invalid,...d,children:[s&&N(c,{htmlFor:i??o,children:s}),N(r,{"aria-invalid":f.invalid,className:`w-full rounded-md border`,disabled:n,fixedWeeks:!0,id:i??(s?o:void 0),locale:l,mode:`single`,onSelect:n=>e.onChange(n?t(n):``),selected:u(e.value)}),N(G,{error:f.error})]})})}function q({control:e,disabled:t,inputId:n,inputName:r,label:o,onCheckedChange:s,orientation:l=`horizontal`,readOnly:u,uncheckedValue:d=``,value:f=`true`,...p}){return N(O,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>P(a,{"data-invalid":t.invalid,orientation:l,...p,children:[N(i,{"aria-invalid":t.invalid,"aria-readonly":u,checked:e.value===f,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(o?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{u||(e.onChange(t===!0?f:d),s&&s(t,e))},ref:e.ref,value:f}),o&&N(c,{htmlFor:n??r,children:o}),N(G,{error:t.error})]})})}function J(e){let t=A(26);if(t[0]!==`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`}let n,r,i,o,s,l,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],o=t[5],s=t[6],l=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,disabled:i,inputId:o,inputName:s,label:l,placeholder:d,readOnly:p,type:m,...f}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==o||t[14]!==s||t[15]!==l||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return P(a,{"data-invalid":r.invalid,...f,children:[l&&N(c,{htmlFor:o??s,children:l}),N(u,{"aria-invalid":r.invalid,autoComplete:n,id:o??(l?s:void 0),placeholder:d,readOnly:p,type:m,...t}),N(G,{error:r.error})]})},t[12]=n,t[13]=o,t[14]=s,t[15]=l,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==i||t[23]!==s||t[24]!==h?(g=N(O,{control:r,disabled:i,name:s,render:h}),t[21]=r,t[22]=i,t[23]=s,t[24]=h,t[25]=g):g=t[25],g}function Y({autoComplete:e=`on`,type:t=`email`,...n}){return N(J,{autoComplete:e,type:t,...n})}function X(e){let t=A(24);if(t[0]!==`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`){for(let e=0;e<24;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`}let n,r,i,a,s,u,d,f,p;t[1]===e?(n=t[2],r=t[3],i=t[4],a=t[5],s=t[6],u=t[7],d=t[8],f=t[9],p=t[10]):({control:n,defaultValue:r,description:i,disabled:a,groupId:s,inputName:u,label:d,options:f,...p}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=a,t[6]=s,t[7]=u,t[8]=d,t[9]=f,t[10]=p);let m;t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d||t[16]!==f||t[17]!==p?(m=e=>{let{field:t,fieldState:n}=e;return P(l,{"data-invalid":n.invalid,...p,children:[d&&N(c,{htmlFor:s??u,children:d}),i&&N(o,{children:i}),N(G,{error:n.error}),N(g,{defaultValue:r,disabled:t.disabled,id:s??(d?u:void 0),name:t.name,onBlur:t.onBlur,onValueChange:t.onChange,ref:t.ref,children:f.map(Z)})]})},t[11]=r,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==n||t[20]!==a||t[21]!==u||t[22]!==m?(h=N(O,{control:n,disabled:a,name:u,render:m}),t[19]=n,t[20]=a,t[21]=u,t[22]=m,t[23]=h):h=t[23],h}function Z(e){return N(h,{className:`rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]`,"data-slot":`field-label`,children:P(`div`,{className:`flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring`,children:[N(_,{className:`sr-only`,id:e.id,value:e.value}),e.Icon&&N(e.Icon,{}),e.label]})},e.key??e.id??e.value)}function Q({children:e,className:t,defaults:n={},rootError:r=`flash`,onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:c,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:h,preserveScroll:g=!0,resetOnSuccess:_=!0,route:v,schema:y,setDefaultsOnSuccess:b=!1}){let[x,S]=L(),C=Object.fromEntries(Object.keys(y.ruleset).map(e=>[e,n[e]??``])),w=k({defaultValues:C,resolver:F(y)}),T=R(C);function O(e){e.root&&(r===`flash`?D({level:`error`,title:e.root}):r===`monitor`&&S({message:e.root})),c&&c(e)}function A(e){b&&(T.setDefaults(),w.reset(w.getValues())),_&&(T.reset(),w.reset()),h&&h(e)}function j(e){T.transform(()=>e),T[v.method](v.url,{onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:O,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:A,preserveScroll:g})}return I(()=>{for(let[e,t]of Object.entries(T.errors))t&&w.setError(e,{message:t,type:`inertia`})},[T.errors,w]),N(ee,{i18n:H,children:P(`form`,{action:v.url,className:E(`grid gap-6`,t),method:v.method,onSubmit:w.handleSubmit(j),children:[N(M,{children:e({errors:T.errors,form:w,loading:T.processing})}),r===`monitor`&&N(G,{error:x})]})})}function te({autoComplete:e=`off`,className:t,type:n=`hidden`,...r}){return N(J,{autoComplete:e,className:E(`hidden`,t),type:n,...r})}function ne({children:e,className:t,control:n,disabled:r,inputId:o,inputName:s,label:c,onCheckedChange:l,orientation:u=`horizontal`,readOnly:d,text:f,uncheckedValue:p=``,value:m=`true`,...g}){return N(O,{control:n,disabled:r,name:s,render:({field:n,fieldState:r})=>N(a,{className:E(`block`,t),"data-invalid":r.invalid,orientation:u,...g,children:P(h,{className:`flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info`,"data-slot":`field-label`,children:[N(i,{"aria-invalid":r.invalid,"aria-readonly":d,checked:n.value===m,className:`aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground`,disabled:n.disabled,id:o,name:n.name,onBlur:n.onBlur,onCheckedChange:e=>{d||(n.onChange(e===!0?m:p),l&&l(e,n))},ref:n.ref,value:m}),P(`div`,{className:`grid gap-1.5 font-normal`,children:[N(`p`,{className:`text-sm leading-none font-medium`,children:c}),f?N(`p`,{className:`text-sm text-muted-foreground`,children:f}):e,N(G,{error:r.error})]})]})})})}function re(e){let t=A(29);if(t[0]!==`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`){for(let e=0;e<29;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`}let r,i,s,l,u,d,f,p,m,h,g;t[1]===e?(r=t[2],i=t[3],s=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9],m=t[10],h=t[11],g=t[12]):({autoComplete:r,control:i,description:s,disabled:l,inputId:u,inputName:d,label:f,options:p,placeholder:m,setValue:g,...h}=e,t[1]=e,t[2]=r,t[3]=i,t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=g);let{t:_}=j(),b;t[13]!==r||t[14]!==s||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g||t[22]!==_?(b=e=>{let{field:t,fieldState:i}=e;return P(a,{"data-invalid":i.invalid,...h,children:[f&&N(c,{htmlFor:u??d,children:f}),P(`div`,{className:`flex items-end gap-4`,children:[P(v,{autoComplete:r,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[N(x,{"aria-invalid":i.invalid,className:`flex-1 overflow-hidden`,id:u??(f?d:void 0),children:N(S,{placeholder:m})}),N(y,{children:p.map(ae)})]}),N(n,{"aria-label":_(ie),className:`flex-none`,onClick:()=>g(d,``),type:`button`,variant:`outline`,children:N(V,{})})]}),s&&N(o,{children:s}),N(G,{error:i.error})]})},t[13]=r,t[14]=s,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_,t[23]=b):b=t[23];let C;return t[24]!==i||t[25]!==l||t[26]!==d||t[27]!==b?(C=N(O,{control:i,disabled:l,name:d,render:b}),t[24]=i,t[25]=l,t[26]=d,t[27]=b,t[28]=C):C=t[28],C}function ie(e){return e.reset}function ae(e){return N(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function oe(e,t,n,r,i){let a=Number(e);return isNaN(a)?``:(t?a+=n===void 0?1:n:a-=n===void 0?1:n,r!==void 0&&(a=Math.max(a,r)),i!==void 0&&(a=Math.min(a,i)),a.toString())}function $({autoComplete:e,control:t,disabled:n,inputId:r,inputMode:i=`numeric`,inputName:o,label:s,placeholder:l,type:u,ui:h,...g}){let{t:_}=j();function v(e,t){h?.setValue&&h.setValue(o,oe(e,t,h.step,h.min,h.max),{shouldValidate:!0})}return N(O,{control:t,disabled:n,name:o,render:({field:t,fieldState:y})=>P(a,{"data-invalid":y.invalid,...g,children:[s&&N(c,{htmlFor:r??o,children:s}),P(d,{children:[N(m,{"aria-invalid":y.invalid,autoComplete:e,id:r??(s?o:void 0),inputMode:i,placeholder:l,type:u,...t}),h&&P(f,{align:`inline-end`,children:[N(p,{"aria-label":_(e=>e.decrease),disabled:n,onClick:()=>v(t.value,!1),size:`icon-xs`,children:N(z,{})}),N(p,{"aria-label":_(e=>e.increase),disabled:n,onClick:()=>v(t.value,!0),size:`icon-xs`,children:N(B,{})})]})]}),N(G,{error:y.error})]})})}function se({autoComplete:e=`off`,type:t=`password`,...n}){return N(J,{autoComplete:e,type:t,...n})}function ce(e){let t=A(26);if(t[0]!==`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`}let n,r,i,s,l,u,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],s=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,description:i,disabled:s,inputId:l,inputName:u,label:d,options:f,placeholder:p,...m}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=s,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==i||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return P(a,{"data-invalid":r.invalid,...m,children:[d&&N(c,{htmlFor:l??u,children:d}),P(v,{autoComplete:n,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[N(x,{"aria-invalid":r.invalid,id:l??(d?u:void 0),children:N(S,{placeholder:p})}),N(y,{children:f.map(le)})]}),i&&N(o,{children:i}),N(G,{error:r.error})]})},t[12]=n,t[13]=i,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==s||t[23]!==u||t[24]!==h?(g=N(O,{control:r,disabled:s,name:u,render:h}),t[21]=r,t[22]=s,t[23]=u,t[24]=h,t[25]=g):g=t[25],g}function le(e){return N(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function ue({label:e,loading:t=!1,type:r=`submit`,...i}){let{t:a}=j();return N(n,{disabled:t,type:r,...i,children:P(`div`,{className:`relative`,children:[N(`span`,{className:E({invisible:t}),children:e??a(e=>e.submit)}),N(C,{className:E(`trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2`,{block:t})})]})})}function de({control:e,disabled:t,inputId:n,inputName:r,label:i,onCheckedChange:o,orientation:s=`horizontal`,readOnly:l,uncheckedValue:u=``,value:d=`true`,...f}){return N(O,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>P(a,{"data-invalid":t.invalid,orientation:s,...f,children:[N(w,{"aria-invalid":t.invalid,"aria-readonly":l,checked:e.value===d,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(i?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{l||(e.onChange(t===!0?d:u),o&&o(t,e))},ref:e.ref,value:d}),i&&N(c,{htmlFor:n??r,children:i}),N(G,{error:t.error})]})})}function fe({autoComplete:e=`on`,type:t=`text`,...n}){return N(J,{autoComplete:e,type:t,...n})}function pe({cacheMeasurements:e,control:t,inputId:n,inputName:r,label:i,maxRows:o,minRows:s,onHeightChange:l,placeholder:u,resize:d=`none`,...f}){return N(O,{name:r,control:t,render:({field:t,fieldState:p})=>P(a,{"data-invalid":p.invalid,...f,children:[i&&N(c,{htmlFor:n??r,children:i}),N(T,{"aria-invalid":p.invalid,autoComplete:`off`,cacheMeasurements:e,className:E({resize:d===`both`,"resize-none":d===`none`,"resize-x":d===`x`,"resize-y":d===`y`}),id:n??(i?r:void 0),maxRows:o,minRows:s,onHeightChange:l,placeholder:u,...t}),N(G,{error:p.error})]})})}export{K as CalendarField,q as CheckboxField,Y as EmailField,G as ErrorMonitor,X as FancyRadioField,Q as Form,te as HiddenField,ne as InfoCheckboxField,J as InputField,re as NullableSelectField,$ as NumericField,se as PasswordField,ce as SelectField,ue as Submit,de as SwitchField,fe as TextField,pe as TextareaField,H as i18n};
|
|
1
|
+
import{t as e}from"./en-CnkPOj-4.mjs";import{createInstance as t}from"i18next";import{Button as n,Calendar as r,Checkbox as i,Field as a,FieldDescription as o,FieldError as s,FieldLabel as c,FieldSet as l,Input as u,InputGroup as d,InputGroupAddon as f,InputGroupButton as p,InputGroupInput as m,Label as h,RadioGroup as g,RadioGroupItem as _,Select as v,SelectContent as y,SelectItem as b,SelectTrigger as x,SelectValue as S,Spinner as C,Switch as w,TextareaAutosize as T,cn as E,flash as ee}from"@gmcode/react-ui";import{Controller as D,useForm as O}from"react-hook-form";import{c as k}from"react/compiler-runtime";import{I18nextProvider as te,useTranslation as A}from"react-i18next";import{Fragment as ne,jsx as j,jsxs as M}from"react/jsx-runtime";import{useTsvResolver as re}from"@gmcode/tsv-hookform";import{useEffect as N,useState as P}from"react";import{useForm as F}from"@inertiajs/react";import{Minus as I,Plus as L,X as R}from"lucide-react";import{InputCheckboxRule as z,InputColorRule as B,InputEmailRule as V,InputNumberRule as H,InputRule as U,InputSelectRule as W,InputTextRule as G,Message as K,Schema as q}from"@gmcode/tsv-input";const J=t({fallbackLng:`en`,interpolation:{escapeValue:!1},resources:{en:e}});J.init();function Y(e){return`${e.getFullYear()}-${(e.getMonth()+1+``).padStart(2,`0`)}-${(e.getDate()+``).padStart(2,`0`)}`}function X(e){if(!e)return;let t=new Date(e);if(!isNaN(t.getFullYear()))return t}function Z(e){let t=k(9);if(t[0]!==`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`}let{error:n}=e,{t:r}=A();if(!n?.message)return null;if(r){let e;t[1]!==n.message||t[2]!==n.params||t[3]!==r?(e=r(n.message,n.params),t[1]=n.message,t[2]=n.params,t[3]=r,t[4]=e):e=t[4];let i;return t[5]===e?i=t[6]:(i=j(s,{errors:{message:e}}),t[5]=e,t[6]=i),i}let i;return t[7]===n?i=t[8]:(i=j(s,{errors:n}),t[7]=n,t[8]=i),i}function ie({control:e,dateToString:t=Y,disabled:n,inputId:i,inputName:o,label:s,locale:l,stringToDate:u=X,...d}){return j(D,{name:o,control:e,render:({field:e,fieldState:f})=>M(a,{"data-invalid":f.invalid,...d,children:[s&&j(c,{htmlFor:i??o,children:s}),j(r,{"aria-invalid":f.invalid,className:`w-full rounded-md border`,disabled:n,fixedWeeks:!0,id:i??(s?o:void 0),locale:l,mode:`single`,onSelect:n=>e.onChange(n?t(n):``),selected:u(e.value)}),j(Z,{error:f.error})]})})}function ae({control:e,disabled:t,inputId:n,inputName:r,label:o,onCheckedChange:s,orientation:l=`horizontal`,readOnly:u,uncheckedValue:d=``,value:f=`true`,...p}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:l,...p,children:[j(i,{"aria-invalid":t.invalid,"aria-readonly":u,checked:e.value===f,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(o?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{u||(e.onChange(t===!0?f:d),s&&s(t,e))},ref:e.ref,value:f}),o&&j(c,{htmlFor:n??r,children:o}),j(Z,{error:t.error})]})})}function Q(e){let t=k(26);if(t[0]!==`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`}let n,r,i,o,s,l,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],o=t[5],s=t[6],l=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,disabled:i,inputId:o,inputName:s,label:l,placeholder:d,readOnly:p,type:m,...f}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==o||t[14]!==s||t[15]!==l||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...f,children:[l&&j(c,{htmlFor:o??s,children:l}),j(u,{"aria-invalid":r.invalid,autoComplete:n,id:o??(l?s:void 0),placeholder:d,readOnly:p,type:m,...t}),j(Z,{error:r.error})]})},t[12]=n,t[13]=o,t[14]=s,t[15]=l,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==i||t[23]!==s||t[24]!==h?(g=j(D,{control:r,disabled:i,name:s,render:h}),t[21]=r,t[22]=i,t[23]=s,t[24]=h,t[25]=g):g=t[25],g}function oe({autoComplete:e=`on`,type:t=`email`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function se(e){let t=k(24);if(t[0]!==`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`){for(let e=0;e<24;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`}let n,r,i,a,s,u,d,f,p;t[1]===e?(n=t[2],r=t[3],i=t[4],a=t[5],s=t[6],u=t[7],d=t[8],f=t[9],p=t[10]):({control:n,defaultValue:r,description:i,disabled:a,groupId:s,inputName:u,label:d,options:f,...p}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=a,t[6]=s,t[7]=u,t[8]=d,t[9]=f,t[10]=p);let m;t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d||t[16]!==f||t[17]!==p?(m=e=>{let{field:t,fieldState:n}=e;return M(l,{"data-invalid":n.invalid,...p,children:[d&&j(c,{htmlFor:s??u,children:d}),i&&j(o,{children:i}),j(Z,{error:n.error}),j(g,{defaultValue:r,disabled:t.disabled,id:s??(d?u:void 0),name:t.name,onBlur:t.onBlur,onValueChange:t.onChange,ref:t.ref,children:f.map(ce)})]})},t[11]=r,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==n||t[20]!==a||t[21]!==u||t[22]!==m?(h=j(D,{control:n,disabled:a,name:u,render:m}),t[19]=n,t[20]=a,t[21]=u,t[22]=m,t[23]=h):h=t[23],h}function ce(e){return j(h,{className:`rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]`,"data-slot":`field-label`,children:M(`div`,{className:`flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring`,children:[j(_,{className:`sr-only`,id:e.id,value:e.value}),e.Icon&&j(e.Icon,{}),e.label]})},e.key??e.id??e.value)}function le({children:e,className:t,defaults:n={},rootError:r=`flash`,onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:c,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:h,preserveScroll:g=!0,resetOnSuccess:_=!0,route:v,schema:y,setDefaultsOnSuccess:b=!1}){let[x,S]=P(),C=Object.fromEntries(Object.keys(y.ruleset).map(e=>[e,n[e]??``])),w=O({defaultValues:C,resolver:re(y)}),T=F(C);function D(e){e.root&&(r===`flash`?ee({level:`error`,title:e.root}):r===`monitor`&&S({message:e.root})),c&&c(e)}function k(e){b&&(T.setDefaults(),w.reset(w.getValues())),_&&(T.reset(),w.reset()),h&&h(e)}function A(e){T.transform(()=>e),T[v.method](v.url,{onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:D,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:k,preserveScroll:g})}return N(()=>{for(let[e,t]of Object.entries(T.errors))t&&w.setError(e,{message:t,type:`inertia`})},[T.errors,w]),j(te,{i18n:J,children:M(`form`,{action:v.url,className:E(`grid gap-6`,t),method:v.method,onSubmit:w.handleSubmit(A),children:[j(ne,{children:e({errors:T.errors,form:w,loading:T.processing})}),r===`monitor`&&j(Z,{error:x})]})})}function ue({autoComplete:e=`off`,className:t,type:n=`hidden`,...r}){return j(Q,{autoComplete:e,className:E(`hidden`,t),type:n,...r})}function de({children:e,className:t,control:n,disabled:r,inputId:o,inputName:s,label:c,onCheckedChange:l,orientation:u=`horizontal`,readOnly:d,text:f,uncheckedValue:p=``,value:m=`true`,...g}){return j(D,{control:n,disabled:r,name:s,render:({field:n,fieldState:r})=>j(a,{className:E(`block`,t),"data-invalid":r.invalid,orientation:u,...g,children:M(h,{className:`flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info`,"data-slot":`field-label`,children:[j(i,{"aria-invalid":r.invalid,"aria-readonly":d,checked:n.value===m,className:`aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground`,disabled:n.disabled,id:o,name:n.name,onBlur:n.onBlur,onCheckedChange:e=>{d||(n.onChange(e===!0?m:p),l&&l(e,n))},ref:n.ref,value:m}),M(`div`,{className:`grid gap-1.5 font-normal`,children:[j(`p`,{className:`text-sm leading-none font-medium`,children:c}),f?j(`p`,{className:`text-sm text-muted-foreground`,children:f}):e,j(Z,{error:r.error})]})]})})})}function fe(e){let t=k(29);if(t[0]!==`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`){for(let e=0;e<29;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`}let r,i,s,l,u,d,f,p,m,h,g;t[1]===e?(r=t[2],i=t[3],s=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9],m=t[10],h=t[11],g=t[12]):({autoComplete:r,control:i,description:s,disabled:l,inputId:u,inputName:d,label:f,options:p,placeholder:m,setValue:g,...h}=e,t[1]=e,t[2]=r,t[3]=i,t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=g);let{t:_}=A(),b;t[13]!==r||t[14]!==s||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g||t[22]!==_?(b=e=>{let{field:t,fieldState:i}=e;return M(a,{"data-invalid":i.invalid,...h,children:[f&&j(c,{htmlFor:u??d,children:f}),M(`div`,{className:`flex items-end gap-4`,children:[M(v,{autoComplete:r,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":i.invalid,className:`flex-1 overflow-hidden`,id:u??(f?d:void 0),children:j(S,{placeholder:m})}),j(y,{children:p.map($)})]}),j(n,{"aria-label":_(pe),className:`flex-none`,onClick:()=>g(d,``),type:`button`,variant:`outline`,children:j(R,{})})]}),s&&j(o,{children:s}),j(Z,{error:i.error})]})},t[13]=r,t[14]=s,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_,t[23]=b):b=t[23];let C;return t[24]!==i||t[25]!==l||t[26]!==d||t[27]!==b?(C=j(D,{control:i,disabled:l,name:d,render:b}),t[24]=i,t[25]=l,t[26]=d,t[27]=b,t[28]=C):C=t[28],C}function pe(e){return e.reset}function $(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function me(e,t,n,r,i){let a=Number(e);return isNaN(a)?``:(t?a+=n===void 0?1:n:a-=n===void 0?1:n,r!==void 0&&(a=Math.max(a,r)),i!==void 0&&(a=Math.min(a,i)),a.toString())}function he({autoComplete:e,control:t,disabled:n,inputId:r,inputMode:i=`numeric`,inputName:o,label:s,placeholder:l,type:u,ui:h,...g}){let{t:_}=A();function v(e,t){h?.setValue&&h.setValue(o,me(e,t,h.step,h.min,h.max),{shouldValidate:!0})}return j(D,{control:t,disabled:n,name:o,render:({field:t,fieldState:y})=>M(a,{"data-invalid":y.invalid,...g,children:[s&&j(c,{htmlFor:r??o,children:s}),M(d,{children:[j(m,{"aria-invalid":y.invalid,autoComplete:e,id:r??(s?o:void 0),inputMode:i,placeholder:l,type:u,...t}),h&&M(f,{align:`inline-end`,children:[j(p,{"aria-label":_(e=>e.decrease),disabled:n,onClick:()=>v(t.value,!1),size:`icon-xs`,children:j(I,{})}),j(p,{"aria-label":_(e=>e.increase),disabled:n,onClick:()=>v(t.value,!0),size:`icon-xs`,children:j(L,{})})]})]}),j(Z,{error:y.error})]})})}function ge({autoComplete:e=`off`,type:t=`password`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function _e(e){let t=k(26);if(t[0]!==`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`}let n,r,i,s,l,u,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],s=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,description:i,disabled:s,inputId:l,inputName:u,label:d,options:f,placeholder:p,...m}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=s,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==i||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...m,children:[d&&j(c,{htmlFor:l??u,children:d}),M(v,{autoComplete:n,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":r.invalid,id:l??(d?u:void 0),children:j(S,{placeholder:p})}),j(y,{children:f.map(ve)})]}),i&&j(o,{children:i}),j(Z,{error:r.error})]})},t[12]=n,t[13]=i,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==s||t[23]!==u||t[24]!==h?(g=j(D,{control:r,disabled:s,name:u,render:h}),t[21]=r,t[22]=s,t[23]=u,t[24]=h,t[25]=g):g=t[25],g}function ve(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function ye({label:e,loading:t=!1,type:r=`submit`,...i}){let{t:a}=A();return j(n,{disabled:t,type:r,...i,children:M(`div`,{className:`relative`,children:[j(`span`,{className:E({invisible:t}),children:e??a(e=>e.submit)}),j(C,{className:E(`trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2`,{block:t})})]})})}function be({control:e,disabled:t,inputId:n,inputName:r,label:i,onCheckedChange:o,orientation:s=`horizontal`,readOnly:l,uncheckedValue:u=``,value:d=`true`,...f}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:s,...f,children:[j(w,{"aria-invalid":t.invalid,"aria-readonly":l,checked:e.value===d,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(i?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{l||(e.onChange(t===!0?d:u),o&&o(t,e))},ref:e.ref,value:d}),i&&j(c,{htmlFor:n??r,children:i}),j(Z,{error:t.error})]})})}function xe({autoComplete:e=`on`,type:t=`text`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function Se({cacheMeasurements:e,control:t,inputId:n,inputName:r,label:i,maxRows:o,minRows:s,onHeightChange:l,placeholder:u,resize:d=`none`,...f}){return j(D,{name:r,control:t,render:({field:t,fieldState:p})=>M(a,{"data-invalid":p.invalid,...f,children:[i&&j(c,{htmlFor:n??r,children:i}),j(T,{"aria-invalid":p.invalid,autoComplete:`off`,cacheMeasurements:e,className:E({resize:d===`both`,"resize-none":d===`none`,"resize-x":d===`x`,"resize-y":d===`y`}),id:n??(i?r:void 0),maxRows:o,minRows:s,onHeightChange:l,placeholder:u,...t}),j(Z,{error:p.error})]})})}export{ie as CalendarField,ae as CheckboxField,oe as EmailField,Z as ErrorMonitor,se as FancyRadioField,le as Form,ue as HiddenField,de as InfoCheckboxField,z as InputCheckboxRule,B as InputColorRule,V as InputEmailRule,Q as InputField,H as InputNumberRule,U as InputRule,W as InputSelectRule,G as InputTextRule,K as Message,fe as NullableSelectField,he as NumericField,ge as PasswordField,q as Schema,_e as SelectField,ye as Submit,be as SwitchField,xe as TextField,Se as TextareaField,J as i18n};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["error","label","autoComplete","placeholder","readOnly","type","control","disabled","inputName","label","description","defaultValue","control","disabled","inputName","label","autoComplete","placeholder","description","control","disabled","inputName","$","label","autoComplete","placeholder","description","control","disabled","inputName"],"sources":["../src/i18n.ts","../src/lib/utils.ts","../src/components/error-monitor.tsx","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"sourcesContent":["import { type i18n as Ti18n, createInstance } from 'i18next'\nimport en from '@/locales/en'\n\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\n","/**\n * Convert a javascript `Date` object to a string with the format `aaaa-mm-dd`.\n */\nexport function dateToString(date: Date): string {\n return `${date.getFullYear()}-${(date.getMonth() + 1 + '').padStart(2, '0')}-${(date.getDate() + '').padStart(2, '0')}`\n}\n\n/**\n * Convert a string to a javascript `Date` object or undefined if the string is\n * not a valid date.\n */\nexport function stringToDate(string: string | undefined): Date | undefined {\n if (!string) {\n return undefined\n }\n\n const date = new Date(string)\n\n if (isNaN(date.getFullYear())) {\n return undefined\n }\n\n return date\n}\n","import type { ErrorData } from '@/types'\nimport { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation()\n\n if (!error?.message) {\n return null\n }\n\n if (t) {\n // @ts-expect-error: assert error.message to be a translation key\n return <FieldError errors={{ message: t(error.message, error.params) }} />\n }\n\n return <FieldError errors={error} />\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\n\nexport function CalendarField<TFieldValues extends FieldValues = FieldValues>({\n control,\n dateToString = defaultDateToString,\n disabled,\n inputId,\n inputName,\n label,\n locale,\n stringToDate = defaultStringToDate,\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n dateToString?: (date: Date) => string\n disabled?: Matcher | Matcher[]\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n locale?: Partial<DayPickerLocale>\n stringToDate?: (string: string | undefined) => Date | undefined\n}) {\n return (\n <Controller\n name={inputName}\n control={control}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Calendar\n aria-invalid={fieldState.invalid}\n className=\"w-full rounded-md border\"\n disabled={disabled}\n fixedWeeks={true}\n id={inputId ?? (label ? inputName : undefined)}\n locale={locale}\n mode=\"single\"\n onSelect={(date) => field.onChange(date ? dateToString(date) : '')}\n selected={stringToDate(field.value)}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Checkbox, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function CheckboxField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\n\nexport function InputField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputName,\n label,\n placeholder,\n readOnly,\n type,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n readOnly?: boolean\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Input\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n placeholder={placeholder}\n readOnly={readOnly}\n type={type}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function EmailField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'email',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { Option } from '@/types'\n\nexport function FancyRadioField<\n TFieldValues extends FieldValues = FieldValues\n>({\n control,\n defaultValue,\n description,\n disabled,\n groupId,\n inputName,\n label,\n options,\n ...props\n}: ComponentProps<typeof FieldSet> & {\n control: Control<TFieldValues>\n defaultValue: string\n description?: string\n disabled?: boolean\n groupId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Array<Option & { Icon?: FC<SVGProps<SVGSVGElement>> }>\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <FieldSet\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={groupId ?? inputName}>{label}</FieldLabel>\n )}\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n\n <RadioGroup\n defaultValue={defaultValue}\n disabled={field.disabled}\n id={groupId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onValueChange={field.onChange}\n ref={field.ref}\n >\n {options.map((option) => (\n <Label\n className=\"rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]\"\n data-slot=\"field-label\"\n key={option.key ?? option.id ?? option.value}\n >\n <div className=\"flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring\">\n <RadioGroupItem\n className=\"sr-only\"\n id={option.id}\n value={option.value}\n />\n {option.Icon && <option.Icon />}\n {option.label}\n </div>\n </Label>\n ))}\n </RadioGroup>\n </FieldSet>\n )}\n />\n )\n}\n","import type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { cn, flash } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { I18nextProvider } from 'react-i18next'\nimport type { Ruleset } from '@gmcode/tsv-core'\nimport type { Schema } from '@/index'\nimport i18n from '@/i18n'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { useForm as userReactForm } from 'react-hook-form'\n\ntype RenderFN<TValues extends FieldValues> = ({\n errors,\n form,\n loading\n}: {\n errors: FormDataErrors<object>\n form: UseFormReturn<TValues>\n loading: boolean\n}) => ReactNode\n\nexport function Form<\n TRuleset extends Ruleset,\n TSchema extends Schema<TRuleset>,\n TValues extends InferSchema<TSchema>\n>({\n children,\n className,\n defaults = {},\n rootError: displayRootError = 'flash',\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess,\n preserveScroll = true,\n resetOnSuccess = true,\n route,\n schema,\n setDefaultsOnSuccess = false\n}: {\n children: RenderFN<TValues>\n className?: string\n defaults?: Partial<DefaultValues<TValues>>\n /**\n * How to display the root error from inertia.\n *\n * - `flash` - use the Toaster component\n * - `monitor` - use the ErrorMonitor component\n * - `none` - don't display the root error\n *\n * @defaultValue `flash`\n */\n rootError?: 'flash' | 'monitor' | 'none'\n onBefore?: GlobalEventCallback<'before', RequestPayload>\n onBeforeUpdate?: GlobalEventCallback<'beforeUpdate', RequestPayload>\n onCancel?: GlobalEventCallback<'cancel', RequestPayload>\n onCancelToken?: CancelTokenCallback\n onError?: GlobalEventCallback<'error', RequestPayload>\n onFinish?: GlobalEventCallback<'finish', RequestPayload>\n onFlash?: GlobalEventCallback<'flash', RequestPayload>\n onPrefetched?: GlobalEventCallback<'prefetched', RequestPayload>\n onPrefetching?: GlobalEventCallback<'prefetching', RequestPayload>\n onProgress?: GlobalEventCallback<'progress', RequestPayload>\n onStart?: GlobalEventCallback<'start', RequestPayload>\n onSuccess?: GlobalEventCallback<'success', RequestPayload>\n preserveScroll?: boolean\n resetOnSuccess?: boolean\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\n setDefaultsOnSuccess?: boolean\n}) {\n const [rootError, setRootError] = useState<ErrorData>()\n\n const defaultValues = Object.fromEntries(\n Object.keys(schema.ruleset).map((field) => [field, defaults[field] ?? ''])\n ) as DefaultValues<TValues>\n\n // React Hook Form\n const reactForm = userReactForm<TValues>({\n defaultValues,\n resolver: useTsvResolver(schema)\n })\n\n // Inertia\n const inertiaForm = useInertiaForm<object>(defaultValues)\n\n function onErrorWithToast(errors: Errors) {\n if (errors.root) {\n if (displayRootError === 'flash') {\n flash({ level: 'error', title: errors.root })\n } else if (displayRootError === 'monitor') {\n setRootError({ message: errors.root })\n }\n }\n\n if (onError) {\n onError(errors)\n }\n }\n\n function onSuccessWithReset(page: Page<SharedPageProps>) {\n if (setDefaultsOnSuccess) {\n inertiaForm.setDefaults()\n reactForm.reset(reactForm.getValues())\n }\n\n if (resetOnSuccess) {\n inertiaForm.reset()\n reactForm.reset()\n }\n\n if (onSuccess) {\n onSuccess(page)\n }\n }\n\n // Submit handler\n function onSubmit(values: TValues) {\n inertiaForm.transform(() => values)\n inertiaForm[route.method](route.url, {\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError: onErrorWithToast,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess: onSuccessWithReset,\n preserveScroll\n })\n }\n\n // Add inertia (server) errors to react form.\n useEffect(() => {\n for (const [key, error] of Object.entries(inertiaForm.errors)) {\n if (error) {\n reactForm.setError(key as Path<TValues>, {\n message: error as string,\n type: 'inertia'\n })\n }\n }\n }, [inertiaForm.errors, reactForm])\n\n return (\n <I18nextProvider i18n={i18n}>\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\n >\n <>\n {children({\n errors: inertiaForm.errors,\n form: reactForm,\n loading: inertiaForm.processing\n })}\n </>\n\n {displayRootError === 'monitor' && <ErrorMonitor error={rootError} />}\n </form>\n </I18nextProvider>\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\nimport { cn } from '@gmcode/react-ui'\n\nexport function HiddenField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n className,\n type = 'hidden',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n className={cn('hidden', className)}\n type={type}\n {...props}\n />\n )\n}\n","import { Checkbox, Field, Label, cn } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InfoCheckboxField<\n TFieldValues extends FieldValues = FieldValues\n>({\n children,\n className,\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n text,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n text?: string\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n className={cn('block', className)}\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Label\n className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info\"\n data-slot=\"field-label\"\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground\"\n disabled={field.disabled}\n id={inputId}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n <div className=\"grid gap-1.5 font-normal\">\n <p className=\"text-sm leading-none font-medium\">{label}</p>\n {text ? (\n <p className=\"text-sm text-muted-foreground\">{text}</p>\n ) : (\n children\n )}\n <ErrorMonitor error={fieldState.error} />\n </div>\n </Label>\n </Field>\n )}\n />\n )\n}\n","import {\n Button,\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\nimport { X } from 'lucide-react'\nimport { useTranslation } from 'react-i18next'\n\nexport function NullableSelectField<\n TFieldValues extends FieldValues = FieldValues\n>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n setValue,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n setValue: UseFormSetValue<TFieldValues>\n type?: HTMLInputTypeAttribute\n}) {\n // i18n\n const { t } = useTranslation()\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <div className=\"flex items-end gap-4\">\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n className=\"flex-1 overflow-hidden\"\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Button\n aria-label={t(($) => $.reset)}\n className=\"flex-none\"\n onClick={() =>\n setValue(\n inputName,\n '' as FieldPathValue<TFieldValues, FieldPath<TFieldValues>>\n )\n }\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n </div>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { Minus, Plus } from 'lucide-react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { useTranslation } from 'react-i18next'\n\nfunction stepInput(\n original: string,\n add: boolean,\n step?: number,\n min?: number,\n max?: number\n) {\n let parsed = Number(original)\n\n if (isNaN(parsed)) {\n return ''\n }\n\n if (add) {\n parsed += step === undefined ? 1 : step\n } else {\n parsed -= step === undefined ? 1 : step\n }\n\n if (min !== undefined) {\n parsed = Math.max(parsed, min)\n }\n\n if (max !== undefined) {\n parsed = Math.min(parsed, max)\n }\n\n return parsed.toString()\n}\n\nexport function NumericField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputMode = 'numeric',\n inputName,\n label,\n placeholder,\n type,\n ui,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputMode?: 'decimal' | 'numeric'\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n type?: HTMLInputTypeAttribute\n ui?: {\n max?: number\n min?: number\n setValue: UseFormSetValue<TFieldValues>\n step?: number\n }\n}) {\n // i18n\n const { t } = useTranslation()\n\n function stepValue(value: string, add: boolean) {\n if (ui?.setValue) {\n ui.setValue(\n inputName,\n stepInput(value, add, ui.step, ui.min, ui.max) as FieldPathValue<\n TFieldValues,\n FieldPath<TFieldValues>\n >,\n { shouldValidate: true }\n )\n }\n }\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <InputGroup>\n <InputGroupInput\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n inputMode={inputMode}\n placeholder={placeholder}\n type={type}\n {...field}\n />\n\n {ui && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n aria-label={t(($) => $.decrease)}\n disabled={disabled}\n onClick={() => stepValue(field.value, false)}\n size=\"icon-xs\"\n >\n <Minus />\n </InputGroupButton>\n\n <InputGroupButton\n aria-label={t(($) => $.increase)}\n disabled={disabled}\n onClick={() => stepValue(field.value, true)}\n size=\"icon-xs\"\n >\n <Plus />\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function PasswordField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n type = 'password',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { Option } from '@/types'\n\nexport function SelectField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Button, Spinner, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport function Submit({\n label,\n loading = false,\n type = 'submit',\n ...props\n}: ComponentProps<typeof Button> & {\n label?: string\n loading?: boolean\n}) {\n // i18n\n const { t } = useTranslation()\n\n return (\n <Button\n disabled={loading}\n type={type}\n {...props}\n >\n <div className=\"relative\">\n <span className={cn({ invisible: loading })}>\n {label ?? t(($) => $.submit)}\n </span>\n <Spinner\n className={cn(\n 'trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2',\n { block: loading }\n )}\n />\n </div>\n </Button>\n )\n}\n","import { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function SwitchField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Switch\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function TextField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'text',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\n\nexport function TextareaField<TFieldValues extends FieldValues = FieldValues>({\n cacheMeasurements,\n control,\n inputId,\n inputName,\n label,\n maxRows,\n minRows,\n onHeightChange,\n placeholder,\n resize = 'none',\n ...props\n}: ComponentProps<typeof Field> & {\n cacheMeasurements?: boolean\n control: Control<TFieldValues>\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n maxRows?: number\n minRows?: number\n onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void\n placeholder?: string\n resize?: 'both' | 'none' | 'x' | 'y'\n}) {\n return (\n <Controller\n name={inputName}\n control={control}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <TextareaAutosize\n aria-invalid={fieldState.invalid}\n autoComplete=\"off\"\n cacheMeasurements={cacheMeasurements}\n className={cn({\n resize: resize === 'both',\n 'resize-none': resize === 'none',\n 'resize-x': resize === 'x',\n 'resize-y': resize === 'y'\n })}\n id={inputId ?? (label ? inputName : undefined)}\n maxRows={maxRows}\n minRows={minRows}\n onHeightChange={onHeightChange}\n placeholder={placeholder}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["error","label","autoComplete","placeholder","readOnly","type","control","disabled","inputName","label","description","defaultValue","control","disabled","inputName","label","autoComplete","placeholder","description","control","disabled","inputName","$","label","autoComplete","placeholder","description","control","disabled","inputName"],"sources":["../src/i18n.ts","../src/lib/utils.ts","../src/components/error-monitor.tsx","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"sourcesContent":["import { type i18n as Ti18n, createInstance } from 'i18next'\nimport en from '@/locales/en'\n\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\n","/**\n * Convert a javascript `Date` object to a string with the format `aaaa-mm-dd`.\n */\nexport function dateToString(date: Date): string {\n return `${date.getFullYear()}-${(date.getMonth() + 1 + '').padStart(2, '0')}-${(date.getDate() + '').padStart(2, '0')}`\n}\n\n/**\n * Convert a string to a javascript `Date` object or undefined if the string is\n * not a valid date.\n */\nexport function stringToDate(string: string | undefined): Date | undefined {\n if (!string) {\n return undefined\n }\n\n const date = new Date(string)\n\n if (isNaN(date.getFullYear())) {\n return undefined\n }\n\n return date\n}\n","import type { ErrorData } from '@/types'\nimport { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation()\n\n if (!error?.message) {\n return null\n }\n\n if (t) {\n // @ts-expect-error: assert error.message to be a translation key\n return <FieldError errors={{ message: t(error.message, error.params) }} />\n }\n\n return <FieldError errors={error} />\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\n\nexport function CalendarField<TFieldValues extends FieldValues = FieldValues>({\n control,\n dateToString = defaultDateToString,\n disabled,\n inputId,\n inputName,\n label,\n locale,\n stringToDate = defaultStringToDate,\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n dateToString?: (date: Date) => string\n disabled?: Matcher | Matcher[]\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n locale?: Partial<DayPickerLocale>\n stringToDate?: (string: string | undefined) => Date | undefined\n}) {\n return (\n <Controller\n name={inputName}\n control={control}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Calendar\n aria-invalid={fieldState.invalid}\n className=\"w-full rounded-md border\"\n disabled={disabled}\n fixedWeeks={true}\n id={inputId ?? (label ? inputName : undefined)}\n locale={locale}\n mode=\"single\"\n onSelect={(date) => field.onChange(date ? dateToString(date) : '')}\n selected={stringToDate(field.value)}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Checkbox, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function CheckboxField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\n\nexport function InputField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputName,\n label,\n placeholder,\n readOnly,\n type,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n readOnly?: boolean\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Input\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n placeholder={placeholder}\n readOnly={readOnly}\n type={type}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function EmailField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'email',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { Option } from '@/types'\n\nexport function FancyRadioField<\n TFieldValues extends FieldValues = FieldValues\n>({\n control,\n defaultValue,\n description,\n disabled,\n groupId,\n inputName,\n label,\n options,\n ...props\n}: ComponentProps<typeof FieldSet> & {\n control: Control<TFieldValues>\n defaultValue: string\n description?: string\n disabled?: boolean\n groupId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Array<Option & { Icon?: FC<SVGProps<SVGSVGElement>> }>\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <FieldSet\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={groupId ?? inputName}>{label}</FieldLabel>\n )}\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n\n <RadioGroup\n defaultValue={defaultValue}\n disabled={field.disabled}\n id={groupId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onValueChange={field.onChange}\n ref={field.ref}\n >\n {options.map((option) => (\n <Label\n className=\"rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]\"\n data-slot=\"field-label\"\n key={option.key ?? option.id ?? option.value}\n >\n <div className=\"flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring\">\n <RadioGroupItem\n className=\"sr-only\"\n id={option.id}\n value={option.value}\n />\n {option.Icon && <option.Icon />}\n {option.label}\n </div>\n </Label>\n ))}\n </RadioGroup>\n </FieldSet>\n )}\n />\n )\n}\n","import type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { cn, flash } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { I18nextProvider } from 'react-i18next'\nimport type { Ruleset } from '@gmcode/tsv-input'\nimport type { Schema } from '@/index'\nimport i18n from '@/i18n'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { useForm as userReactForm } from 'react-hook-form'\n\ntype RenderFN<TValues extends FieldValues> = ({\n errors,\n form,\n loading\n}: {\n errors: FormDataErrors<object>\n form: UseFormReturn<TValues>\n loading: boolean\n}) => ReactNode\n\nexport function Form<\n TRuleset extends Ruleset,\n TSchema extends Schema<TRuleset>,\n TValues extends InferSchema<TSchema>\n>({\n children,\n className,\n defaults = {},\n rootError: displayRootError = 'flash',\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess,\n preserveScroll = true,\n resetOnSuccess = true,\n route,\n schema,\n setDefaultsOnSuccess = false\n}: {\n children: RenderFN<TValues>\n className?: string\n defaults?: Partial<DefaultValues<TValues>>\n /**\n * How to display the root error from inertia.\n *\n * - `flash` - use the Toaster component\n * - `monitor` - use the ErrorMonitor component\n * - `none` - don't display the root error\n *\n * @defaultValue `flash`\n */\n rootError?: 'flash' | 'monitor' | 'none'\n onBefore?: GlobalEventCallback<'before', RequestPayload>\n onBeforeUpdate?: GlobalEventCallback<'beforeUpdate', RequestPayload>\n onCancel?: GlobalEventCallback<'cancel', RequestPayload>\n onCancelToken?: CancelTokenCallback\n onError?: GlobalEventCallback<'error', RequestPayload>\n onFinish?: GlobalEventCallback<'finish', RequestPayload>\n onFlash?: GlobalEventCallback<'flash', RequestPayload>\n onPrefetched?: GlobalEventCallback<'prefetched', RequestPayload>\n onPrefetching?: GlobalEventCallback<'prefetching', RequestPayload>\n onProgress?: GlobalEventCallback<'progress', RequestPayload>\n onStart?: GlobalEventCallback<'start', RequestPayload>\n onSuccess?: GlobalEventCallback<'success', RequestPayload>\n preserveScroll?: boolean\n resetOnSuccess?: boolean\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\n setDefaultsOnSuccess?: boolean\n}) {\n const [rootError, setRootError] = useState<ErrorData>()\n\n const defaultValues = Object.fromEntries(\n Object.keys(schema.ruleset).map((field) => [field, defaults[field] ?? ''])\n ) as DefaultValues<TValues>\n\n // React Hook Form\n const reactForm = userReactForm<TValues>({\n defaultValues,\n resolver: useTsvResolver(schema)\n })\n\n // Inertia\n const inertiaForm = useInertiaForm<object>(defaultValues)\n\n function onErrorWithToast(errors: Errors) {\n if (errors.root) {\n if (displayRootError === 'flash') {\n flash({ level: 'error', title: errors.root })\n } else if (displayRootError === 'monitor') {\n setRootError({ message: errors.root })\n }\n }\n\n if (onError) {\n onError(errors)\n }\n }\n\n function onSuccessWithReset(page: Page<SharedPageProps>) {\n if (setDefaultsOnSuccess) {\n inertiaForm.setDefaults()\n reactForm.reset(reactForm.getValues())\n }\n\n if (resetOnSuccess) {\n inertiaForm.reset()\n reactForm.reset()\n }\n\n if (onSuccess) {\n onSuccess(page)\n }\n }\n\n // Submit handler\n function onSubmit(values: TValues) {\n inertiaForm.transform(() => values)\n inertiaForm[route.method](route.url, {\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError: onErrorWithToast,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess: onSuccessWithReset,\n preserveScroll\n })\n }\n\n // Add inertia (server) errors to react form.\n useEffect(() => {\n for (const [key, error] of Object.entries(inertiaForm.errors)) {\n if (error) {\n reactForm.setError(key as Path<TValues>, {\n message: error as string,\n type: 'inertia'\n })\n }\n }\n }, [inertiaForm.errors, reactForm])\n\n return (\n <I18nextProvider i18n={i18n}>\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\n >\n <>\n {children({\n errors: inertiaForm.errors,\n form: reactForm,\n loading: inertiaForm.processing\n })}\n </>\n\n {displayRootError === 'monitor' && <ErrorMonitor error={rootError} />}\n </form>\n </I18nextProvider>\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\nimport { cn } from '@gmcode/react-ui'\n\nexport function HiddenField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n className,\n type = 'hidden',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n className={cn('hidden', className)}\n type={type}\n {...props}\n />\n )\n}\n","import { Checkbox, Field, Label, cn } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InfoCheckboxField<\n TFieldValues extends FieldValues = FieldValues\n>({\n children,\n className,\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n text,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n text?: string\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n className={cn('block', className)}\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Label\n className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info\"\n data-slot=\"field-label\"\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground\"\n disabled={field.disabled}\n id={inputId}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n <div className=\"grid gap-1.5 font-normal\">\n <p className=\"text-sm leading-none font-medium\">{label}</p>\n {text ? (\n <p className=\"text-sm text-muted-foreground\">{text}</p>\n ) : (\n children\n )}\n <ErrorMonitor error={fieldState.error} />\n </div>\n </Label>\n </Field>\n )}\n />\n )\n}\n","import {\n Button,\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\nimport { X } from 'lucide-react'\nimport { useTranslation } from 'react-i18next'\n\nexport function NullableSelectField<\n TFieldValues extends FieldValues = FieldValues\n>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n setValue,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n setValue: UseFormSetValue<TFieldValues>\n type?: HTMLInputTypeAttribute\n}) {\n // i18n\n const { t } = useTranslation()\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <div className=\"flex items-end gap-4\">\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n className=\"flex-1 overflow-hidden\"\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Button\n aria-label={t(($) => $.reset)}\n className=\"flex-none\"\n onClick={() =>\n setValue(\n inputName,\n '' as FieldPathValue<TFieldValues, FieldPath<TFieldValues>>\n )\n }\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n </div>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { Minus, Plus } from 'lucide-react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { useTranslation } from 'react-i18next'\n\nfunction stepInput(\n original: string,\n add: boolean,\n step?: number,\n min?: number,\n max?: number\n) {\n let parsed = Number(original)\n\n if (isNaN(parsed)) {\n return ''\n }\n\n if (add) {\n parsed += step === undefined ? 1 : step\n } else {\n parsed -= step === undefined ? 1 : step\n }\n\n if (min !== undefined) {\n parsed = Math.max(parsed, min)\n }\n\n if (max !== undefined) {\n parsed = Math.min(parsed, max)\n }\n\n return parsed.toString()\n}\n\nexport function NumericField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputMode = 'numeric',\n inputName,\n label,\n placeholder,\n type,\n ui,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputMode?: 'decimal' | 'numeric'\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n type?: HTMLInputTypeAttribute\n ui?: {\n max?: number\n min?: number\n setValue: UseFormSetValue<TFieldValues>\n step?: number\n }\n}) {\n // i18n\n const { t } = useTranslation()\n\n function stepValue(value: string, add: boolean) {\n if (ui?.setValue) {\n ui.setValue(\n inputName,\n stepInput(value, add, ui.step, ui.min, ui.max) as FieldPathValue<\n TFieldValues,\n FieldPath<TFieldValues>\n >,\n { shouldValidate: true }\n )\n }\n }\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <InputGroup>\n <InputGroupInput\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n inputMode={inputMode}\n placeholder={placeholder}\n type={type}\n {...field}\n />\n\n {ui && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n aria-label={t(($) => $.decrease)}\n disabled={disabled}\n onClick={() => stepValue(field.value, false)}\n size=\"icon-xs\"\n >\n <Minus />\n </InputGroupButton>\n\n <InputGroupButton\n aria-label={t(($) => $.increase)}\n disabled={disabled}\n onClick={() => stepValue(field.value, true)}\n size=\"icon-xs\"\n >\n <Plus />\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function PasswordField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n type = 'password',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { Option } from '@/types'\n\nexport function SelectField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Button, Spinner, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport function Submit({\n label,\n loading = false,\n type = 'submit',\n ...props\n}: ComponentProps<typeof Button> & {\n label?: string\n loading?: boolean\n}) {\n // i18n\n const { t } = useTranslation()\n\n return (\n <Button\n disabled={loading}\n type={type}\n {...props}\n >\n <div className=\"relative\">\n <span className={cn({ invisible: loading })}>\n {label ?? t(($) => $.submit)}\n </span>\n <Spinner\n className={cn(\n 'trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2',\n { block: loading }\n )}\n />\n </div>\n </Button>\n )\n}\n","import { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function SwitchField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Switch\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function TextField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'text',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\n\nexport function TextareaField<TFieldValues extends FieldValues = FieldValues>({\n cacheMeasurements,\n control,\n inputId,\n inputName,\n label,\n maxRows,\n minRows,\n onHeightChange,\n placeholder,\n resize = 'none',\n ...props\n}: ComponentProps<typeof Field> & {\n cacheMeasurements?: boolean\n control: Control<TFieldValues>\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n maxRows?: number\n minRows?: number\n onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void\n placeholder?: string\n resize?: 'both' | 'none' | 'x' | 'y'\n}) {\n return (\n <Controller\n name={inputName}\n control={control}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <TextareaAutosize\n aria-invalid={fieldState.invalid}\n autoComplete=\"off\"\n cacheMeasurements={cacheMeasurements}\n className={cn({\n resize: resize === 'both',\n 'resize-none': resize === 'none',\n 'resize-x': resize === 'x',\n 'resize-y': resize === 'y'\n })}\n id={inputId ?? (label ? inputName : undefined)}\n maxRows={maxRows}\n minRows={minRows}\n onHeightChange={onHeightChange}\n placeholder={placeholder}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmcode/forms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Fully functional inertia react forms with client side validations.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18next",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"./package.json": "./package.json"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@gmcode/react-ui": "^0.3.
|
|
35
|
+
"@gmcode/react-ui": "^0.3.2",
|
|
36
36
|
"@gmcode/tsv-hookform": "^0.1.2",
|
|
37
|
-
"@gmcode/tsv-input": "^0.2.
|
|
37
|
+
"@gmcode/tsv-input": "^0.2.1",
|
|
38
38
|
"i18next": "^26.3.4",
|
|
39
39
|
"lucide-react": "^1.16.0",
|
|
40
40
|
"radix-ui": "^1.4.3",
|
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@babel/core": "^8.0.1",
|
|
49
|
-
"@gmcode/tsv-core": "^0.1.2",
|
|
50
49
|
"@rolldown/plugin-babel": "^0.2.3",
|
|
51
50
|
"@tailwindcss/vite": "^4.3.1",
|
|
52
51
|
"@types/babel__core": "^7.20.5",
|
|
@@ -70,9 +69,6 @@
|
|
|
70
69
|
"react": "^19.2.7",
|
|
71
70
|
"react-dom": "^19.2.7"
|
|
72
71
|
},
|
|
73
|
-
"inlinedDependencies": {
|
|
74
|
-
"@gmcode/tsv-core": "0.1.2"
|
|
75
|
-
},
|
|
76
72
|
"msw": {
|
|
77
73
|
"workerDirectory": [
|
|
78
74
|
"public"
|