import { PropType } from 'vue'; import { ColumnDefInput } from 'photon-grid-core'; import { PhotonGridOptions } from './vue-renderer-adapter'; /** * Vue 3 wrapper around the framework-agnostic {@link GridCore}. Renders a single * host element, instantiates the grid on mount, forwards the grid's typed events * as Vue emits, and disposes everything on unmount. All business logic lives in * Photon Core — this component only binds it to Vue's lifecycle. * * @example * ```vue * * ``` */ export declare const PhotonGrid: import('vue').DefineComponent; default: () => never[]; }; /** Row data. */ dataSet: { type: PropType[]>; default: () => never[]; }; /** * Additional grid options (theme, selection, features…), forwarded to the * core. Enable the natural-language AI panel — and, optionally, its Gemini * generative back-end — through `options.photonAI`: * * @example Gemini-powered AI panel * ```ts * import { PhotonAIProviderType } from 'photon-grid-vue'; * * const options = { * photonAI: { * enabled: true, * provider: { * type: PhotonAIProviderType.Gemini, * apiKey: import.meta.env.VITE_GEMINI_API_KEY, * model: 'gemini-flash-latest', * }, * }, * }; * ``` * * A Master/Detail row may be rendered by a Vue component through * `options.masterDetail.renderer` — see {@link PhotonGridOptions}: * * @example Vue component as a Master/Detail renderer * ```ts * const options = { * masterDetail: { * enabled: true, * renderer: OrderDetail, // any Vue component * props: (ctx) => ({ orders: ctx.detailData ?? [] }), * events: { save: (e) => persist(e.payload) }, * }, * }; * ``` */ options: { type: PropType>; default: () => {}; }; /** * Whether the grid shows its loading indicator. * * A dedicated prop rather than an `options` field, because an `options` * change rebuilds the grid — this routes to `GridApi.setLoading` instead, * so toggling it is a repaint, not a rebuild, and grid state (scroll * position, selection, column layout) survives untouched. * * Configure the indicator's appearance — spinner (default) or skeleton * placeholder rows — through `options.loadingOverlay`. * * @example * ```vue * * ``` */ loading: { type: BooleanConstructor; default: boolean; }; }>, () => import('vue').VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("dataChanged" | "rowClicked" | "rowDoubleClicked" | "rowSelected" | "cellClicked" | "cellDoubleClicked" | "cellValueChanged" | "cellSelectionChanged" | "columnResized" | "columnMoved" | "sortChanged" | "filterChanged" | "pageChanged" | "columnsStateChanged" | "themeChanged" | "exportComplete" | "loadingChanged" | "gridReady")[], "dataChanged" | "rowClicked" | "rowDoubleClicked" | "rowSelected" | "cellClicked" | "cellDoubleClicked" | "cellValueChanged" | "cellSelectionChanged" | "columnResized" | "columnMoved" | "sortChanged" | "filterChanged" | "pageChanged" | "columnsStateChanged" | "themeChanged" | "exportComplete" | "loadingChanged" | "gridReady", import('vue').PublicProps, Readonly; default: () => never[]; }; /** Row data. */ dataSet: { type: PropType[]>; default: () => never[]; }; /** * Additional grid options (theme, selection, features…), forwarded to the * core. Enable the natural-language AI panel — and, optionally, its Gemini * generative back-end — through `options.photonAI`: * * @example Gemini-powered AI panel * ```ts * import { PhotonAIProviderType } from 'photon-grid-vue'; * * const options = { * photonAI: { * enabled: true, * provider: { * type: PhotonAIProviderType.Gemini, * apiKey: import.meta.env.VITE_GEMINI_API_KEY, * model: 'gemini-flash-latest', * }, * }, * }; * ``` * * A Master/Detail row may be rendered by a Vue component through * `options.masterDetail.renderer` — see {@link PhotonGridOptions}: * * @example Vue component as a Master/Detail renderer * ```ts * const options = { * masterDetail: { * enabled: true, * renderer: OrderDetail, // any Vue component * props: (ctx) => ({ orders: ctx.detailData ?? [] }), * events: { save: (e) => persist(e.payload) }, * }, * }; * ``` */ options: { type: PropType>; default: () => {}; }; /** * Whether the grid shows its loading indicator. * * A dedicated prop rather than an `options` field, because an `options` * change rebuilds the grid — this routes to `GridApi.setLoading` instead, * so toggling it is a repaint, not a rebuild, and grid state (scroll * position, selection, column layout) survives untouched. * * Configure the indicator's appearance — spinner (default) or skeleton * placeholder rows — through `options.loadingOverlay`. * * @example * ```vue * * ``` */ loading: { type: BooleanConstructor; default: boolean; }; }>> & Readonly<{ onDataChanged?: ((...args: any[]) => any) | undefined; onRowClicked?: ((...args: any[]) => any) | undefined; onRowDoubleClicked?: ((...args: any[]) => any) | undefined; onRowSelected?: ((...args: any[]) => any) | undefined; onCellClicked?: ((...args: any[]) => any) | undefined; onCellDoubleClicked?: ((...args: any[]) => any) | undefined; onCellValueChanged?: ((...args: any[]) => any) | undefined; onCellSelectionChanged?: ((...args: any[]) => any) | undefined; onColumnResized?: ((...args: any[]) => any) | undefined; onColumnMoved?: ((...args: any[]) => any) | undefined; onSortChanged?: ((...args: any[]) => any) | undefined; onFilterChanged?: ((...args: any[]) => any) | undefined; onPageChanged?: ((...args: any[]) => any) | undefined; onColumnsStateChanged?: ((...args: any[]) => any) | undefined; onThemeChanged?: ((...args: any[]) => any) | undefined; onExportComplete?: ((...args: any[]) => any) | undefined; onLoadingChanged?: ((...args: any[]) => any) | undefined; onGridReady?: ((...args: any[]) => any) | undefined; }>, { columns: ColumnDefInput[]; loading: boolean; dataSet: Record[]; options: Partial; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>; export default PhotonGrid;