maquinaweb-ui 2.27.3 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,6 +25,7 @@ interface InputTextProps extends React.InputHTMLAttributes<HTMLInputElement> {
25
25
  detailClassName?: string;
26
26
  inputClassName?: string;
27
27
  help?: string;
28
+ setError?: (error: string | undefined) => void;
28
29
  moneyConfig?: Intl.NumberFormatOptions & {
29
30
  prefix?: string;
30
31
  suffix?: string;
@@ -44,6 +45,7 @@ declare function InputText({
44
45
  inputType,
45
46
  maskOptions,
46
47
  error,
48
+ setError,
47
49
  id,
48
50
  ref,
49
51
  detail,
@@ -93,6 +95,7 @@ interface CookieTextFieldProps extends InputTextProps {
93
95
  declare function CookieTextField({
94
96
  name,
95
97
  maxAge,
98
+ onChange,
96
99
  ...inputProps
97
100
  }: CookieTextFieldProps): react_jsx_runtime1.JSX.Element;
98
101
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.d.ts","names":[],"sources":["../src/components/text-field/TextField.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"text-field.d.ts","names":[],"sources":["../src/components/text-field/TextField.tsx"],"sourcesContent":[],"mappings":";;;;;;KAuBK,MAAA;UAmBY,cAAA,SACP,KAAA,CAAM,oBAAoB;QAC5B,KAAA,CAAM,aAAa;EArBtB,KAAA,CAAA,EAAA,MAAI;EAmBQ,WAAA,CAAA,EAAA,MACf;EAAA,WAAA,CAAA,EAAA,MAAA;WAAkC,CAAA,EAAA,MAAA;UACT,CAAA,EAAA,OAAA;WAAb,CAAA,EAAA,SAAA,GAAA,OAAA;MASF,CAAA,EAAA,MAAM;UACL,CAAM,EAAA,OAAA;SACV,CAAA,EAFG,KAAA,CAAM,YAET,CAAA,GAAA,CAAA;UACO,CAAA,EAFH,KAAA,CAAM,SAEH;MACN,CAAA,EAFD,MAEO;aAOK,CAAA,EARL,OAQK;OArBX,CAAA,EAcA,KAAA,CAAM,SAdA;EAAmB,EAAA,CAAA,EAAA,MAAA;EAuB1B,MAAA,CAAA,EAAA,MAAS;EAAA,eAAA,CAAA,EAAA,MAAA;gBAChB,CAAA,EAAA,MAAA;MACA,CAAA,EAAA,MAAA;UACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,GAAA,SAAA,EAAA,GAAA,IAAA;aACA,CAAA,EANc,IAAA,CAAK,mBAMnB,GAAA;IACA,MAAA,CAAA,EAAA,MAAA;IACA,MAAA,CAAA,EAAA,MAAA;;;iBANO,SAAA,CASP;EAAA,KAAA;EAAA,WAAA;EAAA,WAAA;EAAA,SAAA;EAAA,QAAA;EAAA,QAAA;EAAA,IAAA;EAAA,QAAA;EAAA,OAAA;EAAA,IAAA;EAAA,SAAA;EAAA,WAAA;EAAA,KAAA;EAAA,QAAA;EAAA,EAAA;EAAA,GAAA;EAAA,MAAA;EAAA,eAAA;EAAA,cAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,IAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAiBC,cAjBD,CAAA,EAiBe,kBAAA,CAAA,GAAA,CAAA,OAjBf;AACA,UAqHe,cArHf,CAAA,qBAsHqB,WAtHrB,GAsHmC,WAtHnC,EAAA,mBAuHmB,SAvHnB,CAuH6B,YAvH7B,CAAA,GAuH6C,SAvH7C,CAuHuD,YAvHvD,CAAA,CAAA,SAwHQ,kBAxHR,CAwH2B,YAxH3B,EAwHyC,UAxHzC,CAAA,CAAA;UACA,CAAA,EAAA,OAAA;UACA,CAAA,EAAA,OAAA;UACA,CAAA,EAwHW,KAAA,CAAM,SAxHjB;cACA,CAAA,EAwHe,cAxHf,CAwH8B,YAxH9B,EAwH4C,UAxH5C,CAAA;UACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAwH8B,OAxH9B,CAAA,IAAA,CAAA,GAAA,IAAA;WACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,MAAA;;iBA6HO,SA3HP,CAAA,qBA4HqB,WA5HrB,GA4HmC,WA5HnC,EAAA,mBA6HmB,SA7HnB,CA6H6B,YA7H7B,CAAA,GA6H6C,SA7H7C,CA6HuD,YA7HvD,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,SAAA;EAAA,MAAA;EAAA,GAAA;AAAA,CAAA,EAuIC,cAvID,CAuIgB,YAvIhB,EAuI8B,UAvI9B,CAAA,GAwIA,IAxIA,CAwIK,cAxIL,EAAA,UAAA,CAAA,CAAA,EAwIgC,kBAAA,CAAA,GAAA,CAAA,OAxIhC;AACA,UA6Ke,mBAAA,SAA4B,IA7K3C,CA6KgD,cA7KhD,EAAA,UAAA,CAAA,CAAA;MACA,EAAA,MAAA;cACA,CAAA,EAAA,MAAA;SACA,CAAA,EA6KU,SA7KV;UACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA;;iBAgLO,cAAA,CA7KN;EAAA,IAAA;EAAA,YAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAkLA,mBAlLA,CAAA,EAkLmB,kBAAA,CAAA,GAAA,CAAA,OAlLnB;AAAc,UAoNA,oBAAA,SAA6B,cApN7B,CAAA;EAAA,IAAA,EAAA,MAAA;EAqGA,MAAA,CAAA,EAAA,MAAA;;iBAoHR,eAAA,CAnHc;EAAA,IAAA;EAAA,MAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAwHpB,oBAxHoB,CAAA,EAwHA,kBAAA,CAAA,GAAA,CAAA,OAxHA"}
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { cn } from "./utils-C0f9Ma6r.js";
5
5
  import { Label } from "./label-BqtcCyMj.js";
6
- import { FormField, FormItem, FormMessage, InputHelp } from "./input-help-C9Himejv.js";
6
+ import { FormField, FormItem, InputHelp } from "./input-help-C9Himejv.js";
7
7
  import { Input } from "./input-COsbbKgj.js";
8
8
  import { useFormContext } from "react-hook-form";
9
9
  import { useEffect, useId, useState } from "react";
@@ -47,7 +47,7 @@ var use_money_input_default = useMoneyInput;
47
47
 
48
48
  //#endregion
49
49
  //#region src/components/text-field/TextField.tsx
50
- function InputText({ label, description, placeholder, className, children, disabled, type, required, maskRef, mask, inputType = "default", maskOptions, error, id, ref, detail, detailClassName, inputClassName, help, value, moneyConfig, name, onChange,...props }) {
50
+ function InputText({ label, description, placeholder, className, children, disabled, type, required, maskRef, mask, inputType = "default", maskOptions, error, setError, id, ref, detail, detailClassName, inputClassName, help, value, moneyConfig, name, onChange,...props }) {
51
51
  const { displayValue, handleChange } = use_money_input_default({
52
52
  config: moneyConfig,
53
53
  onChange(value$1) {
@@ -55,6 +55,14 @@ function InputText({ label, description, placeholder, className, children, disab
55
55
  },
56
56
  value: Number(value)
57
57
  });
58
+ const handleInputChange = (e) => {
59
+ const valueNumber = Number(value);
60
+ if (valueNumber >= 0 && props?.max && valueNumber >= Number(props.max)) {
61
+ setError?.(`O valor deve ser menor que ${props.max}`);
62
+ return;
63
+ }
64
+ inputType === "money" ? handleChange?.(e) : onChange?.(e);
65
+ };
58
66
  return /* @__PURE__ */ jsxs("div", {
59
67
  className: cn("w-full flex flex-col gap-1", className),
60
68
  id: `input-${name?.replace(".", "-")}`,
@@ -92,7 +100,7 @@ function InputText({ label, description, placeholder, className, children, disab
92
100
  className: cn(error && "border-destructive", inputClassName),
93
101
  disabled,
94
102
  id,
95
- onChange: inputType === "money" ? handleChange : onChange,
103
+ onChange: handleInputChange,
96
104
  placeholder,
97
105
  ref: maskRef || (mask ? withMask(mask, {
98
106
  autoUnmask: true,
@@ -110,14 +118,18 @@ function InputText({ label, description, placeholder, className, children, disab
110
118
  className: cn("text-sm text-muted-foreground", className),
111
119
  children: description
112
120
  }),
113
- error && error
121
+ error && /* @__PURE__ */ jsx("p", {
122
+ className: "text-destructive text-xs",
123
+ "data-slot": "form-message",
124
+ children: error
125
+ })
114
126
  ]
115
127
  })]
116
128
  });
117
129
  }
118
130
  const defaultTransform = (value) => value;
119
131
  function TextField({ name, className, required, defaultValue, onChange, transform = defaultTransform, prefix,...props }) {
120
- const { control } = useFormContext();
132
+ const { control, setError } = useFormContext();
121
133
  const inputName = prefix ? `${prefix}.${name}` : name;
122
134
  const id = useId();
123
135
  return /* @__PURE__ */ jsx(FormField, {
@@ -130,7 +142,7 @@ function TextField({ name, className, required, defaultValue, onChange, transfor
130
142
  ...field,
131
143
  ...props,
132
144
  disabled: props.disabled,
133
- error: fieldState?.error && /* @__PURE__ */ jsx(FormMessage, {}),
145
+ error: fieldState?.error?.message,
134
146
  id: `${id}-${inputName.replaceAll(".", "-")}`,
135
147
  name: inputName,
136
148
  onChange: (e) => {
@@ -138,6 +150,9 @@ function TextField({ name, className, required, defaultValue, onChange, transfor
138
150
  onChange?.(transform(e.target.value));
139
151
  },
140
152
  required,
153
+ setError: (error) => {
154
+ setError(inputName, { message: error || "" });
155
+ },
141
156
  value: field.value || ""
142
157
  })
143
158
  }),
@@ -146,6 +161,7 @@ function TextField({ name, className, required, defaultValue, onChange, transfor
146
161
  }
147
162
  function QueryTextField({ name, defaultValue, options,...props }) {
148
163
  const id = useId();
164
+ const [error, setError] = useState(void 0);
149
165
  const [filter, setFilter] = useQueryState(name, parseAsString.withOptions({
150
166
  clearOnDefault: true,
151
167
  shallow: false,
@@ -160,18 +176,24 @@ function QueryTextField({ name, defaultValue, options,...props }) {
160
176
  name,
161
177
  value: filter,
162
178
  ...props,
179
+ error,
163
180
  onChange: (e) => {
164
181
  setFilter(e.target.value);
165
182
  props.onChange?.(e.target.value);
166
- }
183
+ },
184
+ setError
167
185
  });
168
186
  }
169
- function CookieTextField({ name, maxAge = 3600 * 24 * 7,...inputProps }) {
187
+ function CookieTextField({ name, maxAge = 3600 * 24 * 7, onChange,...inputProps }) {
170
188
  const { getCookie, setCookie, deleteCookie } = useCookiesNext();
189
+ const [error, setError] = useState(void 0);
171
190
  const [value, setValue] = useState("");
172
191
  useEffect(() => {
173
192
  const stored = getCookie(`input-${name}`);
174
- if (stored && typeof stored === "string") setValue(stored);
193
+ if (stored && typeof stored === "string") {
194
+ setValue(stored);
195
+ onChange?.(stored);
196
+ }
175
197
  }, [name, getCookie]);
176
198
  useEffect(() => {
177
199
  if (value !== "" && value !== void 0) setCookie(`input-${name}`, value, { maxAge });
@@ -183,9 +205,14 @@ function CookieTextField({ name, maxAge = 3600 * 24 * 7,...inputProps }) {
183
205
  ]);
184
206
  return /* @__PURE__ */ jsx(InputText, {
185
207
  ...inputProps,
208
+ error,
186
209
  id: `cookie-${name}`,
187
210
  name,
188
- onChange: (e) => setValue(e.target.value),
211
+ onChange: (e) => {
212
+ setValue(e.target.value);
213
+ onChange?.(e.target.value);
214
+ },
215
+ setError,
189
216
  value
190
217
  });
191
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.js","names":["defaultConfig: Intl.NumberFormatOptions","useMoneyInput","value"],"sources":["../src/hooks/use-money-input.ts","../src/components/text-field/TextField.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\ntype useMoneyInputProps = {\n config?: Intl.NumberFormatOptions & { prefix?: string; suffix?: string };\n value?: number;\n onChange?: (value?: number) => void;\n};\n\nconst defaultConfig: Intl.NumberFormatOptions = {\n currency: 'BRL',\n currencyDisplay: 'symbol',\n currencySign: 'standard',\n style: 'currency',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n};\n\nconst useMoneyInput = ({\n config = defaultConfig,\n onChange,\n value,\n}: useMoneyInputProps) => {\n const prefix = config?.prefix || '';\n const suffix = config?.suffix || '';\n const divider = Math.pow(10, config?.maximumFractionDigits || 2);\n const moneyFormatter = Intl.NumberFormat('pt-BR', config);\n const [displayValue, setDisplayValue] = useState(() =>\n value ? `${prefix}${moneyFormatter.format(value)}${suffix}` : ''\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, '');\n const realValue = digits ? Number(digits) / divider : undefined;\n const formattedValue =\n digits && realValue\n ? `${prefix}${moneyFormatter.format(realValue)}${suffix}`\n : '';\n\n setDisplayValue(formattedValue);\n onChange?.(realValue);\n };\n\n useEffect(() => {\n const formatted = value\n ? `${prefix}${moneyFormatter.format(value)}${suffix}`\n : '';\n setDisplayValue(formatted);\n }, [value]);\n\n return { displayValue, handleChange };\n};\n\nexport default useMoneyInput;\n","'use client';\n\nimport { useEffect, useId, useState } from 'react';\n\nimport {\n type FieldPath,\n type FieldPathValue,\n type FieldValues,\n type UseControllerProps,\n useFormContext,\n} from 'react-hook-form';\nimport { type Options as MaskOptions, withMask } from 'use-mask-input';\nimport useMoneyInput from '@/hooks/use-money-input';\n\nimport { FormField, FormItem, FormMessage } from '@/components/ui/form';\nimport { Input } from '@/components/ui/input';\nimport { InputHelp } from '@/components/ui/input-help';\nimport { Label } from '@/components/ui/label';\n\nimport { cn } from '@/lib/utils';\nimport { useCookiesNext } from 'cookies-next';\nimport { type Options, parseAsString, useQueryState } from 'nuqs';\n\ntype Mask =\n | 'datetime'\n | 'email'\n | 'numeric'\n | 'currency'\n | 'decimal'\n | 'integer'\n | 'percentage'\n | 'url'\n | 'ip'\n | 'mac'\n | 'ssn'\n | 'brl-currency'\n | 'cpf'\n | 'cnpj'\n | (string & {})\n | (string[] & {})\n | null;\n\nexport interface InputTextProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n placeholder?: string;\n description?: string;\n className?: string;\n disabled?: boolean;\n inputType?: 'default' | 'money';\n type?: string;\n required?: boolean;\n maskRef?: React.ForwardedRef<any>;\n children?: React.ReactNode;\n mask?: Mask;\n maskOptions?: MaskOptions;\n error?: React.ReactNode;\n id?: string;\n detail?: string;\n detailClassName?: string;\n inputClassName?: string;\n help?: string;\n moneyConfig?: Intl.NumberFormatOptions & { prefix?: string; suffix?: string };\n}\nfunction InputText({\n label,\n description,\n placeholder,\n className,\n children,\n disabled,\n type,\n required,\n maskRef,\n mask,\n inputType = 'default',\n maskOptions,\n error,\n id,\n ref,\n detail,\n detailClassName,\n inputClassName,\n help,\n value,\n moneyConfig,\n name,\n onChange,\n ...props\n}: InputTextProps) {\n const { displayValue, handleChange } = useMoneyInput({\n config: moneyConfig,\n onChange(value) {\n onChange?.({\n ...({} as React.ChangeEvent<HTMLInputElement>),\n target: { value: value as any },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n value: Number(value),\n });\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={`input-${name?.replace('.', '-')}`}\n ref={ref}\n >\n <div className=\"flex items-end gap-1.5\">\n <div className={cn('flex !gap-0 flex-col', className)}>\n {label && (\n <Label\n className={cn(\n error && 'text-destructive',\n className,\n disabled && 'text-muted-foreground',\n 'inline-flex items-center flex-row gap-0.5 leading-none'\n )}\n htmlFor={id}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-[1px]\">*</span>\n )}\n </Label>\n )}\n {detail && (\n <Label\n className={cn(\n 'text-sm text-muted-foreground font-normal leading-none',\n detailClassName\n )}\n htmlFor={id}\n >\n {detail}\n </Label>\n )}\n </div>\n\n <InputHelp help={help} name={name} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <div className=\"relative\">\n <Input\n className={cn(error && 'border-destructive', inputClassName)}\n disabled={disabled}\n id={id}\n onChange={inputType === 'money' ? handleChange : onChange}\n placeholder={placeholder}\n ref={\n maskRef ||\n ((mask\n ? withMask(mask, {\n autoUnmask: true,\n ...maskOptions,\n showMaskOnHover: false,\n showMaskOnFocus: false,\n clearMaskOnLostFocus: true,\n })\n : undefined) as any)\n }\n type={type}\n value={value && inputType === 'money' ? displayValue : value}\n {...props}\n />\n {children}\n </div>\n {description && (\n <p className={cn('text-sm text-muted-foreground', className)}>\n {description}\n </p>\n )}\n {error && error}\n </div>\n </div>\n );\n}\n\nexport interface TextFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n children?: React.ReactNode;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: string) => Promise<void> | void;\n transform?: (value: string) => string;\n}\n\nconst defaultTransform = (value: string) => value;\n\nfunction TextField<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n className,\n required,\n defaultValue,\n onChange,\n transform = defaultTransform,\n prefix,\n ...props\n}: TextFieldProps<TFieldValues, TFieldName> &\n Omit<InputTextProps, 'onChange'>) {\n const { control } = useFormContext();\n const inputName = prefix ? `${prefix}.${name}` : name;\n const id = useId();\n\n return (\n <FormField\n control={control}\n defaultValue={defaultValue}\n name={inputName}\n render={({ field, fieldState }) => (\n <FormItem className={cn('w-full', className)}>\n <InputText\n {...field}\n {...props}\n disabled={props.disabled}\n error={fieldState?.error && <FormMessage />}\n id={`${id}-${inputName.replaceAll('.', '-')}`}\n name={inputName}\n onChange={(e) => {\n field.onChange(transform(e.target.value));\n onChange?.(transform(e.target.value));\n }}\n required={required}\n value={field.value || ''}\n />\n </FormItem>\n )}\n rules={{\n required: required ? 'Campo obrigatório' : false,\n }}\n />\n );\n}\n\nexport interface QueryTextFieldProps extends Omit<InputTextProps, 'onChange'> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: string) => void;\n}\n\nfunction QueryTextField({\n name,\n defaultValue,\n options,\n ...props\n}: QueryTextFieldProps) {\n const id = useId();\n const [filter, setFilter] = useQueryState(\n name,\n parseAsString\n .withOptions({\n clearOnDefault: true,\n shallow: false,\n limitUrlUpdates: {\n method: 'debounce',\n timeMs: 400,\n },\n ...options,\n })\n .withDefault(defaultValue ?? '')\n );\n\n return (\n <InputText\n id={`${id}-${name}`}\n name={name}\n value={filter}\n {...props}\n onChange={(e) => {\n setFilter(e.target.value);\n props.onChange?.(e.target.value);\n }}\n />\n );\n}\n\nexport interface CookieTextFieldProps extends InputTextProps {\n name: string;\n maxAge?: number;\n}\n\nfunction CookieTextField({\n name,\n maxAge = 60 * 60 * 24 * 7,\n ...inputProps\n}: CookieTextFieldProps) {\n const { getCookie, setCookie, deleteCookie } = useCookiesNext();\n const [value, setValue] = useState('');\n\n useEffect(() => {\n const stored = getCookie(`input-${name}`);\n if (stored && typeof stored === 'string') {\n setValue(stored);\n }\n }, [name, getCookie]);\n\n useEffect(() => {\n if (value !== '' && value !== undefined) {\n setCookie(`input-${name}`, value, { maxAge });\n } else {\n deleteCookie(`input-${name}`);\n }\n }, [name, value, setCookie]);\n\n return (\n <InputText\n {...inputProps}\n id={`cookie-${name}`}\n name={name}\n onChange={(e) => setValue(e.target.value)}\n value={value}\n />\n );\n}\n\nexport { InputText, TextField, QueryTextField, CookieTextField };\n"],"mappings":";;;;;;;;;;;;;;;AAUA,MAAMA,gBAA0C;CAC9C,UAAU;CACV,iBAAiB;CACjB,cAAc;CACd,OAAO;CACP,uBAAuB;CACvB,uBAAuB;CACxB;AAED,MAAM,iBAAiB,EACrB,SAAS,eACT,UACA,YACwB;CACxB,MAAM,SAAS,QAAQ,UAAU;CACjC,MAAM,SAAS,QAAQ,UAAU;CACjC,MAAM,UAAU,KAAK,IAAI,IAAI,QAAQ,yBAAyB,EAAE;CAChE,MAAM,iBAAiB,KAAK,aAAa,SAAS,OAAO;CACzD,MAAM,CAAC,cAAc,mBAAmB,eACtC,QAAQ,GAAG,SAAS,eAAe,OAAO,MAAM,GAAG,WAAW,GAC/D;CAED,MAAM,gBAAgB,MAA2C;EAC/D,MAAM,SAAS,EAAE,OAAO,MAAM,QAAQ,OAAO,GAAG;EAChD,MAAM,YAAY,SAAS,OAAO,OAAO,GAAG,UAAU;EACtD,MAAM,iBACJ,UAAU,YACN,GAAG,SAAS,eAAe,OAAO,UAAU,GAAG,WAC/C;AAEN,kBAAgB,eAAe;AAC/B,aAAW,UAAU;;AAGvB,iBAAgB;EACd,MAAM,YAAY,QACd,GAAG,SAAS,eAAe,OAAO,MAAM,GAAG,WAC3C;AACJ,kBAAgB,UAAU;IACzB,CAAC,MAAM,CAAC;AAEX,QAAO;EAAE;EAAc;EAAc;;AAGvC,8BAAe;;;;ACWf,SAAS,UAAU,EACjB,OACA,aACA,aACA,WACA,UACA,UACA,MACA,UACA,SACA,MACA,YAAY,WACZ,aACA,OACA,IACA,KACA,QACA,iBACA,gBACA,MACA,OACA,aACA,MACA,SACA,GAAG,SACc;CACjB,MAAM,EAAE,cAAc,iBAAiBC,wBAAc;EACnD,QAAQ;EACR,SAAS,SAAO;AACd,cAAW,EAET,QAAQ,EAAE,OAAOC,SAAc,EAChC,CAAwC;;EAE3C,OAAO,OAAO,MAAM;EACrB,CAAC;AAEF,QACE,qBAAC;EACC,WAAW,GAAG,8BAA8B,UAAU;EACtD,IAAI,SAAS,MAAM,QAAQ,KAAK,IAAI;EAC/B;aAEL,qBAAC;GAAI,WAAU;cACb,qBAAC;IAAI,WAAW,GAAG,wBAAwB,UAAU;eAClD,SACC,qBAAC;KACC,WAAW,GACT,SAAS,oBACT,WACA,YAAY,yBACZ,yDACD;KACD,SAAS;;MAER;MAAM;MACN,YACC,oBAAC;OAAK,WAAU;iBAAqC;QAAQ;;MAEzD,EAET,UACC,oBAAC;KACC,WAAW,GACT,0DACA,gBACD;KACD,SAAS;eAER;MACK;KAEN,EAEN,oBAAC;IAAgB;IAAY;KAAQ;IACjC,EACN,qBAAC;GAAI,WAAU;;IACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MACC,WAAW,GAAG,SAAS,sBAAsB,eAAe;MAClD;MACN;MACJ,UAAU,cAAc,UAAU,eAAe;MACpC;MACb,KACE,YACE,OACE,SAAS,MAAM;OACb,YAAY;OACZ,GAAG;OACH,iBAAiB;OACjB,iBAAiB;OACjB,sBAAsB;OACvB,CAAC,GACF;MAEA;MACN,OAAO,SAAS,cAAc,UAAU,eAAe;MACvD,GAAI;OACJ,EACD;MACG;IACL,eACC,oBAAC;KAAE,WAAW,GAAG,iCAAiC,UAAU;eACzD;MACC;IAEL,SAAS;;IACN;GACF;;AAgBV,MAAM,oBAAoB,UAAkB;AAE5C,SAAS,UAGP,EACA,MACA,WACA,UACA,cACA,UACA,YAAY,kBACZ,OACA,GAAG,SAE+B;CAClC,MAAM,EAAE,YAAY,gBAAgB;CACpC,MAAM,YAAY,SAAS,GAAG,OAAO,GAAG,SAAS;CACjD,MAAM,KAAK,OAAO;AAElB,QACE,oBAAC;EACU;EACK;EACd,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,oBAAC;GAAS,WAAW,GAAG,UAAU,UAAU;aAC1C,oBAAC;IACC,GAAI;IACJ,GAAI;IACJ,UAAU,MAAM;IAChB,OAAO,YAAY,SAAS,oBAAC,gBAAc;IAC3C,IAAI,GAAG,GAAG,GAAG,UAAU,WAAW,KAAK,IAAI;IAC3C,MAAM;IACN,WAAW,MAAM;AACf,WAAM,SAAS,UAAU,EAAE,OAAO,MAAM,CAAC;AACzC,gBAAW,UAAU,EAAE,OAAO,MAAM,CAAC;;IAE7B;IACV,OAAO,MAAM,SAAS;KACtB;IACO;EAEb,OAAO,EACL,UAAU,WAAW,sBAAsB,OAC5C;GACD;;AAWN,SAAS,eAAe,EACtB,MACA,cACA,QACA,GAAG,SACmB;CACtB,MAAM,KAAK,OAAO;CAClB,MAAM,CAAC,QAAQ,aAAa,cAC1B,MACA,cACG,YAAY;EACX,gBAAgB;EAChB,SAAS;EACT,iBAAiB;GACf,QAAQ;GACR,QAAQ;GACT;EACD,GAAG;EACJ,CAAC,CACD,YAAY,gBAAgB,GAAG,CACnC;AAED,QACE,oBAAC;EACC,IAAI,GAAG,GAAG,GAAG;EACP;EACN,OAAO;EACP,GAAI;EACJ,WAAW,MAAM;AACf,aAAU,EAAE,OAAO,MAAM;AACzB,SAAM,WAAW,EAAE,OAAO,MAAM;;GAElC;;AASN,SAAS,gBAAgB,EACvB,MACA,SAAS,OAAU,KAAK,EACxB,GAAG,cACoB;CACvB,MAAM,EAAE,WAAW,WAAW,iBAAiB,gBAAgB;CAC/D,MAAM,CAAC,OAAO,YAAY,SAAS,GAAG;AAEtC,iBAAgB;EACd,MAAM,SAAS,UAAU,SAAS,OAAO;AACzC,MAAI,UAAU,OAAO,WAAW,SAC9B,UAAS,OAAO;IAEjB,CAAC,MAAM,UAAU,CAAC;AAErB,iBAAgB;AACd,MAAI,UAAU,MAAM,UAAU,OAC5B,WAAU,SAAS,QAAQ,OAAO,EAAE,QAAQ,CAAC;MAE7C,cAAa,SAAS,OAAO;IAE9B;EAAC;EAAM;EAAO;EAAU,CAAC;AAE5B,QACE,oBAAC;EACC,GAAI;EACJ,IAAI,UAAU;EACR;EACN,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;EAClC;GACP"}
1
+ {"version":3,"file":"text-field.js","names":["defaultConfig: Intl.NumberFormatOptions","useMoneyInput","value"],"sources":["../src/hooks/use-money-input.ts","../src/components/text-field/TextField.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\ntype useMoneyInputProps = {\n config?: Intl.NumberFormatOptions & { prefix?: string; suffix?: string };\n value?: number;\n onChange?: (value?: number) => void;\n};\n\nconst defaultConfig: Intl.NumberFormatOptions = {\n currency: 'BRL',\n currencyDisplay: 'symbol',\n currencySign: 'standard',\n style: 'currency',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n};\n\nconst useMoneyInput = ({\n config = defaultConfig,\n onChange,\n value,\n}: useMoneyInputProps) => {\n const prefix = config?.prefix || '';\n const suffix = config?.suffix || '';\n const divider = Math.pow(10, config?.maximumFractionDigits || 2);\n const moneyFormatter = Intl.NumberFormat('pt-BR', config);\n const [displayValue, setDisplayValue] = useState(() =>\n value ? `${prefix}${moneyFormatter.format(value)}${suffix}` : ''\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, '');\n const realValue = digits ? Number(digits) / divider : undefined;\n const formattedValue =\n digits && realValue\n ? `${prefix}${moneyFormatter.format(realValue)}${suffix}`\n : '';\n\n setDisplayValue(formattedValue);\n onChange?.(realValue);\n };\n\n useEffect(() => {\n const formatted = value\n ? `${prefix}${moneyFormatter.format(value)}${suffix}`\n : '';\n setDisplayValue(formatted);\n }, [value]);\n\n return { displayValue, handleChange };\n};\n\nexport default useMoneyInput;\n","'use client';\n\nimport { useEffect, useId, useState } from 'react';\n\nimport {\n type FieldPath,\n type FieldPathValue,\n type FieldValues,\n type UseControllerProps,\n useFormContext,\n} from 'react-hook-form';\nimport { type Options as MaskOptions, withMask } from 'use-mask-input';\nimport useMoneyInput from '@/hooks/use-money-input';\n\nimport { FormField, FormItem, FormMessage } from '@/components/ui/form';\nimport { Input } from '@/components/ui/input';\nimport { InputHelp } from '@/components/ui/input-help';\nimport { Label } from '@/components/ui/label';\n\nimport { cn } from '@/lib/utils';\nimport { useCookiesNext } from 'cookies-next';\nimport { type Options, parseAsString, useQueryState } from 'nuqs';\n\ntype Mask =\n | 'datetime'\n | 'email'\n | 'numeric'\n | 'currency'\n | 'decimal'\n | 'integer'\n | 'percentage'\n | 'url'\n | 'ip'\n | 'mac'\n | 'ssn'\n | 'brl-currency'\n | 'cpf'\n | 'cnpj'\n | (string & {})\n | (string[] & {})\n | null;\n\nexport interface InputTextProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n placeholder?: string;\n description?: string;\n className?: string;\n disabled?: boolean;\n inputType?: 'default' | 'money';\n type?: string;\n required?: boolean;\n maskRef?: React.ForwardedRef<any>;\n children?: React.ReactNode;\n mask?: Mask;\n maskOptions?: MaskOptions;\n error?: React.ReactNode;\n id?: string;\n detail?: string;\n detailClassName?: string;\n inputClassName?: string;\n help?: string;\n setError?: (error: string | undefined) => void;\n moneyConfig?: Intl.NumberFormatOptions & { prefix?: string; suffix?: string };\n}\nfunction InputText({\n label,\n description,\n placeholder,\n className,\n children,\n disabled,\n type,\n required,\n maskRef,\n mask,\n inputType = 'default',\n maskOptions,\n error,\n setError,\n id,\n ref,\n detail,\n detailClassName,\n inputClassName,\n help,\n value,\n moneyConfig,\n name,\n onChange,\n ...props\n}: InputTextProps) {\n const { displayValue, handleChange } = useMoneyInput({\n config: moneyConfig,\n onChange(value) {\n onChange?.({\n ...({} as React.ChangeEvent<HTMLInputElement>),\n target: { value: value as any },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n value: Number(value),\n });\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const valueNumber = Number(value);\n if (valueNumber >= 0 && props?.max && valueNumber >= Number(props.max)) {\n setError?.(`O valor deve ser menor que ${props.max}`);\n return;\n }\n inputType === 'money' ? handleChange?.(e) : onChange?.(e);\n };\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={`input-${name?.replace('.', '-')}`}\n ref={ref}\n >\n <div className=\"flex items-end gap-1.5\">\n <div className={cn('flex !gap-0 flex-col', className)}>\n {label && (\n <Label\n className={cn(\n error && 'text-destructive',\n className,\n disabled && 'text-muted-foreground',\n 'inline-flex items-center flex-row gap-0.5 leading-none'\n )}\n htmlFor={id}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-[1px]\">*</span>\n )}\n </Label>\n )}\n {detail && (\n <Label\n className={cn(\n 'text-sm text-muted-foreground font-normal leading-none',\n detailClassName\n )}\n htmlFor={id}\n >\n {detail}\n </Label>\n )}\n </div>\n\n <InputHelp help={help} name={name} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <div className=\"relative\">\n <Input\n className={cn(error && 'border-destructive', inputClassName)}\n disabled={disabled}\n id={id}\n onChange={handleInputChange}\n placeholder={placeholder}\n ref={\n maskRef ||\n ((mask\n ? withMask(mask, {\n autoUnmask: true,\n ...maskOptions,\n showMaskOnHover: false,\n showMaskOnFocus: false,\n clearMaskOnLostFocus: true,\n })\n : undefined) as any)\n }\n type={type}\n value={value && inputType === 'money' ? displayValue : value}\n {...props}\n />\n {children}\n </div>\n {description && (\n <p className={cn('text-sm text-muted-foreground', className)}>\n {description}\n </p>\n )}\n {error && (\n <p className=\"text-destructive text-xs\" data-slot=\"form-message\">\n {error}\n </p>\n )}\n </div>\n </div>\n );\n}\n\nexport interface TextFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n children?: React.ReactNode;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: string) => Promise<void> | void;\n transform?: (value: string) => string;\n}\n\nconst defaultTransform = (value: string) => value;\n\nfunction TextField<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n className,\n required,\n defaultValue,\n onChange,\n transform = defaultTransform,\n prefix,\n ...props\n}: TextFieldProps<TFieldValues, TFieldName> &\n Omit<InputTextProps, 'onChange'>) {\n const { control, setError } = useFormContext();\n const inputName = prefix ? `${prefix}.${name}` : name;\n const id = useId();\n\n return (\n <FormField\n control={control}\n defaultValue={defaultValue}\n name={inputName}\n render={({ field, fieldState }) => (\n <FormItem className={cn('w-full', className)}>\n <InputText\n {...field}\n {...props}\n disabled={props.disabled}\n error={fieldState?.error?.message}\n id={`${id}-${inputName.replaceAll('.', '-')}`}\n name={inputName}\n onChange={(e) => {\n field.onChange(transform(e.target.value));\n onChange?.(transform(e.target.value));\n }}\n required={required}\n setError={(error) => {\n setError(inputName, { message: error || '' });\n }}\n value={field.value || ''}\n />\n </FormItem>\n )}\n rules={{\n required: required ? 'Campo obrigatório' : false,\n }}\n />\n );\n}\n\nexport interface QueryTextFieldProps extends Omit<InputTextProps, 'onChange'> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: string) => void;\n}\n\nfunction QueryTextField({\n name,\n defaultValue,\n options,\n ...props\n}: QueryTextFieldProps) {\n const id = useId();\n const [error, setError] = useState<string | undefined>(undefined);\n const [filter, setFilter] = useQueryState(\n name,\n parseAsString\n .withOptions({\n clearOnDefault: true,\n shallow: false,\n limitUrlUpdates: {\n method: 'debounce',\n timeMs: 400,\n },\n ...options,\n })\n .withDefault(defaultValue ?? '')\n );\n\n return (\n <InputText\n id={`${id}-${name}`}\n name={name}\n value={filter}\n {...props}\n error={error}\n onChange={(e) => {\n setFilter(e.target.value);\n props.onChange?.(e.target.value);\n }}\n setError={setError}\n />\n );\n}\n\nexport interface CookieTextFieldProps extends InputTextProps {\n name: string;\n maxAge?: number;\n}\n\nfunction CookieTextField({\n name,\n maxAge = 60 * 60 * 24 * 7,\n onChange,\n ...inputProps\n}: CookieTextFieldProps) {\n const { getCookie, setCookie, deleteCookie } = useCookiesNext();\n const [error, setError] = useState<string | undefined>(undefined);\n const [value, setValue] = useState('');\n\n useEffect(() => {\n const stored = getCookie(`input-${name}`);\n if (stored && typeof stored === 'string') {\n setValue(stored);\n onChange?.(stored as any);\n }\n }, [name, getCookie]);\n\n useEffect(() => {\n if (value !== '' && value !== undefined) {\n setCookie(`input-${name}`, value, { maxAge });\n } else {\n deleteCookie(`input-${name}`);\n }\n }, [name, value, setCookie]);\n\n return (\n <InputText\n {...inputProps}\n error={error}\n id={`cookie-${name}`}\n name={name}\n onChange={(e) => {\n setValue(e.target.value);\n onChange?.(e.target.value as any);\n }}\n setError={setError}\n value={value}\n />\n );\n}\n\nexport { InputText, TextField, QueryTextField, CookieTextField };\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime7 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
3
3
  import { Item, Root } from "@radix-ui/react-toggle-group";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import * as class_variance_authority_types0 from "class-variance-authority/types";
@@ -23,7 +23,7 @@ declare function ToggleGroup({
23
23
  transition,
24
24
  activeClassName,
25
25
  ...props
26
- }: ToggleGroupProps): react_jsx_runtime7.JSX.Element;
26
+ }: ToggleGroupProps): react_jsx_runtime8.JSX.Element;
27
27
  //#endregion
28
28
  //#region src/components/toggle-field/ToggleField.d.ts
29
29
  type ToggleOption = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maquinaweb-ui",
3
- "version": "2.27.3",
3
+ "version": "2.28.0",
4
4
  "description": "A minimal React component library",
5
5
  "type": "module",
6
6
  "sideEffects": false,