@cocoar/vue-data-grid 1.12.2 → 1.13.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.
@@ -1,4 +1,5 @@
1
1
  import { CoarGridColumnBuilder } from './coar-grid-column-builder';
2
+ import { CoarGridWrapperColumnBuilder } from './coar-grid-wrapper-column-builder';
2
3
  import { TagCellRendererConfig } from '../cell-renderers/tag-cell-renderer.models';
3
4
  import { IconCellRendererConfig } from '../cell-renderers/icon-cell-renderer.models';
4
5
  import { DateCellRendererConfig } from '../cell-renderers/date-cell-renderer.models';
@@ -91,5 +92,24 @@ export declare class CoarGridColumnFactory<TData = unknown> {
91
92
  * ```
92
93
  */
93
94
  tree<TValue = unknown>(fieldName: keyof TData | string, config?: TreeCellRendererConfig): CoarGridColumnBuilder<TData, TValue>;
95
+ /**
96
+ * Wrap an existing column builder with left/right decoration slots.
97
+ *
98
+ * The inner builder's ColDef is preserved in full — sort, filter, edit,
99
+ * valueFormatter, comparator, quickFilter, cellRenderer etc. all continue
100
+ * to work. Only the `cellRenderer` is replaced by a wrapper that renders
101
+ * `left` slot → inner renderer → `right` slot in a flex row.
102
+ *
103
+ * Slot click handlers call `event.stopPropagation()` automatically so they
104
+ * don't trigger row-click / cell-click events on the grid.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * col.wrap(col.field('name').header('Name').flex(1).sortable())
109
+ * .left({ icon: (r) => r.starred ? 'star-filled' : 'star-outline' })
110
+ * .right({ component: UnreadBadge, params: (r) => ({ count: r.unread }) })
111
+ * ```
112
+ */
113
+ wrap<TValue = unknown>(inner: CoarGridColumnBuilder<TData, TValue>): CoarGridWrapperColumnBuilder<TData, TValue>;
94
114
  }
95
115
  //# sourceMappingURL=coar-grid-column-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coar-grid-column-factory.d.ts","sourceRoot":"","sources":["../../src/builders/coar-grid-column-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB,CAAC,KAAK,GAAG,OAAO;IAChD;;OAEG;IACH,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAI9F;;;;;;;OAOG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;IAO9C;;;;;;;OAOG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,wBAAwB,GAChC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,0BAA0B,GAClC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;OAEG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACxD,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC;IAgBxC;;;;;;OAMG;IACH,GAAG,CACD,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,qBAAqB,GAC7B,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAwBlD;;;;;;OAMG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,GAAG,OAAO,EACnB,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;CAKxC"}
