@wavemaker/app-ng-runtime 11.14.1-32.647748 → 11.14.1-33.647787
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/components/base/bundles/index.umd.js +17 -71
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +6 -51
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -7
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
- package/components/base/fesm2022/index.mjs +18 -72
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +1 -9
- package/components/basic/label/esm2022/label.directive.mjs +2 -10
- package/components/basic/label/fesm2022/index.mjs +1 -9
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/chart/bundles/index.umd.js +2 -2
- package/components/chart/esm2022/chart.utils.mjs +3 -3
- package/components/chart/fesm2022/index.mjs +2 -2
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/bundles/index.umd.js +2 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +1 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +3 -20
- package/components/containers/wizard/fesm2022/index.mjs +2 -21
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +0 -2
- package/components/data/pagination/bundles/index.umd.js +1 -6
- package/components/data/pagination/esm2022/pagination.component.mjs +2 -7
- package/components/data/pagination/fesm2022/index.mjs +1 -6
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +27 -542
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +4 -108
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +1 -9
- package/components/data/table/esm2022/table-cud.directive.mjs +5 -22
- package/components/data/table/esm2022/table-filter.directive.mjs +4 -43
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +1 -8
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table.component.mjs +19 -345
- package/components/data/table/fesm2022/index.mjs +29 -544
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +2 -3
- package/components/data/table/table-column/table-column.directive.d.ts +2 -3
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -3
- package/components/data/table/table-cud.directive.d.ts +1 -3
- package/components/data/table/table-filter.directive.d.ts +1 -3
- package/components/data/table/table-row/table-row.directive.d.ts +2 -3
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -3
- package/components/data/table/table.component.d.ts +2 -16
- package/components/navigation/menu/bundles/index.umd.js +0 -5
- package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
- package/components/navigation/menu/fesm2022/index.mjs +0 -5
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +0 -6
- package/components/page/default/bundles/index.umd.js +0 -1
- package/components/page/default/esm2022/page.directive.mjs +1 -2
- package/components/page/default/fesm2022/index.mjs +0 -1
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +15 -120
- package/core/esm2022/public_api.mjs +2 -2
- package/core/esm2022/utils/utils.mjs +2 -6
- package/core/esm2022/utils/watcher.mjs +15 -118
- package/core/fesm2022/index.mjs +15 -124
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -1
- package/core/utils/utils.d.ts +0 -1
- package/locales/moment-timezone/moment-timezone-with-data.js +5 -5
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +14 -23
- package/runtime/base/components/base-prefab.component.d.ts +4 -6
- package/runtime/base/esm2022/components/base-page.component.mjs +1 -2
- package/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
- package/runtime/base/esm2022/components/base-prefab.component.mjs +12 -20
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +14 -23
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/bundles/index.umd.js +0 -4
- package/runtime/dynamic/esm2022/app/app.config.mjs +2 -6
- package/runtime/dynamic/fesm2022/index.mjs +1 -5
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +35 -355
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i1 from '@wm/core';
|
|
2
|
-
import { FormWidgetType, checkIsCustomPipeExpression, $parseExpr, isValidWebURL, _WM_APP_PROJECT,
|
|
2
|
+
import { FormWidgetType, checkIsCustomPipeExpression, $parseExpr, isValidWebURL, _WM_APP_PROJECT, encodeUrl, stringStartsWith, prettifyLabel, deHyphenate, initCaps, getClonedObject, DataSource, debounce, processFilterExpBindNode, isDefined, MatchMode, $parseEvent, isEqualWithFields, getFormattedDate, isAndroid, isNumberType, DataType, setCSS, IDGenerator, toBoolean, isChangeFromWatch, $unwatch, resetChangeFromWatch, isObject as isObject$1, toDimension, $appDigest, removeClass, addClass, setCSSFromObj, App, findParent, setAttr, switchClass, removeAttr, $invokeWatchers, $watch, findValueOf, validateAccessRoles, ComponentType, noop as noop$1, VALIDATOR, isIos, isMobile, hasOffsetStr, AbstractI18nService, CURRENCY_INFO, replace as replace$1, transformFileURI, isLargeTabletLandscape, isLargeTabletPortrait } from '@wm/core';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { InjectionToken, forwardRef, ElementRef, inject, ViewContainerRef, Injector, Injectable, Inject, Optional, Directive, Self, ContentChildren, Attribute, Input, Component, Pipe, SecurityContext } from '@angular/core';
|
|
5
5
|
import { createFocusTrap } from '@wavemaker/focus-trap';
|
|
@@ -190,7 +190,7 @@ const getImageUrl = (urlString, shouldEncode, defaultUrl) => {
|
|
|
190
190
|
urlString = (defaultUrl || 'resources/images/imagelists/default-image.png');
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
-
if (urlString && !_WM_APP_PROJECT.isPreview && !
|
|
193
|
+
if (urlString && !_WM_APP_PROJECT.isPreview && !isValidWebURL(urlString) && !urlString.startsWith(_WM_APP_PROJECT.cdnUrl)) {
|
|
194
194
|
urlString = (_WM_APP_PROJECT.cdnUrl || '') + urlString;
|
|
195
195
|
}
|
|
196
196
|
urlString = shouldEncode ? encodeUrl(urlString) : urlString;
|
|
@@ -1994,12 +1994,7 @@ const parseValue = (key, value, type) => {
|
|
|
1994
1994
|
return toBoolean(value, isBooleanAttr(key) && key);
|
|
1995
1995
|
}
|
|
1996
1996
|
if (type === PROP_TYPE.NUMBER) {
|
|
1997
|
-
|
|
1998
|
-
// Fix NaN for tabindex - default to 0 if value is invalid
|
|
1999
|
-
if (key === 'tabindex' && isNaN(numValue)) {
|
|
2000
|
-
return value === null || value === undefined || value === '' ? 0 : numValue;
|
|
2001
|
-
}
|
|
2002
|
-
return numValue;
|
|
1997
|
+
return +value;
|
|
2003
1998
|
}
|
|
2004
1999
|
return value;
|
|
2005
2000
|
};
|
|
@@ -2323,26 +2318,10 @@ class BaseComponent {
|
|
|
2323
2318
|
this.propertyChange.subscribe(({ key, nv, ov }) => fn(key, nv, ov));
|
|
2324
2319
|
}
|
|
2325
2320
|
registerDestroyListener(fn, ctx) {
|
|
2326
|
-
if (!fn) {
|
|
2327
|
-
return;
|
|
2328
|
-
}
|
|
2329
2321
|
if (ctx) {
|
|
2330
2322
|
fn = fn.bind(ctx);
|
|
2331
2323
|
}
|
|
2332
|
-
this.destroy.subscribe(() => { }, () => { }, () =>
|
|
2333
|
-
try {
|
|
2334
|
-
if (fn && typeof fn === 'function') {
|
|
2335
|
-
fn();
|
|
2336
|
-
}
|
|
2337
|
-
}
|
|
2338
|
-
catch (e) {
|
|
2339
|
-
// Silently handle cleanup errors to prevent test failures
|
|
2340
|
-
// These are typically non-critical cleanup issues like:
|
|
2341
|
-
// - Subscriptions already unsubscribed
|
|
2342
|
-
// - Null references during cleanup
|
|
2343
|
-
// - Components already destroyed
|
|
2344
|
-
}
|
|
2345
|
-
});
|
|
2324
|
+
this.destroy.subscribe(() => { }, () => { }, () => fn());
|
|
2346
2325
|
}
|
|
2347
2326
|
getDisplayType() {
|
|
2348
2327
|
return this.displayType;
|
|
@@ -2508,25 +2487,14 @@ class BaseComponent {
|
|
|
2508
2487
|
// the promise returned by the variable call.
|
|
2509
2488
|
boundFnVal = boundFn();
|
|
2510
2489
|
if (boundFnVal instanceof Promise) {
|
|
2511
|
-
return boundFnVal.then(response => response, err =>
|
|
2512
|
-
const widgetName = widget.name || widget.widgetId || 'unknown';
|
|
2513
|
-
console.error(`Error in promise returned by event callback "${eventName}" on widget "${widgetName}":`, err);
|
|
2514
|
-
return err;
|
|
2515
|
-
});
|
|
2490
|
+
return boundFnVal.then(response => response, err => err);
|
|
2516
2491
|
}
|
|
2517
2492
|
else {
|
|
2518
2493
|
return boundFnVal;
|
|
2519
2494
|
}
|
|
2520
2495
|
}
|
|
2521
2496
|
catch (e) {
|
|
2522
|
-
|
|
2523
|
-
const widgetName = widget.name || widget.widgetId || 'unknown';
|
|
2524
|
-
const errorMessage = e.message || String(e);
|
|
2525
|
-
console.error(`Error executing event callback "${eventName}" on widget "${widgetName}":`, errorMessage);
|
|
2526
|
-
console.error('Event expression context:', { eventName, widgetName, locals });
|
|
2527
|
-
// Don't re-throw - allow execution to continue (e.g., navigation should still work)
|
|
2528
|
-
// Return undefined to indicate error was handled
|
|
2529
|
-
return undefined;
|
|
2497
|
+
console.error(e);
|
|
2530
2498
|
}
|
|
2531
2499
|
};
|
|
2532
2500
|
if (child && !child.widget.eventHandlers)
|
|
@@ -2550,17 +2518,11 @@ class BaseComponent {
|
|
|
2550
2518
|
if (!child)
|
|
2551
2519
|
this.initState.delete(propName);
|
|
2552
2520
|
let viewParent = child ? child.widget.viewParent.viewParent : this.viewParent, context = child ? child.widget.context : this.context, widget = child ? child.widget : this.widget, isMuted = child ? child.widget.isMuted : this.isMuted, widgetProps = child ? child.widget.widgetProps : this.widgetProps, widgetId = child ? child.widget.widgetId : this.widgetId;
|
|
2553
|
-
// OPTIMIZATION: Apply throttling for non-critical properties
|
|
2554
|
-
const watchConfig = widgetProps.get(propName) || {};
|
|
2555
|
-
const throttledProps = ['class', 'style', 'ngclass', 'ngstyle'];
|
|
2556
|
-
if (throttledProps.includes(propName.toLowerCase())) {
|
|
2557
|
-
watchConfig.throttle = 100; // Throttle to 100ms for style/class properties
|
|
2558
|
-
}
|
|
2559
2521
|
this.registerDestroyListener($watch(expr, viewParent, context, nv => {
|
|
2560
2522
|
if (propName.startsWith('base-') && widget.updateData)
|
|
2561
2523
|
widget.updateData(propName, nv);
|
|
2562
2524
|
widget[propName] = nv;
|
|
2563
|
-
}, getWatchIdentifier(widgetId, propName), propName === 'datasource',
|
|
2525
|
+
}, getWatchIdentifier(widgetId, propName), propName === 'datasource', widgetProps.get(propName), () => isMuted));
|
|
2564
2526
|
}
|
|
2565
2527
|
/**
|
|
2566
2528
|
* Remove watch on the bound property
|
|
@@ -2579,19 +2541,7 @@ class BaseComponent {
|
|
|
2579
2541
|
const fn = callbackInfo.callback;
|
|
2580
2542
|
const locals = callbackInfo.locals || {};
|
|
2581
2543
|
if (fn) {
|
|
2582
|
-
|
|
2583
|
-
return fn(Object.assign(locals, extraLocals));
|
|
2584
|
-
}
|
|
2585
|
-
catch (error) {
|
|
2586
|
-
// Log error with context information for debugging
|
|
2587
|
-
const widgetName = this.name || this.widgetId || 'unknown';
|
|
2588
|
-
const errorMessage = error?.message || String(error);
|
|
2589
|
-
console.error(`Error executing event callback "${eventName}" on widget "${widgetName}":`, errorMessage);
|
|
2590
|
-
console.error('Full error:', error);
|
|
2591
|
-
// Don't re-throw - allow execution to continue (e.g., navigation should still work)
|
|
2592
|
-
// Return undefined to indicate error was handled
|
|
2593
|
-
return undefined;
|
|
2594
|
-
}
|
|
2544
|
+
return fn(Object.assign(locals, extraLocals));
|
|
2595
2545
|
}
|
|
2596
2546
|
}
|
|
2597
2547
|
}
|
|
@@ -4365,14 +4315,14 @@ class ToDatePipe extends WmPipe {
|
|
|
4365
4315
|
}
|
|
4366
4316
|
return this.returnFn('', arguments, this.app.Variables);
|
|
4367
4317
|
}
|
|
4368
|
-
constructor(datePipe, i18nService,
|
|
4318
|
+
constructor(datePipe, i18nService, customPipeManager) {
|
|
4369
4319
|
super('toDate', customPipeManager);
|
|
4370
4320
|
this.datePipe = datePipe;
|
|
4371
4321
|
this.i18nService = i18nService;
|
|
4372
|
-
this.app = app;
|
|
4373
4322
|
this.customPipeManager = customPipeManager;
|
|
4323
|
+
this.app = inject(App);
|
|
4374
4324
|
}
|
|
4375
|
-
static { this.ɵfac = function ToDatePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ToDatePipe)(i0.ɵɵdirectiveInject(i1$1.DatePipe, 16), i0.ɵɵdirectiveInject(i1.AbstractI18nService, 16), i0.ɵɵdirectiveInject(i1.
|
|
4325
|
+
static { this.ɵfac = function ToDatePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ToDatePipe)(i0.ɵɵdirectiveInject(i1$1.DatePipe, 16), i0.ɵɵdirectiveInject(i1.AbstractI18nService, 16), i0.ɵɵdirectiveInject(i1.CustomPipeManager, 16)); }; }
|
|
4376
4326
|
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true, standalone: true }); }
|
|
4377
4327
|
}
|
|
4378
4328
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToDatePipe, [{
|
|
@@ -4381,7 +4331,7 @@ class ToDatePipe extends WmPipe {
|
|
|
4381
4331
|
standalone: true,
|
|
4382
4332
|
name: 'toDate'
|
|
4383
4333
|
}]
|
|
4384
|
-
}], () => [{ type: i1$1.DatePipe }, { type: i1.AbstractI18nService }, { type: i1.
|
|
4334
|
+
}], () => [{ type: i1$1.DatePipe }, { type: i1.AbstractI18nService }, { type: i1.CustomPipeManager }], null); })();
|
|
4385
4335
|
class ToNumberPipe {
|
|
4386
4336
|
transform(data, fracSize) {
|
|
4387
4337
|
if (fracSize && !String(fracSize).match(/^(\d+)?\.((\d+)(-(\d+))?)?$/)) {
|
|
@@ -4469,9 +4419,9 @@ class SuffixPipe {
|
|
|
4469
4419
|
* Custom pipe: It is work as interceptor between the user custom pipe function and angular pipe
|
|
4470
4420
|
*/
|
|
4471
4421
|
class CustomPipe {
|
|
4472
|
-
constructor(
|
|
4473
|
-
this.app = app;
|
|
4422
|
+
constructor(custmeUserPipe) {
|
|
4474
4423
|
this.custmeUserPipe = custmeUserPipe;
|
|
4424
|
+
this.app = inject(App);
|
|
4475
4425
|
}
|
|
4476
4426
|
transform(data, pipename) {
|
|
4477
4427
|
let argumentArr = [];
|
|
@@ -4491,7 +4441,7 @@ class CustomPipe {
|
|
|
4491
4441
|
return data;
|
|
4492
4442
|
}
|
|
4493
4443
|
}
|
|
4494
|
-
static { this.ɵfac = function CustomPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomPipe)(i0.ɵɵdirectiveInject(i1.
|
|
4444
|
+
static { this.ɵfac = function CustomPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CustomPipe)(i0.ɵɵdirectiveInject(i1.CustomPipeManager, 16)); }; }
|
|
4495
4445
|
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "custom", type: CustomPipe, pure: true, standalone: true }); }
|
|
4496
4446
|
}
|
|
4497
4447
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomPipe, [{
|
|
@@ -4500,7 +4450,7 @@ class CustomPipe {
|
|
|
4500
4450
|
standalone: true,
|
|
4501
4451
|
name: 'custom'
|
|
4502
4452
|
}]
|
|
4503
|
-
}], () => [{ type: i1.
|
|
4453
|
+
}], () => [{ type: i1.CustomPipeManager }], null); })();
|
|
4504
4454
|
class TimeFromNowPipe {
|
|
4505
4455
|
transform(data) {
|
|
4506
4456
|
let timestamp;
|
|
@@ -5069,16 +5019,12 @@ class LazyLoadDirective {
|
|
|
5069
5019
|
this.unSubscribeFn = $watch(expr, this.viewParent, this.context, (val) => {
|
|
5070
5020
|
if (!this.embeddedView && val) {
|
|
5071
5021
|
this.embeddedView = this.viewContainer.createEmbeddedView(this.templateRef, this.context);
|
|
5072
|
-
|
|
5073
|
-
this.unSubscribeFn();
|
|
5074
|
-
}
|
|
5022
|
+
this.unSubscribeFn();
|
|
5075
5023
|
}
|
|
5076
5024
|
});
|
|
5077
5025
|
}
|
|
5078
5026
|
ngOnDestroy() {
|
|
5079
|
-
|
|
5080
|
-
this.unSubscribeFn();
|
|
5081
|
-
}
|
|
5027
|
+
this.unSubscribeFn();
|
|
5082
5028
|
}
|
|
5083
5029
|
static { this.ɵfac = function LazyLoadDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LazyLoadDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
5084
5030
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: LazyLoadDirective, selectors: [["", "lazyLoad", ""]], inputs: { lazyLoad: "lazyLoad" }, standalone: true }); }
|