@adminforth/universal-search 1.1.1 → 1.2.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.
- package/dist/index.js +30 -6
- package/index.ts +30 -4
- package/package.json +1 -1
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, Filters } from 'adminforth';
|
|
10
|
+
import { AdminForthPlugin, AdminForthDataTypes, Filters } from 'adminforth';
|
|
11
11
|
export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
12
12
|
constructor(options) {
|
|
13
13
|
super(options, import.meta.url);
|
|
@@ -45,6 +45,15 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
45
45
|
if (!Array.isArray(this.resourceConfig.columns))
|
|
46
46
|
this.resourceConfig.columns = [];
|
|
47
47
|
const exists = this.resourceConfig.columns.some(c => c.name === virtualFieldName);
|
|
48
|
+
if (!exists) {
|
|
49
|
+
this.resourceConfig.columns.push({
|
|
50
|
+
name: virtualFieldName,
|
|
51
|
+
virtual: true,
|
|
52
|
+
type: AdminForthDataTypes.STRING,
|
|
53
|
+
label: 'Universal Search',
|
|
54
|
+
showIn: { all: false },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
48
57
|
const injection = {
|
|
49
58
|
file: this.componentPath('UniversalSearchInput.vue'),
|
|
50
59
|
meta: {
|
|
@@ -119,19 +128,34 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
119
128
|
});
|
|
120
129
|
if (!sub.length)
|
|
121
130
|
return [];
|
|
131
|
+
console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
|
|
122
132
|
return [Filters.OR(sub)];
|
|
123
133
|
}
|
|
124
134
|
return [f];
|
|
125
135
|
});
|
|
126
136
|
};
|
|
127
137
|
const transformer = (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
var _a;
|
|
138
|
+
var _a, _b, _c;
|
|
129
139
|
const { query } = ctx;
|
|
140
|
+
let incomingTerm = ((_c = (_b = (_a = query === null || query === void 0 ? void 0 : query.body) === null || _a === void 0 ? void 0 : _a.__universal_search_term) !== null && _b !== void 0 ? _b : query === null || query === void 0 ? void 0 : query.__universal_search_term) !== null && _c !== void 0 ? _c : '').toString().trim();
|
|
141
|
+
if (!incomingTerm && Array.isArray(query === null || query === void 0 ? void 0 : query.filters)) {
|
|
142
|
+
const vf = query.filters.find(f => (f === null || f === void 0 ? void 0 : f.field) === virtualFieldName && typeof f.value === 'string');
|
|
143
|
+
if (vf)
|
|
144
|
+
incomingTerm = vf.value.trim();
|
|
145
|
+
}
|
|
130
146
|
if (ephemeral) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
147
|
+
if (incomingTerm) {
|
|
148
|
+
query.__universal_search_term = incomingTerm;
|
|
149
|
+
const alreadyHas = Array.isArray(query.filters) && query.filters.some(f => (f === null || f === void 0 ? void 0 : f.field) === virtualFieldName);
|
|
150
|
+
if (!alreadyHas) {
|
|
151
|
+
const tempFilter = { field: virtualFieldName, operator: 'eq', value: incomingTerm };
|
|
152
|
+
query.filters = Array.isArray(query.filters) ? [...query.filters, tempFilter] : [tempFilter];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
if (Array.isArray(query.filters)) {
|
|
157
|
+
query.filters = query.filters.filter(f => (f === null || f === void 0 ? void 0 : f.field) !== virtualFieldName);
|
|
158
|
+
}
|
|
135
159
|
}
|
|
136
160
|
}
|
|
137
161
|
if (Array.isArray(query === null || query === void 0 ? void 0 : query.filters)) {
|
package/index.ts
CHANGED
|
@@ -40,6 +40,15 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
40
40
|
|
|
41
41
|
if (!Array.isArray(this.resourceConfig.columns)) this.resourceConfig.columns = [] as any;
|
|
42
42
|
const exists = (this.resourceConfig.columns as any[]).some(c => c.name === virtualFieldName);
|
|
43
|
+
if (!exists) {
|
|
44
|
+
(this.resourceConfig.columns as any[]).push({
|
|
45
|
+
name: virtualFieldName,
|
|
46
|
+
virtual: true,
|
|
47
|
+
type: AdminForthDataTypes.STRING,
|
|
48
|
+
label: 'Universal Search',
|
|
49
|
+
showIn: { all: false },
|
|
50
|
+
});
|
|
51
|
+
}
|
|
43
52
|
|
|
44
53
|
const injection = {
|
|
45
54
|
file: this.componentPath('UniversalSearchInput.vue'),
|
|
@@ -99,6 +108,7 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
99
108
|
else if (searchBy === 'both') { addFilter(col.name); addFilter(`${col.name}__key`); }
|
|
100
109
|
});
|
|
101
110
|
if (!sub.length) return [];
|
|
111
|
+
console.log('UniversalSearchPlugin: transformed filter', f, '=>', sub);
|
|
102
112
|
return [Filters.OR(sub)];
|
|
103
113
|
}
|
|
104
114
|
return [f];
|
|
@@ -107,16 +117,32 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
107
117
|
|
|
108
118
|
const transformer = async (ctx: any) => {
|
|
109
119
|
const { query } = ctx;
|
|
120
|
+
|
|
121
|
+
let incomingTerm = (query?.body?.__universal_search_term ?? query?.__universal_search_term ?? '').toString().trim();
|
|
122
|
+
if (!incomingTerm && Array.isArray(query?.filters)) {
|
|
123
|
+
const vf = (query.filters as any[]).find(f => f?.field === virtualFieldName && typeof f.value === 'string');
|
|
124
|
+
if (vf) incomingTerm = vf.value.trim();
|
|
125
|
+
}
|
|
126
|
+
|
|
110
127
|
if (ephemeral) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
128
|
+
if (incomingTerm) {
|
|
129
|
+
query.__universal_search_term = incomingTerm;
|
|
130
|
+
const alreadyHas = Array.isArray(query.filters) && (query.filters as any[]).some(f => f?.field === virtualFieldName);
|
|
131
|
+
if (!alreadyHas) {
|
|
132
|
+
const tempFilter = { field: virtualFieldName, operator: 'eq', value: incomingTerm };
|
|
133
|
+
query.filters = Array.isArray(query.filters) ? [...query.filters, tempFilter] : [tempFilter];
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
if (Array.isArray(query.filters)) {
|
|
137
|
+
query.filters = (query.filters as any[]).filter(f => f?.field !== virtualFieldName);
|
|
138
|
+
}
|
|
115
139
|
}
|
|
116
140
|
}
|
|
141
|
+
|
|
117
142
|
if (Array.isArray(query?.filters)) {
|
|
118
143
|
query.filters = transformFilters(query.filters);
|
|
119
144
|
}
|
|
145
|
+
|
|
120
146
|
return { ok: true, error: '' };
|
|
121
147
|
};
|
|
122
148
|
|