photon-grid-vue 2.0.0 → 2.0.4

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/README.md CHANGED
@@ -189,7 +189,10 @@ MIT License
189
189
 
190
190
  - **GitHub** — https://github.com/abdulwahid-csit/photon-grid
191
191
  - **Issues** — https://github.com/abdulwahid-csit/photon-grid/issues
192
- - **NPM** — https://www.npmjs.com/package/photon-grid-vue
192
+ - **NPM Vue** — https://www.npmjs.com/package/photon-grid-vue
193
+ - **NPM Angular** — https://www.npmjs.com/package/photon-grid-angular
194
+ - **NPM React** — https://www.npmjs.com/package/photon-grid-react
195
+ - **NPM Core** — https://www.npmjs.com/package/photon-grid-core
193
196
 
194
197
  ---
195
198
 
package/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("vue"),t=require("photon-grid-core");var n=[[t.GridEventType.DATA_CHANGED,`dataChanged`],[t.GridEventType.ROW_CLICKED,`rowClicked`],[t.GridEventType.ROW_DOUBLE_CLICKED,`rowDoubleClicked`],[t.GridEventType.ROW_SELECTED,`rowSelected`],[t.GridEventType.CELL_CLICKED,`cellClicked`],[t.GridEventType.CELL_DOUBLE_CLICKED,`cellDoubleClicked`],[t.GridEventType.CELL_VALUE_CHANGED,`cellValueChanged`],[t.GridEventType.CELL_SELECTION_CHANGED,`cellSelectionChanged`],[t.GridEventType.COLUMN_RESIZED,`columnResized`],[t.GridEventType.COLUMN_MOVED,`columnMoved`],[t.GridEventType.SORT_CHANGED,`sortChanged`],[t.GridEventType.FILTER_CHANGED,`filterChanged`],[t.GridEventType.PAGE_CHANGED,`pageChanged`],[t.GridEventType.COLUMNS_STATE_CHANGED,`columnsStateChanged`],[t.GridEventType.THEME_CHANGED,`themeChanged`],[t.GridEventType.EXPORT_COMPLETE,`exportComplete`]],r=(0,e.defineComponent)({name:`PhotonGrid`,props:{columns:{type:Array,default:()=>[]},dataSet:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})}},emits:[`gridReady`,`dataChanged`,`rowClicked`,`rowDoubleClicked`,`rowSelected`,`cellClicked`,`cellDoubleClicked`,`cellValueChanged`,`cellSelectionChanged`,`columnResized`,`columnMoved`,`sortChanged`,`filterChanged`,`pageChanged`,`columnsStateChanged`,`themeChanged`,`exportComplete`],setup(r,{emit:i}){let a=(0,e.ref)(null),o=(0,e.shallowRef)(null),s=[],c=()=>{for(let e of s)e();s=[],o.value?.destroy(),o.value=null},l=()=>{if(!a.value)return;let e={...r.options??{},columns:r.columns??[],data:r.dataSet??[]},c=new t.GridCore(a.value,e);o.value=c;let l=i;for(let[e,t]of n)s.push(c.api.on(e,e=>l(t,e)));l(`gridReady`,c.api)};return(0,e.onMounted)(l),(0,e.onBeforeUnmount)(c),(0,e.watch)(()=>[r.columns,r.dataSet,r.options],()=>{c(),l()}),()=>(0,e.h)(`div`,{ref:a,class:`photon-grid__host`})}});exports.PhotonGrid=r,exports.default=r;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("vue"),t=require("photon-grid-core");var n=[[t.GridEventType.DATA_CHANGED,`dataChanged`],[t.GridEventType.ROW_CLICKED,`rowClicked`],[t.GridEventType.ROW_DOUBLE_CLICKED,`rowDoubleClicked`],[t.GridEventType.ROW_SELECTED,`rowSelected`],[t.GridEventType.CELL_CLICKED,`cellClicked`],[t.GridEventType.CELL_DOUBLE_CLICKED,`cellDoubleClicked`],[t.GridEventType.CELL_VALUE_CHANGED,`cellValueChanged`],[t.GridEventType.CELL_SELECTION_CHANGED,`cellSelectionChanged`],[t.GridEventType.COLUMN_RESIZED,`columnResized`],[t.GridEventType.COLUMN_MOVED,`columnMoved`],[t.GridEventType.SORT_CHANGED,`sortChanged`],[t.GridEventType.FILTER_CHANGED,`filterChanged`],[t.GridEventType.PAGE_CHANGED,`pageChanged`],[t.GridEventType.COLUMNS_STATE_CHANGED,`columnsStateChanged`],[t.GridEventType.THEME_CHANGED,`themeChanged`],[t.GridEventType.EXPORT_COMPLETE,`exportComplete`]],r=(0,e.defineComponent)({name:`PhotonGrid`,props:{columns:{type:Array,default:()=>[]},dataSet:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})}},emits:[`gridReady`,`dataChanged`,`rowClicked`,`rowDoubleClicked`,`rowSelected`,`cellClicked`,`cellDoubleClicked`,`cellValueChanged`,`cellSelectionChanged`,`columnResized`,`columnMoved`,`sortChanged`,`filterChanged`,`pageChanged`,`columnsStateChanged`,`themeChanged`,`exportComplete`],setup(r,{emit:i}){let a=(0,e.ref)(null),o=(0,e.shallowRef)(null),s=[],c=()=>{for(let e of s)e();s=[],o.value?.destroy(),o.value=null},l=()=>{if(!a.value)return;let e={...r.options??{},columns:r.columns??[],data:r.dataSet??[]},c=new t.GridCore(a.value,e);o.value=c;let l=i;for(let[e,t]of n)s.push(c.api.on(e,e=>l(t,e)));l(`gridReady`,c.api)};return(0,e.onMounted)(l),(0,e.onBeforeUnmount)(c),(0,e.watch)(()=>[r.columns,r.dataSet,r.options],()=>{c(),l()}),()=>(0,e.h)(`div`,{ref:a,class:`photon-grid__host`})}});Object.defineProperty(exports,"PhotonAIProviderType",{enumerable:!0,get:function(){return t.PhotonAIProviderType}}),exports.PhotonGrid=r,exports.default=r;
package/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { PhotonGrid, default } from './photon-grid';
2
2
  export type * from 'photon-grid-core';
