maquinaweb-ui 2.41.0 → 2.42.1
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/container-animation.d.ts +2 -2
- package/dist/date-field.d.ts +2 -2
- package/dist/date-field.js +1 -1
- package/dist/input-suggest.d.ts +2 -2
- package/dist/input-suggest.js +1 -1
- package/dist/page-header.d.ts +2 -2
- package/dist/{popover-DwlKLFCp.js → popover-D9IIn0lW.js} +4 -4
- package/dist/popover-D9IIn0lW.js.map +1 -0
- package/dist/remote-selector.d.ts +7 -3
- package/dist/remote-selector.d.ts.map +1 -1
- package/dist/remote-selector.js +5 -3
- package/dist/remote-selector.js.map +1 -1
- package/dist/text-field.d.ts +5 -5
- package/package.json +1 -1
- package/dist/popover-DwlKLFCp.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentProps, ElementType } from "react";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime8 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/container-animation/container-animation.d.ts
|
|
5
5
|
type ContainerAnimationProps<T extends ElementType = 'div'> = ComponentProps<'div'> & ComponentProps<T> & {
|
|
@@ -23,7 +23,7 @@ declare const ContainerAnimation: <T extends ElementType = "div">({
|
|
|
23
23
|
distance,
|
|
24
24
|
hideNotInView,
|
|
25
25
|
...props
|
|
26
|
-
}: ContainerAnimationProps<T>) =>
|
|
26
|
+
}: ContainerAnimationProps<T>) => react_jsx_runtime8.JSX.Element;
|
|
27
27
|
//#endregion
|
|
28
28
|
export { ContainerAnimation, type ContainerAnimationProps };
|
|
29
29
|
//# sourceMappingURL=container-animation.d.ts.map
|
package/dist/date-field.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
3
3
|
import { Matcher } from "react-day-picker";
|
|
4
4
|
|
|
5
5
|
//#region src/components/date-field/DateField.d.ts
|
|
@@ -29,7 +29,7 @@ declare function DateField<TFieldValues extends FieldValues = FieldValues, TFiel
|
|
|
29
29
|
required,
|
|
30
30
|
help,
|
|
31
31
|
dateOnly
|
|
32
|
-
}: DateFieldProps<TFieldValues, TFieldName>):
|
|
32
|
+
}: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime6.JSX.Element;
|
|
33
33
|
//#endregion
|
|
34
34
|
export { DateField, type DateFieldProps };
|
|
35
35
|
//# sourceMappingURL=date-field.d.ts.map
|
package/dist/date-field.js
CHANGED
|
@@ -6,7 +6,7 @@ import "./label-Bkg7B2j8.js";
|
|
|
6
6
|
import { n as withMask, t as Input } from "./input-Bs61WBGW.js";
|
|
7
7
|
import { a as FormLabel, i as FormItem, n as FormDescription, o as FormMessage, r as FormFieldContext, t as InputHelp } from "./input-help-D1JqF0YH.js";
|
|
8
8
|
import { n as buttonVariants, t as Button } from "./button-B3nLhVyZ.js";
|
|
9
|
-
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-
|
|
9
|
+
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-D9IIn0lW.js";
|
|
10
10
|
import { useController, useFormContext } from "react-hook-form";
|
|
11
11
|
import * as React from "react";
|
|
12
12
|
import { useEffect, useState } from "react";
|
package/dist/input-suggest.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as Options, t as Mask } from "./with-mask-Chm8kVE1.js";
|
|
2
2
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
3
3
|
import { Dispatch, SetStateAction } from "react";
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_jsx_runtime7 from "react/jsx-runtime";
|
|
5
5
|
import { PopoverProps } from "@radix-ui/react-popover";
|
|
6
6
|
|
|
7
7
|
//#region src/components/input-suggest/input-suggest.d.ts
|
|
@@ -71,7 +71,7 @@ declare function InputSuggest<TFieldValues extends FieldValues = FieldValues, TF
|
|
|
71
71
|
debounceTime,
|
|
72
72
|
maxWait,
|
|
73
73
|
...props
|
|
74
|
-
}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps):
|
|
74
|
+
}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps): react_jsx_runtime7.JSX.Element;
|
|
75
75
|
//#endregion
|
|
76
76
|
export { InputSuggest, type InputSuggestProps };
|
|
77
77
|
//# sourceMappingURL=input-suggest.d.ts.map
|
package/dist/input-suggest.js
CHANGED
|
@@ -5,7 +5,7 @@ import { t as cn } from "./utils-C8_amEgK.js";
|
|
|
5
5
|
import "./label-Bkg7B2j8.js";
|
|
6
6
|
import { n as withMask, t as Input } from "./input-Bs61WBGW.js";
|
|
7
7
|
import { a as FormLabel, i as FormItem, o as FormMessage, t as InputHelp } from "./input-help-D1JqF0YH.js";
|
|
8
|
-
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-
|
|
8
|
+
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-D9IIn0lW.js";
|
|
9
9
|
import { t as ScrollBar } from "./scroll-area-C1kW_eA9.js";
|
|
10
10
|
import { useController, useFormContext } from "react-hook-form";
|
|
11
11
|
import { useCallback, useEffect, useState } from "react";
|
package/dist/page-header.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/page-header/page-header.d.ts
|
|
4
4
|
interface PageHeaderProps {
|
|
@@ -10,7 +10,7 @@ declare function PageHeader({
|
|
|
10
10
|
title,
|
|
11
11
|
help,
|
|
12
12
|
description
|
|
13
|
-
}: PageHeaderProps):
|
|
13
|
+
}: PageHeaderProps): react_jsx_runtime0.JSX.Element;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { PageHeader, type PageHeaderProps };
|
|
16
16
|
//# sourceMappingURL=page-header.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cn } from "./utils-C8_amEgK.js";
|
|
2
|
-
import "react";
|
|
2
|
+
import { Fragment, useMemo } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
5
5
|
|
|
@@ -16,8 +16,8 @@ function PopoverTrigger({ ...props }) {
|
|
|
16
16
|
...props
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
function PopoverContent({ className, align = "center", sideOffset = 4,...props }) {
|
|
20
|
-
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
|
|
19
|
+
function PopoverContent({ className, align = "center", sideOffset = 4, withPortal = false,...props }) {
|
|
20
|
+
return /* @__PURE__ */ jsx(useMemo(() => withPortal ? PopoverPrimitive.Portal : Fragment, [withPortal]), { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
|
|
21
21
|
align,
|
|
22
22
|
className: cn("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", className),
|
|
23
23
|
"data-slot": "popover-content",
|
|
@@ -28,4 +28,4 @@ function PopoverContent({ className, align = "center", sideOffset = 4,...props }
|
|
|
28
28
|
|
|
29
29
|
//#endregion
|
|
30
30
|
export { PopoverContent as n, PopoverTrigger as r, Popover as t };
|
|
31
|
-
//# sourceMappingURL=popover-
|
|
31
|
+
//# sourceMappingURL=popover-D9IIn0lW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-D9IIn0lW.js","names":[],"sources":["../src/components/ui/popover.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useMemo } 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 withPortal = false,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n withPortal?: boolean;\n}) {\n const Container = useMemo(() => withPortal ? PopoverPrimitive.Portal : (Fragment as any), [withPortal]);\n\n return (\n <Container>\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 </Container>\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"],"mappings":";;;;;;AAQA,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,oBAAC,iBAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,oBAAC,iBAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,aAAa,MACb,GAAG,SAGF;AAGD,QACE,oBAHgB,cAAc,aAAa,iBAAiB,SAAU,UAAkB,CAAC,WAAW,CAAC,cAInG,oBAAC,iBAAiB;EACT;EACP,WAAW,GACT,keACA,UACD;EACD,aAAU;EACE;EACZ,GAAI;GACJ,GACQ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime4 from "react/jsx-runtime";
|
|
3
3
|
import { Options } from "nuqs";
|
|
4
4
|
import { PopoverProps } from "@radix-ui/react-popover";
|
|
5
5
|
|
|
@@ -15,6 +15,7 @@ type SelectorProps<T> = {
|
|
|
15
15
|
empty?: React.ReactNode;
|
|
16
16
|
items: T[];
|
|
17
17
|
fieldLabel: keyof T;
|
|
18
|
+
withPortal?: boolean;
|
|
18
19
|
fieldKey?: keyof T;
|
|
19
20
|
groupBy?: keyof T;
|
|
20
21
|
disabled?: boolean;
|
|
@@ -69,10 +70,13 @@ declare function RemoteSelectorField<T, TFieldValues extends FieldValues = Field
|
|
|
69
70
|
onChange: onChangeCallback,
|
|
70
71
|
useData,
|
|
71
72
|
initialParams,
|
|
73
|
+
withPortal,
|
|
72
74
|
initialRequest,
|
|
73
75
|
forceToggle,
|
|
74
76
|
...props
|
|
75
|
-
}: RemoteSelectorFieldProps<TFieldValues, TFieldName> & BaseRemoteSelectorProps<T>
|
|
77
|
+
}: RemoteSelectorFieldProps<TFieldValues, TFieldName> & BaseRemoteSelectorProps<T> & {
|
|
78
|
+
withPortal?: boolean;
|
|
79
|
+
}): react_jsx_runtime4.JSX.Element;
|
|
76
80
|
interface RemoteSelectorQueryProps<T> extends BaseRemoteSelectorProps<T> {
|
|
77
81
|
name: string;
|
|
78
82
|
defaultValue?: string;
|
|
@@ -92,7 +96,7 @@ declare function RemoteSelectorQuery<T>({
|
|
|
92
96
|
fieldLabel,
|
|
93
97
|
type,
|
|
94
98
|
...props
|
|
95
|
-
}: RemoteSelectorQueryProps<T>):
|
|
99
|
+
}: RemoteSelectorQueryProps<T>): react_jsx_runtime4.JSX.Element;
|
|
96
100
|
//#endregion
|
|
97
101
|
export { type BaseRemoteSelectorProps, RemoteSelectorField as RemoteSelector, RemoteSelectorField, type RemoteSelectorFieldProps, RemoteSelectorQuery, type RemoteSelectorQueryProps, type TUseData };
|
|
98
102
|
//# sourceMappingURL=remote-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAmCU,KAFE,aAEF,CAAA,CAAA,CAAA,GAAA;EAAI,IAAA,CAAA,EAAA,QAAA,GAAA,UAAA;EACM,KAAA,CAAA,EADV,CACU,GADN,CACM,EAAA;EAAI,QAAA,CAAA,EAAA,CAAA,IAAA,EAAJ,CAAI,GAAA,CAAA,EAAA,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAId,MAAM,CAAA,EAAA,MAAA;EACP,QAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EACW,WAAA,CAAA,EAAA,MAAA;
|
|
1
|
+
{"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":"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"}
|
package/dist/remote-selector.js
CHANGED
|
@@ -5,7 +5,7 @@ import { t as cn } from "./utils-C8_amEgK.js";
|
|
|
5
5
|
import "./label-Bkg7B2j8.js";
|
|
6
6
|
import { i as FormItem, o as FormMessage, t as InputHelp } from "./input-help-D1JqF0YH.js";
|
|
7
7
|
import { t as Button } from "./button-B3nLhVyZ.js";
|
|
8
|
-
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-
|
|
8
|
+
import { n as PopoverContent, r as PopoverTrigger, t as Popover } from "./popover-D9IIn0lW.js";
|
|
9
9
|
import { t as ScrollBar } from "./scroll-area-C1kW_eA9.js";
|
|
10
10
|
import { useController, useFormContext } from "react-hook-form";
|
|
11
11
|
import * as React from "react";
|
|
@@ -150,7 +150,7 @@ function CommandItem({ className,...props }) {
|
|
|
150
150
|
|
|
151
151
|
//#endregion
|
|
152
152
|
//#region src/components/ui/selector.tsx
|
|
153
|
-
function Selector({ type = "single", value, onChange, search, onSearch, items, label, placeholder, fieldLabel, fieldKey, groupBy, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, loadMore, hasMore, isLoading,...props }) {
|
|
153
|
+
function Selector({ type = "single", value, onChange, search, onSearch, items, withPortal = true, label, placeholder, fieldLabel, fieldKey, groupBy, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, loadMore, hasMore, isLoading,...props }) {
|
|
154
154
|
const itemKey = fieldKey || fieldLabel;
|
|
155
155
|
const isMultiple = type === "multiple";
|
|
156
156
|
const selectedItems = isMultiple && Array.isArray(value) ? value : [];
|
|
@@ -256,6 +256,7 @@ function Selector({ type = "single", value, onChange, search, onSearch, items, l
|
|
|
256
256
|
})
|
|
257
257
|
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
258
258
|
className: "w-(--radix-popover-trigger-width) max-w-2xl p-0",
|
|
259
|
+
withPortal,
|
|
259
260
|
children: /* @__PURE__ */ jsxs(Command$1, {
|
|
260
261
|
shouldFilter: false,
|
|
261
262
|
children: [/* @__PURE__ */ jsx(CommandInput, {
|
|
@@ -354,7 +355,7 @@ const buildGroups = (items, groupBy) => {
|
|
|
354
355
|
|
|
355
356
|
//#endregion
|
|
356
357
|
//#region src/components/remote-selector/remote-selector.tsx
|
|
357
|
-
function RemoteSelectorField({ name, nameValue, className, required, defaultValue, onChange: onChangeCallback, useData, initialParams, initialRequest = false, forceToggle = false,...props }) {
|
|
358
|
+
function RemoteSelectorField({ name, nameValue, className, required, defaultValue, onChange: onChangeCallback, useData, initialParams, withPortal = true, initialRequest = false, forceToggle = false,...props }) {
|
|
358
359
|
const { control, setValue } = useFormContext();
|
|
359
360
|
const { field, fieldState } = useController({
|
|
360
361
|
control,
|
|
@@ -381,6 +382,7 @@ function RemoteSelectorField({ name, nameValue, className, required, defaultValu
|
|
|
381
382
|
className,
|
|
382
383
|
children: /* @__PURE__ */ jsx(Selector, {
|
|
383
384
|
...props,
|
|
385
|
+
withPortal,
|
|
384
386
|
error: fieldState?.error && /* @__PURE__ */ jsx(FormMessage, {}),
|
|
385
387
|
hasMore,
|
|
386
388
|
id: `${id}-${name.replaceAll(".", "-")}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-selector.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive","Command","CommandPrimitive","Command","Checkbox","id"],"sources":["../src/components/ui/badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/command.tsx","../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n warning: 'border-transparent bg-warning text-warning-foreground',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n","'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\n\nimport { Check, ChevronsUpDown, Loader2, Package, X } from 'lucide-react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { cn } from '@/lib/utils';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from './command';\nimport { InputHelp } from './input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\nimport { ScrollBar } from './scroll-area';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n};\n\nexport type SelectorProps<T> = {\n type?: 'single' | 'multiple';\n value?: T | T[];\n onChange?: (item: T | T[] | undefined | null) => void;\n search?: string;\n onSearch?: (search: string) => void;\n placeholder?: string;\n empty?: React.ReactNode;\n items: T[];\n fieldLabel: keyof T;\n fieldKey?: keyof T;\n groupBy?: keyof T;\n disabled?: boolean;\n searchPlaceholder?: string;\n label?: string;\n name?: string;\n className?: string;\n required?: boolean;\n error?: React.ReactNode;\n selectFirstIsOne?: boolean;\n help?: string;\n extra?: string;\n extraOnClick?: (\n onChange?: (item: T | T[] | undefined | null) => void\n ) => Promise<void> | void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n maxVisibleBadges?: number;\n id?: string;\n imageField?: keyof T;\n disabledField?: keyof T;\n onDisabledClick?: (item: T) => void;\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n} & PopoverProps;\n\ntype SelectorGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nexport function Selector<T>({\n type = 'single',\n value,\n onChange,\n search,\n onSearch,\n items,\n label,\n placeholder,\n fieldLabel,\n fieldKey,\n groupBy,\n searchPlaceholder,\n name,\n empty = 'Nenhuma opção encontrada...',\n disabled = false,\n className,\n required,\n error,\n selectFirstIsOne,\n help,\n extra,\n extraOnClick,\n open,\n setOpen,\n maxVisibleBadges = 3,\n id,\n imageField,\n disabledField,\n onDisabledClick,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n\n const isMultiple = type === 'multiple';\n const selectedItems = isMultiple && Array.isArray(value) ? value : [];\n const singleValue = !isMultiple && !Array.isArray(value) ? value : undefined;\n const itensGroups = useMemo(\n () => buildGroups(items, groupBy),\n [items, groupBy]\n );\n\n // Infinite scroll\n const { ref: loadMoreRef, inView } = useInView({\n threshold: 0,\n rootMargin: '100px',\n skip: !hasMore || isLoading,\n });\n\n useEffect(() => {\n if (inView && hasMore && loadMore && !isLoading) {\n loadMore();\n }\n }, [inView, hasMore, loadMore, isLoading]);\n\n const isItemSelected = (item: T): boolean => {\n if (isMultiple) {\n return selectedItems.some(\n (selected) => selected[itemKey] === item[itemKey]\n );\n }\n return singleValue?.[itemKey] === item[itemKey];\n };\n\n const handleItemSelect = (item: T) => {\n if (isMultiple) {\n const isSelected = isItemSelected(item);\n const newValue = isSelected\n ? selectedItems.filter(\n (selected) => selected[itemKey] !== item[itemKey]\n )\n : [...selectedItems, item];\n onChange?.(newValue.length > 0 ? newValue : null);\n } else {\n onChange?.(item);\n setOpen?.(false);\n }\n };\n\n useEffect(() => {\n if (selectFirstIsOne && items && items.length === 1 && !value) {\n onChange?.(items[0] as any);\n }\n }, [items]);\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={id || `selector-${name}`}\n >\n {label && (\n <div className=\"flex items-end gap-1.5\">\n <label\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n htmlFor={id || name}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-px\">*</span>\n )}\n </label>\n\n <InputHelp help={help} name={name} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger asChild>\n <Button\n aria-expanded={open}\n aria-label=\"Carregando opções...\"\n className={cn(\n 'mt-0! justify-between w-full hover:bg-transparent cursor-pointer',\n !value && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n disabled={disabled}\n id={id || name}\n role=\"combobox\"\n variant=\"outline\"\n >\n {isMultiple && selectedItems.length > 0 ? (\n <div className=\"flex gap-1 flex-1 min-w-0 overflow-hidden\">\n {selectedItems\n .slice(0, maxVisibleBadges)\n .map((item, index) => (\n <Badge\n className=\"truncate shrink min-w-0\"\n key={`badge-${item[itemKey]}-${index}`}\n variant=\"secondary\"\n >\n <span className=\"truncate block\">\n {item[fieldLabel] as string}\n </span>\n </Badge>\n ))}\n {selectedItems.length > maxVisibleBadges && (\n <Badge className=\"shrink-0\" variant=\"secondary\">\n +{selectedItems.length - maxVisibleBadges}\n </Badge>\n )}\n </div>\n ) : (\n <span className=\"truncate\">\n {!isMultiple && singleValue\n ? (singleValue[fieldLabel] as string)\n : placeholder || `Selecione a ${label?.toLowerCase()}`}\n </span>\n )}\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative size-4\">\n {((isMultiple && selectedItems.length > 0) ||\n (!isMultiple && singleValue !== undefined)) && (\n <div\n className=\"absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange?.(null);\n }}\n >\n <X className=\"size-4\" />\n </div>\n )}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\">\n <Command shouldFilter={false}>\n <CommandInput\n onValueChange={onSearch}\n placeholder={\n searchPlaceholder ||\n `Pesquise por uma ${label?.toLowerCase()}`\n }\n value={search}\n />\n <CommandList className=\"max-h-none overflow-visible\">\n <ScrollArea className=\"h-fit max-h-[300px]\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-[300px] relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {itensGroups.length > 0 &&\n itensGroups.some((group) => group.items.length > 0) &&\n itensGroups.map((group) => (\n <CommandGroup\n heading={\n group.heading ||\n (group.id === UNDEFINED_GROUP_ID && 'Outros')\n }\n key={`group-${group.id}`}\n >\n {group.items.map((item) => {\n const isDisabled = disabledField ? !!item[disabledField] : false;\n return (\n <CommandItem\n className={cn(\n 'transition-all p-2',\n isMultiple && 'gap-2',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground',\n isDisabled && 'opacity-50'\n )}\n key={`item-${item[itemKey]}`}\n onSelect={() => {\n if (isDisabled && onDisabledClick) {\n onDisabledClick(item);\n return;\n }\n if (isDisabled) return;\n handleItemSelect(item);\n }}\n value={String(item[itemKey])}\n >\n {isMultiple && (\n <Checkbox checked={isItemSelected(item)} />\n )}\n {isMultiple && imageField && (\n <div className=\"relative w-8 h-8 overflow-hidden rounded-md border bg-muted shrink-0\">\n {item[imageField] ? (\n <img\n alt={item[fieldLabel] as string}\n src={item[imageField] as string}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"w-full h-full flex items-center justify-center\">\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n )}\n </div>\n )}\n {item[fieldLabel] as string}\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n {extra && (\n <CommandItem\n className={cn(\n 'transition-all p-2 sticky bottom-0 bg-white hover:bg-accent! aria-selected:bg-accent!'\n )}\n onSelect={() => {\n extraOnClick?.(onChange);\n setOpen?.(false);\n }}\n >\n {extra}\n </CommandItem>\n )}\n {/* Infinite scroll sentinel */}\n {hasMore && (\n <div ref={loadMoreRef} className=\"flex justify-center py-2\">\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n )}\n </div>\n )}\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {error && error}\n </div>\n </div>\n );\n}\n\nconst DEFAULT_GROUP_ID = 'selector-default-group';\nconst UNDEFINED_GROUP_ID = 'selector-undefined-group';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): SelectorGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, SelectorGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\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 useController,\n useFormContext,\n} from 'react-hook-form';\nimport { useDebounce } from 'use-debounce';\n\nimport { FormItem, FormMessage } from '@/components/ui/form';\nimport { Selector, type SelectorProps } from '../ui/selector';\n\nimport {\n type Options,\n parseAsArrayOf,\n parseAsString,\n useQueryState,\n} from 'nuqs';\n\nexport type TUseData<T> = (\n search?: string,\n initialParams?: any,\n disabled?: boolean\n) => {\n data: T[];\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n};\n\nexport type BaseRemoteSelectorProps<T> = {\n useData: TUseData<T>;\n initialParams?: Parameters<TUseData<T>>[1];\n initialRequest?: boolean;\n forceToggle?: boolean;\n} & Omit<\n SelectorProps<T>,\n 'items' | 'value' | 'onChange' | 'search' | 'onSearch' | 'open' | 'setOpen' | 'loadMore' | 'hasMore' | 'isLoading'\n>;\n\nexport interface RemoteSelectorFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: any) => Promise<void> | void;\n nameValue?: string;\n}\n\nexport function RemoteSelectorField<\n T,\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameValue,\n className,\n required,\n defaultValue,\n onChange: onChangeCallback,\n useData,\n initialParams,\n initialRequest = false,\n forceToggle = false,\n ...props\n}: RemoteSelectorFieldProps<TFieldValues, TFieldName> &\n BaseRemoteSelectorProps<T>) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const { control, setValue } = useFormContext();\n const { field, fieldState } = useController({\n control,\n name,\n rules: { required: required ? 'Campo obrigatório' : false },\n defaultValue,\n });\n\n const id = useId();\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n const handleChange = (value: any) => {\n field.onChange(value as TItem);\n if (nameValue && props.fieldKey) {\n if (value) {\n if (Array.isArray(value)) {\n setValue(\n nameValue,\n value.map((item) => item[props.fieldKey] as string)\n );\n } else {\n setValue(nameValue, value[props.fieldKey] as string);\n }\n } else {\n setValue(nameValue, null);\n }\n }\n onChangeCallback?.(value as TItem);\n };\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n return (\n <FormItem className={className}>\n <Selector\n {...props}\n error={fieldState?.error && <FormMessage />}\n hasMore={hasMore}\n id={`${id}-${name.replaceAll('.', '-')}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n required={required}\n search={search}\n setOpen={setOpen}\n value={field.value as TItem}\n />\n </FormItem>\n );\n}\n\nexport interface RemoteSelectorQueryProps<T>\n extends BaseRemoteSelectorProps<T> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: T | T[] | null) => void;\n}\n\nexport function RemoteSelectorQuery<T>({\n name,\n defaultValue,\n options,\n useData,\n initialParams,\n initialRequest = false,\n forceToggle = false,\n onChange: onChangeCallback,\n fieldKey,\n fieldLabel,\n type = 'single',\n ...props\n}: RemoteSelectorQueryProps<T>) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const id = useId();\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n const itemKey = fieldKey || fieldLabel;\n const isMultiple = type === 'multiple';\n\n const parser = isMultiple\n ? parseAsArrayOf(parseAsString).withDefault([])\n : parseAsString.withDefault(defaultValue ?? '');\n\n const [queryIds, setQueryIds] = useQueryState(\n name,\n parser.withOptions({\n clearOnDefault: true,\n shallow: false,\n ...options,\n })\n );\n\n const value =\n isMultiple && Array.isArray(queryIds)\n ? queryIds\n .map((id) => data?.find((item) => String(item[itemKey]) === id))\n .filter((item): item is TItem => !!item)\n : data?.find((item) => String(item[itemKey]) === queryIds) || null;\n\n const handleChange = (newValue: T | T[] | null | undefined) => {\n if (!newValue) {\n setQueryIds(isMultiple ? ([] as any) : null);\n } else if (isMultiple && Array.isArray(newValue)) {\n setQueryIds(newValue.map((item) => String(item[itemKey])) as any);\n } else {\n setQueryIds(String((newValue as T)[itemKey]) as any);\n }\n onChangeCallback?.(newValue as T | T[] | null);\n };\n\n return (\n <Selector\n {...props}\n fieldKey={fieldKey}\n fieldLabel={fieldLabel}\n hasMore={hasMore}\n id={`${id}-${name}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n search={search}\n setOpen={setOpen}\n type={type}\n value={value as TItem}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remote-selector.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive","Command","CommandPrimitive","Command","Checkbox","id"],"sources":["../src/components/ui/badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/command.tsx","../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n warning: 'border-transparent bg-warning text-warning-foreground',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n","'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\n\nimport { Check, ChevronsUpDown, Loader2, Package, X } from 'lucide-react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { cn } from '@/lib/utils';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from './command';\nimport { InputHelp } from './input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\nimport { ScrollBar } from './scroll-area';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n};\n\nexport type SelectorProps<T> = {\n type?: 'single' | 'multiple';\n value?: T | T[];\n onChange?: (item: T | T[] | undefined | null) => void;\n search?: string;\n onSearch?: (search: string) => void;\n placeholder?: string;\n empty?: React.ReactNode;\n items: T[];\n fieldLabel: keyof T;\n withPortal?: boolean;\n fieldKey?: keyof T;\n groupBy?: keyof T;\n disabled?: boolean;\n searchPlaceholder?: string;\n label?: string;\n name?: string;\n className?: string;\n required?: boolean;\n error?: React.ReactNode;\n selectFirstIsOne?: boolean;\n help?: string;\n extra?: string;\n extraOnClick?: (\n onChange?: (item: T | T[] | undefined | null) => void\n ) => Promise<void> | void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n maxVisibleBadges?: number;\n id?: string;\n imageField?: keyof T;\n disabledField?: keyof T;\n onDisabledClick?: (item: T) => void;\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n} & PopoverProps;\n\ntype SelectorGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nexport function Selector<T>({\n type = 'single',\n value,\n onChange,\n search,\n onSearch,\n items,\n withPortal = true,\n label,\n placeholder,\n fieldLabel,\n fieldKey,\n groupBy,\n searchPlaceholder,\n name,\n empty = 'Nenhuma opção encontrada...',\n disabled = false,\n className,\n required,\n error,\n selectFirstIsOne,\n help,\n extra,\n extraOnClick,\n open,\n setOpen,\n maxVisibleBadges = 3,\n id,\n imageField,\n disabledField,\n onDisabledClick,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n\n const isMultiple = type === 'multiple';\n const selectedItems = isMultiple && Array.isArray(value) ? value : [];\n const singleValue = !isMultiple && !Array.isArray(value) ? value : undefined;\n const itensGroups = useMemo(\n () => buildGroups(items, groupBy),\n [items, groupBy]\n );\n\n // Infinite scroll\n const { ref: loadMoreRef, inView } = useInView({\n threshold: 0,\n rootMargin: '100px',\n skip: !hasMore || isLoading,\n });\n\n useEffect(() => {\n if (inView && hasMore && loadMore && !isLoading) {\n loadMore();\n }\n }, [inView, hasMore, loadMore, isLoading]);\n\n const isItemSelected = (item: T): boolean => {\n if (isMultiple) {\n return selectedItems.some(\n (selected) => selected[itemKey] === item[itemKey]\n );\n }\n return singleValue?.[itemKey] === item[itemKey];\n };\n\n const handleItemSelect = (item: T) => {\n if (isMultiple) {\n const isSelected = isItemSelected(item);\n const newValue = isSelected\n ? selectedItems.filter(\n (selected) => selected[itemKey] !== item[itemKey]\n )\n : [...selectedItems, item];\n onChange?.(newValue.length > 0 ? newValue : null);\n } else {\n onChange?.(item);\n setOpen?.(false);\n }\n };\n\n useEffect(() => {\n if (selectFirstIsOne && items && items.length === 1 && !value) {\n onChange?.(items[0] as any);\n }\n }, [items]);\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={id || `selector-${name}`}\n >\n {label && (\n <div className=\"flex items-end gap-1.5\">\n <label\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n htmlFor={id || name}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-px\">*</span>\n )}\n </label>\n\n <InputHelp help={help} name={name} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger asChild>\n <Button\n aria-expanded={open}\n aria-label=\"Carregando opções...\"\n className={cn(\n 'mt-0! justify-between w-full hover:bg-transparent cursor-pointer',\n !value && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n disabled={disabled}\n id={id || name}\n role=\"combobox\"\n variant=\"outline\"\n >\n {isMultiple && selectedItems.length > 0 ? (\n <div className=\"flex gap-1 flex-1 min-w-0 overflow-hidden\">\n {selectedItems\n .slice(0, maxVisibleBadges)\n .map((item, index) => (\n <Badge\n className=\"truncate shrink min-w-0\"\n key={`badge-${item[itemKey]}-${index}`}\n variant=\"secondary\"\n >\n <span className=\"truncate block\">\n {item[fieldLabel] as string}\n </span>\n </Badge>\n ))}\n {selectedItems.length > maxVisibleBadges && (\n <Badge className=\"shrink-0\" variant=\"secondary\">\n +{selectedItems.length - maxVisibleBadges}\n </Badge>\n )}\n </div>\n ) : (\n <span className=\"truncate\">\n {!isMultiple && singleValue\n ? (singleValue[fieldLabel] as string)\n : placeholder || `Selecione a ${label?.toLowerCase()}`}\n </span>\n )}\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative size-4\">\n {((isMultiple && selectedItems.length > 0) ||\n (!isMultiple && singleValue !== undefined)) && (\n <div\n className=\"absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange?.(null);\n }}\n >\n <X className=\"size-4\" />\n </div>\n )}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\" withPortal={withPortal}>\n <Command shouldFilter={false}>\n <CommandInput\n onValueChange={onSearch}\n placeholder={\n searchPlaceholder ||\n `Pesquise por uma ${label?.toLowerCase()}`\n }\n value={search}\n />\n <CommandList className=\"max-h-none overflow-visible\">\n <ScrollArea className=\"h-fit max-h-[300px]\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-[300px] relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {itensGroups.length > 0 &&\n itensGroups.some((group) => group.items.length > 0) &&\n itensGroups.map((group) => (\n <CommandGroup\n heading={\n group.heading ||\n (group.id === UNDEFINED_GROUP_ID && 'Outros')\n }\n key={`group-${group.id}`}\n >\n {group.items.map((item) => {\n const isDisabled = disabledField ? !!item[disabledField] : false;\n return (\n <CommandItem\n className={cn(\n 'transition-all p-2',\n isMultiple && 'gap-2',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground',\n isDisabled && 'opacity-50'\n )}\n key={`item-${item[itemKey]}`}\n onSelect={() => {\n if (isDisabled && onDisabledClick) {\n onDisabledClick(item);\n return;\n }\n if (isDisabled) return;\n handleItemSelect(item);\n }}\n value={String(item[itemKey])}\n >\n {isMultiple && (\n <Checkbox checked={isItemSelected(item)} />\n )}\n {isMultiple && imageField && (\n <div className=\"relative w-8 h-8 overflow-hidden rounded-md border bg-muted shrink-0\">\n {item[imageField] ? (\n <img\n alt={item[fieldLabel] as string}\n src={item[imageField] as string}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"w-full h-full flex items-center justify-center\">\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n )}\n </div>\n )}\n {item[fieldLabel] as string}\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n {extra && (\n <CommandItem\n className={cn(\n 'transition-all p-2 sticky bottom-0 bg-white hover:bg-accent! aria-selected:bg-accent!'\n )}\n onSelect={() => {\n extraOnClick?.(onChange);\n setOpen?.(false);\n }}\n >\n {extra}\n </CommandItem>\n )}\n {/* Infinite scroll sentinel */}\n {hasMore && (\n <div ref={loadMoreRef} className=\"flex justify-center py-2\">\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n )}\n </div>\n )}\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {error && error}\n </div>\n </div>\n );\n}\n\nconst DEFAULT_GROUP_ID = 'selector-default-group';\nconst UNDEFINED_GROUP_ID = 'selector-undefined-group';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): SelectorGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, SelectorGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\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 useController,\n useFormContext,\n} from 'react-hook-form';\nimport { useDebounce } from 'use-debounce';\n\nimport { FormItem, FormMessage } from '@/components/ui/form';\nimport { Selector, type SelectorProps } from '../ui/selector';\n\nimport {\n type Options,\n parseAsArrayOf,\n parseAsString,\n useQueryState,\n} from 'nuqs';\n\nexport type TUseData<T> = (\n search?: string,\n initialParams?: any,\n disabled?: boolean\n) => {\n data: T[];\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n};\n\nexport type BaseRemoteSelectorProps<T> = {\n useData: TUseData<T>;\n initialParams?: Parameters<TUseData<T>>[1];\n initialRequest?: boolean;\n forceToggle?: boolean;\n} & Omit<\n SelectorProps<T>,\n 'items' | 'value' | 'onChange' | 'search' | 'onSearch' | 'open' | 'setOpen' | 'loadMore' | 'hasMore' | 'isLoading'\n>;\n\nexport interface RemoteSelectorFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: any) => Promise<void> | void;\n nameValue?: string;\n}\n\nexport function RemoteSelectorField<\n T,\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameValue,\n className,\n required,\n defaultValue,\n onChange: onChangeCallback,\n useData,\n initialParams,\n withPortal = true,\n initialRequest = false,\n forceToggle = false,\n ...props\n}: RemoteSelectorFieldProps<TFieldValues, TFieldName> &\n BaseRemoteSelectorProps<T> & {\n withPortal?: boolean;\n }) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const { control, setValue } = useFormContext();\n const { field, fieldState } = useController({\n control,\n name,\n rules: { required: required ? 'Campo obrigatório' : false },\n defaultValue,\n });\n\n const id = useId();\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n const handleChange = (value: any) => {\n field.onChange(value as TItem);\n if (nameValue && props.fieldKey) {\n if (value) {\n if (Array.isArray(value)) {\n setValue(\n nameValue,\n value.map((item) => item[props.fieldKey] as string)\n );\n } else {\n setValue(nameValue, value[props.fieldKey] as string);\n }\n } else {\n setValue(nameValue, null);\n }\n }\n onChangeCallback?.(value as TItem);\n };\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n return (\n <FormItem className={className}>\n <Selector\n {...props}\n withPortal={withPortal}\n error={fieldState?.error && <FormMessage />}\n hasMore={hasMore}\n id={`${id}-${name.replaceAll('.', '-')}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n required={required}\n search={search}\n setOpen={setOpen}\n value={field.value as TItem}\n />\n </FormItem>\n );\n}\n\nexport interface RemoteSelectorQueryProps<T>\n extends BaseRemoteSelectorProps<T> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: T | T[] | null) => void;\n}\n\nexport function RemoteSelectorQuery<T>({\n name,\n defaultValue,\n options,\n useData,\n initialParams,\n initialRequest = false,\n forceToggle = false,\n onChange: onChangeCallback,\n fieldKey,\n fieldLabel,\n type = 'single',\n ...props\n}: RemoteSelectorQueryProps<T>) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const id = useId();\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n const itemKey = fieldKey || fieldLabel;\n const isMultiple = type === 'multiple';\n\n const parser = isMultiple\n ? parseAsArrayOf(parseAsString).withDefault([])\n : parseAsString.withDefault(defaultValue ?? '');\n\n const [queryIds, setQueryIds] = useQueryState(\n name,\n parser.withOptions({\n clearOnDefault: true,\n shallow: false,\n ...options,\n })\n );\n\n const value =\n isMultiple && Array.isArray(queryIds)\n ? queryIds\n .map((id) => data?.find((item) => String(item[itemKey]) === id))\n .filter((item): item is TItem => !!item)\n : data?.find((item) => String(item[itemKey]) === queryIds) || null;\n\n const handleChange = (newValue: T | T[] | null | undefined) => {\n if (!newValue) {\n setQueryIds(isMultiple ? ([] as any) : null);\n } else if (isMultiple && Array.isArray(newValue)) {\n setQueryIds(newValue.map((item) => String(item[itemKey])) as any);\n } else {\n setQueryIds(String((newValue as T)[itemKey]) as any);\n }\n onChangeCallback?.(newValue as T | T[] | null);\n };\n\n return (\n <Selector\n {...props}\n fieldKey={fieldKey}\n fieldLabel={fieldLabel}\n hasMore={hasMore}\n id={`${id}-${name}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n search={search}\n setOpen={setOpen}\n type={type}\n value={value as TItem}\n />\n );\n}\n"],"mappings":"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"}
|
package/dist/text-field.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as Options$1 } from "./with-mask-Chm8kVE1.js";
|
|
2
2
|
import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import { Options } from "nuqs";
|
|
5
5
|
|
|
6
6
|
//#region src/components/text-field/TextField.d.ts
|
|
@@ -57,7 +57,7 @@ declare function InputText({
|
|
|
57
57
|
name,
|
|
58
58
|
onChange,
|
|
59
59
|
...props
|
|
60
|
-
}: InputTextProps):
|
|
60
|
+
}: InputTextProps): react_jsx_runtime0.JSX.Element;
|
|
61
61
|
interface TextFieldProps<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends UseControllerProps<TFieldValues, TFieldName> {
|
|
62
62
|
disabled?: boolean;
|
|
63
63
|
required?: boolean;
|
|
@@ -75,7 +75,7 @@ declare function TextField<TFieldValues extends FieldValues = FieldValues, TFiel
|
|
|
75
75
|
transform,
|
|
76
76
|
prefix,
|
|
77
77
|
...props
|
|
78
|
-
}: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>):
|
|
78
|
+
}: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>): react_jsx_runtime0.JSX.Element;
|
|
79
79
|
interface QueryTextFieldProps extends Omit<InputTextProps, 'onChange'> {
|
|
80
80
|
name: string;
|
|
81
81
|
defaultValue?: string;
|
|
@@ -87,7 +87,7 @@ declare function QueryTextField({
|
|
|
87
87
|
defaultValue,
|
|
88
88
|
options,
|
|
89
89
|
...props
|
|
90
|
-
}: QueryTextFieldProps):
|
|
90
|
+
}: QueryTextFieldProps): react_jsx_runtime0.JSX.Element;
|
|
91
91
|
interface CookieTextFieldProps extends InputTextProps {
|
|
92
92
|
name: string;
|
|
93
93
|
maxAge?: number;
|
|
@@ -97,7 +97,7 @@ declare function CookieTextField({
|
|
|
97
97
|
maxAge,
|
|
98
98
|
onChange,
|
|
99
99
|
...inputProps
|
|
100
|
-
}: CookieTextFieldProps):
|
|
100
|
+
}: CookieTextFieldProps): react_jsx_runtime0.JSX.Element;
|
|
101
101
|
//#endregion
|
|
102
102
|
export { CookieTextField, type CookieTextFieldProps, InputText, type InputTextProps, QueryTextField, type QueryTextFieldProps, TextField, type TextFieldProps };
|
|
103
103
|
//# sourceMappingURL=text-field.d.ts.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover-DwlKLFCp.js","names":[],"sources":["../src/components/ui/popover.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"],"mappings":";;;;;;AAQA,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,oBAAC,iBAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,oBAAC,iBAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,EACb,GAAG,SACqD;AACxD,QACE,oBAAC,iBAAiB,oBAChB,oBAAC,iBAAiB;EACT;EACP,WAAW,GACT,keACA,UACD;EACD,aAAU;EACE;EACZ,GAAI;GACJ,GACsB"}
|