@starter-solutions/inertia-data-table-vue 0.3.1 → 0.4.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.
@@ -3,8 +3,8 @@ import { MaybeRefOrGetter } from 'vue';
3
3
 
4
4
  export declare const useDataTable: <T>(tableKey: MaybeRefOrGetter<string>, options?: MaybeRefOrGetter<InertiaDataTableOptions>) => {
5
5
  data: import('vue').ComputedRef<T[]>;
6
+ reload: (pagination?: Partial<PaginatedRequest>) => void;
6
7
  pagination: import('vue').ComputedRef<Required<import('../types').NormalizedPagination>>;
7
- reloadData: (request?: Partial<PaginatedRequest>) => void;
8
8
  firstPage: () => void;
9
9
  previousPage: () => void;
10
10
  nextPage: () => void;
@@ -12,4 +12,12 @@ export declare const useDataTable: <T>(tableKey: MaybeRefOrGetter<string>, optio
12
12
  goToPage: (newPage: number) => void;
13
13
  itemsPerPage: (perPage: number) => void;
14
14
  sortBy: (sort_by: string, descending?: boolean) => void;
15
+ filter: Record<string, any>;
16
+ setFilter: (key: string, value: any) => void;
17
+ setFilters: (filters: Array<{
18
+ key: string;
19
+ value: any;
20
+ }>) => void;
21
+ removeFilter: (key: string) => void;
22
+ resetFilters: () => void;
15
23
  };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@inertiajs/vue3"),r=require("vue"),P=(e,u)=>{const n=y.usePage(),t=r.computed(()=>{const a=r.toValue(u),o=r.toValue(e),g=r.toValue(a==null?void 0:a.pagePropsKey)??o,c=r.toValue(a==null?void 0:a.useUrlQuery)??!1,_=r.toValue(a==null?void 0:a.reloadOnly)?[g,...r.toValue(a==null?void 0:a.reloadOnly)]:[g];return{tableKey:o,pagePropsKey:g,useUrlQuery:c,reloadOnly:_}}),p=r.computed(()=>n.props.inertiaDataTable.stateRoutes),i=r.computed(()=>n.props.inertiaDataTable.queryParams),l=r.computed(()=>n.props.inertiaDataTable.defaults);return{settings:t,stateRoutes:p,queryParams:i,defaults:l}},f=e=>{const u=r.computed(()=>D(r.toValue(e))),n=r.computed(()=>u.value.data),t=r.computed(()=>u.value.pagination);return{data:n,pagination:t,getPaginatedRequest:(l={})=>({page:l.page??t.value.current_page,per_page:l.per_page??t.value.per_page,sort_by:l.sort_by??t.value.sort_by,descending:l.descending??t.value.descending}),validPage:l=>l>0&&l<=t.value.last_page}},D=e=>({data:(e==null?void 0:e.data)??[],pagination:T(e)}),K=e=>"meta"in e&&typeof e.meta=="object"&&e.meta!==null,T=e=>{if(!e)return{current_page:1,last_page:1,per_page:10,total:0,from:null,to:null,path:"",links:[],first_page_url:null,last_page_url:null,next_page_url:null,prev_page_url:null,sort_by:"id",descending:!1};if(K(e))return{current_page:e.meta.current_page,last_page:e.meta.last_page,per_page:e.meta.per_page,total:e.meta.total,from:e.meta.from,to:e.meta.to,path:e.meta.path,links:e.meta.links,first_page_url:e.links.first,last_page_url:e.links.last,next_page_url:e.links.next,prev_page_url:e.links.prev,sort_by:e.meta.sort_by??"id",descending:e.meta.descending??!1};const{current_page:u,last_page:n,per_page:t,total:p,from:i,to:l,path:a,links:o,first_page_url:g,last_page_url:c,next_page_url:_,prev_page_url:v,sort_by:m,descending:b}=e;return{current_page:u,last_page:n,per_page:t,total:p,from:i,to:l,path:a,links:o,first_page_url:g,last_page_url:c,next_page_url:_,prev_page_url:v,sort_by:m??"id",descending:b??!1}},O=(e,u)=>{const{stateRoutes:n,settings:t}=P(e,u);r.onBeforeUnmount(()=>{y.router.delete(n.value.drop,{preserveScroll:!0,preserveState:!0,data:{tableKey:t.value.tableKey}})});const p=y.usePage(),i=r.computed(()=>p.props[t.value.pagePropsKey]??null),{data:l,pagination:a,getPaginatedRequest:o,validPage:g}=f(i),c=s=>{s=o(s),t.value.useUrlQuery?y.router.reload({only:t.value.reloadOnly,data:{tableKey:t.value.tableKey,...s}}):y.router.post(n.value.set,{tableKey:t.value.tableKey,data:s},{preserveState:!0,preserveScroll:!0,only:t.value.reloadOnly})},_=()=>{d(1)},v=()=>{d(a.value.current_page-1)},m=()=>{d(a.value.current_page+1)},b=()=>{d(a.value.last_page)},d=s=>{if(!g(s)){console.error(`Invalid page: ${s}`);return}c(o({page:s}))};return{data:l,pagination:a,reloadData:c,firstPage:_,previousPage:v,nextPage:m,lastPage:b,goToPage:d,itemsPerPage:s=>{c(o({per_page:s,page:1}))},sortBy:(s,k)=>{const R=k??a.value.sort_by===s?!a.value.descending:!1;c(o({sort_by:s,descending:R}))}}};function V(){return{install(e){}}}exports.createInertiaDataTable=V;exports.getPaginationMeta=T;exports.isResource=K;exports.normalizePagination=D;exports.useDataTable=O;exports.useInertiaDataTableConfig=P;exports.useLaravelPagination=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("@inertiajs/vue3"),l=require("vue"),D=(e,u)=>{const o=m.usePage(),r=l.computed(()=>{const t=l.toValue(u),_=l.toValue(e),g=l.toValue(t==null?void 0:t.pagePropsKey)??_,n=l.toValue(t==null?void 0:t.useUrlQuery)??!1,d=l.toValue(t==null?void 0:t.reloadOnly)?[g,...l.toValue(t==null?void 0:t.reloadOnly)]:[g];return{tableKey:_,pagePropsKey:g,useUrlQuery:n,reloadOnly:d}}),i=l.computed(()=>o.props.inertiaDataTable.stateRoutes),p=l.computed(()=>o.props.inertiaDataTable.queryParams),s=l.computed(()=>o.props.inertiaDataTable.defaults);return{settings:r,stateRoutes:i,queryParams:p,defaults:s}},T=e=>{const u=l.computed(()=>k(l.toValue(e))),o=l.computed(()=>u.value.data),r=l.computed(()=>u.value.pagination);return{data:o,pagination:r,getPaginatedRequest:(s={})=>({page:s.page??r.value.current_page,per_page:s.per_page??r.value.per_page,sort_by:s.sort_by??r.value.sort_by,descending:s.descending??r.value.descending}),validPage:s=>s>0&&s<=r.value.last_page}},k=e=>({data:(e==null?void 0:e.data)??[],pagination:O(e)}),F=e=>"meta"in e&&typeof e.meta=="object"&&e.meta!==null,O=e=>{if(!e)return{current_page:1,last_page:1,per_page:10,total:0,from:null,to:null,path:"",links:[],first_page_url:null,last_page_url:null,next_page_url:null,prev_page_url:null,sort_by:"id",descending:!1};if(F(e))return{current_page:e.meta.current_page,last_page:e.meta.last_page,per_page:e.meta.per_page,total:e.meta.total,from:e.meta.from,to:e.meta.to,path:e.meta.path,links:e.meta.links,first_page_url:e.links.first,last_page_url:e.links.last,next_page_url:e.links.next,prev_page_url:e.links.prev,sort_by:e.meta.sort_by??"id",descending:e.meta.descending??!1};const{current_page:u,last_page:o,per_page:r,total:i,from:p,to:s,path:t,links:_,first_page_url:g,last_page_url:n,next_page_url:d,prev_page_url:b,sort_by:f,descending:P}=e;return{current_page:u,last_page:o,per_page:r,total:i,from:p,to:s,path:t,links:_,first_page_url:g,last_page_url:n,next_page_url:d,prev_page_url:b,sort_by:f??"id",descending:P??!1}},V=(e,u)=>{const{stateRoutes:o,settings:r}=D(e,u);l.onBeforeUnmount(()=>{m.router.delete(o.value.drop,{preserveScroll:!0,preserveState:!0,data:{tableKey:r.value.tableKey}})});const i=m.usePage(),p=l.computed(()=>i.props[r.value.pagePropsKey]??null),{data:s,pagination:t,getPaginatedRequest:_,validPage:g}=T(p),n=a=>{a=_(a),r.value.useUrlQuery?m.router.reload({only:r.value.reloadOnly,data:{tableKey:r.value.tableKey,filter:c,...a}}):m.router.post(o.value.set,{tableKey:r.value.tableKey,filter:c,pagination:a},{preserveState:!0,preserveScroll:!0,only:r.value.reloadOnly})},d=()=>{v(1)},b=()=>{v(t.value.current_page-1)},f=()=>{v(t.value.current_page+1)},P=()=>{v(t.value.last_page)},v=a=>{if(!g(a)){console.error(`Invalid page: ${a}`);return}n({page:a})},R=a=>{n({per_page:a,page:1})},q=(a,y)=>{const K=y??t.value.sort_by===a?!t.value.descending:!1;n({sort_by:a,descending:K})},c=l.reactive({});return{data:s,reload:n,pagination:t,firstPage:d,previousPage:b,nextPage:f,lastPage:P,goToPage:v,itemsPerPage:R,sortBy:q,filter:c,setFilter:(a,y)=>{c[a]=y,n()},setFilters:a=>{a.forEach(({key:y,value:K})=>{c[y]=K}),n()},removeFilter:a=>{delete c[a],n()},resetFilters:()=>{Object.keys(c).forEach(a=>delete c[a]),n()}}};function h(){return{install(e){}}}exports.createInertiaDataTable=h;exports.getPaginationMeta=O;exports.isResource=F;exports.normalizePagination=k;exports.useDataTable=V;exports.useInertiaDataTableConfig=D;exports.useLaravelPagination=T;
package/dist/index.js CHANGED
@@ -1,46 +1,46 @@
1
- import { usePage as P, router as b } from "@inertiajs/vue3";
2
- import { computed as c, toValue as p, onBeforeUnmount as k } from "vue";
3
- const R = (e, o) => {
4
- const s = P(), t = c(() => {
5
- const a = p(o), n = p(e), g = p(a == null ? void 0 : a.pagePropsKey) ?? n, u = p(a == null ? void 0 : a.useUrlQuery) ?? !1, y = p(a == null ? void 0 : a.reloadOnly) ? [g, ...p(a == null ? void 0 : a.reloadOnly)] : [g];
1
+ import { usePage as D, router as k } from "@inertiajs/vue3";
2
+ import { computed as c, toValue as p, onBeforeUnmount as R, reactive as T } from "vue";
3
+ const h = (e, o) => {
4
+ const n = D(), r = c(() => {
5
+ const t = p(o), y = p(e), g = p(t == null ? void 0 : t.pagePropsKey) ?? y, s = p(t == null ? void 0 : t.useUrlQuery) ?? !1, v = p(t == null ? void 0 : t.reloadOnly) ? [g, ...p(t == null ? void 0 : t.reloadOnly)] : [g];
6
6
  return {
7
- tableKey: n,
7
+ tableKey: y,
8
8
  pagePropsKey: g,
9
- useUrlQuery: u,
10
- reloadOnly: y
9
+ useUrlQuery: s,
10
+ reloadOnly: v
11
11
  };
12
12
  }), _ = c(
13
- () => s.props.inertiaDataTable.stateRoutes
13
+ () => n.props.inertiaDataTable.stateRoutes
14
14
  ), i = c(
15
- () => s.props.inertiaDataTable.queryParams
16
- ), r = c(
17
- () => s.props.inertiaDataTable.defaults
15
+ () => n.props.inertiaDataTable.queryParams
16
+ ), l = c(
17
+ () => n.props.inertiaDataTable.defaults
18
18
  );
19
19
  return {
20
- settings: t,
20
+ settings: r,
21
21
  stateRoutes: _,
22
22
  queryParams: i,
23
- defaults: r
23
+ defaults: l
24
24
  };
25
- }, T = (e) => {
26
- const o = c(() => x(p(e))), s = c(() => o.value.data), t = c(
25
+ }, x = (e) => {
26
+ const o = c(() => q(p(e))), n = c(() => o.value.data), r = c(
27
27
  () => o.value.pagination
28
28
  );
29
29
  return {
30
- data: s,
31
- pagination: t,
32
- getPaginatedRequest: (r = {}) => ({
33
- page: r.page ?? t.value.current_page,
34
- per_page: r.per_page ?? t.value.per_page,
35
- sort_by: r.sort_by ?? t.value.sort_by,
36
- descending: r.descending ?? t.value.descending
30
+ data: n,
31
+ pagination: r,
32
+ getPaginatedRequest: (l = {}) => ({
33
+ page: l.page ?? r.value.current_page,
34
+ per_page: l.per_page ?? r.value.per_page,
35
+ sort_by: l.sort_by ?? r.value.sort_by,
36
+ descending: l.descending ?? r.value.descending
37
37
  }),
38
- validPage: (r) => r > 0 && r <= t.value.last_page
38
+ validPage: (l) => l > 0 && l <= r.value.last_page
39
39
  };
40
- }, x = (e) => ({
40
+ }, q = (e) => ({
41
41
  data: (e == null ? void 0 : e.data) ?? [],
42
- pagination: U(e)
43
- }), O = (e) => "meta" in e && typeof e.meta == "object" && e.meta !== null, U = (e) => {
42
+ pagination: Q(e)
43
+ }), U = (e) => "meta" in e && typeof e.meta == "object" && e.meta !== null, Q = (e) => {
44
44
  if (!e)
45
45
  return {
46
46
  current_page: 1,
@@ -60,7 +60,7 @@ const R = (e, o) => {
60
60
  sort_by: "id",
61
61
  descending: !1
62
62
  };
63
- if (O(e))
63
+ if (U(e))
64
64
  return {
65
65
  current_page: e.meta.current_page,
66
66
  last_page: e.meta.last_page,
@@ -81,115 +81,135 @@ const R = (e, o) => {
81
81
  };
82
82
  const {
83
83
  current_page: o,
84
- last_page: s,
85
- per_page: t,
84
+ last_page: n,
85
+ per_page: r,
86
86
  total: _,
87
87
  from: i,
88
- to: r,
89
- path: a,
90
- links: n,
88
+ to: l,
89
+ path: t,
90
+ links: y,
91
91
  //links
92
92
  first_page_url: g,
93
- last_page_url: u,
94
- next_page_url: y,
95
- prev_page_url: d,
93
+ last_page_url: s,
94
+ next_page_url: v,
95
+ prev_page_url: f,
96
96
  //custom
97
- sort_by: m,
98
- descending: f
97
+ sort_by: b,
98
+ descending: P
99
99
  } = e;
100
100
  return {
101
101
  current_page: o,
102
- last_page: s,
103
- per_page: t,
102
+ last_page: n,
103
+ per_page: r,
104
104
  total: _,
105
105
  from: i,
106
- to: r,
107
- path: a,
108
- links: n,
106
+ to: l,
107
+ path: t,
108
+ links: y,
109
109
  //links
110
110
  first_page_url: g,
111
- last_page_url: u,
112
- next_page_url: y,
113
- prev_page_url: d,
111
+ last_page_url: s,
112
+ next_page_url: v,
113
+ prev_page_url: f,
114
114
  //custom
115
- sort_by: m ?? "id",
116
- descending: f ?? !1
115
+ sort_by: b ?? "id",
116
+ descending: P ?? !1
117
117
  };
118
- }, I = (e, o) => {
119
- const { stateRoutes: s, settings: t } = R(
118
+ }, C = (e, o) => {
119
+ const { stateRoutes: n, settings: r } = h(
120
120
  e,
121
121
  o
122
122
  );
123
- k(() => {
124
- b.delete(s.value.drop, {
123
+ R(() => {
124
+ k.delete(n.value.drop, {
125
125
  preserveScroll: !0,
126
126
  preserveState: !0,
127
- data: { tableKey: t.value.tableKey }
127
+ data: { tableKey: r.value.tableKey }
128
128
  });
129
129
  });
130
- const _ = P(), i = c(
131
- () => _.props[t.value.pagePropsKey] ?? null
132
- ), { data: r, pagination: a, getPaginatedRequest: n, validPage: g } = T(i), u = (l) => {
133
- l = n(l), t.value.useUrlQuery ? b.reload({
134
- only: t.value.reloadOnly,
135
- data: { tableKey: t.value.tableKey, ...l }
136
- }) : b.post(
137
- s.value.set,
130
+ const _ = D(), i = c(
131
+ () => _.props[r.value.pagePropsKey] ?? null
132
+ ), { data: l, pagination: t, getPaginatedRequest: y, validPage: g } = x(i), s = (a) => {
133
+ a = y(a), r.value.useUrlQuery ? k.reload({
134
+ only: r.value.reloadOnly,
135
+ data: {
136
+ tableKey: r.value.tableKey,
137
+ filter: u,
138
+ ...a
139
+ }
140
+ }) : k.post(
141
+ n.value.set,
138
142
  {
139
- tableKey: t.value.tableKey,
140
- data: l
143
+ tableKey: r.value.tableKey,
144
+ filter: u,
145
+ pagination: a
141
146
  },
142
147
  {
143
148
  preserveState: !0,
144
149
  preserveScroll: !0,
145
- only: t.value.reloadOnly
150
+ only: r.value.reloadOnly
146
151
  }
147
152
  );
148
- }, y = () => {
149
- v(1);
150
- }, d = () => {
151
- v(a.value.current_page - 1);
152
- }, m = () => {
153
- v(a.value.current_page + 1);
153
+ }, v = () => {
154
+ d(1);
154
155
  }, f = () => {
155
- v(a.value.last_page);
156
- }, v = (l) => {
157
- if (!g(l)) {
158
- console.error(`Invalid page: ${l}`);
156
+ d(t.value.current_page - 1);
157
+ }, b = () => {
158
+ d(t.value.current_page + 1);
159
+ }, P = () => {
160
+ d(t.value.last_page);
161
+ }, d = (a) => {
162
+ if (!g(a)) {
163
+ console.error(`Invalid page: ${a}`);
159
164
  return;
160
165
  }
161
- u(n({ page: l }));
162
- };
166
+ s({ page: a });
167
+ }, F = (a) => {
168
+ s({ per_page: a, page: 1 });
169
+ }, O = (a, m) => {
170
+ const K = m ?? t.value.sort_by === a ? !t.value.descending : !1;
171
+ s({ sort_by: a, descending: K });
172
+ }, u = T({});
163
173
  return {
164
- data: r,
165
- pagination: a,
166
- reloadData: u,
167
- firstPage: y,
168
- previousPage: d,
169
- nextPage: m,
170
- lastPage: f,
171
- goToPage: v,
172
- itemsPerPage: (l) => {
173
- u(n({ per_page: l, page: 1 }));
174
+ data: l,
175
+ reload: s,
176
+ pagination: t,
177
+ firstPage: v,
178
+ previousPage: f,
179
+ nextPage: b,
180
+ lastPage: P,
181
+ goToPage: d,
182
+ itemsPerPage: F,
183
+ sortBy: O,
184
+ filter: u,
185
+ setFilter: (a, m) => {
186
+ u[a] = m, s();
187
+ },
188
+ setFilters: (a) => {
189
+ a.forEach(({ key: m, value: K }) => {
190
+ u[m] = K;
191
+ }), s();
192
+ },
193
+ removeFilter: (a) => {
194
+ delete u[a], s();
174
195
  },
175
- sortBy: (l, K) => {
176
- const D = K ?? a.value.sort_by === l ? !a.value.descending : !1;
177
- u(n({ sort_by: l, descending: D }));
196
+ resetFilters: () => {
197
+ Object.keys(u).forEach((a) => delete u[a]), s();
178
198
  }
179
199
  };
180
200
  };
181
- function q() {
201
+ function L() {
182
202
  return {
183
203
  install(e) {
184
204
  }
185
205
  };
186
206
  }
187
207
  export {
188
- q as createInertiaDataTable,
189
- U as getPaginationMeta,
190
- O as isResource,
191
- x as normalizePagination,
192
- I as useDataTable,
193
- R as useInertiaDataTableConfig,
194
- T as useLaravelPagination
208
+ L as createInertiaDataTable,
209
+ Q as getPaginationMeta,
210
+ U as isResource,
211
+ q as normalizePagination,
212
+ C as useDataTable,
213
+ h as useInertiaDataTableConfig,
214
+ x as useLaravelPagination
195
215
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starter-solutions/inertia-data-table-vue",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "license": "MIT",
5
5
  "description": "Vue 3 + Inertia.js data table utilities with Laravel backend integration.",
6
6
  "type": "module",