@adminforth/universal-search 1.1.2 → 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 +29 -6
- package/index.ts +29 -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: {
|
|
@@ -126,13 +135,27 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
126
135
|
});
|
|
127
136
|
};
|
|
128
137
|
const transformer = (ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
var _a;
|
|
138
|
+
var _a, _b, _c;
|
|
130
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
|
+
}
|
|
131
146
|
if (ephemeral) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
|
|
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
|
+
}
|
|
136
159
|
}
|
|
137
160
|
}
|
|
138
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'),
|
|
@@ -108,16 +117,32 @@ export default class UniversalSearchPlugin extends AdminForthPlugin {
|
|
|
108
117
|
|
|
109
118
|
const transformer = async (ctx: any) => {
|
|
110
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
|
+
|
|
111
127
|
if (ephemeral) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
+
}
|
|
116
139
|
}
|
|
117
140
|
}
|
|
141
|
+
|
|
118
142
|
if (Array.isArray(query?.filters)) {
|
|
119
143
|
query.filters = transformFilters(query.filters);
|
|
120
144
|
}
|
|
145
|
+
|
|
121
146
|
return { ok: true, error: '' };
|
|
122
147
|
};
|
|
123
148
|
|