@masterteam/components 0.0.169 → 0.0.170
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/fesm2022/masterteam-components-runtime-action.mjs +69 -34
- package/fesm2022/masterteam-components-runtime-action.mjs.map +1 -1
- package/fesm2022/masterteam-components-table.mjs +8 -2
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/package.json +1 -1
- package/types/masterteam-components-runtime-action.d.ts +2 -1
|
@@ -213,52 +213,87 @@ class RuntimeActionRunner {
|
|
|
213
213
|
if (!method || !url || action.isAvailable === false) {
|
|
214
214
|
return cancelledOrError(action, 'error', new Error(this.notExecutableMessage(action)));
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
const performRun = (formValue) => {
|
|
217
|
+
let payload = buildActionPayload(action, formValue, options.externalPayloadResolvers ?? {});
|
|
218
|
+
if (options.transformPayload) {
|
|
219
|
+
payload = options.transformPayload(payload, action);
|
|
220
|
+
}
|
|
221
|
+
const missing = getMissingRequiredPayloadKeys(action, payload);
|
|
222
|
+
if (missing.length) {
|
|
223
|
+
const message = this.transloco.translate('components.runtimeAction.missingArgs', { action: resolveActionLabel(action), missing: missing.join(', ') });
|
|
224
|
+
if (!options.silent) {
|
|
225
|
+
this.toast.error(message);
|
|
226
|
+
}
|
|
227
|
+
return Promise.resolve({
|
|
228
|
+
status: 'error',
|
|
229
|
+
actionKey: action.actionKey,
|
|
230
|
+
afterSuccess: null,
|
|
231
|
+
error: new Error(message),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
return this.run(action, method, url, payload, options);
|
|
235
|
+
};
|
|
217
236
|
if (action.needConfirmation) {
|
|
218
|
-
|
|
219
|
-
|
|
237
|
+
if (hasActionFormFields(action) && this.confirmDialogClass) {
|
|
238
|
+
return this.runWithFormDialog(action, performRun);
|
|
239
|
+
}
|
|
240
|
+
const confirmed = await this.confirmPlain(action);
|
|
241
|
+
if (!confirmed) {
|
|
220
242
|
return {
|
|
221
243
|
status: 'cancelled',
|
|
222
244
|
actionKey: action.actionKey,
|
|
223
245
|
afterSuccess: null,
|
|
224
246
|
};
|
|
225
247
|
}
|
|
226
|
-
formValue = dialogResult ?? undefined;
|
|
227
|
-
}
|
|
228
|
-
let payload = buildActionPayload(action, formValue, options.externalPayloadResolvers ?? {});
|
|
229
|
-
if (options.transformPayload) {
|
|
230
|
-
payload = options.transformPayload(payload, action);
|
|
231
248
|
}
|
|
232
|
-
|
|
233
|
-
if (missing.length) {
|
|
234
|
-
const message = this.transloco.translate('components.runtimeAction.missingArgs', { action: resolveActionLabel(action), missing: missing.join(', ') });
|
|
235
|
-
if (!options.silent) {
|
|
236
|
-
this.toast.error(message);
|
|
237
|
-
}
|
|
238
|
-
return {
|
|
239
|
-
status: 'error',
|
|
240
|
-
actionKey: action.actionKey,
|
|
241
|
-
afterSuccess: null,
|
|
242
|
-
error: new Error(message),
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
return this.run(action, method, url, payload, options);
|
|
249
|
+
return performRun();
|
|
246
250
|
}
|
|
247
|
-
|
|
248
|
-
|
|
251
|
+
runWithFormDialog(action, performRun) {
|
|
252
|
+
return new Promise((resolve) => {
|
|
253
|
+
let pendingRun = null;
|
|
254
|
+
let finalResult = null;
|
|
249
255
|
const ref = this.modal.openModal(this.confirmDialogClass, 'dialog', {
|
|
250
256
|
header: resolveActionLabel(action),
|
|
251
257
|
width: '40rem',
|
|
252
258
|
dismissableMask: true,
|
|
253
|
-
inputValues: {
|
|
259
|
+
inputValues: {
|
|
260
|
+
action,
|
|
261
|
+
onSubmit: async (value) => {
|
|
262
|
+
pendingRun = performRun(value);
|
|
263
|
+
const result = await pendingRun;
|
|
264
|
+
finalResult = result;
|
|
265
|
+
return result.status === 'success';
|
|
266
|
+
},
|
|
267
|
+
},
|
|
254
268
|
});
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
269
|
+
ref.onClose.subscribe(async () => {
|
|
270
|
+
if (finalResult) {
|
|
271
|
+
resolve(finalResult);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (pendingRun) {
|
|
275
|
+
try {
|
|
276
|
+
resolve(await pendingRun);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
resolve({
|
|
280
|
+
status: 'error',
|
|
281
|
+
actionKey: action.actionKey,
|
|
282
|
+
afterSuccess: null,
|
|
283
|
+
error,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
resolve({
|
|
289
|
+
status: 'cancelled',
|
|
290
|
+
actionKey: action.actionKey,
|
|
291
|
+
afterSuccess: null,
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
confirmPlain(action) {
|
|
262
297
|
return new Promise((resolve) => {
|
|
263
298
|
const label = resolveActionLabel(action);
|
|
264
299
|
this.confirmation.confirm({
|
|
@@ -267,8 +302,8 @@ class RuntimeActionRunner {
|
|
|
267
302
|
message: this.transloco.translate('components.runtimeAction.confirmDefault', { action: label }),
|
|
268
303
|
acceptLabel: label,
|
|
269
304
|
icon: 'alert.alert-triangle',
|
|
270
|
-
accept: () => resolve(
|
|
271
|
-
reject: () => resolve(
|
|
305
|
+
accept: () => resolve(true),
|
|
306
|
+
reject: () => resolve(false),
|
|
272
307
|
});
|
|
273
308
|
});
|
|
274
309
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-runtime-action.mjs","sources":["../../../../packages/masterteam/components/runtime-action/runtime-action.types.ts","../../../../packages/masterteam/components/runtime-action/payload-builder.ts","../../../../packages/masterteam/components/runtime-action/runtime-action-context.store.ts","../../../../packages/masterteam/components/runtime-action/runtime-action.runner.ts","../../../../packages/masterteam/components/runtime-action/masterteam-components-runtime-action.ts"],"sourcesContent":["export interface RuntimeActionTranslatable {\n display?: string;\n en?: string;\n ar?: string;\n}\n\nexport type RuntimeActionAfterSuccess = 'refresh' | 'close';\n\nexport interface RuntimeActionReason {\n source?: string;\n code?: string;\n message?: string;\n blocking?: boolean;\n details?: string | null;\n ruleKey?: string | null;\n requestId?: number | null;\n requestStatus?: string | null;\n requestSchemaId?: number | null;\n relatedRequestIds?: number[];\n}\n\nexport interface RuntimeAction {\n actionKey: string;\n actionName?: RuntimeActionTranslatable | string | null;\n httpMethod?: string | null;\n url?: string | null;\n isAvailable?: boolean;\n afterSuccess?: RuntimeActionAfterSuccess | null;\n stepIds?: Array<number | string>;\n needConfirmation?: boolean;\n payloadKeys?: string[];\n requiredPayloadKeys?: string[];\n payloadTemplate?: Record<string, unknown> | null;\n formId?: string | number | null;\n\n targetType?: string;\n targetId?: number;\n moduleKey?: string;\n operationKey?: string;\n primaryReasonCode?: string | null;\n reasons?: RuntimeActionReason[];\n}\n\nexport type RuntimeActionStatus = 'success' | 'error' | 'cancelled';\n\nexport interface RuntimeActionResult {\n status: RuntimeActionStatus;\n actionKey: string;\n afterSuccess: RuntimeActionAfterSuccess | null;\n response?: unknown;\n error?: unknown;\n}\n\nexport interface RuntimeActionExecuteOptions {\n externalPayloadResolvers?: Record<string, () => unknown>;\n defaultAfterSuccess?: RuntimeActionAfterSuccess;\n successMessage?: (response: unknown, action: RuntimeAction) => string;\n errorMessage?: (error: unknown, action: RuntimeAction) => string;\n transformPayload?: (\n payload: Record<string, unknown> | undefined,\n action: RuntimeAction,\n ) => Record<string, unknown> | undefined;\n silent?: boolean;\n}\n\nexport interface RuntimeActionFormValue {\n requestPropertyId?: number;\n propertyKey: string;\n value: unknown;\n}\n\nexport interface RuntimeActionFormSource {\n getSubmitValues(): RuntimeActionFormValue[] | undefined;\n}\n\nexport function resolveActionLabel(action: RuntimeAction): string {\n const name = action.actionName;\n if (typeof name === 'string') {\n return name || action.actionKey;\n }\n return name?.display || action.actionKey;\n}\n","import { RuntimeAction } from './runtime-action.types';\n\nexport function buildActionPayload(\n action: RuntimeAction,\n formValue: Record<string, unknown> | undefined,\n externalResolvers: Record<string, () => unknown> = {},\n): Record<string, unknown> | undefined {\n const templatePayload = buildTemplatePayload(\n action,\n formValue,\n externalResolvers,\n );\n if (templatePayload) {\n return templatePayload;\n }\n\n const payloadKeys = action.payloadKeys ?? [];\n if (!payloadKeys.length) {\n return undefined;\n }\n\n const payload: Record<string, unknown> = {};\n\n for (const key of payloadKeys) {\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = resolveExternalPayloadValue(\n key,\n action,\n externalResolvers,\n );\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : undefined;\n}\n\nfunction buildTemplatePayload(\n action: RuntimeAction,\n formValue: Record<string, unknown> | undefined,\n externalResolvers: Record<string, () => unknown>,\n): Record<string, unknown> | null {\n const template = action.payloadTemplate as Record<string, unknown> | null;\n if (!template || typeof template !== 'object') {\n return null;\n }\n\n const payload: Record<string, unknown> = {};\n const payloadKeys = action.payloadKeys ?? Object.keys(template);\n\n for (const key of payloadKeys) {\n if (key === 'fields') {\n payload[key] = resolveTemplateFieldsValue(action, template, formValue);\n continue;\n }\n\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = resolveExternalPayloadValue(\n key,\n action,\n externalResolvers,\n );\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n if (template[key] !== undefined) {\n payload[key] = template[key];\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : null;\n}\n\nfunction resolveExternalPayloadValue(\n key: string,\n action: RuntimeAction,\n externalResolvers: Record<string, () => unknown>,\n): unknown {\n const resolver = externalResolvers[key];\n if (resolver) {\n return resolver();\n }\n\n if (key === 'stepId') {\n return action.stepIds?.[0];\n }\n\n return undefined;\n}\n\nexport function normalizePayloadValue(key: string, value: unknown): unknown {\n if (key === 'attachments') {\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n }\n\n return value;\n}\n\nexport function resolveDefaultPayloadValue(key: string): unknown {\n switch (key) {\n case 'attachments':\n return [];\n case 'delegatedUser':\n case 'note':\n case 'reason':\n return null;\n case 'values':\n return [];\n default:\n return undefined;\n }\n}\n\nexport function getMissingRequiredPayloadKeys(\n action: RuntimeAction,\n payload: Record<string, unknown> | undefined,\n): string[] {\n return (action.requiredPayloadKeys ?? []).filter((key) =>\n isMissingPayloadValue(payload?.[key]),\n );\n}\n\nexport function isMissingPayloadValue(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n}\n\nexport function normalizeHttpMethod(\n value: string | null | undefined,\n): string | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const method = value.trim().toUpperCase();\n return method.length ? method : null;\n}\n\nexport function methodSupportsBody(method: string): boolean {\n return ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);\n}\n\nexport function buildRequestOptions(\n method: string,\n payload: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!payload || !methodSupportsBody(method)) {\n return { observe: 'body' };\n }\n\n return {\n body: payload,\n observe: 'body',\n };\n}\n\nexport function hasActionFormFields(action: RuntimeAction): boolean {\n return (\n (action.payloadKeys ?? []).some((key) =>\n ['delegatedUser', 'reason', 'note', 'attachments'].includes(key),\n ) || hasProgressTemplateField(action)\n );\n}\n\nexport function hasProgressTemplateField(action: RuntimeAction): boolean {\n const fields = (action.payloadTemplate as { fields?: unknown } | null)\n ?.fields;\n return (\n Array.isArray(fields) &&\n fields.some(\n (field) =>\n !!field &&\n typeof field === 'object' &&\n (field as { propertyKey?: string }).propertyKey === 'Progress',\n )\n );\n}\n\nfunction resolveTemplateFieldsValue(\n action: RuntimeAction,\n template: Record<string, unknown>,\n formValue: Record<string, unknown> | undefined,\n): unknown {\n const templateFields = template['fields'];\n if (!Array.isArray(templateFields)) {\n return formValue?.['fields'] ?? templateFields;\n }\n\n if (!hasProgressTemplateField(action)) {\n return formValue?.['fields'] ?? templateFields;\n }\n\n return templateFields.map((field) => {\n if (\n !field ||\n typeof field !== 'object' ||\n (field as { propertyKey?: string }).propertyKey !== 'Progress'\n ) {\n return field;\n }\n\n return {\n ...(field as Record<string, unknown>),\n value: formValue?.['progress'] ?? (field as { value?: unknown }).value,\n };\n });\n}\n","import { Injectable, signal } from '@angular/core';\n\nimport {\n RuntimeActionFormSource,\n RuntimeActionFormValue,\n} from './runtime-action.types';\n\n@Injectable()\nexport class RuntimeActionContextStore {\n private readonly formSource = signal<RuntimeActionFormSource | null>(null);\n\n setFormSource(source: RuntimeActionFormSource | null): void {\n this.formSource.set(source);\n }\n\n resolveFormValues(): RuntimeActionFormValue[] {\n const values = this.formSource()?.getSubmitValues();\n return Array.isArray(values)\n ? values.map((value) => ({\n requestPropertyId: value.requestPropertyId,\n propertyKey: value.propertyKey,\n value: value.value,\n }))\n : [];\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, InjectionToken, Type, inject } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ToastService } from '@masterteam/components/toast';\r\nimport { firstValueFrom, map } from 'rxjs';\r\n\r\nimport {\r\n buildActionPayload,\r\n buildRequestOptions,\r\n getMissingRequiredPayloadKeys,\r\n hasActionFormFields,\r\n normalizeHttpMethod,\r\n} from './payload-builder';\r\nimport {\r\n RuntimeAction,\r\n RuntimeActionAfterSuccess,\r\n RuntimeActionExecuteOptions,\r\n RuntimeActionResult,\r\n resolveActionLabel,\r\n} from './runtime-action.types';\r\n\r\nexport const RUNTIME_ACTION_CONFIRM_DIALOG = new InjectionToken<Type<unknown>>(\r\n 'RUNTIME_ACTION_CONFIRM_DIALOG',\r\n);\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeActionRunner {\r\n private readonly http = inject(HttpClient);\r\n private readonly confirmation = inject(ConfirmationService);\r\n private readonly modal = inject(ModalService);\r\n private readonly toast = inject(ToastService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly confirmDialogClass = inject(RUNTIME_ACTION_CONFIRM_DIALOG, {\r\n optional: true,\r\n });\r\n\r\n async execute(\r\n action: RuntimeAction,\r\n options: RuntimeActionExecuteOptions = {},\r\n ): Promise<RuntimeActionResult> {\r\n const method = normalizeHttpMethod(action.httpMethod);\r\n const url = action.url?.trim();\r\n\r\n if (!method || !url || action.isAvailable === false) {\r\n return cancelledOrError(\r\n action,\r\n 'error',\r\n new Error(this.notExecutableMessage(action)),\r\n );\r\n }\r\n\r\n let formValue: Record<string, unknown> | undefined;\r\n\r\n if (action.needConfirmation) {\r\n const dialogResult = await this.confirm(action);\r\n if (dialogResult === 'cancelled') {\r\n return {\r\n status: 'cancelled',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n };\r\n }\r\n formValue = dialogResult ?? undefined;\r\n }\r\n\r\n let payload = buildActionPayload(\r\n action,\r\n formValue,\r\n options.externalPayloadResolvers ?? {},\r\n );\r\n\r\n if (options.transformPayload) {\r\n payload = options.transformPayload(payload, action);\r\n }\r\n\r\n const missing = getMissingRequiredPayloadKeys(action, payload);\r\n if (missing.length) {\r\n const message = this.transloco.translate(\r\n 'components.runtimeAction.missingArgs',\r\n { action: resolveActionLabel(action), missing: missing.join(', ') },\r\n );\r\n if (!options.silent) {\r\n this.toast.error(message);\r\n }\r\n return {\r\n status: 'error',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error: new Error(message),\r\n };\r\n }\r\n\r\n return this.run(action, method, url, payload, options);\r\n }\r\n\r\n private async confirm(\r\n action: RuntimeAction,\r\n ): Promise<'cancelled' | Record<string, unknown> | null> {\r\n if (hasActionFormFields(action) && this.confirmDialogClass) {\r\n const ref = this.modal.openModal(this.confirmDialogClass, 'dialog', {\r\n header: resolveActionLabel(action),\r\n width: '40rem',\r\n dismissableMask: true,\r\n inputValues: { action },\r\n });\r\n\r\n const value = await firstValueFrom(ref.onClose);\r\n const formValue = value as Record<string, unknown> | null | undefined;\r\n if (formValue == null) {\r\n return 'cancelled';\r\n }\r\n return formValue;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n const label = resolveActionLabel(action);\r\n this.confirmation.confirm({\r\n type: 'dialog',\r\n header: label,\r\n message: this.transloco.translate(\r\n 'components.runtimeAction.confirmDefault',\r\n { action: label },\r\n ),\r\n acceptLabel: label,\r\n icon: 'alert.alert-triangle',\r\n accept: () => resolve(null),\r\n reject: () => resolve('cancelled'),\r\n });\r\n });\r\n }\r\n\r\n private async run(\r\n action: RuntimeAction,\r\n method: string,\r\n url: string,\r\n payload: Record<string, unknown> | undefined,\r\n options: RuntimeActionExecuteOptions,\r\n ): Promise<RuntimeActionResult> {\r\n const fallbackErrorMessage = this.transloco.translate(\r\n 'components.runtimeAction.executeFailed',\r\n { action: resolveActionLabel(action) },\r\n );\r\n\r\n try {\r\n const response = await firstValueFrom(\r\n this.http\r\n .request<unknown>(method, url, buildRequestOptions(method, payload))\r\n .pipe(\r\n map((res) => ensureSuccessfulEnvelope(res, fallbackErrorMessage)),\r\n ),\r\n );\r\n\r\n if (options.successMessage && !options.silent) {\r\n this.toast.success(options.successMessage(response, action));\r\n }\r\n\r\n return {\r\n status: 'success',\r\n actionKey: action.actionKey,\r\n afterSuccess: resolveAfterSuccess(action, options.defaultAfterSuccess),\r\n response,\r\n };\r\n } catch (error) {\r\n const message =\r\n options.errorMessage?.(error, action) ??\r\n resolveHttpErrorMessage(error, fallbackErrorMessage);\r\n\r\n if (!options.silent) {\r\n this.toast.error(message);\r\n }\r\n\r\n return {\r\n status: 'error',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error,\r\n };\r\n }\r\n }\r\n\r\n private notExecutableMessage(action: RuntimeAction): string {\r\n if (action.isAvailable === false) {\r\n return this.transloco.translate('components.runtimeAction.notAvailable', {\r\n action: action.actionKey,\r\n });\r\n }\r\n if (!action.url) {\r\n return this.transloco.translate('components.runtimeAction.noUrl', {\r\n action: action.actionKey,\r\n });\r\n }\r\n return this.transloco.translate('components.runtimeAction.noHttpMethod', {\r\n action: action.actionKey,\r\n });\r\n }\r\n}\r\n\r\nfunction cancelledOrError(\r\n action: RuntimeAction,\r\n status: 'error' | 'cancelled',\r\n error?: unknown,\r\n): RuntimeActionResult {\r\n return {\r\n status,\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error,\r\n };\r\n}\r\n\r\nfunction resolveAfterSuccess(\r\n action: RuntimeAction,\r\n fallback: RuntimeActionAfterSuccess | undefined,\r\n): RuntimeActionAfterSuccess {\r\n if (action.afterSuccess === 'close' || action.afterSuccess === 'refresh') {\r\n return action.afterSuccess;\r\n }\r\n return fallback ?? 'refresh';\r\n}\r\n\r\nfunction ensureSuccessfulEnvelope(\r\n response: unknown,\r\n fallback: string,\r\n): unknown {\r\n if (!response || typeof response !== 'object') {\r\n return response;\r\n }\r\n\r\n const envelope = response as { code?: number };\r\n if (typeof envelope.code === 'number' && envelope.code !== 1) {\r\n throw new Error(resolveEnvelopeErrorMessage(response, fallback));\r\n }\r\n return response;\r\n}\r\n\r\nfunction resolveEnvelopeErrorMessage(\r\n response: unknown,\r\n fallback: string,\r\n): string {\r\n if (!response || typeof response !== 'object') {\r\n return fallback;\r\n }\r\n const envelope = response as {\r\n message?: string | null;\r\n errors?: { message?: string } | null;\r\n };\r\n return envelope.errors?.message ?? envelope.message ?? fallback;\r\n}\r\n\r\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\r\n if (!error || typeof error !== 'object') {\r\n return fallback;\r\n }\r\n const httpError = error as {\r\n message?: string;\r\n error?: { message?: string | null } | null;\r\n };\r\n return httpError.error?.message ?? httpError.message ?? fallback;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-components-runtime-action.mjs","sources":["../../../../packages/masterteam/components/runtime-action/runtime-action.types.ts","../../../../packages/masterteam/components/runtime-action/payload-builder.ts","../../../../packages/masterteam/components/runtime-action/runtime-action-context.store.ts","../../../../packages/masterteam/components/runtime-action/runtime-action.runner.ts","../../../../packages/masterteam/components/runtime-action/masterteam-components-runtime-action.ts"],"sourcesContent":["export interface RuntimeActionTranslatable {\n display?: string;\n en?: string;\n ar?: string;\n}\n\nexport type RuntimeActionAfterSuccess = 'refresh' | 'close';\n\nexport interface RuntimeActionReason {\n source?: string;\n code?: string;\n message?: string;\n blocking?: boolean;\n details?: string | null;\n ruleKey?: string | null;\n requestId?: number | null;\n requestStatus?: string | null;\n requestSchemaId?: number | null;\n relatedRequestIds?: number[];\n}\n\nexport interface RuntimeAction {\n actionKey: string;\n actionName?: RuntimeActionTranslatable | string | null;\n httpMethod?: string | null;\n url?: string | null;\n isAvailable?: boolean;\n afterSuccess?: RuntimeActionAfterSuccess | null;\n stepIds?: Array<number | string>;\n needConfirmation?: boolean;\n payloadKeys?: string[];\n requiredPayloadKeys?: string[];\n payloadTemplate?: Record<string, unknown> | null;\n formId?: string | number | null;\n\n targetType?: string;\n targetId?: number;\n moduleKey?: string;\n operationKey?: string;\n primaryReasonCode?: string | null;\n reasons?: RuntimeActionReason[];\n}\n\nexport type RuntimeActionStatus = 'success' | 'error' | 'cancelled';\n\nexport interface RuntimeActionResult {\n status: RuntimeActionStatus;\n actionKey: string;\n afterSuccess: RuntimeActionAfterSuccess | null;\n response?: unknown;\n error?: unknown;\n}\n\nexport interface RuntimeActionExecuteOptions {\n externalPayloadResolvers?: Record<string, () => unknown>;\n defaultAfterSuccess?: RuntimeActionAfterSuccess;\n successMessage?: (response: unknown, action: RuntimeAction) => string;\n errorMessage?: (error: unknown, action: RuntimeAction) => string;\n transformPayload?: (\n payload: Record<string, unknown> | undefined,\n action: RuntimeAction,\n ) => Record<string, unknown> | undefined;\n silent?: boolean;\n}\n\nexport interface RuntimeActionFormValue {\n requestPropertyId?: number;\n propertyKey: string;\n value: unknown;\n}\n\nexport interface RuntimeActionFormSource {\n getSubmitValues(): RuntimeActionFormValue[] | undefined;\n}\n\nexport function resolveActionLabel(action: RuntimeAction): string {\n const name = action.actionName;\n if (typeof name === 'string') {\n return name || action.actionKey;\n }\n return name?.display || action.actionKey;\n}\n","import { RuntimeAction } from './runtime-action.types';\n\nexport function buildActionPayload(\n action: RuntimeAction,\n formValue: Record<string, unknown> | undefined,\n externalResolvers: Record<string, () => unknown> = {},\n): Record<string, unknown> | undefined {\n const templatePayload = buildTemplatePayload(\n action,\n formValue,\n externalResolvers,\n );\n if (templatePayload) {\n return templatePayload;\n }\n\n const payloadKeys = action.payloadKeys ?? [];\n if (!payloadKeys.length) {\n return undefined;\n }\n\n const payload: Record<string, unknown> = {};\n\n for (const key of payloadKeys) {\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = resolveExternalPayloadValue(\n key,\n action,\n externalResolvers,\n );\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : undefined;\n}\n\nfunction buildTemplatePayload(\n action: RuntimeAction,\n formValue: Record<string, unknown> | undefined,\n externalResolvers: Record<string, () => unknown>,\n): Record<string, unknown> | null {\n const template = action.payloadTemplate as Record<string, unknown> | null;\n if (!template || typeof template !== 'object') {\n return null;\n }\n\n const payload: Record<string, unknown> = {};\n const payloadKeys = action.payloadKeys ?? Object.keys(template);\n\n for (const key of payloadKeys) {\n if (key === 'fields') {\n payload[key] = resolveTemplateFieldsValue(action, template, formValue);\n continue;\n }\n\n const formFieldValue = formValue?.[key];\n if (formFieldValue !== undefined) {\n payload[key] = normalizePayloadValue(key, formFieldValue);\n continue;\n }\n\n const externalValue = resolveExternalPayloadValue(\n key,\n action,\n externalResolvers,\n );\n if (externalValue !== undefined) {\n payload[key] = externalValue;\n continue;\n }\n\n if (template[key] !== undefined) {\n payload[key] = template[key];\n continue;\n }\n\n const defaultValue = resolveDefaultPayloadValue(key);\n if (defaultValue !== undefined) {\n payload[key] = defaultValue;\n }\n }\n\n return Object.keys(payload).length ? payload : null;\n}\n\nfunction resolveExternalPayloadValue(\n key: string,\n action: RuntimeAction,\n externalResolvers: Record<string, () => unknown>,\n): unknown {\n const resolver = externalResolvers[key];\n if (resolver) {\n return resolver();\n }\n\n if (key === 'stepId') {\n return action.stepIds?.[0];\n }\n\n return undefined;\n}\n\nexport function normalizePayloadValue(key: string, value: unknown): unknown {\n if (key === 'attachments') {\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n }\n\n return value;\n}\n\nexport function resolveDefaultPayloadValue(key: string): unknown {\n switch (key) {\n case 'attachments':\n return [];\n case 'delegatedUser':\n case 'note':\n case 'reason':\n return null;\n case 'values':\n return [];\n default:\n return undefined;\n }\n}\n\nexport function getMissingRequiredPayloadKeys(\n action: RuntimeAction,\n payload: Record<string, unknown> | undefined,\n): string[] {\n return (action.requiredPayloadKeys ?? []).filter((key) =>\n isMissingPayloadValue(payload?.[key]),\n );\n}\n\nexport function isMissingPayloadValue(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n}\n\nexport function normalizeHttpMethod(\n value: string | null | undefined,\n): string | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const method = value.trim().toUpperCase();\n return method.length ? method : null;\n}\n\nexport function methodSupportsBody(method: string): boolean {\n return ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);\n}\n\nexport function buildRequestOptions(\n method: string,\n payload: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!payload || !methodSupportsBody(method)) {\n return { observe: 'body' };\n }\n\n return {\n body: payload,\n observe: 'body',\n };\n}\n\nexport function hasActionFormFields(action: RuntimeAction): boolean {\n return (\n (action.payloadKeys ?? []).some((key) =>\n ['delegatedUser', 'reason', 'note', 'attachments'].includes(key),\n ) || hasProgressTemplateField(action)\n );\n}\n\nexport function hasProgressTemplateField(action: RuntimeAction): boolean {\n const fields = (action.payloadTemplate as { fields?: unknown } | null)\n ?.fields;\n return (\n Array.isArray(fields) &&\n fields.some(\n (field) =>\n !!field &&\n typeof field === 'object' &&\n (field as { propertyKey?: string }).propertyKey === 'Progress',\n )\n );\n}\n\nfunction resolveTemplateFieldsValue(\n action: RuntimeAction,\n template: Record<string, unknown>,\n formValue: Record<string, unknown> | undefined,\n): unknown {\n const templateFields = template['fields'];\n if (!Array.isArray(templateFields)) {\n return formValue?.['fields'] ?? templateFields;\n }\n\n if (!hasProgressTemplateField(action)) {\n return formValue?.['fields'] ?? templateFields;\n }\n\n return templateFields.map((field) => {\n if (\n !field ||\n typeof field !== 'object' ||\n (field as { propertyKey?: string }).propertyKey !== 'Progress'\n ) {\n return field;\n }\n\n return {\n ...(field as Record<string, unknown>),\n value: formValue?.['progress'] ?? (field as { value?: unknown }).value,\n };\n });\n}\n","import { Injectable, signal } from '@angular/core';\n\nimport {\n RuntimeActionFormSource,\n RuntimeActionFormValue,\n} from './runtime-action.types';\n\n@Injectable()\nexport class RuntimeActionContextStore {\n private readonly formSource = signal<RuntimeActionFormSource | null>(null);\n\n setFormSource(source: RuntimeActionFormSource | null): void {\n this.formSource.set(source);\n }\n\n resolveFormValues(): RuntimeActionFormValue[] {\n const values = this.formSource()?.getSubmitValues();\n return Array.isArray(values)\n ? values.map((value) => ({\n requestPropertyId: value.requestPropertyId,\n propertyKey: value.propertyKey,\n value: value.value,\n }))\n : [];\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, InjectionToken, Type, inject } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ToastService } from '@masterteam/components/toast';\r\nimport { firstValueFrom, map } from 'rxjs';\r\n\r\nimport {\r\n buildActionPayload,\r\n buildRequestOptions,\r\n getMissingRequiredPayloadKeys,\r\n hasActionFormFields,\r\n normalizeHttpMethod,\r\n} from './payload-builder';\r\nimport {\r\n RuntimeAction,\r\n RuntimeActionAfterSuccess,\r\n RuntimeActionExecuteOptions,\r\n RuntimeActionResult,\r\n resolveActionLabel,\r\n} from './runtime-action.types';\r\n\r\nexport const RUNTIME_ACTION_CONFIRM_DIALOG = new InjectionToken<Type<unknown>>(\r\n 'RUNTIME_ACTION_CONFIRM_DIALOG',\r\n);\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeActionRunner {\r\n private readonly http = inject(HttpClient);\r\n private readonly confirmation = inject(ConfirmationService);\r\n private readonly modal = inject(ModalService);\r\n private readonly toast = inject(ToastService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly confirmDialogClass = inject(RUNTIME_ACTION_CONFIRM_DIALOG, {\r\n optional: true,\r\n });\r\n\r\n async execute(\r\n action: RuntimeAction,\r\n options: RuntimeActionExecuteOptions = {},\r\n ): Promise<RuntimeActionResult> {\r\n const method = normalizeHttpMethod(action.httpMethod);\r\n const url = action.url?.trim();\r\n\r\n if (!method || !url || action.isAvailable === false) {\r\n return cancelledOrError(\r\n action,\r\n 'error',\r\n new Error(this.notExecutableMessage(action)),\r\n );\r\n }\r\n\r\n const performRun = (\r\n formValue?: Record<string, unknown>,\r\n ): Promise<RuntimeActionResult> => {\r\n let payload = buildActionPayload(\r\n action,\r\n formValue,\r\n options.externalPayloadResolvers ?? {},\r\n );\r\n\r\n if (options.transformPayload) {\r\n payload = options.transformPayload(payload, action);\r\n }\r\n\r\n const missing = getMissingRequiredPayloadKeys(action, payload);\r\n if (missing.length) {\r\n const message = this.transloco.translate(\r\n 'components.runtimeAction.missingArgs',\r\n { action: resolveActionLabel(action), missing: missing.join(', ') },\r\n );\r\n if (!options.silent) {\r\n this.toast.error(message);\r\n }\r\n return Promise.resolve({\r\n status: 'error',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error: new Error(message),\r\n });\r\n }\r\n\r\n return this.run(action, method, url, payload, options);\r\n };\r\n\r\n if (action.needConfirmation) {\r\n if (hasActionFormFields(action) && this.confirmDialogClass) {\r\n return this.runWithFormDialog(action, performRun);\r\n }\r\n\r\n const confirmed = await this.confirmPlain(action);\r\n if (!confirmed) {\r\n return {\r\n status: 'cancelled',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n };\r\n }\r\n }\r\n\r\n return performRun();\r\n }\r\n\r\n private runWithFormDialog(\r\n action: RuntimeAction,\r\n performRun: (\r\n value: Record<string, unknown>,\r\n ) => Promise<RuntimeActionResult>,\r\n ): Promise<RuntimeActionResult> {\r\n return new Promise((resolve) => {\r\n let pendingRun: Promise<RuntimeActionResult> | null = null;\r\n let finalResult: RuntimeActionResult | null = null;\r\n\r\n const ref = this.modal.openModal(this.confirmDialogClass!, 'dialog', {\r\n header: resolveActionLabel(action),\r\n width: '40rem',\r\n dismissableMask: true,\r\n inputValues: {\r\n action,\r\n onSubmit: async (value: Record<string, unknown>) => {\r\n pendingRun = performRun(value);\r\n const result = await pendingRun;\r\n finalResult = result;\r\n return result.status === 'success';\r\n },\r\n },\r\n });\r\n\r\n ref.onClose.subscribe(async () => {\r\n if (finalResult) {\r\n resolve(finalResult);\r\n return;\r\n }\r\n if (pendingRun) {\r\n try {\r\n resolve(await pendingRun);\r\n } catch (error) {\r\n resolve({\r\n status: 'error',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error,\r\n });\r\n }\r\n return;\r\n }\r\n resolve({\r\n status: 'cancelled',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n });\r\n });\r\n });\r\n }\r\n\r\n private confirmPlain(action: RuntimeAction): Promise<boolean> {\r\n return new Promise((resolve) => {\r\n const label = resolveActionLabel(action);\r\n this.confirmation.confirm({\r\n type: 'dialog',\r\n header: label,\r\n message: this.transloco.translate(\r\n 'components.runtimeAction.confirmDefault',\r\n { action: label },\r\n ),\r\n acceptLabel: label,\r\n icon: 'alert.alert-triangle',\r\n accept: () => resolve(true),\r\n reject: () => resolve(false),\r\n });\r\n });\r\n }\r\n\r\n private async run(\r\n action: RuntimeAction,\r\n method: string,\r\n url: string,\r\n payload: Record<string, unknown> | undefined,\r\n options: RuntimeActionExecuteOptions,\r\n ): Promise<RuntimeActionResult> {\r\n const fallbackErrorMessage = this.transloco.translate(\r\n 'components.runtimeAction.executeFailed',\r\n { action: resolveActionLabel(action) },\r\n );\r\n\r\n try {\r\n const response = await firstValueFrom(\r\n this.http\r\n .request<unknown>(method, url, buildRequestOptions(method, payload))\r\n .pipe(\r\n map((res) => ensureSuccessfulEnvelope(res, fallbackErrorMessage)),\r\n ),\r\n );\r\n\r\n if (options.successMessage && !options.silent) {\r\n this.toast.success(options.successMessage(response, action));\r\n }\r\n\r\n return {\r\n status: 'success',\r\n actionKey: action.actionKey,\r\n afterSuccess: resolveAfterSuccess(action, options.defaultAfterSuccess),\r\n response,\r\n };\r\n } catch (error) {\r\n const message =\r\n options.errorMessage?.(error, action) ??\r\n resolveHttpErrorMessage(error, fallbackErrorMessage);\r\n\r\n if (!options.silent) {\r\n this.toast.error(message);\r\n }\r\n\r\n return {\r\n status: 'error',\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error,\r\n };\r\n }\r\n }\r\n\r\n private notExecutableMessage(action: RuntimeAction): string {\r\n if (action.isAvailable === false) {\r\n return this.transloco.translate('components.runtimeAction.notAvailable', {\r\n action: action.actionKey,\r\n });\r\n }\r\n if (!action.url) {\r\n return this.transloco.translate('components.runtimeAction.noUrl', {\r\n action: action.actionKey,\r\n });\r\n }\r\n return this.transloco.translate('components.runtimeAction.noHttpMethod', {\r\n action: action.actionKey,\r\n });\r\n }\r\n}\r\n\r\nfunction cancelledOrError(\r\n action: RuntimeAction,\r\n status: 'error' | 'cancelled',\r\n error?: unknown,\r\n): RuntimeActionResult {\r\n return {\r\n status,\r\n actionKey: action.actionKey,\r\n afterSuccess: null,\r\n error,\r\n };\r\n}\r\n\r\nfunction resolveAfterSuccess(\r\n action: RuntimeAction,\r\n fallback: RuntimeActionAfterSuccess | undefined,\r\n): RuntimeActionAfterSuccess {\r\n if (action.afterSuccess === 'close' || action.afterSuccess === 'refresh') {\r\n return action.afterSuccess;\r\n }\r\n return fallback ?? 'refresh';\r\n}\r\n\r\nfunction ensureSuccessfulEnvelope(\r\n response: unknown,\r\n fallback: string,\r\n): unknown {\r\n if (!response || typeof response !== 'object') {\r\n return response;\r\n }\r\n\r\n const envelope = response as { code?: number };\r\n if (typeof envelope.code === 'number' && envelope.code !== 1) {\r\n throw new Error(resolveEnvelopeErrorMessage(response, fallback));\r\n }\r\n return response;\r\n}\r\n\r\nfunction resolveEnvelopeErrorMessage(\r\n response: unknown,\r\n fallback: string,\r\n): string {\r\n if (!response || typeof response !== 'object') {\r\n return fallback;\r\n }\r\n const envelope = response as {\r\n message?: string | null;\r\n errors?: { message?: string } | null;\r\n };\r\n return envelope.errors?.message ?? envelope.message ?? fallback;\r\n}\r\n\r\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\r\n if (!error || typeof error !== 'object') {\r\n return fallback;\r\n }\r\n const httpError = error as {\r\n message?: string;\r\n error?: { message?: string | null } | null;\r\n };\r\n return httpError.error?.message ?? httpError.message ?? fallback;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AA2EM,SAAU,kBAAkB,CAAC,MAAqB,EAAA;AACtD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU;AAC9B,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI,IAAI,MAAM,CAAC,SAAS;IACjC;AACA,IAAA,OAAO,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS;AAC1C;;AC/EM,SAAU,kBAAkB,CAChC,MAAqB,EACrB,SAA8C,EAC9C,oBAAmD,EAAE,EAAA;IAErD,MAAM,eAAe,GAAG,oBAAoB,CAC1C,MAAM,EACN,SAAS,EACT,iBAAiB,CAClB;IACD,IAAI,eAAe,EAAE;AACnB,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE;AAC5C,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACvB,QAAA,OAAO,SAAS;IAClB;IAEA,MAAM,OAAO,GAA4B,EAAE;AAE3C,IAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,GAAG,CAAC;AACvC,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,cAAc,CAAC;YACzD;QACF;QAEA,MAAM,aAAa,GAAG,2BAA2B,CAC/C,GAAG,EACH,MAAM,EACN,iBAAiB,CAClB;AACD,QAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa;YAC5B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,0BAA0B,CAAC,GAAG,CAAC;AACpD,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY;QAC7B;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS;AAC1D;AAEA,SAAS,oBAAoB,CAC3B,MAAqB,EACrB,SAA8C,EAC9C,iBAAgD,EAAA;AAEhD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAiD;IACzE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,OAAO,GAA4B,EAAE;AAC3C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE/D,IAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,QAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;YACtE;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,GAAG,CAAC;AACvC,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,cAAc,CAAC;YACzD;QACF;QAEA,MAAM,aAAa,GAAG,2BAA2B,CAC/C,GAAG,EACH,MAAM,EACN,iBAAiB,CAClB;AACD,QAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa;YAC5B;QACF;AAEA,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC5B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,0BAA0B,CAAC,GAAG,CAAC;AACpD,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY;QAC7B;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI;AACrD;AAEA,SAAS,2BAA2B,CAClC,GAAW,EACX,MAAqB,EACrB,iBAAgD,EAAA;AAEhD,IAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC;IACvC,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,EAAE;IACnB;AAEA,IAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,QAAA,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,qBAAqB,CAAC,GAAW,EAAE,KAAc,EAAA;AAC/D,IAAA,IAAI,GAAG,KAAK,aAAa,EAAE;AACzB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IAC/C;AAEA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,0BAA0B,CAAC,GAAW,EAAA;IACpD,QAAQ,GAAG;AACT,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,EAAE;AACX,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,IAAI;AACb,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,EAAE;AACX,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;AAEM,SAAU,6BAA6B,CAC3C,MAAqB,EACrB,OAA4C,EAAA;IAE5C,OAAO,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,KACnD,qBAAqB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CACtC;AACH;AAEM,SAAU,qBAAqB,CAAC,KAAc,EAAA;AAClD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;IAClC;AAEA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;IAC3B;AAEA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,mBAAmB,CACjC,KAAgC,EAAA;IAEhC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACzC,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;AACtC;AAEM,SAAU,kBAAkB,CAAC,MAAc,EAAA;AAC/C,IAAA,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5D;AAEM,SAAU,mBAAmB,CACjC,MAAc,EACd,OAA4C,EAAA;IAE5C,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAC3C,QAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5B;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,OAAO,EAAE,MAAM;KAChB;AACH;AAEM,SAAU,mBAAmB,CAAC,MAAqB,EAAA;AACvD,IAAA,QACE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,KAClC,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CACjE,IAAI,wBAAwB,CAAC,MAAM,CAAC;AAEzC;AAEM,SAAU,wBAAwB,CAAC,MAAqB,EAAA;AAC5D,IAAA,MAAM,MAAM,GAAI,MAAM,CAAC;AACrB,UAAE,MAAM;AACV,IAAA,QACE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,CAAC,KAAK,KACJ,CAAC,CAAC,KAAK;YACP,OAAO,KAAK,KAAK,QAAQ;AACxB,YAAA,KAAkC,CAAC,WAAW,KAAK,UAAU,CACjE;AAEL;AAEA,SAAS,0BAA0B,CACjC,MAAqB,EACrB,QAAiC,EACjC,SAA8C,EAAA;AAE9C,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAClC,QAAA,OAAO,SAAS,GAAG,QAAQ,CAAC,IAAI,cAAc;IAChD;AAEA,IAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE;AACrC,QAAA,OAAO,SAAS,GAAG,QAAQ,CAAC,IAAI,cAAc;IAChD;AAEA,IAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAClC,QAAA,IACE,CAAC,KAAK;YACN,OAAO,KAAK,KAAK,QAAQ;AACxB,YAAA,KAAkC,CAAC,WAAW,KAAK,UAAU,EAC9D;AACA,YAAA,OAAO,KAAK;QACd;QAEA,OAAO;AACL,YAAA,GAAI,KAAiC;YACrC,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,IAAK,KAA6B,CAAC,KAAK;SACvE;AACH,IAAA,CAAC,CAAC;AACJ;;MC7Oa,yBAAyB,CAAA;AACnB,IAAA,UAAU,GAAG,MAAM,CAAiC,IAAI,iFAAC;AAE1E,IAAA,aAAa,CAAC,MAAsC,EAAA;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7B;IAEA,iBAAiB,GAAA;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE;AACnD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;cACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;gBACrB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;AACnB,aAAA,CAAC;cACF,EAAE;IACR;uGAhBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCgBY,6BAA6B,GAAG,IAAI,cAAc,CAC7D,+BAA+B;MAIpB,mBAAmB,CAAA;AACb,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,EAAE;AAC1E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,CACX,MAAqB,EACrB,UAAuC,EAAE,EAAA;QAEzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAE9B,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;AACnD,YAAA,OAAO,gBAAgB,CACrB,MAAM,EACN,OAAO,EACP,IAAI,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAC7C;QACH;AAEA,QAAA,MAAM,UAAU,GAAG,CACjB,SAAmC,KACH;AAChC,YAAA,IAAI,OAAO,GAAG,kBAAkB,CAC9B,MAAM,EACN,SAAS,EACT,OAAO,CAAC,wBAAwB,IAAI,EAAE,CACvC;AAED,YAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAC5B,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;YACrD;YAEA,MAAM,OAAO,GAAG,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC;AAC9D,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACtC,sCAAsC,EACtC,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC3B;gBACA,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,oBAAA,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,oBAAA,YAAY,EAAE,IAAI;AAClB,oBAAA,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;AAC1B,iBAAA,CAAC;YACJ;AAEA,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AACxD,QAAA,CAAC;AAED,QAAA,IAAI,MAAM,CAAC,gBAAgB,EAAE;YAC3B,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC1D,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC;YACnD;YAEA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO;AACL,oBAAA,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,oBAAA,YAAY,EAAE,IAAI;iBACnB;YACH;QACF;QAEA,OAAO,UAAU,EAAE;IACrB;IAEQ,iBAAiB,CACvB,MAAqB,EACrB,UAEiC,EAAA;AAEjC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,UAAU,GAAwC,IAAI;YAC1D,IAAI,WAAW,GAA+B,IAAI;AAElD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAmB,EAAE,QAAQ,EAAE;AACnE,gBAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;AAClC,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,WAAW,EAAE;oBACX,MAAM;AACN,oBAAA,QAAQ,EAAE,OAAO,KAA8B,KAAI;AACjD,wBAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,wBAAA,MAAM,MAAM,GAAG,MAAM,UAAU;wBAC/B,WAAW,GAAG,MAAM;AACpB,wBAAA,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS;oBACpC,CAAC;AACF,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,YAAW;gBAC/B,IAAI,WAAW,EAAE;oBACf,OAAO,CAAC,WAAW,CAAC;oBACpB;gBACF;gBACA,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI;AACF,wBAAA,OAAO,CAAC,MAAM,UAAU,CAAC;oBAC3B;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC;AACN,4BAAA,MAAM,EAAE,OAAO;4BACf,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,4BAAA,YAAY,EAAE,IAAI;4BAClB,KAAK;AACN,yBAAA,CAAC;oBACJ;oBACA;gBACF;AACA,gBAAA,OAAO,CAAC;AACN,oBAAA,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,oBAAA,YAAY,EAAE,IAAI;AACnB,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,MAAqB,EAAA;AACxC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACxB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAC/B,yCAAyC,EACzC,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB;AACD,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;AAC3B,gBAAA,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;AAC7B,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,GAAG,CACf,MAAqB,EACrB,MAAc,EACd,GAAW,EACX,OAA4C,EAC5C,OAAoC,EAAA;AAEpC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACnD,wCAAwC,EACxC,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,CACvC;AAED,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC;iBACF,OAAO,CAAU,MAAM,EAAE,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;AAClE,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAK,wBAAwB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAClE,CACJ;YAED,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D;YAEA,OAAO;AACL,gBAAA,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC;gBACtE,QAAQ;aACT;QACH;QAAE,OAAO,KAAK,EAAE;YACd,MAAM,OAAO,GACX,OAAO,CAAC,YAAY,GAAG,KAAK,EAAE,MAAM,CAAC;AACrC,gBAAA,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,CAAC;AAEtD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3B;YAEA,OAAO;AACL,gBAAA,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,gBAAA,YAAY,EAAE,IAAI;gBAClB,KAAK;aACN;QACH;IACF;AAEQ,IAAA,oBAAoB,CAAC,MAAqB,EAAA;AAChD,QAAA,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,uCAAuC,EAAE;gBACvE,MAAM,EAAE,MAAM,CAAC,SAAS;AACzB,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gCAAgC,EAAE;gBAChE,MAAM,EAAE,MAAM,CAAC,SAAS;AACzB,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,uCAAuC,EAAE;YACvE,MAAM,EAAE,MAAM,CAAC,SAAS;AACzB,SAAA,CAAC;IACJ;uGAjNW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAqNlC,SAAS,gBAAgB,CACvB,MAAqB,EACrB,MAA6B,EAC7B,KAAe,EAAA;IAEf,OAAO;QACL,MAAM;QACN,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,QAAA,YAAY,EAAE,IAAI;QAClB,KAAK;KACN;AACH;AAEA,SAAS,mBAAmB,CAC1B,MAAqB,EACrB,QAA+C,EAAA;AAE/C,IAAA,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;QACxE,OAAO,MAAM,CAAC,YAAY;IAC5B;IACA,OAAO,QAAQ,IAAI,SAAS;AAC9B;AAEA,SAAS,wBAAwB,CAC/B,QAAiB,EACjB,QAAgB,EAAA;IAEhB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,QAAQ,GAAG,QAA6B;AAC9C,IAAA,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;QAC5D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE;AACA,IAAA,OAAO,QAAQ;AACjB;AAEA,SAAS,2BAA2B,CAClC,QAAiB,EACjB,QAAgB,EAAA;IAEhB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,QAAA,OAAO,QAAQ;IACjB;IACA,MAAM,QAAQ,GAAG,QAGhB;IACD,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ;AACjE;AAEA,SAAS,uBAAuB,CAAC,KAAc,EAAE,QAAgB,EAAA;IAC/D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,QAAQ;IACjB;IACA,MAAM,SAAS,GAAG,KAGjB;IACD,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,QAAQ;AAClE;;AC7SA;;AAEG;;;;"}
|
|
@@ -1373,7 +1373,9 @@ class Table {
|
|
|
1373
1373
|
const data = this.data();
|
|
1374
1374
|
const applyLocalSearch = !this.lazy() || this.lazyLocalSearch();
|
|
1375
1375
|
const applyLocalSort = !this.lazy() || this.lazyLocalSort();
|
|
1376
|
-
const searchTerm = applyLocalSearch
|
|
1376
|
+
const searchTerm = applyLocalSearch
|
|
1377
|
+
? this.filterTerm().trim().toLowerCase()
|
|
1378
|
+
: '';
|
|
1377
1379
|
const filters = this.filters();
|
|
1378
1380
|
const filterKeys = this.lazy() ? [] : Object.keys(filters);
|
|
1379
1381
|
let result = data;
|
|
@@ -1642,7 +1644,11 @@ class Table {
|
|
|
1642
1644
|
this.first.set(0);
|
|
1643
1645
|
this.currentPage.set(0);
|
|
1644
1646
|
if (this.lazy() && !this.lazyLocalSearch()) {
|
|
1645
|
-
|
|
1647
|
+
const trimmedSearchTerm = searchTerm.trim();
|
|
1648
|
+
this.filters.set({
|
|
1649
|
+
...this.filters(),
|
|
1650
|
+
generalSearch: trimmedSearchTerm,
|
|
1651
|
+
});
|
|
1646
1652
|
this.emitLazyLoad({});
|
|
1647
1653
|
}
|
|
1648
1654
|
}
|