import type { AsyncDataRequestStatus } from '#app'; import type { AppConfig } from '@nuxt/schema'; import type { DropdownMenuItem, FormSchema, PaginationEmits, PaginationProps, TableData, TableProps, TableRow, TableSlots } from '@nuxt/ui'; import type { ColumnPinningState, GroupingState, RowSelectionState } from '@tanstack/vue-table'; import type { ComponentConfig, OptionalKeys } from '../types'; import type { ModalConfirmProps } from './ModalConfirm.vue'; import type { TableColumnSortingModel } from './TableColumnSorting.vue'; import type { TableColumnVisibilityProps } from './TableColumnVisibility.vue'; import type { TableFiltersEmits, TableFiltersModel, TableFiltersProps, TableFiltersSlots } from './TableFilters.vue'; import theme from '#build/cms/table-panel'; type TablePanel = ComponentConfig; export interface ActionMenuItem extends DropdownMenuItem { confirm?: ModalConfirmProps; delete?: OptionalKeys; visibility?: () => boolean; } export interface TablePanelProps { title?: string; status?: AsyncDataRequestStatus; page?: PaginationProps['page']; itemsPerPage?: PaginationProps['itemsPerPage']; total?: PaginationProps['total']; storageKey?: TableColumnVisibilityProps['storageKey']; /** @default true */ columnVisibility?: boolean; defaultHiddenColumns?: string[]; sorting?: TableColumnSortingModel; columns?: TableProps['columns']; data?: TableProps['data']; /** @default true */ sticky?: TableProps['sticky']; columnPinning?: ColumnPinningState; getRowId?: TableProps['getRowId']; rowSelection?: RowSelectionState; rowSelectionOptions?: TableProps['rowSelectionOptions']; /** @default true */ resetRowSelection?: boolean; grouping?: GroupingState; /** @default { getGroupedRowModel: getGroupedRowModel(), groupedColumnMode: false } */ groupingOptions?: TableProps['groupingOptions']; hideSelectedFilters?: true; filters?: TableFiltersModel; filtersSchema?: Schema; filtersSource?: TableFiltersProps['source']; filtersFields?: TableFiltersProps['fields']; empty?: TableProps['empty']; actions?: ((row: TableRow) => ActionMenuItem[] | undefined); onSelect?: TableProps['onSelect']; class?: any; ui?: TablePanel['slots']; } export interface TablePanelEmits { 'update:page': PaginationEmits['update:page']; 'update:items-per-page': [value: number]; 'update:sorting': [value: TableColumnSortingModel]; 'update:row-selection': [value?: RowSelectionState]; 'update:filters': [value: TableFiltersModel]; 'update:grouping': [value?: GroupingState]; 'filtersReset': TableFiltersEmits['reset']; 'filtersSubmit': TableFiltersEmits['submit']; } export type TablePanelSlots = TableSlots & { 'toolbar-left'?: () => any; 'navbar-right'?: () => any; 'toolbar-right'?: () => any; } & { [P in keyof TableFiltersSlots as `filter-${P}`]: TableFiltersSlots[P]; }; declare const _default: typeof __VLS_export; export default _default; declare const __VLS_export: (__VLS_props: NonNullable>["props"], __VLS_ctx?: __VLS_PrettifyLocal>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable>["expose"], __VLS_setup?: Promise<{ props: import("vue").PublicProps & __VLS_PrettifyLocal & { "onUpdate:page"?: ((value: number) => any) | undefined; "onUpdate:items-per-page"?: ((value: number) => any) | undefined; "onUpdate:sorting"?: ((value: import("@tanstack/table-core").SortingState) => any) | undefined; "onUpdate:row-selection"?: ((value?: RowSelectionState | undefined) => any) | undefined; "onUpdate:filters"?: ((value: import("@nuxt/ui").InferOutput) => any) | undefined; "onUpdate:grouping"?: ((value?: GroupingState | undefined) => any) | undefined; onFiltersReset?: ((args_0: import("@nuxt/ui").InferOutput) => any) | undefined; onFiltersSubmit?: ((args_0: import("@nuxt/ui").InferOutput) => any) | undefined; }> & (typeof globalThis extends { __VLS_PROPS_FALLBACK: infer P; } ? P : {}); expose: (exposed: {}) => void; attrs: any; slots: TablePanelSlots; emit: ((evt: "update:page", value: number) => void) & ((evt: "update:items-per-page", value: number) => void) & ((evt: "update:sorting", value: import("@tanstack/table-core").SortingState) => void) & ((evt: "update:row-selection", value?: RowSelectionState | undefined) => void) & ((evt: "update:filters", value: import("@nuxt/ui").InferOutput) => void) & ((evt: "update:grouping", value?: GroupingState | undefined) => void) & ((evt: "filtersReset", args_0: import("@nuxt/ui").InferOutput) => void) & ((evt: "filtersSubmit", args_0: import("@nuxt/ui").InferOutput) => void); }>) => import("vue").VNode & { __ctx?: Awaited; }; type __VLS_PrettifyLocal = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};