maquinaweb-ui 2.75.0 → 2.75.2
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/actions.js +0 -1
- package/dist/actions.js.map +1 -1
- package/dist/analytics/core.d.ts.map +1 -1
- package/dist/analytics/core.js +0 -1
- package/dist/analytics/core.js.map +1 -1
- package/dist/analytics/delegated-clicks.d.ts.map +1 -1
- package/dist/analytics/delegated-clicks.js +0 -1
- package/dist/analytics/delegated-clicks.js.map +1 -1
- package/dist/analytics/provider.d.ts +2 -2
- package/dist/analytics/provider.d.ts.map +1 -1
- package/dist/analytics/provider.js +0 -1
- package/dist/analytics/provider.js.map +1 -1
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics.js +0 -1
- package/dist/container-animation/container-animation.d.ts +2 -2
- package/dist/container-animation/container-animation.d.ts.map +1 -1
- package/dist/container-animation/container-animation.js +1 -2
- package/dist/container-animation/container-animation.js.map +1 -1
- package/dist/container-animation.js +0 -1
- package/dist/date-field/DateField.d.ts +2 -2
- package/dist/date-field/DateField.d.ts.map +1 -1
- package/dist/date-field/DateField.js +0 -1
- package/dist/date-field/DateField.js.map +1 -1
- package/dist/date-field.js +0 -1
- package/dist/date-hour-field/DateHourField.d.ts +2 -2
- package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
- package/dist/date-hour-field/DateHourField.js +0 -1
- package/dist/date-hour-field/DateHourField.js.map +1 -1
- package/dist/date-hour-field/time-wheel-column.js.map +1 -1
- package/dist/date-hour-field.js +0 -1
- package/dist/input-suggest/input-suggest.d.ts +2 -2
- package/dist/input-suggest/input-suggest.d.ts.map +1 -1
- package/dist/input-suggest/input-suggest.js +6 -7
- package/dist/input-suggest/input-suggest.js.map +1 -1
- package/dist/input-suggest.js +0 -1
- package/dist/kanban-dnd/constants.js +1 -4
- package/dist/kanban-dnd/constants.js.map +1 -1
- package/dist/kanban-dnd/context.d.ts +0 -4
- package/dist/kanban-dnd/context.d.ts.map +1 -1
- package/dist/kanban-dnd/context.js +0 -1
- package/dist/kanban-dnd/context.js.map +1 -1
- package/dist/kanban-dnd/drag-preview.js +4 -4
- package/dist/kanban-dnd/drag-preview.js.map +1 -1
- package/dist/kanban-dnd/drop-animation.js.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
- package/dist/kanban-dnd/kanban-card-item.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.js +0 -1
- package/dist/kanban-dnd/kanban-card-item.js.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js +0 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dropzone.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.js +0 -1
- package/dist/kanban-dnd/kanban-dropzone.js.map +1 -1
- package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
- package/dist/kanban-dnd/kanban-selector.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-selector.js +0 -1
- package/dist/kanban-dnd/kanban-selector.js.map +1 -1
- package/dist/kanban-dnd/move-cards.d.ts.map +1 -1
- package/dist/kanban-dnd/move-cards.js.map +1 -1
- package/dist/kanban-dnd/types.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js +0 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js.map +1 -1
- package/dist/kanban-dnd/use-kanban-selector-auto-scroll.js.map +1 -1
- package/dist/kanban-dnd.d.ts +0 -1
- package/dist/kanban-dnd.js +0 -1
- package/dist/landing-text/client-landing-text.js +0 -1
- package/dist/landing-text/client-landing-text.js.map +1 -1
- package/dist/landing-text/landing-content.d.ts +0 -2
- package/dist/landing-text/landing-content.d.ts.map +1 -1
- package/dist/landing-text/landing-content.js.map +1 -1
- package/dist/landing-text/landing-text.d.ts +2 -2
- package/dist/landing-text/landing-text.d.ts.map +1 -1
- package/dist/landing-text/landing-text.js +1 -1
- package/dist/landing-text/landing-text.js.map +1 -1
- package/dist/landing-text/server-landing-text.d.ts +2 -2
- package/dist/landing-text/server-landing-text.d.ts.map +1 -1
- package/dist/landing-text/server-landing-text.js +1 -1
- package/dist/landing-text/server-landing-text.js.map +1 -1
- package/dist/landing-text/types.d.ts.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/types/index.d.ts +4 -0
- package/dist/node_modules/framer-motion/dist/types.d-DOCC-kZB.d.ts +1 -0
- package/dist/node_modules/motion/dist/react.d.ts +2 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts +1001 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts.map +1 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts +17 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts.map +1 -0
- package/dist/page-header/page-header.d.ts +2 -2
- package/dist/page-header/page-header.d.ts.map +1 -1
- package/dist/page-header/page-header.js.map +1 -1
- package/dist/page-header.js +0 -1
- package/dist/remote-selector/remote-selector.d.ts +3 -3
- package/dist/remote-selector/remote-selector.d.ts.map +1 -1
- package/dist/remote-selector/remote-selector.js +3 -4
- package/dist/remote-selector/remote-selector.js.map +1 -1
- package/dist/remote-selector.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js +6 -7
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -1
- package/dist/server-infinite-scroll/types.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.js +1 -2
- package/dist/split-text-poor/split-text-poor.js.map +1 -1
- package/dist/split-text-poor.js +0 -1
- package/dist/src/hooks/get-mask-options.js.map +1 -1
- package/dist/src/hooks/is-server.js +1 -2
- package/dist/src/hooks/is-server.js.map +1 -1
- package/dist/src/hooks/use-money-input.js +1 -3
- package/dist/src/hooks/use-money-input.js.map +1 -1
- package/dist/src/hooks/with-mask.d.ts +0 -1
- package/dist/src/hooks/with-mask.d.ts.map +1 -1
- package/dist/src/hooks/with-mask.js +2 -2
- package/dist/src/hooks/with-mask.js.map +1 -1
- package/dist/text-field/TextField.d.ts +5 -5
- package/dist/text-field/TextField.d.ts.map +1 -1
- package/dist/text-field/TextField.js +8 -9
- package/dist/text-field/TextField.js.map +1 -1
- package/dist/text-field.js +0 -1
- package/dist/toggle-field/ToggleField.d.ts.map +1 -1
- package/dist/toggle-field/ToggleField.js +1 -2
- package/dist/toggle-field/ToggleField.js.map +1 -1
- package/dist/toggle-field/ToggleGroup.d.ts +6 -6
- package/dist/toggle-field/ToggleGroup.d.ts.map +1 -1
- package/dist/toggle-field/ToggleGroup.js +2 -3
- package/dist/toggle-field/ToggleGroup.js.map +1 -1
- package/dist/toggle-field.js +0 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/button.js +1 -1
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/calendar.js +8 -9
- package/dist/ui/calendar.js.map +1 -1
- package/dist/ui/checkbox.js +1 -2
- package/dist/ui/checkbox.js.map +1 -1
- package/dist/ui/command.js +5 -6
- package/dist/ui/command.js.map +1 -1
- package/dist/ui/content-help.js.map +1 -1
- package/dist/ui/form.js +4 -5
- package/dist/ui/form.js.map +1 -1
- package/dist/ui/input-date-field.js +1 -1
- package/dist/ui/input-date-field.js.map +1 -1
- package/dist/ui/input-help.js +0 -1
- package/dist/ui/input-help.js.map +1 -1
- package/dist/ui/input.js +1 -1
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/label.js +1 -2
- package/dist/ui/label.js.map +1 -1
- package/dist/ui/popover.js +1 -2
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/scroll-area.js +1 -2
- package/dist/ui/scroll-area.js.map +1 -1
- package/dist/ui/selector.d.ts +0 -2
- package/dist/ui/selector.d.ts.map +1 -1
- package/dist/ui/selector.js +3 -4
- package/dist/ui/selector.js.map +1 -1
- package/dist/ui/tooltip.js +2 -3
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tree-item-renderer.js +1 -3
- package/dist/ui/tree-item-renderer.js.map +1 -1
- package/package.json +16 -16
package/dist/ui/selector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.js","names":["TreeItemRenderer"],"sources":["../../src/components/ui/selector.tsx"],"sourcesContent":["'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';\n\nimport { cn } from '@/lib/utils';\nimport { useInView } from 'react-intersection-observer';\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';\nimport TreeItemRenderer from './tree-item-renderer';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n disabled?: boolean;\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 treeRender?: boolean;\n fieldChildren?: keyof T;\n fieldParent?: keyof T;\n fieldDisabled?: 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 itemRightElement?: (item: T) => React.ReactNode;\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 treeRender = false,\n fieldChildren,\n fieldParent,\n fieldDisabled,\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 itemRightElement,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n const childrenKey = (fieldChildren || 'children') as keyof T;\n const parentKey = (fieldParent || 'parent') as keyof T;\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\n className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\"\n withPortal={withPortal}\n >\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\n className=\"max-h-none overflow-visible\"\n onWheel={(e) => e.stopPropagation()}\n >\n <ScrollArea className=\"h-fit max-h-75\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-75 relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {treeRender\n ? items.length > 0 && (\n <CommandGroup>\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={fieldDisabled}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={items}\n labelKey={fieldLabel}\n onSelect={handleItemSelect}\n parentKey={parentKey}\n />\n </CommandGroup>\n )\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 && !onDisabledClick && !itemRightElement && '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 <span className={cn('flex-1 text-left min-w-0 pr-2', isDisabled && 'opacity-50')}>\n {item[fieldLabel] as string}\n </span>\n {itemRightElement?.(item)}\n {!isMultiple && isItemSelected(item) && !isDisabled && (\n <Check className=\"ml-auto h-4 w-4 shrink-0\" />\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\n className=\"flex justify-center py-2\"\n ref={loadMoreRef}\n >\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selector.js","names":[],"sources":["../../src/components/ui/selector.tsx"],"sourcesContent":["'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';\n\nimport { cn } from '@/lib/utils';\nimport { useInView } from 'react-intersection-observer';\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';\nimport TreeItemRenderer from './tree-item-renderer';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n disabled?: boolean;\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 treeRender?: boolean;\n fieldChildren?: keyof T;\n fieldParent?: keyof T;\n fieldDisabled?: 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 itemRightElement?: (item: T) => React.ReactNode;\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 treeRender = false,\n fieldChildren,\n fieldParent,\n fieldDisabled,\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 itemRightElement,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n const childrenKey = (fieldChildren || 'children') as keyof T;\n const parentKey = (fieldParent || 'parent') as keyof T;\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\n className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\"\n withPortal={withPortal}\n >\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\n className=\"max-h-none overflow-visible\"\n onWheel={(e) => e.stopPropagation()}\n >\n <ScrollArea className=\"h-fit max-h-75\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-75 relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {treeRender\n ? items.length > 0 && (\n <CommandGroup>\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={fieldDisabled}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={items}\n labelKey={fieldLabel}\n onSelect={handleItemSelect}\n parentKey={parentKey}\n />\n </CommandGroup>\n )\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 && !onDisabledClick && !itemRightElement && '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 <span className={cn('flex-1 text-left min-w-0 pr-2', isDisabled && 'opacity-50')}>\n {item[fieldLabel] as string}\n </span>\n {itemRightElement?.(item)}\n {!isMultiple && isItemSelected(item) && !isDisabled && (\n <Check className=\"ml-auto h-4 w-4 shrink-0\" />\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\n className=\"flex justify-center py-2\"\n ref={loadMoreRef}\n >\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"],"mappings":";;;;;;;;;;;;;;;;;;AAoFA,SAAgB,SAAY,EAC1B,OAAO,UACP,OACA,UACA,QACA,UACA,OACA,aAAa,MACb,OACA,aACA,YACA,UACA,SACA,aAAa,OACb,eACA,aACA,eACA,mBACA,MACA,QAAQ,+BACR,WAAW,OACX,WACA,UACA,OACA,kBACA,MACA,OACA,cACA,MACA,SACA,mBAAmB,GACnB,IACA,YACA,eACA,iBACA,kBACA,UACA,SACA,WACA,GAAG,SACgB;CACnB,MAAM,UAAU,YAAY;CAC5B,MAAM,cAAe,iBAAiB;CACtC,MAAM,YAAa,eAAe;CAElC,MAAM,aAAa,SAAS;CAC5B,MAAM,gBAAgB,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,EAAE;CACrE,MAAM,cAAc,CAAC,cAAc,CAAC,MAAM,QAAQ,MAAM,GAAG,QAAQ;CACnE,MAAM,cAAc,cACZ,YAAY,OAAO,QAAQ,EACjC,CAAC,OAAO,QAAQ,CACjB;CAGD,MAAM,EAAE,KAAK,aAAa,WAAW,UAAU;EAC7C,WAAW;EACX,YAAY;EACZ,MAAM,CAAC,WAAW;EACnB,CAAC;AAEF,iBAAgB;AACd,MAAI,UAAU,WAAW,YAAY,CAAC,UACpC,WAAU;IAEX;EAAC;EAAQ;EAAS;EAAU;EAAU,CAAC;CAE1C,MAAM,kBAAkB,SAAqB;AAC3C,MAAI,WACF,QAAO,cAAc,MAClB,aAAa,SAAS,aAAa,KAAK,SAC1C;AAEH,SAAO,cAAc,aAAa,KAAK;;CAGzC,MAAM,oBAAoB,SAAY;AACpC,MAAI,YAAY;GAEd,MAAM,WADa,eAAe,KACP,GACvB,cAAc,QACX,aAAa,SAAS,aAAa,KAAK,SAC1C,GACD,CAAC,GAAG,eAAe,KAAK;AAC5B,cAAW,SAAS,SAAS,IAAI,WAAW,KAAK;SAC5C;AACL,cAAW,KAAK;AAChB,aAAU,MAAM;;;AAIpB,iBAAgB;AACd,MAAI,oBAAoB,SAAS,MAAM,WAAW,KAAK,CAAC,MACtD,YAAW,MAAM,GAAU;IAE5B,CAAC,MAAM,CAAC;AAEX,QACE,qBAAC,OAAD;EACE,WAAW,GAAG,8BAA8B,UAAU;EACtD,IAAI,MAAM,YAAY;YAFxB,CAIG,SACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,qBAAC,SAAD;IACE,WAAU;IACV,SAAS,MAAM;cAFjB;KAIG;KAAM;KACN,YACC,oBAAC,QAAD;MAAM,WAAU;gBAAkC;MAAQ;KAEtD;OAER,oBAAC,WAAD;IAAiB;IAAY;IAAQ,EACjC;MAER,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,qBAAC,SAAD;IAAS,cAAc;IAAe;IAAM,GAAI;cAAhD,CACE,oBAAC,gBAAD;KAAgB;eACd,qBAAC,QAAD;MACE,iBAAe;MACf,cAAW;MACX,WAAW,GACT,oEACA,CAAC,SAAS,yBACV,SAAS,qBACV;MACS;MACV,IAAI,MAAM;MACV,MAAK;MACL,SAAQ;gBAXV,CAaG,cAAc,cAAc,SAAS,IACpC,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,cACE,MAAM,GAAG,iBAAiB,CAC1B,KAAK,MAAM,UACV,oBAAC,OAAD;QACE,WAAU;QAEV,SAAQ;kBAER,oBAAC,QAAD;SAAM,WAAU;mBACb,KAAK;SACD;QACD,EAND,SAAS,KAAK,SAAS,GAAG,QAMzB,CACR,EACH,cAAc,SAAS,oBACtB,qBAAC,OAAD;QAAO,WAAU;QAAW,SAAQ;kBAApC,CAAgD,KAC5C,cAAc,SAAS,iBACnB;UAEN;WAEN,oBAAC,QAAD;OAAM,WAAU;iBACb,CAAC,cAAc,cACX,YAAY,cACb,eAAe,eAAe,OAAO,aAAa;OACjD,GAET,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,oBAAC,OAAD;QAAK,WAAU;mBACV,cAAc,cAAc,SAAS,KACrC,CAAC,cAAc,gBAAgB,WAChC,oBAAC,OAAD;SACE,WAAU;SACV,UAAU,MAAM;AACd,YAAE,gBAAgB;AAClB,YAAE,iBAAiB;AACnB,qBAAW,KAAK;;mBAGlB,oBAAC,GAAD,EAAG,WAAU,UAAW;SACpB;QAEJ,GACN,oBAAC,gBAAD,EAAgB,WAAU,oCAAqC,EAC3D;SACC;;KACM,GACjB,oBAAC,gBAAD;KACE,WAAU;KACE;eAEZ,qBAAC,SAAD;MAAS,cAAc;gBAAvB,CACE,oBAAC,cAAD;OACE,eAAe;OACf,aACE,qBACA,oBAAoB,OAAO,aAAa;OAE1C,OAAO;OACP,GACF,oBAAC,aAAD;OACE,WAAU;OACV,UAAU,MAAM,EAAE,iBAAiB;iBAEnC,qBAAC,YAAD;QAAY,WAAU;QAAiB,IAAG;kBAA1C,CACE,qBAAC,oBAAD;SAAoB,WAAU;mBAA9B;UACE,oBAAC,cAAD;WAAc,WAAU;qBACrB;WACY;UACd,aACG,MAAM,SAAS,KACb,oBAAC,cAAD,YACE,oBAAC,kBAAD;WACe;WACb,aAAa;WACJ;WACO;WACJ;WACH;WACF;WACP,UAAU;WACV,UAAU;WACC;WACX,GACW,IAEjB,YAAY,SAAS,KACrB,YAAY,MAAM,UAAU,MAAM,MAAM,SAAS,EAAE,IACnD,YAAY,KAAK,UACf,oBAAC,cAAD;WACE,SACE,MAAM,WACL,MAAM,OAAO,sBAAsB;qBAIrC,MAAM,MAAM,KAAK,SAAS;YACzB,MAAM,aAAa,gBAAgB,CAAC,CAAC,KAAK,iBAAiB;AAC3D,mBACE,qBAAC,aAAD;aACE,WAAW,GACT,sBACA,cAAc,SACd,CAAC,cACD,eAAe,KAAK,IACpB,qCACA,cAAc,CAAC,mBAAmB,CAAC,oBAAoB,aACxD;aAED,gBAAgB;AACd,kBAAI,cAAc,iBAAiB;AACjC,+BAAgB,KAAK;AACrB;;AAEF,kBAAI,WAAY;AAChB,+BAAiB,KAAK;;aAExB,OAAO,OAAO,KAAK,SAAS;uBAlB9B;cAoBG,cACC,oBAAC,UAAD,EAAU,SAAS,eAAe,KAAK,EAAI;cAE5C,cAAc,cACb,oBAAC,OAAD;eAAK,WAAU;yBACZ,KAAK,cACJ,oBAAC,OAAD;gBACE,KAAK,KAAK;gBACV,KAAK,KAAK;gBACV,WAAU;gBACV,IAEF,oBAAC,OAAD;gBAAK,WAAU;0BACb,oBAAC,SAAD,EAAS,WAAU,iCAAkC;gBACjD;eAEJ;cAER,oBAAC,QAAD;eAAM,WAAW,GAAG,iCAAiC,cAAc,aAAa;yBAC7E,KAAK;eACD;cACN,mBAAmB,KAAK;cACxB,CAAC,cAAc,eAAe,KAAK,IAAI,CAAC,cACvC,oBAAC,OAAD,EAAO,WAAU,4BAA6B;cAEpC;eApCP,QAAQ,KAAK,WAoCN;aAEhB;WACW,EArDR,SAAS,MAAM,KAqDP,CACf;UACL,SACC,oBAAC,aAAD;WACE,WAAW,GACT,wFACD;WACD,gBAAgB;AACd,2BAAe,SAAS;AACxB,sBAAU,MAAM;;qBAGjB;WACW;UAGf,WACC,oBAAC,OAAD;WACE,WAAU;WACV,KAAK;qBAEJ,aACC,oBAAC,SAAD,EAAS,WAAU,8CAA+C;WAEhE;UAEW;YACrB,oBAAC,WAAD,EAAa,EACF;;OACD,EACN;;KACK,EACT;OACT,SAAS,MACN;KACF;;;AAIV,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAE3B,MAAM,eAAmB,OAAY,YAA0C;AAC7E,KAAI,CAAC,QAAS,QAAO,CAAC;EAAE,IAAI;EAAkB;EAAO,CAAC;AAEtD,QAAO,OAAO,OACZ,MAAM,QAA0C,KAAK,SAAS;EAC5D,MAAM,WAAW,KAAK;EACtB,MAAM,UAAU,YAAY,OAAO,SAAY,OAAO,SAAS;EAC/D,MAAM,UAAU,WAAW;AAE3B,MAAI,CAAC,IAAI,SACP,KAAI,WAAW;GAAE,IAAI;GAAS;GAAS,OAAO,EAAE;GAAE;AAGpD,MAAI,SAAS,MAAM,KAAK,KAAK;AAC7B,SAAO;IACN,EAAE,CAAC,CACP"}
|
package/dist/ui/tooltip.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
import { cn } from "../src/lib/utils.js";
|
|
5
4
|
import "react";
|
|
6
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
6
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
8
7
|
|
|
9
8
|
//#region src/components/ui/tooltip.tsx
|
|
10
|
-
function TooltipProvider({ delayDuration = 0
|
|
9
|
+
function TooltipProvider({ delayDuration = 0, ...props }) {
|
|
11
10
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, {
|
|
12
11
|
"data-slot": "tooltip-provider",
|
|
13
12
|
delayDuration,
|
|
@@ -26,7 +25,7 @@ function TooltipTrigger({ ...props }) {
|
|
|
26
25
|
...props
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
|
-
function TooltipContent({ className, sideOffset = 0, children
|
|
28
|
+
function TooltipContent({ className, sideOffset = 0, children, ...props }) {
|
|
30
29
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Content, {
|
|
31
30
|
className: cn("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", className),
|
|
32
31
|
"data-slot": "tooltip-content",
|
package/dist/ui/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/components/ui/tooltip.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n className={cn(\n 'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',\n className\n )}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/components/ui/tooltip.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n className={cn(\n 'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',\n className\n )}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"mappings":";;;;;;;;AAQA,SAAS,gBAAgB,EACvB,gBAAgB,GAChB,GAAG,SACsD;AACzD,QACE,oBAAC,iBAAiB,UAAlB;EACE,aAAU;EACK;EACf,GAAI;EACJ;;AAIN,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QACE,oBAAC,iBAAD,YACE,oBAAC,iBAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;EAAS,GACxC;;AAItB,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,oBAAC,iBAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;EAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,aAAa,GACb,UACA,GAAG,SACqD;AACxD,QACE,oBAAC,iBAAiB,QAAlB,YACE,qBAAC,iBAAiB,SAAlB;EACE,WAAW,GACT,qaACA,UACD;EACD,aAAU;EACE;EACZ,GAAI;YAPN,CASG,UACD,oBAAC,iBAAiB,OAAlB,EAAwB,WAAU,sGAAuG,EAChH;KACH"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
import { cn } from "../src/lib/utils.js";
|
|
5
4
|
import { Checkbox } from "./checkbox.js";
|
|
6
5
|
import { CommandItem } from "./command.js";
|
|
@@ -107,8 +106,7 @@ const normalizeTreeItems = (items, itemKey, childrenKey, parentKey) => {
|
|
|
107
106
|
}
|
|
108
107
|
return roots;
|
|
109
108
|
};
|
|
110
|
-
var tree_item_renderer_default = TreeItemRenderer;
|
|
111
109
|
|
|
112
110
|
//#endregion
|
|
113
|
-
export {
|
|
111
|
+
export { TreeItemRenderer as default };
|
|
114
112
|
//# sourceMappingURL=tree-item-renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-item-renderer.js","names":[
|
|
1
|
+
{"version":3,"file":"tree-item-renderer.js","names":[],"sources":["../../src/components/ui/tree-item-renderer.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, memo, useMemo } from 'react';\n\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Checkbox } from './checkbox';\nimport { CommandItem } from './command';\n\ntype TreeItemRendererProps<T> = {\n items: T[];\n itemKey: keyof T;\n labelKey: keyof T;\n childrenKey: keyof T;\n parentKey?: keyof T;\n groupBy?: keyof T;\n disabledKey?: keyof T;\n isMultiple?: boolean;\n isItemSelected: (item: T) => boolean;\n onSelect: (item: T) => void;\n level?: number;\n};\n\nconst TreeItemRendererComponent = <T,>({\n items,\n itemKey,\n labelKey,\n childrenKey,\n parentKey,\n groupBy,\n disabledKey,\n isMultiple = false,\n isItemSelected,\n onSelect,\n level = 0,\n}: TreeItemRendererProps<T>) => {\n const parsedItems = useMemo(\n () =>\n level === 0\n ? normalizeTreeItems(\n items,\n itemKey,\n childrenKey,\n (parentKey || 'parent') as keyof T\n )\n : items,\n [level, items, itemKey, childrenKey, parentKey]\n );\n\n return (\n <>\n {parsedItems.map((item) => {\n const children = Array.isArray(item[childrenKey])\n ? (item[childrenKey] as T[])\n : [];\n const childrenGroups = buildGroups(children, groupBy);\n\n return (\n <Fragment key={`tree-item-${String(item[itemKey])}-${level}`}>\n <div className=\"relative\">\n {level > 0 && (\n <div className=\"pointer-events-none absolute left-0 top-1/2 -translate-y-1/2 w-4 h-px bg-gray-300\" />\n )}\n <CommandItem\n className={cn(\n 'transition-all p-2',\n level > 0 && 'ml-4',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground'\n )}\n disabled={disabledKey ? Boolean(item[disabledKey]) : false}\n key={`item-${String(item[itemKey])}`}\n onSelect={() => onSelect(item)}\n value={String(item[itemKey])}\n >\n <div\n className={cn(\n 'flex items-center w-full gap-2',\n level > 0 && 'pl-2'\n )}\n >\n {isMultiple && <Checkbox checked={isItemSelected(item)} />}\n <span className=\"truncate\">\n {String(item[labelKey] || '')}\n </span>\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </div>\n </CommandItem>\n </div>\n <div\n className={cn(\n children.length > 0 &&\n 'ml-4 relative before:absolute before:left-0 before:top-0 before:bottom-4 before:border-l before:border-gray-300'\n )}\n >\n {children.length > 0 && (\n <>\n {childrenGroups.map((group) => (\n <div\n key={`tree-group-${String(item[itemKey])}-${group.id}`}\n >\n {groupBy && (\n <div className=\"px-2 py-1 ml-4 text-[11px] font-medium text-muted-foreground/90 uppercase tracking-wide\">\n {group.heading || 'Outros'}\n </div>\n )}\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={disabledKey}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={group.items}\n labelKey={labelKey}\n level={level + 1}\n onSelect={onSelect}\n parentKey={parentKey}\n />\n </div>\n ))}\n </>\n )}\n </div>\n </Fragment>\n );\n })}\n </>\n );\n};\n\nconst TreeItemRenderer = memo(\n TreeItemRendererComponent\n) as typeof TreeItemRendererComponent;\n\ntype TreeGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nconst DEFAULT_GROUP_ID = 'tree-group-default';\nconst UNDEFINED_GROUP_ID = 'tree-group-undefined';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): TreeGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, TreeGroup<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\nconst normalizeTreeItems = <T,>(\n items: T[],\n itemKey: keyof T,\n childrenKey: keyof T,\n parentKey: keyof T\n): T[] => {\n if (items.length === 0) return items;\n\n const hasNestedChildren = items.some(\n (item) =>\n Array.isArray(item[childrenKey]) &&\n (item[childrenKey] as unknown[]).length > 0\n );\n\n if (hasNestedChildren) return items;\n\n const hasParentField = items.some((item) =>\n Object.prototype.hasOwnProperty.call(\n item as object,\n parentKey as PropertyKey\n )\n );\n\n if (!hasParentField) return items;\n\n const nodes = new Map<string, T>();\n const roots: T[] = [];\n\n for (const item of items) {\n nodes.set(String(item[itemKey]), {\n ...(item as object),\n [childrenKey]: [],\n } as T);\n }\n\n for (const item of items) {\n const node = nodes.get(String(item[itemKey]));\n if (!node) continue;\n\n const parentValue = item[parentKey] as unknown;\n const hasParent =\n parentValue !== null &&\n parentValue !== undefined &&\n String(parentValue) !== '';\n\n if (!hasParent) {\n roots.push(node);\n continue;\n }\n\n const parentNode = nodes.get(String(parentValue));\n if (!parentNode) {\n roots.push(node);\n continue;\n }\n\n (parentNode[childrenKey] as unknown[]).push(node);\n }\n\n return roots;\n};\n\nexport default TreeItemRenderer;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maquinaweb-ui",
|
|
3
|
-
"version": "2.75.
|
|
3
|
+
"version": "2.75.2",
|
|
4
4
|
"description": "A minimal React component library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
"@air/react-drag-to-select": "^5.0.5",
|
|
90
90
|
"@atlaskit/pragmatic-drag-and-drop": "^1.7.9",
|
|
91
91
|
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
|
|
92
|
-
"react": "^
|
|
93
|
-
"react-dom": "^
|
|
92
|
+
"react": "^19.2.5",
|
|
93
|
+
"react-dom": "^19.2.5"
|
|
94
94
|
},
|
|
95
95
|
"peerDependenciesMeta": {
|
|
96
96
|
"@air/react-drag-to-select": {
|
|
@@ -151,12 +151,12 @@
|
|
|
151
151
|
},
|
|
152
152
|
"devDependencies": {
|
|
153
153
|
"@air/react-drag-to-select": "^5.0.5",
|
|
154
|
-
"@biomejs/biome": "^2.
|
|
155
|
-
"@atlaskit/pragmatic-drag-and-drop": "^1.
|
|
154
|
+
"@biomejs/biome": "^2.4.13",
|
|
155
|
+
"@atlaskit/pragmatic-drag-and-drop": "^1.8.1",
|
|
156
156
|
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
|
|
157
157
|
"@semantic-release/changelog": "^6.0.3",
|
|
158
158
|
"@semantic-release/git": "^10.0.1",
|
|
159
|
-
"@tailwindcss/postcss": "^4.
|
|
159
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
160
160
|
"@types/inputmask": "^5.0.7",
|
|
161
161
|
"@types/react": "^19.2.14",
|
|
162
162
|
"@types/react-dom": "^19.2.3",
|
|
@@ -168,18 +168,18 @@
|
|
|
168
168
|
"lint-staged": "^16.2.3",
|
|
169
169
|
"lucide-react": "^0.544.0",
|
|
170
170
|
"motion": "^12.23.22",
|
|
171
|
-
"next": "^16.2.
|
|
171
|
+
"next": "^16.2.4",
|
|
172
172
|
"nuqs": "^2.7.0",
|
|
173
|
-
"react": "^19.2.
|
|
174
|
-
"react-cosmos": "^7.
|
|
175
|
-
"react-cosmos-next": "^7.
|
|
176
|
-
"react-cosmos-plugin-open-fixture": "^7.
|
|
177
|
-
"react-dom": "^19.2.
|
|
178
|
-
"react-hook-form": "^7.
|
|
179
|
-
"tailwindcss": "^4.
|
|
180
|
-
"tsdown": "^0.
|
|
173
|
+
"react": "^19.2.5",
|
|
174
|
+
"react-cosmos": "^7.3.0",
|
|
175
|
+
"react-cosmos-next": "^7.3.0",
|
|
176
|
+
"react-cosmos-plugin-open-fixture": "^7.3.0",
|
|
177
|
+
"react-dom": "^19.2.5",
|
|
178
|
+
"react-hook-form": "^7.74.0",
|
|
179
|
+
"tailwindcss": "^4.2.4",
|
|
180
|
+
"tsdown": "^0.21.10",
|
|
181
181
|
"tw-animate-css": "^1.4.0",
|
|
182
|
-
"typescript": "^
|
|
182
|
+
"typescript": "^6.0.3"
|
|
183
183
|
},
|
|
184
184
|
"keywords": [
|
|
185
185
|
"react",
|