@asteby/metacore-ui 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +80 -0
- package/dist/command-menu/command-menu.d.ts +32 -0
- package/dist/command-menu/command-menu.d.ts.map +1 -0
- package/dist/command-menu/command-menu.js +34 -0
- package/dist/command-menu/command-menu.js.map +1 -0
- package/dist/command-menu/index.d.ts +2 -0
- package/dist/command-menu/index.d.ts.map +1 -0
- package/dist/command-menu/index.js +2 -0
- package/dist/command-menu/index.js.map +1 -0
- package/dist/data-table/bulk-actions.d.ts +13 -0
- package/dist/data-table/bulk-actions.d.ts.map +1 -0
- package/dist/data-table/bulk-actions.js +82 -0
- package/dist/data-table/bulk-actions.js.map +1 -0
- package/dist/data-table/column-header.d.ts +9 -0
- package/dist/data-table/column-header.d.ts.map +1 -0
- package/dist/data-table/column-header.js +16 -0
- package/dist/data-table/column-header.js.map +1 -0
- package/dist/data-table/faceted-filter.d.ts +16 -0
- package/dist/data-table/faceted-filter.d.ts.map +1 -0
- package/dist/data-table/faceted-filter.js +32 -0
- package/dist/data-table/faceted-filter.js.map +1 -0
- package/dist/data-table/filterable-column-header.d.ts +32 -0
- package/dist/data-table/filterable-column-header.d.ts.map +1 -0
- package/dist/data-table/filterable-column-header.js +152 -0
- package/dist/data-table/filterable-column-header.js.map +1 -0
- package/dist/data-table/index.d.ts +8 -0
- package/dist/data-table/index.d.ts.map +1 -0
- package/dist/data-table/index.js +8 -0
- package/dist/data-table/index.js.map +1 -0
- package/dist/data-table/pagination.d.ts +11 -0
- package/dist/data-table/pagination.d.ts.map +1 -0
- package/dist/data-table/pagination.js +18 -0
- package/dist/data-table/pagination.js.map +1 -0
- package/dist/data-table/toolbar.d.ts +31 -0
- package/dist/data-table/toolbar.d.ts.map +1 -0
- package/dist/data-table/toolbar.js +31 -0
- package/dist/data-table/toolbar.js.map +1 -0
- package/dist/data-table/view-options.d.ts +7 -0
- package/dist/data-table/view-options.d.ts.map +1 -0
- package/dist/data-table/view-options.js +18 -0
- package/dist/data-table/view-options.js.map +1 -0
- package/dist/dialogs/confirm-dialog.d.ts +18 -0
- package/dist/dialogs/confirm-dialog.d.ts.map +1 -0
- package/dist/dialogs/confirm-dialog.js +10 -0
- package/dist/dialogs/confirm-dialog.js.map +1 -0
- package/dist/dialogs/index.d.ts +7 -0
- package/dist/dialogs/index.d.ts.map +1 -0
- package/dist/dialogs/index.js +7 -0
- package/dist/dialogs/index.js.map +1 -0
- package/dist/dialogs/learn-more.d.ts +9 -0
- package/dist/dialogs/learn-more.d.ts.map +1 -0
- package/dist/dialogs/learn-more.js +11 -0
- package/dist/dialogs/learn-more.js.map +1 -0
- package/dist/dialogs/long-text.d.ts +9 -0
- package/dist/dialogs/long-text.d.ts.map +1 -0
- package/dist/dialogs/long-text.js +27 -0
- package/dist/dialogs/long-text.js.map +1 -0
- package/dist/dialogs/password-input.d.ts +7 -0
- package/dist/dialogs/password-input.d.ts.map +1 -0
- package/dist/dialogs/password-input.js +10 -0
- package/dist/dialogs/password-input.js.map +1 -0
- package/dist/dialogs/select-dropdown.d.ts +16 -0
- package/dist/dialogs/select-dropdown.d.ts.map +1 -0
- package/dist/dialogs/select-dropdown.js +13 -0
- package/dist/dialogs/select-dropdown.js.map +1 -0
- package/dist/dialogs/skip-to-main.d.ts +2 -0
- package/dist/dialogs/skip-to-main.d.ts.map +1 -0
- package/dist/dialogs/skip-to-main.js +5 -0
- package/dist/dialogs/skip-to-main.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-dialog-state.d.ts +7 -0
- package/dist/hooks/use-dialog-state.d.ts.map +1 -0
- package/dist/hooks/use-dialog-state.js +12 -0
- package/dist/hooks/use-dialog-state.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-table-url-state.d.ts +48 -0
- package/dist/hooks/use-table-url-state.d.ts.map +1 -0
- package/dist/hooks/use-table-url-state.js +123 -0
- package/dist/hooks/use-table-url-state.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/app-sidebar.d.ts +41 -0
- package/dist/layout/app-sidebar.d.ts.map +1 -0
- package/dist/layout/app-sidebar.js +26 -0
- package/dist/layout/app-sidebar.js.map +1 -0
- package/dist/layout/authenticated-layout.d.ts +39 -0
- package/dist/layout/authenticated-layout.d.ts.map +1 -0
- package/dist/layout/authenticated-layout.js +22 -0
- package/dist/layout/authenticated-layout.js.map +1 -0
- package/dist/layout/header.d.ts +8 -0
- package/dist/layout/header.d.ts.map +1 -0
- package/dist/layout/header.js +20 -0
- package/dist/layout/header.js.map +1 -0
- package/dist/layout/index.d.ts +9 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +8 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/nav-group.d.ts +23 -0
- package/dist/layout/nav-group.d.ts.map +1 -0
- package/dist/layout/nav-group.js +71 -0
- package/dist/layout/nav-group.js.map +1 -0
- package/dist/layout/nav-user.d.ts +20 -0
- package/dist/layout/nav-user.d.ts.map +1 -0
- package/dist/layout/nav-user.js +26 -0
- package/dist/layout/nav-user.js.map +1 -0
- package/dist/layout/profile-dropdown.d.ts +18 -0
- package/dist/layout/profile-dropdown.d.ts.map +1 -0
- package/dist/layout/profile-dropdown.js +24 -0
- package/dist/layout/profile-dropdown.js.map +1 -0
- package/dist/layout/team-switcher.d.ts +11 -0
- package/dist/layout/team-switcher.d.ts.map +1 -0
- package/dist/layout/team-switcher.js +18 -0
- package/dist/layout/team-switcher.js.map +1 -0
- package/dist/layout/types.d.ts +23 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout/types.js +2 -0
- package/dist/layout/types.js.map +1 -0
- package/dist/lib/cookies.d.ts +11 -0
- package/dist/lib/cookies.d.ts.map +1 -0
- package/dist/lib/cookies.js +30 -0
- package/dist/lib/cookies.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/option-colors.d.ts +27 -0
- package/dist/lib/option-colors.d.ts.map +1 -0
- package/dist/lib/option-colors.js +79 -0
- package/dist/lib/option-colors.js.map +1 -0
- package/dist/lib/utils.d.ts +17 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +53 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/primitives/accordion.d.ts +8 -0
- package/dist/primitives/accordion.d.ts.map +1 -0
- package/dist/primitives/accordion.js +14 -0
- package/dist/primitives/accordion.js.map +1 -0
- package/dist/primitives/alert-dialog.d.ts +15 -0
- package/dist/primitives/alert-dialog.d.ts.map +1 -0
- package/dist/primitives/alert-dialog.js +40 -0
- package/dist/primitives/alert-dialog.js.map +1 -0
- package/dist/primitives/alert.d.ts +10 -0
- package/dist/primitives/alert.d.ts.map +1 -0
- package/dist/primitives/alert.js +26 -0
- package/dist/primitives/alert.js.map +1 -0
- package/dist/primitives/avatar.d.ts +7 -0
- package/dist/primitives/avatar.d.ts.map +1 -0
- package/dist/primitives/avatar.js +15 -0
- package/dist/primitives/avatar.js.map +1 -0
- package/dist/primitives/badge.d.ts +10 -0
- package/dist/primitives/badge.d.ts.map +1 -0
- package/dist/primitives/badge.js +24 -0
- package/dist/primitives/badge.js.map +1 -0
- package/dist/primitives/button.d.ts +11 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +33 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/calendar.d.ts +9 -0
- package/dist/primitives/calendar.d.ts.map +1 -0
- package/dist/primitives/calendar.js +74 -0
- package/dist/primitives/calendar.js.map +1 -0
- package/dist/primitives/card.d.ts +10 -0
- package/dist/primitives/card.d.ts.map +1 -0
- package/dist/primitives/card.js +26 -0
- package/dist/primitives/card.js.map +1 -0
- package/dist/primitives/checkbox.d.ts +5 -0
- package/dist/primitives/checkbox.d.ts.map +1 -0
- package/dist/primitives/checkbox.js +10 -0
- package/dist/primitives/checkbox.js.map +1 -0
- package/dist/primitives/collapsible.d.ts +7 -0
- package/dist/primitives/collapsible.d.ts.map +1 -0
- package/dist/primitives/collapsible.js +14 -0
- package/dist/primitives/collapsible.js.map +1 -0
- package/dist/primitives/command.d.ts +19 -0
- package/dist/primitives/command.d.ts.map +1 -0
- package/dist/primitives/command.js +35 -0
- package/dist/primitives/command.js.map +1 -0
- package/dist/primitives/context-menu.d.ts +12 -0
- package/dist/primitives/context-menu.d.ts.map +1 -0
- package/dist/primitives/context-menu.js +21 -0
- package/dist/primitives/context-menu.js.map +1 -0
- package/dist/primitives/dialog.d.ts +16 -0
- package/dist/primitives/dialog.d.ts.map +1 -0
- package/dist/primitives/dialog.js +37 -0
- package/dist/primitives/dialog.js.map +1 -0
- package/dist/primitives/dropdown-menu.d.ts +26 -0
- package/dist/primitives/dropdown-menu.d.ts.map +1 -0
- package/dist/primitives/dropdown-menu.js +52 -0
- package/dist/primitives/dropdown-menu.js.map +1 -0
- package/dist/primitives/form.d.ts +25 -0
- package/dist/primitives/form.d.ts.map +1 -0
- package/dist/primitives/form.js +60 -0
- package/dist/primitives/form.js.map +1 -0
- package/dist/primitives/index.d.ts +35 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +35 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/input-otp.d.ts +12 -0
- package/dist/primitives/input-otp.d.ts.map +1 -0
- package/dist/primitives/input-otp.js +21 -0
- package/dist/primitives/input-otp.js.map +1 -0
- package/dist/primitives/input.d.ts +4 -0
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +8 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/label.d.ts +5 -0
- package/dist/primitives/label.d.ts.map +1 -0
- package/dist/primitives/label.js +9 -0
- package/dist/primitives/label.js.map +1 -0
- package/dist/primitives/multi-select.d.ts +20 -0
- package/dist/primitives/multi-select.d.ts.map +1 -0
- package/dist/primitives/multi-select.js +44 -0
- package/dist/primitives/multi-select.js.map +1 -0
- package/dist/primitives/popover.d.ts +8 -0
- package/dist/primitives/popover.d.ts.map +1 -0
- package/dist/primitives/popover.js +18 -0
- package/dist/primitives/popover.js.map +1 -0
- package/dist/primitives/progress.d.ts +5 -0
- package/dist/primitives/progress.d.ts.map +1 -0
- package/dist/primitives/progress.js +11 -0
- package/dist/primitives/progress.js.map +1 -0
- package/dist/primitives/radio-group.d.ts +6 -0
- package/dist/primitives/radio-group.d.ts.map +1 -0
- package/dist/primitives/radio-group.js +13 -0
- package/dist/primitives/radio-group.js.map +1 -0
- package/dist/primitives/scroll-area.d.ts +11 -0
- package/dist/primitives/scroll-area.d.ts.map +1 -0
- package/dist/primitives/scroll-area.js +12 -0
- package/dist/primitives/scroll-area.js.map +1 -0
- package/dist/primitives/select.d.ts +16 -0
- package/dist/primitives/select.d.ts.map +1 -0
- package/dist/primitives/select.js +39 -0
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/separator.d.ts +5 -0
- package/dist/primitives/separator.d.ts.map +1 -0
- package/dist/primitives/separator.js +9 -0
- package/dist/primitives/separator.js.map +1 -0
- package/dist/primitives/sheet.d.ts +14 -0
- package/dist/primitives/sheet.d.ts.map +1 -0
- package/dist/primitives/sheet.js +41 -0
- package/dist/primitives/sheet.js.map +1 -0
- package/dist/primitives/sidebar.d.ts +70 -0
- package/dist/primitives/sidebar.d.ts.map +1 -0
- package/dist/primitives/sidebar.js +198 -0
- package/dist/primitives/sidebar.js.map +1 -0
- package/dist/primitives/skeleton.d.ts +4 -0
- package/dist/primitives/skeleton.d.ts.map +1 -0
- package/dist/primitives/skeleton.js +8 -0
- package/dist/primitives/skeleton.js.map +1 -0
- package/dist/primitives/sonner.d.ts +11 -0
- package/dist/primitives/sonner.d.ts.map +1 -0
- package/dist/primitives/sonner.js +19 -0
- package/dist/primitives/sonner.js.map +1 -0
- package/dist/primitives/switch.d.ts +5 -0
- package/dist/primitives/switch.d.ts.map +1 -0
- package/dist/primitives/switch.js +9 -0
- package/dist/primitives/switch.js.map +1 -0
- package/dist/primitives/table.d.ts +14 -0
- package/dist/primitives/table.d.ts.map +1 -0
- package/dist/primitives/table.js +33 -0
- package/dist/primitives/table.js.map +1 -0
- package/dist/primitives/tabs.d.ts +8 -0
- package/dist/primitives/tabs.d.ts.map +1 -0
- package/dist/primitives/tabs.js +18 -0
- package/dist/primitives/tabs.js.map +1 -0
- package/dist/primitives/textarea.d.ts +4 -0
- package/dist/primitives/textarea.d.ts.map +1 -0
- package/dist/primitives/textarea.js +8 -0
- package/dist/primitives/textarea.js.map +1 -0
- package/dist/primitives/tooltip.d.ts +8 -0
- package/dist/primitives/tooltip.d.ts.map +1 -0
- package/dist/primitives/tooltip.js +18 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/package.json +128 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Column } from '@tanstack/react-table';
|
|
3
|
+
export interface FilterOption {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ColumnFilterMeta {
|
|
10
|
+
filterable?: boolean;
|
|
11
|
+
filterType?: 'select' | 'boolean' | 'text' | 'number_range';
|
|
12
|
+
filterKey?: string;
|
|
13
|
+
filterOptions?: FilterOption[];
|
|
14
|
+
filterLoading?: boolean;
|
|
15
|
+
selectedValues?: string[];
|
|
16
|
+
onFilterChange?: (filterKey: string, values: string[]) => void;
|
|
17
|
+
}
|
|
18
|
+
type FilterableColumnHeaderProps<TData, TValue> = React.HTMLAttributes<HTMLDivElement> & {
|
|
19
|
+
column: Column<TData, TValue>;
|
|
20
|
+
title: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Pro column header combining sort + scoped per-column filter UI.
|
|
24
|
+
*
|
|
25
|
+
* Supports `select`, `boolean`, `text`, and `number_range` filter types from
|
|
26
|
+
* `columnDef.meta`. The app-specific `date_range` and remote `filterSearchEndpoint`
|
|
27
|
+
* variants were stripped when vendored into @asteby/metacore-ui to avoid pulling
|
|
28
|
+
* in `react-day-picker` / HTTP client deps; extend locally in userland if needed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function FilterableColumnHeader<TData, TValue>({ column, title, className, }: FilterableColumnHeaderProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=filterable-column-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterable-column-header.d.ts","sourceRoot":"","sources":["../../src/data-table/filterable-column-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAkCnD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC/D;AAED,KAAK,2BAA2B,CAAC,KAAK,EAAE,MAAM,IAC5C,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAEH;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EACpD,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,2CAgW5C"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { CheckIcon } from '@radix-ui/react-icons';
|
|
4
|
+
import {} from '@tanstack/react-table';
|
|
5
|
+
import { ListFilter, ArrowUpDown, ArrowUp, ArrowDown, EyeOff, } from 'lucide-react';
|
|
6
|
+
import { cn } from '../lib/utils';
|
|
7
|
+
import { resolveColorCss } from '../lib/option-colors';
|
|
8
|
+
import { Button } from '../primitives/button';
|
|
9
|
+
import { Label } from '../primitives/label';
|
|
10
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '../primitives/dropdown-menu';
|
|
11
|
+
import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
|
|
12
|
+
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from '../primitives/command';
|
|
13
|
+
import { Input } from '../primitives/input';
|
|
14
|
+
/**
|
|
15
|
+
* Pro column header combining sort + scoped per-column filter UI.
|
|
16
|
+
*
|
|
17
|
+
* Supports `select`, `boolean`, `text`, and `number_range` filter types from
|
|
18
|
+
* `columnDef.meta`. The app-specific `date_range` and remote `filterSearchEndpoint`
|
|
19
|
+
* variants were stripped when vendored into @asteby/metacore-ui to avoid pulling
|
|
20
|
+
* in `react-day-picker` / HTTP client deps; extend locally in userland if needed.
|
|
21
|
+
*/
|
|
22
|
+
export function FilterableColumnHeader({ column, title, className, }) {
|
|
23
|
+
const meta = (column.columnDef.meta || {});
|
|
24
|
+
const canSort = column.getCanSort();
|
|
25
|
+
const filterType = meta.filterType || 'select';
|
|
26
|
+
const hasOptions = meta.filterOptions && meta.filterOptions.length > 0;
|
|
27
|
+
const canFilter = meta.filterable &&
|
|
28
|
+
(hasOptions || filterType === 'text' || filterType === 'number_range');
|
|
29
|
+
const filterKey = meta.filterKey || column.id;
|
|
30
|
+
const selectedValues = new Set(meta.selectedValues || []);
|
|
31
|
+
const activeCount = selectedValues.size;
|
|
32
|
+
const rawTextValue = meta.selectedValues && meta.selectedValues.length > 0
|
|
33
|
+
? meta.selectedValues[0]
|
|
34
|
+
: '';
|
|
35
|
+
const displayTextValue = rawTextValue.replace(/^(ILIKE|LIKE|GT|LT|GTE|LTE):/, '');
|
|
36
|
+
const parseRangeValues = () => {
|
|
37
|
+
let min = '';
|
|
38
|
+
let max = '';
|
|
39
|
+
for (const v of meta.selectedValues || []) {
|
|
40
|
+
if (v.startsWith('GTE:'))
|
|
41
|
+
min = v.replace('GTE:', '');
|
|
42
|
+
if (v.startsWith('LTE:'))
|
|
43
|
+
max = v.replace('LTE:', '');
|
|
44
|
+
}
|
|
45
|
+
return { min, max };
|
|
46
|
+
};
|
|
47
|
+
const rangeValues = parseRangeValues();
|
|
48
|
+
const isActive = (() => {
|
|
49
|
+
if (filterType === 'text')
|
|
50
|
+
return rawTextValue !== '';
|
|
51
|
+
if (filterType === 'number_range')
|
|
52
|
+
return rangeValues.min !== '' || rangeValues.max !== '';
|
|
53
|
+
return activeCount > 0;
|
|
54
|
+
})();
|
|
55
|
+
const [localTextValue, setLocalTextValue] = React.useState(displayTextValue);
|
|
56
|
+
const [localMin, setLocalMin] = React.useState(rangeValues.min);
|
|
57
|
+
const [localMax, setLocalMax] = React.useState(rangeValues.max);
|
|
58
|
+
const [localSelected, setLocalSelected] = React.useState(new Set(selectedValues));
|
|
59
|
+
const [filterOpen, setFilterOpen] = React.useState(false);
|
|
60
|
+
const displayOptions = meta.filterOptions || [];
|
|
61
|
+
React.useEffect(() => {
|
|
62
|
+
setLocalTextValue(displayTextValue);
|
|
63
|
+
}, [displayTextValue]);
|
|
64
|
+
React.useEffect(() => {
|
|
65
|
+
setLocalMin(rangeValues.min);
|
|
66
|
+
setLocalMax(rangeValues.max);
|
|
67
|
+
}, [rangeValues.min, rangeValues.max]);
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
if (filterOpen) {
|
|
70
|
+
setLocalSelected(new Set(meta.selectedValues || []));
|
|
71
|
+
}
|
|
72
|
+
}, [filterOpen, meta.selectedValues?.join(',')]);
|
|
73
|
+
const handleLocalToggle = (value) => {
|
|
74
|
+
setLocalSelected((prev) => {
|
|
75
|
+
const next = new Set(prev);
|
|
76
|
+
if (next.has(value))
|
|
77
|
+
next.delete(value);
|
|
78
|
+
else
|
|
79
|
+
next.add(value);
|
|
80
|
+
return next;
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
const handleApplySelect = () => {
|
|
84
|
+
meta.onFilterChange?.(filterKey, Array.from(localSelected));
|
|
85
|
+
setFilterOpen(false);
|
|
86
|
+
};
|
|
87
|
+
const handleClearFilter = () => {
|
|
88
|
+
meta.onFilterChange?.(filterKey, []);
|
|
89
|
+
setLocalTextValue('');
|
|
90
|
+
setLocalMin('');
|
|
91
|
+
setLocalMax('');
|
|
92
|
+
setLocalSelected(new Set());
|
|
93
|
+
};
|
|
94
|
+
const handleTextSubmit = () => {
|
|
95
|
+
const trimmed = localTextValue.trim();
|
|
96
|
+
if (trimmed) {
|
|
97
|
+
meta.onFilterChange?.(filterKey, [`ILIKE:${trimmed}`]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
meta.onFilterChange?.(filterKey, []);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const handleNumberRangeSubmit = () => {
|
|
104
|
+
const values = [];
|
|
105
|
+
if (localMin.trim())
|
|
106
|
+
values.push(`GTE:${localMin.trim()}`);
|
|
107
|
+
if (localMax.trim())
|
|
108
|
+
values.push(`LTE:${localMax.trim()}`);
|
|
109
|
+
meta.onFilterChange?.(filterKey, values);
|
|
110
|
+
};
|
|
111
|
+
const localHasChanges = (() => {
|
|
112
|
+
if (filterType === 'select' || filterType === 'boolean') {
|
|
113
|
+
const current = new Set(meta.selectedValues || []);
|
|
114
|
+
if (localSelected.size !== current.size)
|
|
115
|
+
return true;
|
|
116
|
+
for (const v of localSelected) {
|
|
117
|
+
if (!current.has(v))
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
})();
|
|
124
|
+
return (_jsxs("div", { className: cn('flex items-center gap-0.5', className), children: [_jsx("span", { className: 'text-sm font-medium', children: title }), canSort && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', size: 'icon', className: cn('h-7 w-7 shrink-0 opacity-70 hover:opacity-100', column.getIsSorted() && 'opacity-100'), children: column.getIsSorted() === 'desc' ? (_jsx(ArrowDown, { className: 'h-3.5 w-3.5' })) : column.getIsSorted() === 'asc' ? (_jsx(ArrowUp, { className: 'h-3.5 w-3.5' })) : (_jsx(ArrowUpDown, { className: 'h-3.5 w-3.5' })) }) }), _jsxs(DropdownMenuContent, { align: 'start', children: [_jsxs(DropdownMenuItem, { onClick: () => column.toggleSorting(false), children: [_jsx(ArrowUp, { className: 'text-muted-foreground/70 size-3.5' }), "Ascendente"] }), _jsxs(DropdownMenuItem, { onClick: () => column.toggleSorting(true), children: [_jsx(ArrowDown, { className: 'text-muted-foreground/70 size-3.5' }), "Descendente"] }), column.getCanHide() && (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: () => column.toggleVisibility(false), children: [_jsx(EyeOff, { className: 'text-muted-foreground/70 size-3.5' }), "Ocultar"] })] }))] })] })), canFilter && (_jsxs(Popover, { modal: false, open: filterOpen, onOpenChange: setFilterOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', size: 'icon', className: cn('h-7 w-7 shrink-0', isActive
|
|
125
|
+
? 'text-primary hover:text-primary'
|
|
126
|
+
: 'opacity-70 hover:opacity-100'), children: _jsxs("div", { className: 'relative', children: [_jsx(ListFilter, { className: 'h-3.5 w-3.5' }), isActive &&
|
|
127
|
+
(filterType === 'select' || filterType === 'boolean') &&
|
|
128
|
+
activeCount > 0 && (_jsx("span", { className: 'absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-primary-foreground px-0.5', children: activeCount })), isActive &&
|
|
129
|
+
filterType !== 'select' &&
|
|
130
|
+
filterType !== 'boolean' && (_jsx("span", { className: 'absolute -top-1 -right-1 flex h-2 w-2 rounded-full bg-primary' }))] }) }) }), _jsxs(PopoverContent, { className: 'p-0 w-[220px]', align: 'start', onCloseAutoFocus: (e) => e.preventDefault(), children: [(filterType === 'select' || filterType === 'boolean') &&
|
|
131
|
+
hasOptions && (_jsxs(Command, { children: [_jsx(CommandInput, { placeholder: 'Buscar...' }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "Sin resultados." }), _jsx(CommandGroup, { children: displayOptions.map((option) => {
|
|
132
|
+
const isSelected = localSelected.has(option.value);
|
|
133
|
+
return (_jsxs(CommandItem, { onSelect: () => handleLocalToggle(option.value), onPointerDown: (e) => e.preventDefault(), children: [_jsx("div", { className: cn('border-primary mr-2 flex size-4 shrink-0 items-center justify-center rounded-sm border', isSelected
|
|
134
|
+
? 'bg-primary text-primary-foreground'
|
|
135
|
+
: 'opacity-50 [&_svg]:invisible'), children: _jsx(CheckIcon, { className: 'h-3.5 w-3.5' }) }), option.color && (_jsx("span", { className: 'mr-1 size-2.5 rounded-full shrink-0', style: {
|
|
136
|
+
backgroundColor: resolveColorCss(option.color),
|
|
137
|
+
} })), _jsx("span", { className: 'truncate', children: option.label })] }, option.value));
|
|
138
|
+
}) })] }), _jsxs("div", { className: 'border-t p-2 flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: () => {
|
|
139
|
+
handleClearFilter();
|
|
140
|
+
setFilterOpen(false);
|
|
141
|
+
}, disabled: !isActive && localSelected.size === 0, children: "Limpiar" }), _jsxs(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleApplySelect, disabled: !localHasChanges && localSelected.size === 0, children: ["Aplicar", localSelected.size > 0 ? ` (${localSelected.size})` : ''] })] })] })), filterType === 'text' && (_jsxs("div", { className: 'p-2.5 space-y-2', children: [_jsx(Input, { placeholder: 'Contiene...', value: localTextValue, onChange: (e) => setLocalTextValue(e.target.value), onKeyDown: (e) => {
|
|
142
|
+
if (e.key === 'Enter')
|
|
143
|
+
handleTextSubmit();
|
|
144
|
+
}, className: 'h-8 text-sm', autoFocus: true }), _jsxs("div", { className: 'flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: handleClearFilter, disabled: !isActive, children: "Limpiar" }), _jsx(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleTextSubmit, children: "Aplicar" })] })] })), filterType === 'number_range' && (_jsxs("div", { className: 'p-2.5 space-y-2.5', children: [_jsxs("div", { className: 'grid grid-cols-2 gap-2', children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { className: 'text-xs text-muted-foreground', children: "Min" }), _jsx(Input, { type: 'number', placeholder: '0', value: localMin, onChange: (e) => setLocalMin(e.target.value), onKeyDown: (e) => {
|
|
145
|
+
if (e.key === 'Enter')
|
|
146
|
+
handleNumberRangeSubmit();
|
|
147
|
+
}, className: 'h-8 text-sm', autoFocus: true })] }), _jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { className: 'text-xs text-muted-foreground', children: "Max" }), _jsx(Input, { type: 'number', placeholder: '999999', value: localMax, onChange: (e) => setLocalMax(e.target.value), onKeyDown: (e) => {
|
|
148
|
+
if (e.key === 'Enter')
|
|
149
|
+
handleNumberRangeSubmit();
|
|
150
|
+
}, className: 'h-8 text-sm' })] })] }), _jsxs("div", { className: 'flex gap-1.5', children: [_jsx(Button, { size: 'sm', variant: 'outline', className: 'h-7 flex-1 text-xs', onClick: handleClearFilter, disabled: !isActive, children: "Limpiar" }), _jsx(Button, { size: 'sm', className: 'h-7 flex-1 text-xs', onClick: handleNumberRangeSubmit, children: "Aplicar" })] })] }))] })] }))] }));
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=filterable-column-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterable-column-header.js","sourceRoot":"","sources":["../../src/data-table/filterable-column-header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DataTablePagination } from './pagination';
|
|
2
|
+
export { DataTableColumnHeader } from './column-header';
|
|
3
|
+
export { DataTableFacetedFilter } from './faceted-filter';
|
|
4
|
+
export { DataTableViewOptions } from './view-options';
|
|
5
|
+
export { DataTableToolbar } from './toolbar';
|
|
6
|
+
export { DataTableBulkActions } from './bulk-actions';
|
|
7
|
+
export { FilterableColumnHeader, type FilterOption, type ColumnFilterMeta, } from './filterable-column-header';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EACL,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DataTablePagination } from './pagination';
|
|
2
|
+
export { DataTableColumnHeader } from './column-header';
|
|
3
|
+
export { DataTableFacetedFilter } from './faceted-filter';
|
|
4
|
+
export { DataTableViewOptions } from './view-options';
|
|
5
|
+
export { DataTableToolbar } from './toolbar';
|
|
6
|
+
export { DataTableBulkActions } from './bulk-actions';
|
|
7
|
+
export { FilterableColumnHeader, } from './filterable-column-header';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EACL,sBAAsB,GAGvB,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Table } from '@tanstack/react-table';
|
|
3
|
+
type DataTablePaginationProps<TData> = {
|
|
4
|
+
table: Table<TData>;
|
|
5
|
+
className?: string;
|
|
6
|
+
pageSizeOptions?: number[];
|
|
7
|
+
leftActions?: React.ReactNode;
|
|
8
|
+
};
|
|
9
|
+
export declare function DataTablePagination<TData>({ table, className, pageSizeOptions, leftActions, }: DataTablePaginationProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/data-table/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAYlD,KAAK,wBAAwB,CAAC,KAAK,IAAI;IACrC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,SAAS,EACT,eAAsC,EACtC,WAAW,GACZ,EAAE,wBAAwB,CAAC,KAAK,CAAC,2CA+GjC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ChevronLeftIcon, ChevronRightIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, } from '@radix-ui/react-icons';
|
|
4
|
+
import {} from '@tanstack/react-table';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import { cn, getPageNumbers } from '../lib/utils';
|
|
7
|
+
import { Button } from '../primitives/button';
|
|
8
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../primitives/select';
|
|
9
|
+
export function DataTablePagination({ table, className, pageSizeOptions = [10, 20, 30, 40, 50], leftActions, }) {
|
|
10
|
+
const { t } = useTranslation();
|
|
11
|
+
const currentPage = table.getState().pagination.pageIndex + 1;
|
|
12
|
+
const totalPages = table.getPageCount();
|
|
13
|
+
const pageNumbers = getPageNumbers(currentPage, totalPages);
|
|
14
|
+
return (_jsxs("div", { className: cn('flex items-center justify-between overflow-clip px-2', '@max-2xl/content:flex-col-reverse @max-2xl/content:gap-4', className), style: { overflowClipMargin: 1 }, children: [_jsxs("div", { className: 'flex w-full items-center justify-between', children: [_jsx("div", { className: 'flex w-[100px] items-center justify-center text-sm font-medium @2xl/content:hidden', children: t('datatable.page_x_of_y', { current: currentPage, total: totalPages }) }), _jsxs("div", { className: 'flex items-center gap-2 @max-2xl/content:flex-row-reverse', children: [_jsxs(Select, { value: `${table.getState().pagination.pageSize}`, onValueChange: (value) => {
|
|
15
|
+
table.setPageSize(Number(value));
|
|
16
|
+
}, children: [_jsx(SelectTrigger, { className: 'h-9 w-[70px]', children: _jsx(SelectValue, { placeholder: String(table.getState().pagination.pageSize) }) }), _jsx(SelectContent, { side: 'top', children: pageSizeOptions.map((pageSize) => (_jsx(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize))) })] }), _jsx("p", { className: 'hidden text-sm font-medium sm:block', children: t('datatable.rows_per_page') }), leftActions] })] }), _jsxs("div", { className: 'flex items-center sm:space-x-6 lg:space-x-8', children: [_jsx("div", { className: 'flex w-[100px] items-center justify-center text-sm font-medium @max-3xl/content:hidden', children: t('datatable.page_x_of_y', { current: currentPage, total: totalPages }) }), _jsxs("div", { className: 'flex items-center space-x-2', children: [_jsxs(Button, { variant: 'outline', className: 'size-9 p-0 @max-md/content:hidden', onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_first_page') }), _jsx(DoubleArrowLeftIcon, { className: 'h-4 w-4' })] }), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0', onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_previous_page') }), _jsx(ChevronLeftIcon, { className: 'h-4 w-4' })] }), pageNumbers.map((pageNumber, index) => (_jsx("div", { className: 'flex items-center', children: pageNumber === '...' ? (_jsx("span", { className: 'text-muted-foreground px-1 text-sm', children: "..." })) : (_jsxs(Button, { variant: currentPage === pageNumber ? 'default' : 'outline', className: 'h-9 min-w-9 px-3', onClick: () => table.setPageIndex(pageNumber - 1), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_page', { page: pageNumber }) }), pageNumber] })) }, `${pageNumber}-${index}`))), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0', onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_next_page') }), _jsx(ChevronRightIcon, { className: 'h-4 w-4' })] }), _jsxs(Button, { variant: 'outline', className: 'size-9 p-0 @max-md/content:hidden', onClick: () => table.setPageIndex(table.getPageCount() - 1), disabled: !table.getCanNextPage(), children: [_jsx("span", { className: 'sr-only', children: t('datatable.go_last_page') }), _jsx(DoubleArrowRightIcon, { className: 'h-4 w-4' })] })] })] })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/data-table/pagination.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Table } from '@tanstack/react-table';
|
|
3
|
+
type DataTableToolbarProps<TData> = {
|
|
4
|
+
table: Table<TData>;
|
|
5
|
+
searchPlaceholder?: string;
|
|
6
|
+
searchKey?: string;
|
|
7
|
+
filters?: {
|
|
8
|
+
columnId: string;
|
|
9
|
+
title: string;
|
|
10
|
+
options: {
|
|
11
|
+
label: string;
|
|
12
|
+
value: string;
|
|
13
|
+
icon?: React.ComponentType<{
|
|
14
|
+
className?: string;
|
|
15
|
+
}>;
|
|
16
|
+
}[];
|
|
17
|
+
}[];
|
|
18
|
+
activeFilters?: Record<string, string[]>;
|
|
19
|
+
onDynamicFilterChange?: (filterKey: string, values: string[]) => void;
|
|
20
|
+
onRefresh?: () => void;
|
|
21
|
+
isLoading?: boolean;
|
|
22
|
+
children?: React.ReactNode;
|
|
23
|
+
dateFilter?: unknown;
|
|
24
|
+
perPageOptions?: number[];
|
|
25
|
+
selectedCount?: number;
|
|
26
|
+
onBulkDelete?: () => void;
|
|
27
|
+
extraActions?: React.ReactNode;
|
|
28
|
+
};
|
|
29
|
+
export declare function DataTableToolbar<TData>({ table, searchPlaceholder, searchKey, filters, activeFilters, onDynamicFilterChange, onRefresh, isLoading, children, extraActions, }: DataTableToolbarProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/data-table/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQlD,KAAK,qBAAqB,CAAC,KAAK,IAAI;IAClC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;gBAAE,SAAS,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SACnD,EAAE,CAAA;KACJ,EAAE,CAAA;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACxC,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACtC,KAAK,EACL,iBAA+B,EAC/B,SAAS,EACT,OAAY,EACZ,aAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE,qBAAqB,CAAC,KAAK,CAAC,2CAuF9B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Cross2Icon } from '@radix-ui/react-icons';
|
|
4
|
+
import {} from '@tanstack/react-table';
|
|
5
|
+
import { RefreshCw } from 'lucide-react';
|
|
6
|
+
import { cn } from '../lib/utils';
|
|
7
|
+
import { Button } from '../primitives/button';
|
|
8
|
+
import { Input } from '../primitives/input';
|
|
9
|
+
import { DataTableFacetedFilter } from './faceted-filter';
|
|
10
|
+
import { DataTableViewOptions } from './view-options';
|
|
11
|
+
export function DataTableToolbar({ table, searchPlaceholder = 'Filter...', searchKey, filters = [], activeFilters = {}, onDynamicFilterChange, onRefresh, isLoading, children, extraActions, }) {
|
|
12
|
+
const hasActiveColumnFilters = Object.values(activeFilters).some((v) => v.length > 0);
|
|
13
|
+
const activeFilterCount = Object.values(activeFilters).filter((v) => v.length > 0).length +
|
|
14
|
+
table.getState().columnFilters.length;
|
|
15
|
+
const isFiltered = table.getState().columnFilters.length > 0 ||
|
|
16
|
+
table.getState().globalFilter ||
|
|
17
|
+
hasActiveColumnFilters;
|
|
18
|
+
return (_jsxs("div", { className: 'flex items-center justify-between', children: [_jsxs("div", { className: 'flex flex-1 flex-col-reverse items-start gap-y-2 sm:flex-row sm:items-center sm:space-x-2', children: [children, searchKey ? (_jsx(Input, { placeholder: searchPlaceholder, value: table.getColumn(searchKey)?.getFilterValue() ?? '', onChange: (event) => table.getColumn(searchKey)?.setFilterValue(event.target.value), className: 'h-8 w-[150px] lg:w-[250px]' })) : (_jsx(Input, { placeholder: searchPlaceholder, value: table.getState().globalFilter ?? '', onChange: (event) => table.setGlobalFilter(event.target.value), className: 'h-8 w-[150px] lg:w-[250px]' })), _jsx("div", { className: 'flex gap-x-2 flex-wrap', children: filters.map((filter) => {
|
|
19
|
+
const column = table.getColumn(filter.columnId);
|
|
20
|
+
if (!column)
|
|
21
|
+
return null;
|
|
22
|
+
return (_jsx(DataTableFacetedFilter, { column: column, title: filter.title, options: filter.options }, filter.columnId));
|
|
23
|
+
}) }), isFiltered && (_jsxs(Button, { variant: 'ghost', onClick: () => {
|
|
24
|
+
table.resetColumnFilters();
|
|
25
|
+
table.setGlobalFilter('');
|
|
26
|
+
if (onDynamicFilterChange) {
|
|
27
|
+
Object.keys(activeFilters).forEach((key) => onDynamicFilterChange(key, []));
|
|
28
|
+
}
|
|
29
|
+
}, className: 'h-8 px-2 lg:px-3 text-muted-foreground hover:text-foreground', children: ["Limpiar filtros", activeFilterCount > 0 && (_jsx("span", { className: 'ml-1.5 flex h-5 min-w-5 items-center justify-center rounded-full bg-muted text-[11px] font-semibold px-1', children: activeFilterCount })), _jsx(Cross2Icon, { className: 'ms-1 h-3.5 w-3.5' })] }))] }), _jsxs("div", { className: 'flex items-center gap-2', children: [extraActions, onRefresh && (_jsxs(Button, { variant: 'outline', size: 'sm', onClick: onRefresh, className: 'h-8 px-2 lg:px-3', disabled: isLoading, children: [_jsx(RefreshCw, { className: cn('h-4 w-4', isLoading && 'animate-spin') }), _jsx("span", { className: 'sr-only', children: "Recargar" })] })), _jsx(DataTableViewOptions, { table: table })] })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/data-table/toolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AA2BrD,MAAM,UAAU,gBAAgB,CAAQ,EACtC,KAAK,EACL,iBAAiB,GAAG,WAAW,EAC/B,SAAS,EACT,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,EAAE,EAClB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GACiB;IAC7B,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACrF,MAAM,iBAAiB,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;QAC/D,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,MAAM,CAAA;IACvC,MAAM,UAAU,GACd,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QACzC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY;QAC7B,sBAAsB,CAAA;IAExB,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAK,SAAS,EAAC,2FAA2F,aACvG,QAAQ,EACR,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,KAAK,IACJ,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,cAAc,EAAa,IAAI,EAAE,EACrE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAEhE,SAAS,EAAC,4BAA4B,GACtC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IACJ,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAuB,IAAI,EAAE,EACtD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9D,SAAS,EAAC,4BAA4B,GACtC,CACH,EACD,cAAK,SAAS,EAAC,wBAAwB,YACpC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;4BACtB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;4BAC/C,IAAI,CAAC,MAAM;gCAAE,OAAO,IAAI,CAAA;4BACxB,OAAO,CACL,KAAC,sBAAsB,IAErB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAHlB,MAAM,CAAC,QAAQ,CAIpB,CACH,CAAA;wBACH,CAAC,CAAC,GACE,EACL,UAAU,IAAI,CACb,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,CAAC,kBAAkB,EAAE,CAAA;4BAC1B,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;4BACzB,IAAI,qBAAqB,EAAE,CAAC;gCAC1B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACzC,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,CAC/B,CAAA;4BACH,CAAC;wBACH,CAAC,EACD,SAAS,EAAC,8DAA8D,gCAGvE,iBAAiB,GAAG,CAAC,IAAI,CACxB,eAAM,SAAS,EAAC,0GAA0G,YACvH,iBAAiB,GACb,CACR,EACD,KAAC,UAAU,IAAC,SAAS,EAAC,kBAAkB,GAAG,IACpC,CACV,IACG,EACN,eAAK,SAAS,EAAC,yBAAyB,aACrC,YAAY,EACZ,SAAS,IAAI,CACZ,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,SAAS,EAClB,SAAS,EAAC,kBAAkB,EAC5B,QAAQ,EAAE,SAAS,aAEnB,KAAC,SAAS,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,IAAI,cAAc,CAAC,GAAI,EACpE,eAAM,SAAS,EAAC,SAAS,yBAAgB,IAClC,CACV,EACD,KAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,GAAI,IAClC,IACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Table } from '@tanstack/react-table';
|
|
2
|
+
type DataTableViewOptionsProps<TData> = {
|
|
3
|
+
table: Table<TData>;
|
|
4
|
+
};
|
|
5
|
+
export declare function DataTableViewOptions<TData>({ table, }: DataTableViewOptionsProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=view-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-options.d.ts","sourceRoot":"","sources":["../../src/data-table/view-options.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAWlD,KAAK,yBAAyB,CAAC,KAAK,IAAI;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CACpB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,EAC1C,KAAK,GACN,EAAE,yBAAyB,CAAC,KAAK,CAAC,2CAwClC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';
|
|
3
|
+
import { MixerHorizontalIcon } from '@radix-ui/react-icons';
|
|
4
|
+
import {} from '@tanstack/react-table';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import { Button } from '../primitives/button';
|
|
7
|
+
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, } from '../primitives/dropdown-menu';
|
|
8
|
+
export function DataTableViewOptions({ table, }) {
|
|
9
|
+
const { t } = useTranslation();
|
|
10
|
+
return (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', size: 'sm', className: 'ms-auto hidden h-8 lg:flex', children: [_jsx(MixerHorizontalIcon, { className: 'size-4' }), t('datatable.view')] }) }), _jsxs(DropdownMenuContent, { align: 'end', className: 'w-[150px]', children: [_jsx(DropdownMenuLabel, { children: t('datatable.columns') }), _jsx(DropdownMenuSeparator, {}), table
|
|
11
|
+
.getAllColumns()
|
|
12
|
+
.filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())
|
|
13
|
+
.map((column) => {
|
|
14
|
+
return (_jsx(DropdownMenuCheckboxItem, { className: 'capitalize', checked: column.getIsVisible(), onCheckedChange: (value) => column.toggleVisibility(!!value), children: column.columnDef.meta
|
|
15
|
+
?.label || column.id }, column.id));
|
|
16
|
+
})] })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=view-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-options.js","sourceRoot":"","sources":["../../src/data-table/view-options.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,UAAU,oBAAoB,CAAQ,EAC1C,KAAK,GAC4B;IACjC,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAE9B,OAAO,CACL,MAAC,YAAY,IAAC,KAAK,EAAE,KAAK,aACxB,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,4BAA4B,aAEtC,KAAC,mBAAmB,IAAC,SAAS,EAAC,QAAQ,GAAG,EACzC,CAAC,CAAC,gBAAgB,CAAC,IACb,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,aACpD,KAAC,iBAAiB,cAAE,CAAC,CAAC,mBAAmB,CAAC,GAAqB,EAC/D,KAAC,qBAAqB,KAAG,EACxB,KAAK;yBACH,aAAa,EAAE;yBACf,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAClE;yBACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACd,OAAO,CACL,KAAC,wBAAwB,IAEvB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,EAC9B,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,YAE1D,MAAM,CAAC,SAAS,CAAC,IAAuC;gCACxD,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE,IANjB,MAAM,CAAC,EAAE,CAOW,CAC5B,CAAA;oBACH,CAAC,CAAC,IACgB,IACT,CAChB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type ConfirmDialogProps = {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
title: React.ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
desc: React.JSX.Element | string;
|
|
8
|
+
cancelBtnText?: string;
|
|
9
|
+
confirmText?: React.ReactNode;
|
|
10
|
+
destructive?: boolean;
|
|
11
|
+
handleConfirm: () => void;
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
};
|
|
16
|
+
export declare function ConfirmDialog(props: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=confirm-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-dialog.d.ts","sourceRoot":"","sources":["../../src/dialogs/confirm-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAuCtD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cn } from '../lib/utils';
|
|
4
|
+
import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '../primitives/alert-dialog';
|
|
5
|
+
import { Button } from '../primitives/button';
|
|
6
|
+
export function ConfirmDialog(props) {
|
|
7
|
+
const { title, desc, children, className, confirmText, cancelBtnText, destructive, isLoading, disabled = false, handleConfirm, ...actions } = props;
|
|
8
|
+
return (_jsx(AlertDialog, { ...actions, children: _jsxs(AlertDialogContent, { className: cn(className && className), children: [_jsxs(AlertDialogHeader, { className: 'text-start', children: [_jsx(AlertDialogTitle, { children: title }), _jsx(AlertDialogDescription, { asChild: true, children: _jsx("div", { children: desc }) })] }), children, _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: isLoading, children: cancelBtnText ?? 'Cancel' }), _jsx(Button, { variant: destructive ? 'destructive' : 'default', onClick: handleConfirm, disabled: disabled || isLoading, children: confirmText ?? 'Continue' })] })] }) }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=confirm-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-dialog.js","sourceRoot":"","sources":["../../src/dialogs/confirm-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAiB5C,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,aAAa,EACb,GAAG,OAAO,EACX,GAAG,KAAK,CAAA;IACT,OAAO,CACL,KAAC,WAAW,OAAK,OAAO,YACtB,MAAC,kBAAkB,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,aACvD,MAAC,iBAAiB,IAAC,SAAS,EAAC,YAAY,aACvC,KAAC,gBAAgB,cAAE,KAAK,GAAoB,EAC5C,KAAC,sBAAsB,IAAC,OAAO,kBAC7B,wBAAM,IAAI,GAAO,GACM,IACP,EACnB,QAAQ,EACT,MAAC,iBAAiB,eAChB,KAAC,iBAAiB,IAAC,QAAQ,EAAE,SAAS,YACnC,aAAa,IAAI,QAAQ,GACR,EACpB,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,IAAI,SAAS,YAE9B,WAAW,IAAI,UAAU,GACnB,IACS,IACD,GACT,CACf,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ConfirmDialog } from './confirm-dialog';
|
|
2
|
+
export { LearnMore } from './learn-more';
|
|
3
|
+
export { LongText } from './long-text';
|
|
4
|
+
export { PasswordInput } from './password-input';
|
|
5
|
+
export { SelectDropdown } from './select-dropdown';
|
|
6
|
+
export { SkipToMain } from './skip-to-main';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialogs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ConfirmDialog } from './confirm-dialog';
|
|
2
|
+
export { LearnMore } from './learn-more';
|
|
3
|
+
export { LongText } from './long-text';
|
|
4
|
+
export { PasswordInput } from './password-input';
|
|
5
|
+
export { SelectDropdown } from './select-dropdown';
|
|
6
|
+
export { SkipToMain } from './skip-to-main';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dialogs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type Root, type Content, type Trigger } from '@radix-ui/react-popover';
|
|
3
|
+
type LearnMoreProps = React.ComponentProps<typeof Root> & {
|
|
4
|
+
contentProps?: React.ComponentProps<typeof Content>;
|
|
5
|
+
triggerProps?: React.ComponentProps<typeof Trigger>;
|
|
6
|
+
};
|
|
7
|
+
export declare function LearnMore({ children, contentProps, triggerProps, ...props }: LearnMoreProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=learn-more.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learn-more.d.ts","sourceRoot":"","sources":["../../src/dialogs/learn-more.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAU/E,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACxD,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;IACnD,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAA;CACpD,CAAA;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,cAAc,2CAuBhB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import {} from '@radix-ui/react-popover';
|
|
4
|
+
import { HelpCircle } from 'lucide-react';
|
|
5
|
+
import { cn } from '../lib/utils';
|
|
6
|
+
import { Button } from '../primitives/button';
|
|
7
|
+
import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
|
|
8
|
+
export function LearnMore({ children, contentProps, triggerProps, ...props }) {
|
|
9
|
+
return (_jsxs(Popover, { ...props, children: [_jsx(PopoverTrigger, { asChild: true, ...triggerProps, className: cn('size-5 rounded-full', triggerProps?.className), children: _jsxs(Button, { variant: 'outline', size: 'icon', children: [_jsx("span", { className: 'sr-only', children: "Learn more" }), _jsx(HelpCircle, { className: 'size-4 [&>circle]:hidden' })] }) }), _jsx(PopoverContent, { side: 'top', align: 'start', ...contentProps, className: cn('text-muted-foreground text-sm', contentProps?.className), children: children })] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=learn-more.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learn-more.js","sourceRoot":"","sources":["../../src/dialogs/learn-more.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAyC,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAO7B,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,GAAG,KAAK,EACO;IACf,OAAO,CACL,MAAC,OAAO,OAAK,KAAK,aAChB,KAAC,cAAc,IACb,OAAO,WACH,YAAY,EAChB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC,YAE7D,MAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,aACnC,eAAM,SAAS,EAAC,SAAS,2BAAkB,EAC3C,KAAC,UAAU,IAAC,SAAS,EAAC,0BAA0B,GAAG,IAC5C,GACM,EACjB,KAAC,cAAc,IACb,IAAI,EAAC,KAAK,EACV,KAAK,EAAC,OAAO,KACT,YAAY,EAChB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,YAAY,EAAE,SAAS,CAAC,YAEtE,QAAQ,GACM,IACT,CACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type LongTextProps = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
contentClassName?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function LongText({ children, className, contentClassName, }: LongTextProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=long-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-text.d.ts","sourceRoot":"","sources":["../../src/dialogs/long-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAc,EACd,gBAAqB,GACtB,EAAE,aAAa,2CAgDf"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useRef, useState } from 'react';
|
|
4
|
+
import { cn } from '../lib/utils';
|
|
5
|
+
import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
|
|
6
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '../primitives/tooltip';
|
|
7
|
+
export function LongText({ children, className = '', contentClassName = '', }) {
|
|
8
|
+
const ref = useRef(null);
|
|
9
|
+
const [isOverflown, setIsOverflown] = useState(false);
|
|
10
|
+
const refCallback = (node) => {
|
|
11
|
+
ref.current = node;
|
|
12
|
+
if (node && checkOverflow(node)) {
|
|
13
|
+
queueMicrotask(() => setIsOverflown(true));
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
if (!isOverflown)
|
|
17
|
+
return (_jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }));
|
|
18
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'hidden sm:block', children: _jsx(TooltipProvider, { delayDuration: 0, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }) }), _jsx(TooltipContent, { children: _jsx("p", { className: contentClassName, children: children }) })] }) }) }), _jsx("div", { className: 'sm:hidden', children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { ref: refCallback, className: cn('truncate', className), children: children }) }), _jsx(PopoverContent, { className: cn('w-fit', contentClassName), children: _jsx("p", { children: children }) })] }) })] }));
|
|
19
|
+
}
|
|
20
|
+
const checkOverflow = (textContainer) => {
|
|
21
|
+
if (textContainer) {
|
|
22
|
+
return (textContainer.offsetHeight < textContainer.scrollHeight ||
|
|
23
|
+
textContainer.offsetWidth < textContainer.scrollWidth);
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=long-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-text.js","sourceRoot":"","sources":["../../src/dialogs/long-text.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAA;AAQ7B,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,gBAAgB,GAAG,EAAE,GACP;IACd,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,MAAM,WAAW,GAAG,CAAC,IAA2B,EAAE,EAAE;QAClD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAClB,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,WAAW;QACd,OAAO,CACL,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,CACP,CAAA;IAEH,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,iBAAiB,YAC9B,KAAC,eAAe,IAAC,aAAa,EAAE,CAAC,YAC/B,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,GACS,EACjB,KAAC,cAAc,cACb,YAAG,SAAS,EAAE,gBAAgB,YAAG,QAAQ,GAAK,GAC/B,IACT,GACM,GACd,EACN,cAAK,SAAS,EAAC,WAAW,YACxB,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,cAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACxD,QAAQ,GACL,GACS,EACjB,KAAC,cAAc,IAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,YACtD,sBAAI,QAAQ,GAAK,GACF,IACT,GACN,IACL,CACJ,CAAA;AACH,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,aAAoC,EAAE,EAAE;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY;YACvD,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CACtD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type PasswordInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> & {
|
|
3
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
4
|
+
};
|
|
5
|
+
export declare function PasswordInput({ className, disabled, ref, ...props }: PasswordInputProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=password-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-input.d.ts","sourceRoot":"","sources":["../../src/dialogs/password-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,KAAK,kBAAkB,GAAG,IAAI,CAC5B,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,MAAM,CACP,GAAG;IACF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAClC,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAwBpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Eye, EyeOff } from 'lucide-react';
|
|
4
|
+
import { cn } from '../lib/utils';
|
|
5
|
+
import { Button } from '../primitives/button';
|
|
6
|
+
export function PasswordInput({ className, disabled, ref, ...props }) {
|
|
7
|
+
const [showPassword, setShowPassword] = React.useState(false);
|
|
8
|
+
return (_jsxs("div", { className: cn('relative rounded-md', className), children: [_jsx("input", { type: showPassword ? 'text' : 'password', className: 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50', ref: ref, disabled: disabled, ...props }), _jsx(Button, { type: 'button', size: 'icon', variant: 'ghost', disabled: disabled, className: 'text-muted-foreground absolute end-1 top-1/2 h-6 w-6 -translate-y-1/2 rounded-md', onClick: () => setShowPassword((prev) => !prev), children: showPassword ? _jsx(Eye, { size: 18 }) : _jsx(EyeOff, { size: 18 }) })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=password-input.js.map
|