1
+ {"version":3,"file":"coar-grid-column-factory.d.ts","sourceRoot":"","sources":["../../src/builders/coar-grid-column-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAOlF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB,CAAC,KAAK,GAAG,OAAO;IAChD;;OAEG;IACH,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAI9F;;;;;;;OAOG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;IAO9C;;;;;;;OAOG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,wBAAwB,GAChC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,0BAA0B,GAClC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;OAEG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACxD,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC;IAgBxC;;;;;;OAMG;IACH,GAAG,CACD,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,qBAAqB,GAC7B,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAwBlD;;;;;;OAMG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,GAAG,OAAO,EACnB,SAAS,EAAE,MAAM,KAAK,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAMvC;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,MAAM,GAAG,OAAO,EACnB,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,GAC1C,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC;CAG/C"}
@@ -0,0 +1,32 @@
1
+ import { ColDef } from 'ag-grid-community';
2
+ import { WrapperSlotConfig } from '../cell-renderers/wrapper-cell-renderer.models';
3
+ import { CoarGridColumnBuilder } from './coar-grid-column-builder';
4
+ /**
5
+ * Wraps an existing column builder and adds left/right slot decorations.
6
+ *
7
+ * The inner builder's ColDef is preserved in full (field, sort, filter, edit,
8
+ * valueFormatter, comparator, quickFilter, …); only its `cellRenderer` is
9
+ * swapped for `WrapperCellRenderer`, which renders the left slot → inner
10
+ * renderer → right slot.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * CoarGridBuilder.create<User>().columns([
15
+ * (col) => col
16
+ * .wrap(col.field('name').header('Name').flex(1).sortable())
17
+ * .left({ icon: (r) => r.starred ? 'star-filled' : 'star-outline', onClick: toggle })
18
+ * .right({ component: UnreadBadge, params: (r) => ({ count: r.unread }) }),
19
+ * ]);
20
+ * ```
21
+ */
22
+ export declare class CoarGridWrapperColumnBuilder<TData = unknown, TValue = unknown> {
23
+ #private;
24
+ constructor(inner: CoarGridColumnBuilder<TData, TValue>);
25
+ /** Configure the left-hand slot. */
26
+ left(config: WrapperSlotConfig<TData>): this;
27
+ /** Configure the right-hand slot. */
28
+ right(config: WrapperSlotConfig<TData>): this;
29
+ /** Build the AG Grid ColDef with the wrapped cell renderer. */
30
+ build(): ColDef<TData, TValue>;
31
+ }
32
+ //# sourceMappingURL=coar-grid-wrapper-column-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coar-grid-wrapper-column-builder.d.ts","sourceRoot":"","sources":["../../src/builders/coar-grid-wrapper-column-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA4B,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;;gBAK7D,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;IAIvD,oCAAoC;IACpC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI;IAK5C,qCAAqC;IACrC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI;IAK7C,+DAA+D;IAC/D,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;CAqB/B"}
@@ -1,5 +1,6 @@
1
1
  export { CoarGridBuilder, type ColumnDefinition, type ColumnPersistenceOptions, type RowSelectionOptions, type RowDragHighlightOptions, type TreeDataConfig, type TreeNodeMeta, type CoarTreeContext } from './coar-grid-builder';
2
2
  export { CoarGridColumnBuilder, COAR_QUICK_FILTER_KEY, COAR_HEADER_I18N_KEY, type QuickFilterConfig } from './coar-grid-column-builder';
3
3
  export { CoarGridColumnFactory } from './coar-grid-column-factory';
4
+ export { CoarGridWrapperColumnBuilder } from './coar-grid-wrapper-column-builder';
4
5
  export { cleanupColumnStates } from './column-state-storage';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClO,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClO,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACxI,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ICellRendererParams } from 'ag-grid-community';
