@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.
@@ -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
- let formValue;
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
- const dialogResult = await this.confirm(action);
219
- if (dialogResult === 'cancelled') {
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
- const missing = getMissingRequiredPayloadKeys(action, payload);
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
- async confirm(action) {
248
- if (hasActionFormFields(action) && this.confirmDialogClass) {
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: { action },
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
- const value = await firstValueFrom(ref.onClose);
256
- const formValue = value;
257
- if (formValue == null) {
258
- return 'cancelled';
259
- }
260
- return formValue;
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(null),
271
- reject: () => resolve('cancelled'),
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":"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"}
@@ -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 ? this.filterTerm().toLowerCase() : '';
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
- this.filters.set({ ...this.filters(), generalSearch: searchTerm });
1647
+ const trimmedSearchTerm = searchTerm.trim();
1648
+ this.filters.set({
1649
+ ...this.filters(),
1650
+ generalSearch: trimmedSearchTerm,
1651
+ });
1646
1652
  this.emitLazyLoad({});
1647
1653
  }
1648
1654
  }