maquinaweb-ui 2.12.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/input-suggest.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Dispatch, SetStateAction } from "react";
|
|
2
2
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
4
|
+
import { Mask, Options } from "use-mask-input";
|
|
4
5
|
import { PopoverProps } from "@radix-ui/react-popover";
|
|
5
6
|
|
|
6
7
|
//#region src/components/input-suggest/input-suggest.d.ts
|
|
@@ -32,6 +33,8 @@ interface InputSuggestProps<TFieldValues extends FieldValues = FieldValues, TFie
|
|
|
32
33
|
refineSuggest?: (suggest: any) => any;
|
|
33
34
|
limit?: number;
|
|
34
35
|
fieldValue?: string;
|
|
36
|
+
mask?: Mask;
|
|
37
|
+
maskOptions?: Options;
|
|
35
38
|
}
|
|
36
39
|
declare function InputSuggest<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({
|
|
37
40
|
name,
|
|
@@ -55,6 +58,9 @@ declare function InputSuggest<TFieldValues extends FieldValues = FieldValues, TF
|
|
|
55
58
|
refineValue,
|
|
56
59
|
refineSuggest,
|
|
57
60
|
limit,
|
|
61
|
+
mask,
|
|
62
|
+
maskOptions,
|
|
63
|
+
children,
|
|
58
64
|
...props
|
|
59
65
|
}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps): react_jsx_runtime0.JSX.Element;
|
|
60
66
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-suggest.d.ts","names":[],"sources":["../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input-suggest.d.ts","names":[],"sources":["../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":[],"mappings":";;;;;;;UA+BiB,uCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,mBAAmB,cAAc;;;EAH1B,QAAA,CAAA,EAAA,CAAA,MAAA,EAAiB,MAAA,EAAA,GAAA,IAAA;EAAA,QAAA,CAAA,EAOrB,QAPqB,CAOZ,cAPY,CAAA,MAAA,CAAA,CAAA;OACX,CAAA,EAAA,MAAA;aAAc,CAAA,EAAA,MAAA;WACN,CAAA,EAAA,MAAA;SAAV,EAAA,CAAA,MAAA,CAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAWD,MAXC,EAAA,GAAA;IAAoC,IAAA,CAAA,EAAA;MAAV,EAAA,EAAA,MAAA,GAAA,MAAA;MAClB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,GAAA;IAAc,CAAA,EAAA;IAIrB,OAAA,CAAA,EAAA,GAAA;;UAMF,CAAA,EAAA,OAAA;OAqBX,CAAA,EAAA,MAAA;oBACO,CAAA,EAAA,OAAA;cAhCN,CAAA,EAAA,GAAA,GAAA,IAAA;EAAkB,UAAA,CAAA,EAAA,OAAA;EAmCnB,OAAA,CAAA,EAAA,MAAY;EAAA,IAAA,CAAA,EAAA,MAAA;YACE,EAAA,MAAA;QAAc,CAAA,EAAA,MAAA;aACN,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,GAAA;eAAV,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,GAAA,GAAA;OAAoC,CAAA,EAAA,MAAA;YAAV,CAAA,EAAA,MAAA;MAE7C,CAAA,EARO,IAQP;aACA,CAAA,EARc,OAQd;;iBALO,YAOP,CAAA,qBANqB,WAMrB,GANmC,WAMnC,EAAA,mBALmB,SAKnB,CAL6B,YAK7B,CAAA,GAL6C,SAK7C,CALuD,YAKvD,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,UAAA;EAAA,UAAA;EAAA,KAAA;EAAA,SAAA;EAAA,WAAA;EAAA,OAAA;EAAA,QAAA;EAAA,QAAA;EAAA,QAAA;EAAA,kBAAA;EAAA,KAAA;EAAA,KAAA;EAAA,YAAA;EAAA,UAAA;EAAA,OAAA;EAAA,IAAA;EAAA,MAAA;EAAA,WAAA;EAAA,aAAA;EAAA,KAAA;EAAA,IAAA;EAAA,WAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAsBC,iBAtBD,CAsBmB,YAtBnB,EAsBiC,UAtBjC,CAAA,GAsB+C,YAtB/C,CAAA,EAsB2D,kBAAA,CAAA,GAAA,CAAA,OAtB3D"}
|
package/dist/input-suggest.js
CHANGED
|
@@ -6,6 +6,7 @@ import { FormItem, FormLabel, FormMessage, Input, InputHelp } from "./input-help
|
|
|
6
6
|
import { useCallback, useEffect, useState } from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { useController, useFormContext } from "react-hook-form";
|
|
9
|
+
import { withMask } from "use-mask-input";
|
|
9
10
|
import { Check } from "lucide-react";
|
|
10
11
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
11
12
|
import { ScrollArea, ScrollAreaViewport } from "@radix-ui/react-scroll-area";
|
|
@@ -51,7 +52,7 @@ function ScrollBar({ className, orientation = "vertical",...props }) {
|
|
|
51
52
|
|
|
52
53
|
//#endregion
|
|
53
54
|
//#region src/components/input-suggest/input-suggest.tsx
|
|
54
|
-
function InputSuggest({ name, nameSearch, fieldValue = "name", label, className, placeholder, useData, setValue, required, disabled, updateSearchOnBlur = true, value, extra, extraOnClick, withPortal = false, counter, help, prefix, refineValue, refineSuggest, limit = 10,...props }) {
|
|
55
|
+
function InputSuggest({ name, nameSearch, fieldValue = "name", label, className, placeholder, useData, setValue, required, disabled, updateSearchOnBlur = true, value, extra, extraOnClick, withPortal = false, counter, help, prefix, refineValue, refineSuggest, limit = 10, mask, maskOptions, children,...props }) {
|
|
55
56
|
const form = useFormContext();
|
|
56
57
|
const inputName = prefix ? `${prefix}.${name}` : name;
|
|
57
58
|
const searchName = prefix ? `${prefix}.${nameSearch}` : nameSearch;
|
|
@@ -121,9 +122,9 @@ function InputSuggest({ name, nameSearch, fieldValue = "name", label, className,
|
|
|
121
122
|
open,
|
|
122
123
|
...props,
|
|
123
124
|
children: [
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
-
className: "outline-hidden w-full",
|
|
126
|
-
children: /* @__PURE__ */ jsx(Input, {
|
|
125
|
+
/* @__PURE__ */ jsxs(PopoverTrigger, {
|
|
126
|
+
className: "outline-hidden w-full relative",
|
|
127
|
+
children: [/* @__PURE__ */ jsx(Input, {
|
|
127
128
|
autoComplete: "off",
|
|
128
129
|
className: cn(fieldState.error && "border-destructive"),
|
|
129
130
|
disabled,
|
|
@@ -131,8 +132,12 @@ function InputSuggest({ name, nameSearch, fieldValue = "name", label, className,
|
|
|
131
132
|
onChange: handleChange,
|
|
132
133
|
onKeyDown: handleKeyDown,
|
|
133
134
|
placeholder,
|
|
135
|
+
ref: mask ? withMask(mask, {
|
|
136
|
+
autoUnmask: true,
|
|
137
|
+
...maskOptions
|
|
138
|
+
}) : void 0,
|
|
134
139
|
value: searchField.value
|
|
135
|
-
})
|
|
140
|
+
}), children]
|
|
136
141
|
}),
|
|
137
142
|
fieldState.error && /* @__PURE__ */ jsx(FormMessage, {}),
|
|
138
143
|
/* @__PURE__ */ jsx(PopoverContent, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-suggest.js","names":["item"],"sources":["../src/components/ui/popover.tsx","../src/components/ui/scroll-area.tsx","../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align={align}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n data-slot=\"popover-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","'use client';\n\nimport * as React from 'react';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n className={cn('relative', className)}\n data-slot=\"scroll-area\"\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' &&\n 'h-full w-2.5 border-l border-l-transparent',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className=\"bg-border relative flex-1 rounded-full\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","'use client';\n\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nimport {\n FieldPath,\n FieldValues,\n UseControllerProps,\n useController,\n useFormContext,\n} from 'react-hook-form';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\nimport { Input } from '@/components/ui/input';\nimport { FormItem, FormLabel, FormMessage } from '@/ui/form';\nimport { InputHelp } from '@/ui/input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ui/popover';\nimport { ScrollBar } from '../ui/scroll-area';\n\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface InputSuggestProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n label: string;\n search?: string;\n onSearch?: (search: string) => void;\n setValue?: Dispatch<SetStateAction<string>>;\n value?: string;\n placeholder?: string;\n className?: string;\n useData: (\n search?: string,\n initialParams?: Object\n ) => {\n data?: {\n id: string | number;\n [key: string]: any;\n }[];\n refresh?: any;\n };\n required?: boolean;\n extra?: string;\n updateSearchOnBlur?: boolean;\n extraOnClick?: () => void;\n withPortal?: boolean;\n counter?: number;\n help?: string;\n nameSearch: string;\n prefix?: string;\n refineValue?: (value: any) => any;\n refineSuggest?: (suggest: any) => any;\n limit?: number;\n fieldValue?: string;\n}\n\nfunction InputSuggest<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameSearch,\n fieldValue = 'name',\n label,\n className,\n placeholder,\n useData,\n setValue,\n required,\n disabled,\n updateSearchOnBlur = true,\n value,\n extra,\n extraOnClick,\n withPortal = false,\n counter,\n help,\n prefix,\n refineValue,\n refineSuggest,\n limit = 10,\n ...props\n}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps) {\n const form = useFormContext();\n const inputName = prefix ? `${prefix}.${name}` : name;\n const searchName = prefix ? `${prefix}.${nameSearch}` : nameSearch;\n\n const { field: searchField } = useController({\n name: searchName,\n control: form.control,\n });\n const { field, fieldState } = useController({\n name: inputName,\n control: form.control,\n });\n\n const [ariaSelected, setAriaSelected] = useState(-1);\n\n const [open, setOpen] = useState(false);\n\n const { data } = useData?.(searchField.value);\n\n const onChange = useCallback(\n (item: any) => {\n searchField.onChange(item?.[fieldValue as keyof typeof item]);\n field.onChange(refineValue?.(item) || item);\n setOpen(false);\n },\n [field.value, refineValue, fieldValue]\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.value === '') {\n field.onChange(null);\n }\n searchField.onChange(e.target.value);\n setOpen(true);\n const item = data?.find((item) => item[fieldValue] === e.target.value);\n if (item) {\n onChange(item);\n setOpen(false);\n }\n },\n [field, searchField]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n setAriaSelected((prev) => prev + 1);\n }\n if (e.key === 'ArrowUp') {\n setAriaSelected((prev) => prev - 1);\n }\n if (e.key === 'Enter' && data && data[ariaSelected]) {\n onChange(data[ariaSelected]);\n e.stopPropagation();\n e.preventDefault();\n }\n },\n []\n );\n\n useEffect(() => {\n if (\n field?.value?.[fieldValue as keyof typeof field.value] !==\n searchField.value &&\n updateSearchOnBlur\n ) {\n searchField.onChange(\n field?.value?.[fieldValue as keyof typeof field.value]\n );\n }\n }, [field.value]);\n\n return (\n <FormItem\n className={cn('w-full flex flex-col', className)}\n id={`input-suggest-${inputName}`}\n >\n <div className=\"flex items-end gap-1.5\">\n <FormLabel htmlFor={inputName}>\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-[1px]\">*</span>\n )}\n </FormLabel>\n\n <InputHelp help={help} name={inputName} />\n </div>\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger className=\"outline-hidden w-full\">\n <Input\n autoComplete=\"off\"\n className={cn(fieldState.error && 'border-destructive')}\n disabled={disabled}\n name={name}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n value={searchField.value}\n />\n </PopoverTrigger>\n {fieldState.error && <FormMessage />}\n <PopoverContent\n className={cn(\n 'mt-1 w-(--radix-popover-trigger-width) max-w-2xl p-0 z-50',\n data?.length === 0 && 'hidden'\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <ScrollArea className=\"h-fit max-h-[300px]\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-[300px]\">\n <ul className=\"p-1\">\n {data?.slice(0, limit)?.map((item) => (\n <li\n aria-selected={data[ariaSelected]?.id === item.id}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden aria-selected:bg-accent/50 aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 transition-all hover:bg-accent/50 hover:text-accent-foreground',\n field?.value?.id === item.id &&\n 'bg-accent! text-accent-foreground'\n )}\n key={item.id}\n onMouseDown={(e) => {\n onChange(item);\n e.preventDefault();\n }}\n >\n <span className=\"line-clamp-1 flex-1\">\n {refineSuggest\n ? refineSuggest(item)\n : item?.[fieldValue as keyof typeof item]}\n </span>\n {field?.value?.id == item.id && (\n <Check className=\"ml-auto h-4 w-4 shrink-0\" />\n )}\n </li>\n ))}\n\n {extra && (\n <li\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden aria-selected:bg-accent/50 aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 transition-all hover:text-accent-foreground sticky bottom-0.5 bg-white hover:bg-accent'\n )}\n onMouseDown={(e) => {\n e.preventDefault();\n extraOnClick?.();\n }}\n >\n <span className=\"line-clamp-1\">{extra}</span>\n </li>\n )}\n\n {(data?.length === 0 || !data) && !extra && (\n <p className=\"text-sm text-center text-accent-foreground/50 py-2\">\n Nenhum resultado encontrado.\n </p>\n )}\n </ul>\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </FormItem>\n );\n}\n\nexport { InputSuggest };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-suggest.js","names":["item"],"sources":["../src/components/ui/popover.tsx","../src/components/ui/scroll-area.tsx","../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align={align}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n data-slot=\"popover-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","'use client';\n\nimport * as React from 'react';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n className={cn('relative', className)}\n data-slot=\"scroll-area\"\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' &&\n 'h-full w-2.5 border-l border-l-transparent',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className=\"bg-border relative flex-1 rounded-full\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","'use client';\n\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nimport {\n FieldPath,\n FieldValues,\n UseControllerProps,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport { Mask, type Options as MaskOptions, withMask } from 'use-mask-input';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\nimport { Input } from '@/components/ui/input';\nimport { FormItem, FormLabel, FormMessage } from '@/ui/form';\nimport { InputHelp } from '@/ui/input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ui/popover';\nimport { ScrollBar } from '../ui/scroll-area';\n\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface InputSuggestProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n label: string;\n search?: string;\n onSearch?: (search: string) => void;\n setValue?: Dispatch<SetStateAction<string>>;\n value?: string;\n placeholder?: string;\n className?: string;\n useData: (\n search?: string,\n initialParams?: Object\n ) => {\n data?: {\n id: string | number;\n [key: string]: any;\n }[];\n refresh?: any;\n };\n required?: boolean;\n extra?: string;\n updateSearchOnBlur?: boolean;\n extraOnClick?: () => void;\n withPortal?: boolean;\n counter?: number;\n help?: string;\n nameSearch: string;\n prefix?: string;\n refineValue?: (value: any) => any;\n refineSuggest?: (suggest: any) => any;\n limit?: number;\n fieldValue?: string;\n mask?: Mask;\n maskOptions?: MaskOptions;\n}\n\nfunction InputSuggest<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameSearch,\n fieldValue = 'name',\n label,\n className,\n placeholder,\n useData,\n setValue,\n required,\n disabled,\n updateSearchOnBlur = true,\n value,\n extra,\n extraOnClick,\n withPortal = false,\n counter,\n help,\n prefix,\n refineValue,\n refineSuggest,\n limit = 10,\n mask,\n maskOptions,\n children,\n ...props\n}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps) {\n const form = useFormContext();\n const inputName = prefix ? `${prefix}.${name}` : name;\n const searchName = prefix ? `${prefix}.${nameSearch}` : nameSearch;\n\n const { field: searchField } = useController({\n name: searchName,\n control: form.control,\n });\n const { field, fieldState } = useController({\n name: inputName,\n control: form.control,\n });\n\n const [ariaSelected, setAriaSelected] = useState(-1);\n\n const [open, setOpen] = useState(false);\n\n const { data } = useData?.(searchField.value);\n\n const onChange = useCallback(\n (item: any) => {\n searchField.onChange(item?.[fieldValue as keyof typeof item]);\n field.onChange(refineValue?.(item) || item);\n setOpen(false);\n },\n [field.value, refineValue, fieldValue]\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.value === '') {\n field.onChange(null);\n }\n searchField.onChange(e.target.value);\n setOpen(true);\n const item = data?.find((item) => item[fieldValue] === e.target.value);\n if (item) {\n onChange(item);\n setOpen(false);\n }\n },\n [field, searchField]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n setAriaSelected((prev) => prev + 1);\n }\n if (e.key === 'ArrowUp') {\n setAriaSelected((prev) => prev - 1);\n }\n if (e.key === 'Enter' && data && data[ariaSelected]) {\n onChange(data[ariaSelected]);\n e.stopPropagation();\n e.preventDefault();\n }\n },\n []\n );\n\n useEffect(() => {\n if (\n field?.value?.[fieldValue as keyof typeof field.value] !==\n searchField.value &&\n updateSearchOnBlur\n ) {\n searchField.onChange(\n field?.value?.[fieldValue as keyof typeof field.value]\n );\n }\n }, [field.value]);\n\n return (\n <FormItem\n className={cn('w-full flex flex-col', className)}\n id={`input-suggest-${inputName}`}\n >\n <div className=\"flex items-end gap-1.5\">\n <FormLabel htmlFor={inputName}>\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-[1px]\">*</span>\n )}\n </FormLabel>\n\n <InputHelp help={help} name={inputName} />\n </div>\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger className=\"outline-hidden w-full relative\">\n <Input\n autoComplete=\"off\"\n className={cn(fieldState.error && 'border-destructive')}\n disabled={disabled}\n name={name}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={\n mask\n ? withMask(mask, { autoUnmask: true, ...maskOptions })\n : (undefined as any)\n }\n value={searchField.value}\n />\n {children}\n </PopoverTrigger>\n {fieldState.error && <FormMessage />}\n <PopoverContent\n className={cn(\n 'mt-1 w-(--radix-popover-trigger-width) max-w-2xl p-0 z-50',\n data?.length === 0 && 'hidden'\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <ScrollArea className=\"h-fit max-h-[300px]\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-[300px]\">\n <ul className=\"p-1\">\n {data?.slice(0, limit)?.map((item) => (\n <li\n aria-selected={data[ariaSelected]?.id === item.id}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden aria-selected:bg-accent/50 aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 transition-all hover:bg-accent/50 hover:text-accent-foreground',\n field?.value?.id === item.id &&\n 'bg-accent! text-accent-foreground'\n )}\n key={item.id}\n onMouseDown={(e) => {\n onChange(item);\n e.preventDefault();\n }}\n >\n <span className=\"line-clamp-1 flex-1\">\n {refineSuggest\n ? refineSuggest(item)\n : item?.[fieldValue as keyof typeof item]}\n </span>\n {field?.value?.id == item.id && (\n <Check className=\"ml-auto h-4 w-4 shrink-0\" />\n )}\n </li>\n ))}\n\n {extra && (\n <li\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden aria-selected:bg-accent/50 aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 transition-all hover:text-accent-foreground sticky bottom-0.5 bg-white hover:bg-accent'\n )}\n onMouseDown={(e) => {\n e.preventDefault();\n extraOnClick?.();\n }}\n >\n <span className=\"line-clamp-1\">{extra}</span>\n </li>\n )}\n\n {(data?.length === 0 || !data) && !extra && (\n <p className=\"text-sm text-center text-accent-foreground/50 py-2\">\n Nenhum resultado encontrado.\n </p>\n )}\n </ul>\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </FormItem>\n );\n}\n\nexport { InputSuggest };\n"],"mappings":"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"}
|
package/dist/text-field.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare function CookieTextField({
|
|
|
15
15
|
}: CookieTextFieldProps): react_jsx_runtime4.JSX.Element;
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region src/components/text-field/TextField.d.ts
|
|
18
|
-
type Mask = 'datetime' | 'email' | 'numeric' | 'currency' | 'decimal' | 'integer' | 'percentage' | 'url' | 'ip' | 'mac' | 'ssn' | 'brl-currency' | 'cpf' | 'cnpj' | (string & {}) | (string[] & {}) | null;
|
|
18
|
+
type Mask$1 = 'datetime' | 'email' | 'numeric' | 'currency' | 'decimal' | 'integer' | 'percentage' | 'url' | 'ip' | 'mac' | 'ssn' | 'brl-currency' | 'cpf' | 'cnpj' | (string & {}) | (string[] & {}) | null;
|
|
19
19
|
interface InputTextProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
20
20
|
ref?: React.ForwardedRef<HTMLInputElement>;
|
|
21
21
|
label?: string;
|
|
@@ -28,7 +28,7 @@ interface InputTextProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
|
28
28
|
required?: boolean;
|
|
29
29
|
maskRef?: React.ForwardedRef<any>;
|
|
30
30
|
children?: React.ReactNode;
|
|
31
|
-
mask?: Mask;
|
|
31
|
+
mask?: Mask$1;
|
|
32
32
|
maskOptions?: Options;
|
|
33
33
|
error?: React.ReactNode;
|
|
34
34
|
id?: string;
|
package/dist/text-field.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-field.d.ts","names":[],"sources":["../src/components/ui/cookie-text-field.tsx","../src/components/text-field/TextField.tsx"],"sourcesContent":[],"mappings":";;;;;;UAOiB,oBAAA,SAA6B;;;;iBAKrC,eAAA;;;;GAIN,uBAAoB,kBAAA,CAAA,GAAA,CAAA;;;KCMlB,
|
|
1
|
+
{"version":3,"file":"text-field.d.ts","names":[],"sources":["../src/components/ui/cookie-text-field.tsx","../src/components/text-field/TextField.tsx"],"sourcesContent":[],"mappings":";;;;;;UAOiB,oBAAA,SAA6B;;;;iBAKrC,eAAA;;;;GAIN,uBAAoB,kBAAA,CAAA,GAAA,CAAA;;;KCMlB,MAAA;UAmBY,cAAA,SACP,KAAA,CAAM,oBAAoB;QAC5B,KAAA,CAAM,aAAa;EDpCV,KAAA,CAAA,EAAA,MAAA;EAKR,WAAA,CAAA,EAAA,MAAe;EAAA,WAAA,CAAA,EAAA,MAAA;WACtB,CAAA,EAAA,MAAA;UACA,CAAA,EAAA,OAAA;WAEC,CAAA,EAAA,SAAA,GAAA,OAAA;MAAoB,CAAA,EAAA,MAAA;EAAA,QAAA,CAAA,EAAA,OAAA;YCoCX,KAAA,CAAM;aACL,KAAA,CAAM;SACV;EAhCJ,WAAI,CAAA,EAiCO,OAjCP;EAmBQ,KAAA,CAAA,EAeP,KAAA,CAAM,SAdd;EAAA,EAAA,CAAA,EAAA,MAAA;QAAkC,CAAA,EAAA,MAAA;iBACT,CAAA,EAAA,MAAA;gBAAb,CAAA,EAAA,MAAA;MASF,CAAA,EAAA,MAAM;aACC,CAAA,EASH,IAAA,CAAK,mBATF;QACV,CAAA,EAAA,MAAA;;iBAWA,SAAA,CATO;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,EAAA;EAAA,GAAA;EAAA,MAAA;EAAA,eAAA;EAAA,cAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,IAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAkCb,cAlCa,CAAA,EAkCC,kBAAA,CAAA,GAAA,CAAA,OAlCD;AAMA,UAqHC,cArHI,CAAA,qBAsHE,WAtHF,GAsHgB,WAtHhB,EAAA,mBAuHA,SAvHA,CAuHU,YAvHV,CAAA,GAuH0B,SAvH1B,CAuHoC,YAvHpC,CAAA,CAAA,SAwHX,kBAxHW,CAwHQ,YAxHR,EAwHsB,UAxHtB,CAAA,CAAA;UApBX,CAAM,EAAA,OAAA;EAAmB,QAAA,CAAA,EAAA,OAAA;EAuB1B,QAAA,CAAA,EAwHI,KAAA,CAAM,SAxHD;EAAA,YAAA,CAAA,EAyHD,cAzHC,CAyHc,YAzHd,EAyH4B,UAzH5B,CAAA;UAChB,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAyH8B,OAzH9B,CAAA,IAAA,CAAA,GAAA,IAAA;WACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,MAAA;;iBA8HO,SA5HP,CAAA,qBA6HqB,WA7HrB,GA6HmC,WA7HnC,EAAA,mBA8HmB,SA9HnB,CA8H6B,YA9H7B,CAAA,GA8H6C,SA9H7C,CA8HuD,YA9HvD,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,SAAA;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,UAyKe,mBAAA,SAA4B,IAzK3C,CAyKgD,cAzKhD,EAAA,UAAA,CAAA,CAAA;MACA,EAAA,MAAA;cACA,CAAA,EAAA,MAAA;SACA,CAAA,EAyKU,SAzKV;UACA,CAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA;;iBA4KO,cAAA,CA1KP;EAAA,IAAA;EAAA,YAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EA+KC,mBA/KD,CAAA,EA+KoB,kBAAA,CAAA,GAAA,CAAA,OA/KpB"}
|