2
+ type __VLS_Props = {
3
+ params: ICellRendererParams;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
6
+ export default _default;
7
+ //# sourceMappingURL=WrapperCellRenderer.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WrapperCellRenderer.vue.d.ts","sourceRoot":"","sources":["../../src/cell-renderers/WrapperCellRenderer.vue"],"names":[],"mappings":"AAoOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAiB7D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;;AAqPF,wBAOG"}
@@ -4,10 +4,12 @@ export { default as DateCellRenderer } from './DateCellRenderer.vue';
4
4
  export { default as NumberCellRenderer } from './NumberCellRenderer.vue';
5
5
  export { default as CurrencyCellRenderer } from './CurrencyCellRenderer.vue';
6
6
  export { default as TreeCellRenderer } from './TreeCellRenderer.vue';
7
+ export { default as WrapperCellRenderer } from './WrapperCellRenderer.vue';
7
8
  export type { TagCellRendererConfig } from './tag-cell-renderer.models';
8
9
  export type { IconCellRendererConfig } from './icon-cell-renderer.models';
9
10
  export type { DateCellRendererConfig } from './date-cell-renderer.models';
10
11
  export type { NumberCellRendererConfig } from './number-cell-renderer.models';
11
12
  export type { CurrencyCellRendererConfig } from './currency-cell-renderer.models';
12
13
  export type { TreeCellRendererConfig } from './tree-cell-renderer.models';
14
+ export type { WrapperSlotConfig, WrapperSlotItem, WrapperIconSlotConfig, WrapperComponentSlotConfig, WrapperTextSlotConfig, WrapperCellRendererConfig, WrapperSlotAccessor, } from './wrapper-cell-renderer.models';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cell-renderers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGrE,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cell-renderers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAG3E,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { Component } from 'vue';
2
+ import { CoarIconSize } from '@cocoar/vue-ui';
3
+ import { ICellRendererParams } from 'ag-grid-community';
4
+ /** Accessor that can be either a static value or a per-row function. */
5
+ export type WrapperSlotAccessor<TData, TValue> = TValue | ((row: TData) => TValue);
6
+ /** Icon-shorthand slot: renders a CoarIcon with optional click handler / tooltip. */
7
+ export interface WrapperIconSlotConfig<TData = unknown> {
8
+ /** Icon name. Return `null`/empty string to hide for this row. */
9
+ icon: WrapperSlotAccessor<TData, string | null | undefined>;
10
+ /** Icon registry source (e.g. `'coar-builtin'`). */
11
+ source?: string;
12
+ /** Icon size (default: `'s'`). */
13
+ size?: CoarIconSize;
14
+ /** CSS color value (static or per-row). */
15
+ color?: WrapperSlotAccessor<TData, string | undefined>;
16
+ /** Tooltip text (static or per-row). */
17
+ tooltip?: WrapperSlotAccessor<TData, string | undefined>;
18
+ /** Click handler. When set, the slot becomes clickable and stops propagation. */
19
+ onClick?: (row: TData, event: MouseEvent) => void;
20
+ /** Optional visibility gate. Return `false` to hide the slot entirely (v-if). */
21
+ show?: (row: TData) => boolean;
22
+ }
23
+ /** Component slot: mounts any Vue component with per-row props. */
24
+ export interface WrapperComponentSlotConfig<TData = unknown> {
25
+ /** Vue component to mount. */
26
+ component: Component;
27
+ /** Build the component's props from the row (optional). */
28
+ params?: (row: TData) => Record<string, unknown>;
29
+ /** When set, the slot becomes clickable and stops propagation. */
30
+ onClick?: (row: TData, event: MouseEvent) => void;
31
+ /** Optional visibility gate. */
32
+ show?: (row: TData) => boolean;
33
+ }
34
+ /** Text slot: renders plain text (static or per-row). */
35
+ export interface WrapperTextSlotConfig<TData = unknown> {
36
+ /** Text content. */
37
+ text: WrapperSlotAccessor<TData, string | null | undefined>;
38
+ /** Tooltip text. */
39
+ tooltip?: WrapperSlotAccessor<TData, string | undefined>;
40
+ /** When set, the slot becomes clickable and stops propagation. */
41
+ onClick?: (row: TData, event: MouseEvent) => void;
42
+ /** Optional visibility gate. */
43
+ show?: (row: TData) => boolean;
44
+ }
45
+ /** Union of all supported slot shapes. Discriminated by the presence of `icon` / `component` / `text`. */
46
+ export type WrapperSlotItem<TData = unknown> = WrapperIconSlotConfig<TData> | WrapperComponentSlotConfig<TData> | WrapperTextSlotConfig<TData>;
47
+ /**
48
+ * Slot config: a single item or an ordered list of items.
49
+ * Use an array to stack multiple icons/badges/components next to each other
50
+ * (e.g. `[{ icon: ..., show: (r) => r.isCritical }, { icon: ..., show: (r) => r.awaitingFeedback }]`).
51
+ */
52
+ export type WrapperSlotConfig<TData = unknown> = WrapperSlotItem<TData> | WrapperSlotItem<TData>[];
53
+ /** Runtime config consumed by `WrapperCellRenderer` (attached via `cellRendererParams.config`). */
54
+ export interface WrapperCellRendererConfig<TData = unknown> {
55
+ left?: WrapperSlotConfig<TData>;
56
+ right?: WrapperSlotConfig<TData>;
57
+ /** Inner cell renderer to embed between the slots. Falls back to `valueFormatted` / `value` text. */
58
+ innerRenderer?: Component | null;
59
+ /** Params forwarded to the inner renderer (merged with AG Grid's `ICellRendererParams`). */
60
+ innerRendererParams?: Record<string, unknown>;
61
+ }
62
+ /** Type guard: icon-shorthand slot. */
63
+ export declare function isIconSlot<T>(slot: WrapperSlotItem<T>): slot is WrapperIconSlotConfig<T>;
64
+ /** Type guard: component slot. */
65
+ export declare function isComponentSlot<T>(slot: WrapperSlotItem<T>): slot is WrapperComponentSlotConfig<T>;
66
+ /** Type guard: text slot. */
67
+ export declare function isTextSlot<T>(slot: WrapperSlotItem<T>): slot is WrapperTextSlotConfig<T>;
68
+ /** Normalize a slot config to an array of items. */
69
+ export declare function toSlotItems<T>(slot: WrapperSlotConfig<T> | undefined): WrapperSlotItem<T>[];
70
+ /** @internal — resolve an accessor against a row. */
71
+ export declare function resolveAccessor<TData, TValue>(accessor: WrapperSlotAccessor<TData, TValue> | undefined, row: TData): TValue | undefined;
72
+ /** Re-exported for convenience in tests / consumers. */
73
+ export type { ICellRendererParams };
74
+ //# sourceMappingURL=wrapper-cell-renderer.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper-cell-renderer.models.d.ts","sourceRoot":"","sources":["../../src/cell-renderers/wrapper-cell-renderer.models.ts"],"names":[],"mappings":"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"}
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
- .coar-tag-cell-renderer{align-items:center;gap:var(--coar-spacing-xs,4px);flex-wrap:wrap;height:100%;display:flex}.coar-icon-cell-renderer{justify-content:center;align-items:center;height:100%;display:flex}.coar-icon-cell-renderer.clickable{cursor:pointer}.coar-date-cell-renderer{align-items:center;height:100%;display:flex}.coar-number-cell-renderer,.coar-currency-cell-renderer{justify-content:flex-end;align-items:center;height:100%;display:flex}.coar-tree-cell{align-items:center;gap:2px;height:100%;display:flex;overflow:hidden}.coar-tree-cell__toggle{cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;transition:background-color .1s;display:flex}.coar-tree-cell__toggle:hover{background-color:var(--coar-surface-neutral-hover,#0000000f)}.coar-tree-cell__spacer{flex-shrink:0;width:20px}.coar-tree-cell__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.coar-tree-cell__count{color:var(--coar-text-neutral-tertiary,#888);flex-shrink:0;margin-left:4px;font-size:.85em}.coar-grid-header{width:100%;height:100%;color:var(--ag-header-foreground-color,inherit);align-items:center;gap:4px;display:flex;overflow:hidden}.coar-grid-header--sortable{cursor:pointer}.coar-grid-header__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.coar-grid-header__spacer{flex:1}.coar-grid-header__sort-icon{opacity:.6;flex-shrink:0;font-size:.65em}.coar-data-grid-search[data-v-aa875501]{align-items:center;gap:var(--coar-spacing-s);display:flex}.coar-data-grid-search--bordered[data-v-aa875501]{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);padding:var(--coar-spacing-s)}.coar-data-grid-search--elevated[data-v-aa875501]{box-shadow:var(--coar-elevation-medium);border-radius:var(--coar-radius-s);padding:var(--coar-spacing-s)}.coar-data-grid-search__input[data-v-aa875501]{flex:1;min-width:0}.coar-data-grid-search__actions[data-v-aa875501]{align-items:center;gap:var(--coar-spacing-xs);flex-shrink:0;display:flex}.ag-theme-cocoar .ag-header-cell,.ag-theme-cocoar .ag-cell{transition:none!important}.ag-theme-cocoar{--ag-font-family:var(--coar-font-family-body,Poppins, sans-serif);--ag-font-size:var(--coar-font-size-xs,14px);--ag-grid-size:4px;--ag-cell-horizontal-padding:var(--coar-spacing-m,16px);--ag-row-height:40px;--ag-header-height:40px;--ag-list-item-height:36px;--ag-borders:solid 1px;--ag-border-radius:var(--coar-radius-m,8px);--ag-wrapper-border-radius:var(--coar-radius-m,8px);--ag-row-border-style:solid;--ag-row-border-width:1px;--ag-background-color:var(--coar-background-neutral-primary,#fff);--ag-header-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-odd-row-background-color:var(--coar-background-neutral-primary,#fff);--ag-row-hover-color:var(--coar-background-neutral-tertiary,#e5e5e5);--ag-selected-row-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-modal-overlay-background-color:#00000080;--ag-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-row-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-header-column-separator-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-foreground-color:var(--coar-text-neutral-primary,#171717);--ag-header-foreground-color:var(--coar-text-neutral-secondary,#404040);--ag-secondary-foreground-color:var(--coar-text-neutral-tertiary,#525252);--ag-disabled-foreground-color:var(--coar-text-neutral-disabled,#a3a3a3);--ag-range-selection-border-color:var(--coar-border-accent-primary,#06c);--ag-range-selection-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-range-selection-highlight-color:var(--coar-background-accent-secondary,#cce0ff);--ag-input-focus-border-color:var(--coar-border-accent-primary,#06c);--ag-input-disabled-background-color:var(--coar-background-neutral-disabled,#d4d4d4);--ag-icon-font-color:var(--coar-icon-neutral-secondary,#404040);--ag-subheader-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-control-panel-background-color:var(--coar-background-neutral-primary,#fff);--ag-side-button-selected-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-menu-background-color:var(--coar-background-neutral-primary,#fff);--ag-menu-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-checkbox-checked-color:var(--coar-background-accent-primary,#06c);--ag-checkbox-unchecked-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-checkbox-indeterminate-color:var(--coar-background-accent-secondary,#cce0ff);--ag-chip-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-invalid-color:var(--coar-text-semantic-error-bold,#dc2626)}.dark-mode .ag-theme-cocoar,.ag-theme-cocoar.dark-mode{--ag-background-color:var(--coar-background-neutral-primary,#18181b);--ag-header-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-odd-row-background-color:var(--coar-background-neutral-primary,#18181b);--ag-row-hover-color:var(--coar-background-neutral-tertiary,#3f3f46);--ag-selected-row-background-color:var(--coar-background-accent-tertiary,#1e3a5f);--ag-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-row-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-header-column-separator-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-foreground-color:var(--coar-text-neutral-primary,#fafafa);--ag-header-foreground-color:var(--coar-text-neutral-secondary,#e4e4e7);--ag-secondary-foreground-color:var(--coar-text-neutral-tertiary,#a1a1aa);--ag-disabled-foreground-color:var(--coar-text-neutral-disabled,#71717a);--ag-icon-font-color:var(--coar-icon-neutral-secondary,#e4e4e7);--ag-subheader-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-control-panel-background-color:var(--coar-background-neutral-primary,#18181b);--ag-menu-background-color:var(--coar-background-neutral-primary,#18181b);--ag-menu-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-checkbox-unchecked-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-chip-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-input-disabled-background-color:var(--coar-background-neutral-disabled,#3f3f46)}.ag-theme-cocoar .ag-row-focus{outline:none}.ag-theme-cocoar .ag-row-selected{background-color:var(--ag-selected-row-background-color)!important}.ag-theme-cocoar .ag-header{font-weight:600}.ag-theme-cocoar .ag-header-cell{padding-left:var(--coar-spacing-m,16px);padding-right:var(--coar-spacing-m,16px)}.ag-theme-cocoar .ag-cell-focus{border-color:var(--ag-range-selection-border-color,var(--coar-border-accent-primary,#06c))!important}.ag-theme-cocoar .ag-row{transition:background-color .15s}.ag-theme-cocoar .ag-cell.clickable{cursor:pointer;color:var(--coar-text-accent-primary,#06c)}.ag-theme-cocoar .ag-cell.clickable:hover{text-decoration:underline}.ag-theme-cocoar .ag-cell.text-right{text-align:right;justify-content:flex-end}.ag-theme-cocoar .ag-cell.text-center{text-align:center;justify-content:center}.ag-theme-cocoar .ag-overlay-loading-wrapper{background-color:var(--ag-background-color)}.ag-theme-cocoar .ag-overlay-no-rows-wrapper{color:var(--ag-secondary-foreground-color)}.ag-theme-cocoar .ag-row.coar-drop-target{outline:2px solid var(--coar-border-accent,#06c);outline-offset:-2px;border-radius:var(--coar-radius-s,6px);background-color:var(--coar-surface-accent-subtle,#0066cc1a)!important}.ag-theme-cocoar.coar-drop-target-root{outline:2px dashed var(--coar-border-accent,#06c);outline-offset:-2px;border-radius:var(--coar-radius-s,6px)}.ag-theme-cocoar.ag-theme-cocoar--bordered{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);overflow:hidden}.ag-theme-cocoar.ag-theme-cocoar--elevated{box-shadow:var(--coar-elevation-medium);border-radius:var(--coar-radius-s);overflow:hidden}.ag-theme-cocoar .ag-row.coar-drop-target--invalid{outline:2px dashed var(--coar-border-semantic-error,#c006);outline-offset:-2px;border-radius:var(--coar-radius-s,6px);cursor:not-allowed;background-color:var(--coar-surface-semantic-error-subtle,#cc00000f)!important}::highlight(coar-search){text-decoration:underline;-webkit-text-decoration-color:var(--coar-border-accent,#06c);text-decoration-color:var(--coar-border-accent,#06c);text-underline-offset:2px;color:inherit;background-color:#0000;text-decoration-thickness:2px}.coar-grid-toolbar{align-items:center;gap:var(--coar-spacing-s);margin-bottom:var(--coar-spacing-s);display:flex}:is(.ag-theme-cocoar--bordered,.ag-theme-cocoar--elevated)>.coar-grid-toolbar{padding:var(--coar-spacing-s) var(--coar-spacing-s) 0;margin-bottom:var(--coar-spacing-s)}.coar-grid-toolbar:has(>:only-child.coar-grid-toolbar__spacer){display:none}.ag-theme-cocoar--has-toolbar>.ag-grid-vue-container{border-top:1px solid var(--coar-border-neutral)}.coar-grid-toolbar__search{flex:1;min-width:0}.coar-grid-toolbar__spacer{flex:1}
1
+ .coar-wrap-cell{align-items:center;gap:var(--coar-spacing-xs,4px);width:100%;min-width:0;height:100%;display:flex;overflow:hidden}.coar-wrap-cell__slot{align-items:center;gap:var(--coar-spacing-xs,4px);flex-shrink:0;display:inline-flex}.coar-wrap-cell__item{align-items:center;display:inline-flex}.coar-wrap-cell__item--clickable{cursor:pointer;border-radius:4px;padding:2px;transition:background-color .1s}.coar-wrap-cell__item--clickable:hover{background-color:var(--coar-surface-neutral-hover,#0000000f)}.coar-wrap-cell__inner{flex:auto;align-items:center;min-width:0;display:flex;overflow:hidden}.coar-wrap-cell__inner>*{flex:auto;min-width:0}.coar-tag-cell-renderer{align-items:center;gap:var(--coar-spacing-xs,4px);flex-wrap:wrap;height:100%;display:flex}.coar-icon-cell-renderer{justify-content:center;align-items:center;height:100%;display:flex}.coar-icon-cell-renderer.clickable{cursor:pointer}.coar-date-cell-renderer{align-items:center;height:100%;display:flex}.coar-number-cell-renderer,.coar-currency-cell-renderer{justify-content:flex-end;align-items:center;height:100%;display:flex}.coar-tree-cell{align-items:center;gap:2px;height:100%;display:flex;overflow:hidden}.coar-tree-cell__toggle{cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;transition:background-color .1s;display:flex}.coar-tree-cell__toggle:hover{background-color:var(--coar-surface-neutral-hover,#0000000f)}.coar-tree-cell__spacer{flex-shrink:0;width:20px}.coar-tree-cell__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.coar-tree-cell__count{color:var(--coar-text-neutral-tertiary,#888);flex-shrink:0;margin-left:4px;font-size:.85em}.coar-grid-header{width:100%;height:100%;color:var(--ag-header-foreground-color,inherit);align-items:center;gap:4px;display:flex;overflow:hidden}.coar-grid-header--sortable{cursor:pointer}.coar-grid-header__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.coar-grid-header__spacer{flex:1}.coar-grid-header__sort-icon{opacity:.6;flex-shrink:0;font-size:.65em}.coar-data-grid-search[data-v-aa875501]{align-items:center;gap:var(--coar-spacing-s);display:flex}.coar-data-grid-search--bordered[data-v-aa875501]{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);padding:var(--coar-spacing-s)}.coar-data-grid-search--elevated[data-v-aa875501]{box-shadow:var(--coar-elevation-medium);border-radius:var(--coar-radius-s);padding:var(--coar-spacing-s)}.coar-data-grid-search__input[data-v-aa875501]{flex:1;min-width:0}.coar-data-grid-search__actions[data-v-aa875501]{align-items:center;gap:var(--coar-spacing-xs);flex-shrink:0;display:flex}.ag-theme-cocoar .ag-header-cell,.ag-theme-cocoar .ag-cell{transition:none!important}.ag-theme-cocoar{--ag-font-family:var(--coar-font-family-body,Poppins, sans-serif);--ag-font-size:var(--coar-font-size-xs,14px);--ag-grid-size:4px;--ag-cell-horizontal-padding:var(--coar-spacing-m,16px);--ag-row-height:40px;--ag-header-height:40px;--ag-list-item-height:36px;--ag-borders:solid 1px;--ag-border-radius:var(--coar-radius-m,8px);--ag-wrapper-border-radius:var(--coar-radius-m,8px);--ag-row-border-style:solid;--ag-row-border-width:1px;--ag-background-color:var(--coar-background-neutral-primary,#fff);--ag-header-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-odd-row-background-color:var(--coar-background-neutral-primary,#fff);--ag-row-hover-color:var(--coar-background-neutral-tertiary,#e5e5e5);--ag-selected-row-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-modal-overlay-background-color:#00000080;--ag-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-row-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-header-column-separator-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-foreground-color:var(--coar-text-neutral-primary,#171717);--ag-header-foreground-color:var(--coar-text-neutral-secondary,#404040);--ag-secondary-foreground-color:var(--coar-text-neutral-tertiary,#525252);--ag-disabled-foreground-color:var(--coar-text-neutral-disabled,#a3a3a3);--ag-range-selection-border-color:var(--coar-border-accent-primary,#06c);--ag-range-selection-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-range-selection-highlight-color:var(--coar-background-accent-secondary,#cce0ff);--ag-input-focus-border-color:var(--coar-border-accent-primary,#06c);--ag-input-disabled-background-color:var(--coar-background-neutral-disabled,#d4d4d4);--ag-icon-font-color:var(--coar-icon-neutral-secondary,#404040);--ag-subheader-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-control-panel-background-color:var(--coar-background-neutral-primary,#fff);--ag-side-button-selected-background-color:var(--coar-background-accent-tertiary,#e6f0ff);--ag-menu-background-color:var(--coar-background-neutral-primary,#fff);--ag-menu-border-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-checkbox-checked-color:var(--coar-background-accent-primary,#06c);--ag-checkbox-unchecked-color:var(--coar-border-neutral-tertiary,#e5e5e5);--ag-checkbox-indeterminate-color:var(--coar-background-accent-secondary,#cce0ff);--ag-chip-background-color:var(--coar-background-neutral-secondary,#f5f5f5);--ag-invalid-color:var(--coar-text-semantic-error-bold,#dc2626)}.dark-mode .ag-theme-cocoar,.ag-theme-cocoar.dark-mode{--ag-background-color:var(--coar-background-neutral-primary,#18181b);--ag-header-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-odd-row-background-color:var(--coar-background-neutral-primary,#18181b);--ag-row-hover-color:var(--coar-background-neutral-tertiary,#3f3f46);--ag-selected-row-background-color:var(--coar-background-accent-tertiary,#1e3a5f);--ag-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-row-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-header-column-separator-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-foreground-color:var(--coar-text-neutral-primary,#fafafa);--ag-header-foreground-color:var(--coar-text-neutral-secondary,#e4e4e7);--ag-secondary-foreground-color:var(--coar-text-neutral-tertiary,#a1a1aa);--ag-disabled-foreground-color:var(--coar-text-neutral-disabled,#71717a);--ag-icon-font-color:var(--coar-icon-neutral-secondary,#e4e4e7);--ag-subheader-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-control-panel-background-color:var(--coar-background-neutral-primary,#18181b);--ag-menu-background-color:var(--coar-background-neutral-primary,#18181b);--ag-menu-border-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-checkbox-unchecked-color:var(--coar-border-neutral-tertiary,#3f3f46);--ag-chip-background-color:var(--coar-background-neutral-secondary,#27272a);--ag-input-disabled-background-color:var(--coar-background-neutral-disabled,#3f3f46)}.ag-theme-cocoar .ag-row-focus{outline:none}.ag-theme-cocoar .ag-row-selected{background-color:var(--ag-selected-row-background-color)!important}.ag-theme-cocoar .ag-header{font-weight:600}.ag-theme-cocoar .ag-header-cell{padding-left:var(--coar-spacing-m,16px);padding-right:var(--coar-spacing-m,16px)}.ag-theme-cocoar .ag-cell-focus{border-color:var(--ag-range-selection-border-color,var(--coar-border-accent-primary,#06c))!important}.ag-theme-cocoar .ag-row{transition:background-color .15s}.ag-theme-cocoar .ag-cell.clickable{cursor:pointer;color:var(--coar-text-accent-primary,#06c)}.ag-theme-cocoar .ag-cell.clickable:hover{text-decoration:underline}.ag-theme-cocoar .ag-cell.text-right{text-align:right;justify-content:flex-end}.ag-theme-cocoar .ag-cell.text-center{text-align:center;justify-content:center}.ag-theme-cocoar .ag-overlay-loading-wrapper{background-color:var(--ag-background-color)}.ag-theme-cocoar .ag-overlay-no-rows-wrapper{color:var(--ag-secondary-foreground-color)}.ag-theme-cocoar .ag-row.coar-drop-target{outline:2px solid var(--coar-border-accent,#06c);outline-offset:-2px;border-radius:var(--coar-radius-s,6px);background-color:var(--coar-surface-accent-subtle,#0066cc1a)!important}.ag-theme-cocoar.coar-drop-target-root{outline:2px dashed var(--coar-border-accent,#06c);outline-offset:-2px;border-radius:var(--coar-radius-s,6px)}.ag-theme-cocoar.ag-theme-cocoar--bordered{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);overflow:hidden}.ag-theme-cocoar.ag-theme-cocoar--elevated{box-shadow:var(--coar-elevation-medium);border-radius:var(--coar-radius-s);overflow:hidden}.ag-theme-cocoar .ag-row.coar-drop-target--invalid{outline:2px dashed var(--coar-border-semantic-error,#c006);outline-offset:-2px;border-radius:var(--coar-radius-s,6px);cursor:not-allowed;background-color:var(--coar-surface-semantic-error-subtle,#cc00000f)!important}::highlight(coar-search){text-decoration:underline;-webkit-text-decoration-color:var(--coar-border-accent,#06c);text-decoration-color:var(--coar-border-accent,#06c);text-underline-offset:2px;color:inherit;background-color:#0000;text-decoration-thickness:2px}.coar-grid-toolbar{align-items:center;gap:var(--coar-spacing-s);margin-bottom:var(--coar-spacing-s);display:flex}:is(.ag-theme-cocoar--bordered,.ag-theme-cocoar--elevated)>.coar-grid-toolbar{padding:var(--coar-spacing-s) var(--coar-spacing-s) 0;margin-bottom:var(--coar-spacing-s)}.coar-grid-toolbar:has(>:only-child.coar-grid-toolbar__spacer){display:none}.ag-theme-cocoar--has-toolbar>.ag-grid-vue-container{border-top:1px solid var(--coar-border-neutral)}.coar-grid-toolbar__search{flex:1;min-width:0}.coar-grid-toolbar__spacer{flex:1}
2
2
  /*$vite$:1*/
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export { CoarGridBuilder, type ColumnDefinition, type ColumnPersistenceOptions, type TreeDataConfig, type TreeNodeMeta, type CoarTreeContext, cleanupColumnStates } from './builders';
2
2
  export { CoarGridColumnBuilder } from './builders';
3
3
  export { CoarGridColumnFactory } from './builders';
4
- export { TagCellRenderer, IconCellRenderer, DateCellRenderer, TreeCellRenderer } from './cell-renderers';
4
+ export { CoarGridWrapperColumnBuilder } from './builders';
5
+ export { TagCellRenderer, IconCellRenderer, DateCellRenderer, TreeCellRenderer, WrapperCellRenderer } from './cell-renderers';
5
6
  export type { TagCellRendererConfig, IconCellRendererConfig, DateCellRendererConfig, TreeCellRendererConfig } from './cell-renderers';
7
+ export type { WrapperSlotConfig, WrapperSlotItem, WrapperIconSlotConfig, WrapperComponentSlotConfig, WrapperTextSlotConfig, WrapperCellRendererConfig, WrapperSlotAccessor, } from './cell-renderers';
6
8
  export { cocoarTheme, createCocoarTheme } from './theme';
7
9
  export type { ColDef, GridOptions, GridApi, GridReadyEvent, RowClickedEvent, RowDoubleClickedEvent, CellClickedEvent, CellDoubleClickedEvent, CellContextMenuEvent, GridSizeChangedEvent, ColumnState, GetRowIdFunc, RowClassParams, ValueFormatterParams, ValueGetterParams, CellClassParams, ICellRendererParams, IRowNode, PostSortRowsParams, GetQuickFilterTextParams, RowDragCallback, RowDragEndEvent, } from './models';
8
10
  export { default as CoarDataGrid } from './CoarDataGrid.vue';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtL,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzG,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGtI,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGzD,YAAY,EACV,MAAM,EACN,WAAW,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtL,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9H,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACtI,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGzD,YAAY,EACV,MAAM,EACN,WAAW,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}