@guajiritos/general-autocomplete 0.1.9 → 2.0.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/esm2022/lib/guachos-general-autocomplete.component.mjs +24 -30
- package/esm2022/public-api.mjs +2 -3
- package/esm2022/utils/constants/constants.mjs +11 -0
- package/esm2022/utils/pipes/resolve-property-path.pipe.mjs +10 -6
- package/esm2022/utils/services/utils.service.mjs +3 -3
- package/fesm2022/guajiritos-general-autocomplete.mjs +35 -292
- package/fesm2022/guajiritos-general-autocomplete.mjs.map +1 -1
- package/lib/guachos-general-autocomplete.component.d.ts +7 -10
- package/package.json +8 -7
- package/public-api.d.ts +1 -2
- package/utils/constants/{contacts.d.ts → constants.d.ts} +1 -1
- package/utils/pipes/resolve-property-path.pipe.d.ts +2 -2
- package/esm2022/utils/constants/contacts.mjs +0 -10
- package/esm2022/utils/interfaces/interfaces.mjs +0 -2
- package/esm2022/utils/pipes/i18n-field.pipe.mjs +0 -35
- package/esm2022/utils/pipes/pipes.module.mjs +0 -32
- package/esm2022/utils/services/autocomplete.service.mjs +0 -199
- package/utils/interfaces/interfaces.d.ts +0 -22
- package/utils/pipes/i18n-field.pipe.d.ts +0 -14
- package/utils/pipes/pipes.module.d.ts +0 -8
- package/utils/services/autocomplete.service.d.ts +0 -53
@@ -1,199 +0,0 @@
|
|
1
|
-
import { HttpClient, HttpParams } from '@angular/common/http';
|
2
|
-
import { Injectable } from '@angular/core';
|
3
|
-
import { map } from 'rxjs/operators';
|
4
|
-
import merge from 'lodash.merge';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "@angular/common/http";
|
7
|
-
export class AutocompleteService {
|
8
|
-
/**
|
9
|
-
* Constructor function for the class.
|
10
|
-
*
|
11
|
-
* @param {HttpClient} _httpClient - The HttpClient instance to be used by the class.
|
12
|
-
*/
|
13
|
-
constructor(_httpClient) {
|
14
|
-
this._httpClient = _httpClient;
|
15
|
-
this.httpOptions = {};
|
16
|
-
}
|
17
|
-
/**
|
18
|
-
* Processes the parameters and returns a Promise that resolves with the filter object.
|
19
|
-
*
|
20
|
-
* @param {string[] | string | undefined} filters - The filters to process.
|
21
|
-
* @param {string} value - The value to process the filters with.
|
22
|
-
* @return {Promise<any>} A Promise that resolves with the filter object.
|
23
|
-
*/
|
24
|
-
processParams(filters, value) {
|
25
|
-
return new Promise((resolve, reject) => {
|
26
|
-
setTimeout(async () => {
|
27
|
-
let filter = {};
|
28
|
-
if (Array.isArray(filters)) {
|
29
|
-
for (const f of filters) {
|
30
|
-
await this.processFilterString(f, value).then((resp) => {
|
31
|
-
if (Object.keys(filter)?.length) {
|
32
|
-
merge(filter, resp);
|
33
|
-
}
|
34
|
-
else {
|
35
|
-
filter = {
|
36
|
-
...filter,
|
37
|
-
...resp
|
38
|
-
};
|
39
|
-
}
|
40
|
-
if (f === filters[filters?.length - 1]) {
|
41
|
-
resolve(filter);
|
42
|
-
}
|
43
|
-
});
|
44
|
-
}
|
45
|
-
}
|
46
|
-
else if (typeof filters === 'string') {
|
47
|
-
await this.processFilterString(filters, value).then((resp) => {
|
48
|
-
filter = {
|
49
|
-
...filter,
|
50
|
-
...resp
|
51
|
-
};
|
52
|
-
resolve(filter);
|
53
|
-
});
|
54
|
-
}
|
55
|
-
else {
|
56
|
-
reject(null);
|
57
|
-
}
|
58
|
-
}, 100);
|
59
|
-
});
|
60
|
-
}
|
61
|
-
/**
|
62
|
-
* Processes the filter string and returns the result.
|
63
|
-
*
|
64
|
-
* @param {string} filter - The filter string to process.
|
65
|
-
* @param {string} value - The value to use in the processing.
|
66
|
-
* @return {Promise<any>} - A promise that resolves to the processed result.
|
67
|
-
*/
|
68
|
-
async processFilterString(filter, value) {
|
69
|
-
let f = {};
|
70
|
-
const arrayFilters = filter?.split('[');
|
71
|
-
if (arrayFilters?.findIndex((a) => a === 'filter') >= 0) {
|
72
|
-
arrayFilters?.splice(0, 1);
|
73
|
-
}
|
74
|
-
await this.createObjectFilters(arrayFilters, value).then((data) => {
|
75
|
-
f = data;
|
76
|
-
});
|
77
|
-
return f;
|
78
|
-
}
|
79
|
-
/**
|
80
|
-
* Creates object filters based on the given array and value.
|
81
|
-
*
|
82
|
-
* @param {string[]} array - The array of filters.
|
83
|
-
* @param {string} value - The value to be filtered.
|
84
|
-
* @return {Promise<any>} - A promise that resolves to the filtered object.
|
85
|
-
*/
|
86
|
-
async createObjectFilters(array, value) {
|
87
|
-
for (let filter of array) {
|
88
|
-
filter = filter?.replace(']', '');
|
89
|
-
if (array.length > 1) {
|
90
|
-
array.splice(0, 1);
|
91
|
-
return { [filter]: await this.createObjectFilters(array, value) };
|
92
|
-
}
|
93
|
-
else {
|
94
|
-
if (filter === '$like') {
|
95
|
-
return { [filter]: '%' + value + '%' };
|
96
|
-
}
|
97
|
-
else {
|
98
|
-
return { [filter]: value };
|
99
|
-
}
|
100
|
-
}
|
101
|
-
}
|
102
|
-
}
|
103
|
-
/**
|
104
|
-
* Retrieves autocomplete suggestions based on the provided text and other optional parameters.
|
105
|
-
*
|
106
|
-
* @param {string} url - The URL to send the request to.
|
107
|
-
* @param {string} [text] - The text to use for autocomplete suggestions. Defaults to an empty string.
|
108
|
-
* @param {string[] | string} [field] - The field(s) to filter the autocomplete suggestions by.
|
109
|
-
* @param {RestrictionFilter[]} [restrictions] - The restriction filters to apply to the autocomplete suggestions.
|
110
|
-
* @param {string[]} [removeProperties] - The properties to remove from the autocomplete suggestions.
|
111
|
-
* @param {string} [order] - The order in which to retrieve the autocomplete suggestions.
|
112
|
-
* @param {ApiFormData} [bodyRequest] - The request body for the autocomplete suggestions.
|
113
|
-
* @return {Promise<Observable<any>>} - A promise that resolves to an observable containing the autocomplete suggestions.
|
114
|
-
*/
|
115
|
-
async getAutocompleteByText(url, text, field, restrictions, removeProperties, order, bodyRequest) {
|
116
|
-
let httpParams = new HttpParams().set('offset', '0');
|
117
|
-
httpParams = httpParams.append('limit', '20');
|
118
|
-
if (order) {
|
119
|
-
httpParams = httpParams.append('order', order);
|
120
|
-
}
|
121
|
-
if (!text) {
|
122
|
-
text = '';
|
123
|
-
}
|
124
|
-
if (bodyRequest) {
|
125
|
-
let body = {};
|
126
|
-
if (text && text !== '') {
|
127
|
-
await this.processParams(field, text)
|
128
|
-
.then((data) => {
|
129
|
-
body = {
|
130
|
-
...bodyRequest,
|
131
|
-
filter: data
|
132
|
-
};
|
133
|
-
});
|
134
|
-
}
|
135
|
-
else {
|
136
|
-
body = JSON.parse(JSON.stringify(bodyRequest));
|
137
|
-
}
|
138
|
-
if (restrictions?.length) {
|
139
|
-
for (let r of restrictions) {
|
140
|
-
await this.processParams(r?.filter, r?.value?.toString())
|
141
|
-
.then((data) => {
|
142
|
-
let filtersAux = { ...body?.filter };
|
143
|
-
merge(filtersAux, data);
|
144
|
-
body = {
|
145
|
-
...body,
|
146
|
-
filter: filtersAux
|
147
|
-
};
|
148
|
-
httpParams = httpParams.set('form', JSON.stringify(body));
|
149
|
-
});
|
150
|
-
}
|
151
|
-
}
|
152
|
-
else {
|
153
|
-
httpParams = httpParams.append('form', JSON.stringify(body));
|
154
|
-
}
|
155
|
-
}
|
156
|
-
else {
|
157
|
-
if (text && text !== '') {
|
158
|
-
if (Array.isArray(field)) {
|
159
|
-
for (const f of field) {
|
160
|
-
httpParams = httpParams.append(f, '%' + text + '%');
|
161
|
-
}
|
162
|
-
}
|
163
|
-
else {
|
164
|
-
if (field?.includes('$like')) {
|
165
|
-
httpParams = httpParams.append(field, '%' + text + '%');
|
166
|
-
}
|
167
|
-
else if (field) {
|
168
|
-
httpParams = httpParams.append(field, text);
|
169
|
-
}
|
170
|
-
}
|
171
|
-
}
|
172
|
-
restrictions?.forEach((restriction) => {
|
173
|
-
if (restriction?.value) {
|
174
|
-
httpParams = httpParams.append(restriction?.filter, restriction.value?.toString());
|
175
|
-
}
|
176
|
-
});
|
177
|
-
}
|
178
|
-
this.httpOptions = { params: httpParams };
|
179
|
-
return this._httpClient
|
180
|
-
.get(url, this.httpOptions)
|
181
|
-
.pipe(map((result) => {
|
182
|
-
result?.data?.map((item) => {
|
183
|
-
removeProperties?.forEach((property) => {
|
184
|
-
delete item[property];
|
185
|
-
});
|
186
|
-
});
|
187
|
-
return result;
|
188
|
-
}));
|
189
|
-
}
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: AutocompleteService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
191
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: AutocompleteService, providedIn: 'root' }); }
|
192
|
-
}
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: AutocompleteService, decorators: [{
|
194
|
-
type: Injectable,
|
195
|
-
args: [{
|
196
|
-
providedIn: 'root'
|
197
|
-
}]
|
198
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWFjaG9zLWdlbmVyYWwtYXV0b2NvbXBsZXRlL3NyYy91dGlscy9zZXJ2aWNlcy9hdXRvY29tcGxldGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQzs7O0FBUWpDLE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7T0FJRztJQUNILFlBQ1ksV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFJM0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFGekIsQ0FBQztJQUlEOzs7Ozs7T0FNRztJQUNLLGFBQWEsQ0FBQyxPQUFzQyxFQUFFLEtBQWE7UUFDdkUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFFaEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN4QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRTt3QkFDckIsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOzRCQUN4RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO2dDQUM3QixLQUFLLENBQUMsTUFBTSxF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SSxDQUFDLFdBQVcsR0FBRyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ2xCLEdBQUcsQ0FBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUMvQixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDNUIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO29CQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDOzhHQXJNUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZoQixNQUFNOzsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtBcGlGb3JtRGF0YSwgUmVzdHJpY3Rpb25GaWx0ZXJ9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVNlcnZpY2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgdGhlIGNsYXNzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7SHR0cENsaWVudH0gX2h0dHBDbGllbnQgLSBUaGUgSHR0cENsaWVudCBpbnN0YW5jZSB0byBiZSB1c2VkIGJ5IHRoZSBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBodHRwT3B0aW9ucyA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGZpbHRlciBvYmplY3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZyB8IHVuZGVmaW5lZH0gZmlsdGVycyAtIFRoZSBmaWx0ZXJzIHRvIHByb2Nlc3MuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcHJvY2VzcyB0aGUgZmlsdGVycyB3aXRoLlxyXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaWx0ZXIgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NQYXJhbXMoZmlsdGVyczogc3RyaW5nW10gfCBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzRmlsdGVyU3RyaW5nKGYsIHZhbHVlKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZShmaWx0ZXIsIHJlc3ApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgPT09IGZpbHRlcnNbZmlsdGVycz8ubGVuZ3RoIC0gMV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlcnMgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzRmlsdGVyU3RyaW5nKGZpbHRlcnMsIHZhbHVlKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmaWx0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGZpbHRlciBzdHJpbmcgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsdGVyIC0gVGhlIGZpbHRlciBzdHJpbmcgdG8gcHJvY2Vzcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB1c2UgaW4gdGhlIHByb2Nlc3NpbmcuXHJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueT59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHByb2Nlc3NlZCByZXN1bHQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0ZpbHRlclN0cmluZyhmaWx0ZXI6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IGY6IGFueSA9IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBhcnJheUZpbHRlcnM6IHN0cmluZ1tdID0gZmlsdGVyPy5zcGxpdCgnWycpO1xyXG5cclxuICAgICAgICBpZiAoYXJyYXlGaWx0ZXJzPy5maW5kSW5kZXgoKGE6IHN0cmluZykgPT4gYSA9PT0gJ2ZpbHRlcicpID49IDApIHtcclxuICAgICAgICAgICAgYXJyYXlGaWx0ZXJzPy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZU9iamVjdEZpbHRlcnMoYXJyYXlGaWx0ZXJzLCB2YWx1ZSkudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGYgPSBkYXRhO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgb2JqZWN0IGZpbHRlcnMgYmFzZWQgb24gdGhlIGdpdmVuIGFycmF5IGFuZCB2YWx1ZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheSAtIFRoZSBhcnJheSBvZiBmaWx0ZXJzLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGZpbHRlcmVkLlxyXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBmaWx0ZXJlZCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXN5bmMgY3JlYXRlT2JqZWN0RmlsdGVycyhhcnJheTogc3RyaW5nW10sIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGZvciAobGV0IGZpbHRlciBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSBmaWx0ZXI/LnJlcGxhY2UoJ10nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtbZmlsdGVyXTogYXdhaXQgdGhpcy5jcmVhdGVPYmplY3RGaWx0ZXJzKGFycmF5LCB2YWx1ZSl9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gJyRsaWtlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7W2ZpbHRlcl06ICclJyArIHZhbHVlICsgJyUnfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtbZmlsdGVyXTogdmFsdWV9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdGV4dCBhbmQgb3RoZXIgb3B0aW9uYWwgcGFyYW1ldGVycy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0ZXh0XSAtIFRoZSB0ZXh0IHRvIHVzZSBmb3IgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBbZmllbGRdIC0gVGhlIGZpZWxkKHMpIHRvIGZpbHRlciB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zIGJ5LlxyXG4gICAgICogQHBhcmFtIHtSZXN0cmljdGlvbkZpbHRlcltdfSBbcmVzdHJpY3Rpb25zXSAtIFRoZSByZXN0cmljdGlvbiBmaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbcmVtb3ZlUHJvcGVydGllc10gLSBUaGUgcHJvcGVydGllcyB0byByZW1vdmUgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcmRlcl0gLSBUaGUgb3JkZXIgaW4gd2hpY2ggdG8gcmV0cmlldmUgdGhlIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7QXBpRm9ybURhdGF9IFtib2R5UmVxdWVzdF0gLSBUaGUgcmVxdWVzdCBib2R5IGZvciB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxyXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxPYnNlcnZhYmxlPGFueT4+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXV0b2NvbXBsZXRlQnlUZXh0KHVybDogc3RyaW5nLCB0ZXh0Pzogc3RyaW5nLCBmaWVsZD86IHN0cmluZ1tdIHwgc3RyaW5nLCByZXN0cmljdGlvbnM/OiBSZXN0cmljdGlvbkZpbHRlcltdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVQcm9wZXJ0aWVzPzogc3RyaW5nW10sIG9yZGVyPzogc3RyaW5nLCBib2R5UmVxdWVzdD86IEFwaUZvcm1EYXRhKTogUHJvbWlzZTxPYnNlcnZhYmxlPGFueT4+IHtcclxuXHJcbiAgICAgICAgbGV0IGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnb2Zmc2V0JywgJzAnKTtcclxuICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzIwJyk7XHJcblxyXG4gICAgICAgIGlmIChvcmRlcikge1xyXG4gICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoJ29yZGVyJywgb3JkZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0ZXh0KSB7XHJcbiAgICAgICAgICAgIHRleHQgPSAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChib2R5UmVxdWVzdCkge1xyXG4gICAgICAgICAgICBsZXQgYm9keTogQXBpRm9ybURhdGEgPSB7fTtcclxuICAgICAgICAgICAgaWYgKHRleHQgJiYgdGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc1BhcmFtcyhmaWVsZCwgdGV4dClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib2R5UmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYm9keVJlcXVlc3QpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3RyaWN0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCByIG9mIHJlc3RyaWN0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc1BhcmFtcyhyPy5maWx0ZXIsIHI/LnZhbHVlPy50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyc0F1eCA9IHsuLi5ib2R5Py5maWx0ZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZShmaWx0ZXJzQXV4LCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcnNBdXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ2Zvcm0nLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKCdmb3JtJywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRleHQgJiYgdGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoZiwgJyUnICsgdGV4dCArICclJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQ/LmluY2x1ZGVzKCckbGlrZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChmaWVsZCwgJyUnICsgdGV4dCArICclJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoZmllbGQsIHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zPy5mb3JFYWNoKChyZXN0cmljdGlvbjogUmVzdHJpY3Rpb25GaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN0cmljdGlvbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQocmVzdHJpY3Rpb24/LmZpbHRlciwgcmVzdHJpY3Rpb24udmFsdWU/LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnMgPSB7cGFyYW1zOiBodHRwUGFyYW1zfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnRcclxuICAgICAgICAgICAgLmdldDxhbnk+KHVybCwgdGhpcy5odHRwT3B0aW9ucylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Py5kYXRhPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVQcm9wZXJ0aWVzPy5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbVtwcm9wZXJ0eV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
@@ -1,22 +0,0 @@
|
|
1
|
-
declare type DisplayOptionItemType = 'divider' | 'path';
|
2
|
-
export interface DisplayOptionItem {
|
3
|
-
type: DisplayOptionItemType;
|
4
|
-
divider?: string;
|
5
|
-
path?: string[];
|
6
|
-
}
|
7
|
-
export interface DisplayOption {
|
8
|
-
firthLabel: DisplayOptionItem[];
|
9
|
-
secondLabel?: DisplayOptionItem[];
|
10
|
-
filterString?: string[] | string;
|
11
|
-
applyTranslate?: boolean;
|
12
|
-
}
|
13
|
-
export interface RestrictionFilter {
|
14
|
-
filter: string;
|
15
|
-
value: string | number;
|
16
|
-
}
|
17
|
-
export interface ApiFormData {
|
18
|
-
attributes?: string[];
|
19
|
-
filter?: any;
|
20
|
-
relations?: any;
|
21
|
-
}
|
22
|
-
export {};
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { PipeTransform } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export declare class I18nFieldPipe implements PipeTransform {
|
4
|
-
/**
|
5
|
-
* Transforms a value based on the specified language.
|
6
|
-
*
|
7
|
-
* @param {any} value - The value to be transformed.
|
8
|
-
* @param {string} lang - The language to use for transformation.
|
9
|
-
* @return {string} The transformed value.
|
10
|
-
*/
|
11
|
-
transform(value: any, lang: string): string;
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<I18nFieldPipe, never>;
|
13
|
-
static ɵpipe: i0.ɵɵPipeDeclaration<I18nFieldPipe, "i18nField", false>;
|
14
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
import * as i1 from "./i18n-field.pipe";
|
3
|
-
import * as i2 from "./resolve-property-path.pipe";
|
4
|
-
export declare class PipesModule {
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PipesModule, never>;
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<PipesModule, [typeof i1.I18nFieldPipe, typeof i2.ResolvePropertyPath], never, [typeof i1.I18nFieldPipe, typeof i2.ResolvePropertyPath]>;
|
7
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<PipesModule>;
|
8
|
-
}
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
2
|
-
import { Observable } from 'rxjs';
|
3
|
-
import { ApiFormData, RestrictionFilter } from '../interfaces/interfaces';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export declare class AutocompleteService {
|
6
|
-
private _httpClient;
|
7
|
-
/**
|
8
|
-
* Constructor function for the class.
|
9
|
-
*
|
10
|
-
* @param {HttpClient} _httpClient - The HttpClient instance to be used by the class.
|
11
|
-
*/
|
12
|
-
constructor(_httpClient: HttpClient);
|
13
|
-
private httpOptions;
|
14
|
-
/**
|
15
|
-
* Processes the parameters and returns a Promise that resolves with the filter object.
|
16
|
-
*
|
17
|
-
* @param {string[] | string | undefined} filters - The filters to process.
|
18
|
-
* @param {string} value - The value to process the filters with.
|
19
|
-
* @return {Promise<any>} A Promise that resolves with the filter object.
|
20
|
-
*/
|
21
|
-
private processParams;
|
22
|
-
/**
|
23
|
-
* Processes the filter string and returns the result.
|
24
|
-
*
|
25
|
-
* @param {string} filter - The filter string to process.
|
26
|
-
* @param {string} value - The value to use in the processing.
|
27
|
-
* @return {Promise<any>} - A promise that resolves to the processed result.
|
28
|
-
*/
|
29
|
-
private processFilterString;
|
30
|
-
/**
|
31
|
-
* Creates object filters based on the given array and value.
|
32
|
-
*
|
33
|
-
* @param {string[]} array - The array of filters.
|
34
|
-
* @param {string} value - The value to be filtered.
|
35
|
-
* @return {Promise<any>} - A promise that resolves to the filtered object.
|
36
|
-
*/
|
37
|
-
private createObjectFilters;
|
38
|
-
/**
|
39
|
-
* Retrieves autocomplete suggestions based on the provided text and other optional parameters.
|
40
|
-
*
|
41
|
-
* @param {string} url - The URL to send the request to.
|
42
|
-
* @param {string} [text] - The text to use for autocomplete suggestions. Defaults to an empty string.
|
43
|
-
* @param {string[] | string} [field] - The field(s) to filter the autocomplete suggestions by.
|
44
|
-
* @param {RestrictionFilter[]} [restrictions] - The restriction filters to apply to the autocomplete suggestions.
|
45
|
-
* @param {string[]} [removeProperties] - The properties to remove from the autocomplete suggestions.
|
46
|
-
* @param {string} [order] - The order in which to retrieve the autocomplete suggestions.
|
47
|
-
* @param {ApiFormData} [bodyRequest] - The request body for the autocomplete suggestions.
|
48
|
-
* @return {Promise<Observable<any>>} - A promise that resolves to an observable containing the autocomplete suggestions.
|
49
|
-
*/
|
50
|
-
getAutocompleteByText(url: string, text?: string, field?: string[] | string, restrictions?: RestrictionFilter[], removeProperties?: string[], order?: string, bodyRequest?: ApiFormData): Promise<Observable<any>>;
|
51
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteService, never>;
|
52
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AutocompleteService>;
|
53
|
-
}
|