@adminforth/universal-search 1.1.0 → 1.1.2

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/build.log CHANGED
@@ -7,5 +7,5 @@ custom/
7
7
  custom/UniversalSearchInput.vue
8
8
  custom/tsconfig.json
9
9
 
10
- sent 2,627 bytes received 58 bytes 5,370.00 bytes/sec
10
+ sent 2,630 bytes received 58 bytes 5,376.00 bytes/sec
11
11
  total size is 2,406 speedup is 0.90
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { AdminForthPlugin } from 'adminforth';
10
+ import { AdminForthPlugin, Filters } from 'adminforth';
11
11
  export default class UniversalSearchPlugin extends AdminForthPlugin {
12
12
  constructor(options) {
13
13
  super(options, import.meta.url);
@@ -91,23 +91,22 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
91
91
  columns.forEach(col => {
92
92
  const searchBy = (col.searchBy === 'labelOnly' ? 'keyOnly' : col.searchBy) || 'valueOnly';
93
93
  const addFilter = (field) => {
94
- let operator;
95
- let value;
96
94
  if (col.exact) {
97
95
  if (col.caseSensitive) {
98
- operator = 'like';
99
- value = term;
96
+ sub.push(Filters.LIKE(field, term));
100
97
  }
101
98
  else {
102
- operator = 'eq';
103
- value = term;
99
+ sub.push(Filters.EQ(field, term));
104
100
  }
105
101
  }
106
102
  else {
107
- operator = col.caseSensitive ? 'like' : 'ilike';
108
- value = `${term}`;
103
+ if (col.caseSensitive) {
104
+ sub.push(Filters.LIKE(field, term));
105
+ }
106
+ else {
107
+ sub.push(Filters.ILIKE ? Filters.ILIKE(field, term) : { field, operator: 'ilike', value: term });
108
+ }
109
109
  }
110
- sub.push({ field, operator, value });
111
110
  };
112
111
  if (searchBy === 'valueOnly')
113
112
  addFilter(col.name);
@@ -120,7 +119,8 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
120
119
  });
121
120
  if (!sub.length)
122
121
  return [];
123
- return [{ operator: 'or', subFilters: sub }];
122
+ console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
123
+ return [Filters.OR(sub)];
124
124
  }
125
125
  return [f];
126
126
  });
package/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AdminForthPlugin, AdminForthResource, IAdminForth, AdminForthDataTypes } from 'adminforth';
1
+ import { AdminForthPlugin, AdminForthResource, IAdminForth, AdminForthDataTypes, Filters } from 'adminforth';
2
2
  import { PluginOptions, UniversalSearchColumnConfig } from './types.js';
3
3
 
4
4
  export default class UniversalSearchPlugin extends AdminForthPlugin {
@@ -75,33 +75,32 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
75
75
  }
76
76
  if (f.field === virtualFieldName) {
77
77
  const term = (f.value || '').toString().trim();
78
- if (!term) return [];
79
- const sub: any[] = [];
80
- columns.forEach(col => {
81
- const searchBy = (col.searchBy === 'labelOnly' ? 'keyOnly' : col.searchBy) || 'valueOnly';
82
- const addFilter = (field: string) => {
83
- let operator: string;
84
- let value: string;
85
- if (col.exact) {
86
- if (col.caseSensitive) {
87
- operator = 'like';
88
- value = term;
89
- } else {
90
- operator = 'eq';
91
- value = term;
92
- }
78
+ if (!term) return [];
79
+ const sub: any[] = [];
80
+ columns.forEach(col => {
81
+ const searchBy = (col.searchBy === 'labelOnly' ? 'keyOnly' : col.searchBy) || 'valueOnly';
82
+ const addFilter = (field: string) => {
83
+ if (col.exact) {
84
+ if (col.caseSensitive) {
85
+ sub.push(Filters.LIKE(field, term));
93
86
  } else {
94
- operator = col.caseSensitive ? 'like' : 'ilike';
95
- value = `${term}`;
87
+ sub.push(Filters.EQ(field, term));
96
88
  }
97
- sub.push({ field, operator, value });
98
- };
99
- if (searchBy === 'valueOnly') addFilter(col.name);
100
- else if (searchBy === 'keyOnly') addFilter(`${col.name}__key`);
101
- else if (searchBy === 'both') { addFilter(col.name); addFilter(`${col.name}__key`); }
102
- });
103
- if (!sub.length) return [];
104
- return [{ operator: 'or', subFilters: sub }];
89
+ } else {
90
+ if (col.caseSensitive) {
91
+ sub.push(Filters.LIKE(field, term));
92
+ } else {
93
+ sub.push((Filters as any).ILIKE ? (Filters as any).ILIKE(field, term) : { field, operator: 'ilike', value: term });
94
+ }
95
+ }
96
+ };
97
+ if (searchBy === 'valueOnly') addFilter(col.name);
98
+ else if (searchBy === 'keyOnly') addFilter(`${col.name}__key`);
99
+ else if (searchBy === 'both') { addFilter(col.name); addFilter(`${col.name}__key`); }
100
+ });
101
+ if (!sub.length) return [];
102
+ console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
103
+ return [Filters.OR(sub)];
105
104
  }
106
105
  return [f];
107
106
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/universal-search",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Universal quick search input plugin for AdminForth (injected before action buttons)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",