3
+ export { PhotonAIProviderType } from 'photon-grid-core';
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as e, h as t, onBeforeUnmount as n, onMounted as r, ref as i, shallowRef as a, watch as o } from "vue";
2
- import { GridCore as s, GridEventType as c } from "photon-grid-core";
2
+ import { GridCore as s, GridEventType as c, PhotonAIProviderType as l } from "photon-grid-core";
3
3
  //#region src/photon-grid.ts
4
- var l = [
4
+ var u = [
5
5
  [c.DATA_CHANGED, "dataChanged"],
6
6
  [c.ROW_CLICKED, "rowClicked"],
7
7
  [c.ROW_DOUBLE_CLICKED, "rowDoubleClicked"],
@@ -18,7 +18,7 @@ var l = [
18
18
  [c.COLUMNS_STATE_CHANGED, "columnsStateChanged"],
19
19
  [c.THEME_CHANGED, "themeChanged"],
20
20
  [c.EXPORT_COMPLETE, "exportComplete"]
21
- ], u = e({
21
+ ], d = e({
22
22
  name: "PhotonGrid",
23
23
  props: {
24
24
  columns: {
@@ -54,19 +54,19 @@ var l = [
54
54
  "exportComplete"
55
55
  ],
56
56
  setup(e, { emit: c }) {
57
- let u = i(null), d = a(null), f = [], p = () => {
57
+ let l = i(null), d = a(null), f = [], p = () => {
58
58
  for (let e of f) e();
59
59
  f = [], d.value?.destroy(), d.value = null;
60
60
  }, m = () => {
61
- if (!u.value) return;
61
+ if (!l.value) return;
62
62
  let t = {
63
63
  ...e.options ?? {},
64
64
  columns: e.columns ?? [],
65
65
  data: e.dataSet ?? []
66
- }, n = new s(u.value, t);
66
+ }, n = new s(l.value, t);
67
67
  d.value = n;
68
68
  let r = c;
69
- for (let [e, t] of l) f.push(n.api.on(e, (e) => r(t, e)));
69
+ for (let [e, t] of u) f.push(n.api.on(e, (e) => r(t, e)));
70
70
  r("gridReady", n.api);
71
71
  };
72
72
  return r(m), n(p), o(() => [
@@ -76,10 +76,10 @@ var l = [
76
76
  ], () => {
77
77
  p(), m();
78
78
  }), () => t("div", {
79
- ref: u,
79
+ ref: l,
80
80
  class: "photon-grid__host"
81
81
  });
82
82
  }
83
83
  });
84
84
  //#endregion
85
- export { u as PhotonGrid, u as default };
85
+ export { l as PhotonAIProviderType, d as PhotonGrid, d as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "photon-grid-vue",
3
- "version": "2.0.0",
3
+ "version": "2.0.4",
4
4
  "description": "Vue 3 wrapper for Photon Grid — an enterprise-grade, framework-agnostic TypeScript data grid.",
5
5
  "author": "Abdul Wahid",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "sideEffects": false,
23
23
  "peerDependencies": {
24
- "photon-grid-core": "^2.0.0",
24
+ "photon-grid-core": "^2.0.4",
25
25
  "vue": "^3.4.0"
26
26
  },
27
27
  "keywords": [
package/photon-grid.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PropType } from 'vue';
2
- import { ColumnDef, GridOptions } from 'photon-grid-core';
2
+ import { ColumnDefInput, GridOptions } from 'photon-grid-core';
3
3
  /**
4
4
  * Vue 3 wrapper around the framework-agnostic {@link GridCore}. Renders a single
5
5
  * host element, instantiates the grid on mount, forwards the grid's typed events
@@ -13,9 +13,13 @@ import { ColumnDef, GridOptions } from 'photon-grid-core';
13
13
  * ```
14
14
  */
15
15
  export declare const PhotonGrid: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
16
- /** Column definitions. */
16
+ /**
17
+ * Column definitions. Only `field` is required per column — `colId`,
18
+ * `header` and `type` are optional and defaulted by the core (auto `colId`,
19
+ * header from the field in Title Case, `type` defaulting to `'string'`).
20
+ */
17
21
  columns: {
18
- type: PropType<ColumnDef[]>;
22
+ type: PropType<ColumnDefInput[]>;
19
23
  default: () => never[];
20
24
  };
21
25
  /** Row data. */
@@ -23,7 +27,27 @@ export declare const PhotonGrid: import('vue').DefineComponent<import('vue').Ext
23
27
  type: PropType<Record<string, unknown>[]>;
24
28
  default: () => never[];
25
29
  };
26
- /** Additional grid options (theme, selection, features…). */
30
+ /**
31
+ * Additional grid options (theme, selection, features…), forwarded to the
32
+ * core. Enable the natural-language AI panel — and, optionally, its Gemini
33
+ * generative back-end — through `options.photonAI`:
34
+ *
35
+ * @example Gemini-powered AI panel
36
+ * ```ts
37
+ * import { PhotonAIProviderType } from 'photon-grid-vue';
38
+ *
39
+ * const options = {
40
+ * photonAI: {
41
+ * enabled: true,
42
+ * provider: {
43
+ * type: PhotonAIProviderType.Gemini,
44
+ * apiKey: import.meta.env.VITE_GEMINI_API_KEY,
45
+ * model: 'gemini-2.5-flash',
46
+ * },
47
+ * },
48
+ * };
49
+ * ```
50
+ */
27
51
  options: {
28
52
  type: PropType<Partial<GridOptions>>;
29
53
  default: () => {};
@@ -31,9 +55,13 @@ export declare const PhotonGrid: import('vue').DefineComponent<import('vue').Ext
31
55
  }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
32
56
  [key: string]: any;
33
57
  }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("dataChanged" | "rowClicked" | "rowDoubleClicked" | "rowSelected" | "cellClicked" | "cellDoubleClicked" | "cellValueChanged" | "cellSelectionChanged" | "columnResized" | "columnMoved" | "sortChanged" | "filterChanged" | "pageChanged" | "columnsStateChanged" | "themeChanged" | "exportComplete" | "gridReady")[], "dataChanged" | "rowClicked" | "rowDoubleClicked" | "rowSelected" | "cellClicked" | "cellDoubleClicked" | "cellValueChanged" | "cellSelectionChanged" | "columnResized" | "columnMoved" | "sortChanged" | "filterChanged" | "pageChanged" | "columnsStateChanged" | "themeChanged" | "exportComplete" | "gridReady", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
34
- /** Column definitions. */
58
+ /**
59
+ * Column definitions. Only `field` is required per column — `colId`,
60
+ * `header` and `type` are optional and defaulted by the core (auto `colId`,
61
+ * header from the field in Title Case, `type` defaulting to `'string'`).
62
+ */
35
63
  columns: {
36
- type: PropType<ColumnDef[]>;
64
+ type: PropType<ColumnDefInput[]>;
37
65
  default: () => never[];
38
66
  };
39
67
  /** Row data. */
@@ -41,7 +69,27 @@ export declare const PhotonGrid: import('vue').DefineComponent<import('vue').Ext
41
69
  type: PropType<Record<string, unknown>[]>;
42
70
  default: () => never[];
43
71
  };
44
- /** Additional grid options (theme, selection, features…). */
72
+ /**
73
+ * Additional grid options (theme, selection, features…), forwarded to the
74
+ * core. Enable the natural-language AI panel — and, optionally, its Gemini
75
+ * generative back-end — through `options.photonAI`:
76
+ *
77
+ * @example Gemini-powered AI panel
78
+ * ```ts
79
+ * import { PhotonAIProviderType } from 'photon-grid-vue';
80
+ *
81
+ * const options = {
82
+ * photonAI: {
83
+ * enabled: true,
84
+ * provider: {
85
+ * type: PhotonAIProviderType.Gemini,
86
+ * apiKey: import.meta.env.VITE_GEMINI_API_KEY,
87
+ * model: 'gemini-2.5-flash',
88
+ * },
89
+ * },
90
+ * };
91
+ * ```
92
+ */
45
93
  options: {
46
94
  type: PropType<Partial<GridOptions>>;
47
95
  default: () => {};
@@ -65,7 +113,7 @@ export declare const PhotonGrid: import('vue').DefineComponent<import('vue').Ext
65
113
  onExportComplete?: ((...args: any[]) => any) | undefined;
66
114
  onGridReady?: ((...args: any[]) => any) | undefined;
67
115
  }>, {
68
- columns: ColumnDef[];
116
+ columns: ColumnDefInput[];
69
117
  dataSet: Record<string, unknown>[];
70
118
  options: Partial<GridOptions>;
71
119
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;