ets-fe-ng-sdk 20.0.14 → 20.0.15
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/ets-fe-ng-sdk.mjs +609 -652
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/index.d.ts +5670 -5675
- package/package.json +1 -1
|
@@ -3,12 +3,12 @@ import { FormControl, Validators, FormGroup, FormArray, FormBuilder, NG_VALUE_AC
|
|
|
3
3
|
import { ReplaySubject, filter, debounceTime, lastValueFrom, Observable, BehaviorSubject, isObservable, of, merge, firstValueFrom, throwError, interval, map as map$1, startWith, switchMap, forkJoin, catchError as catchError$1, first, distinctUntilChanged, tap as tap$1, fromEvent, mergeMap, debounce, timer, Subject, distinct, concat } from 'rxjs';
|
|
4
4
|
import 'zone.js/plugins/zone-error';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { signal, computed, Injectable, inject, APP_INITIALIZER, isDevMode, Pipe, NgModule, input, Directive, booleanAttribute, ChangeDetectorRef, model, output, effect, ViewChild, Input, Component, EventEmitter, Output, forwardRef, ChangeDetectionStrategy, HostListener, HostBinding, viewChild, linkedSignal, viewChildren, Inject, DestroyRef, contentChild, ElementRef, InjectionToken, ErrorHandler } from '@angular/core';
|
|
6
|
+
import { signal, computed, Injectable, inject, APP_INITIALIZER, isDevMode, Pipe, NgModule, input, Directive, booleanAttribute, ChangeDetectorRef, model, output, effect, ViewChild, Input, Component, EventEmitter, Output, forwardRef, ChangeDetectionStrategy, HostListener, HostBinding, viewChild, linkedSignal, viewChildren, Inject, DestroyRef, contentChild, ElementRef, Optional, InjectionToken, ErrorHandler } from '@angular/core';
|
|
7
7
|
import { faSpoon, faTable, faCircleExclamation, faHandshake, faPercent, faPlay, faArrowsH, faBank, faReceipt, faTag, faTruck, faStop, faRecycle, faUsers, faUnlock, faUpload, faBellSlash, faEye, faSearch, faSave, faArrowLeft, faPen, faPause, faArrowRight, faLock, faInfoCircle, faFileImport, faHome, faHistory, faUserShield, faPenFancy, faFilter, faFile, faFileExport, faEdit, faDownload, faTrash, faCogs, faClone, faListAlt, faCheck, faCancel, faMoneyCheck, faSlidersH, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
8
8
|
import { faPaperPlane } from '@fortawesome/free-regular-svg-icons';
|
|
9
9
|
import { clone, uniqBy, uniq, cloneDeep, isEqual, isEmpty } from 'lodash-es';
|
|
10
10
|
import * as i1$1 from '@angular/common';
|
|
11
|
-
import { Location, CurrencyPipe, TitleCasePipe, DatePipe, DecimalPipe, CommonModule, NgClass, JsonPipe, AsyncPipe, UpperCasePipe, NgTemplateOutlet,
|
|
11
|
+
import { Location, CurrencyPipe, TitleCasePipe, DatePipe, DecimalPipe, CommonModule, NgClass, JsonPipe, AsyncPipe, UpperCasePipe, NgTemplateOutlet, NgStyle } from '@angular/common';
|
|
12
12
|
import { map, tap, catchError, retry, filter as filter$1, debounceTime as debounceTime$1, switchMap as switchMap$1, startWith as startWith$1, first as first$1, timeout } from 'rxjs/operators';
|
|
13
13
|
import { ToastNotificationsService } from '@serene-dev/toast-notifications';
|
|
14
14
|
import { HttpClient, HttpHeaders, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
@@ -1056,6 +1056,155 @@ var EETSPageBtnID;
|
|
|
1056
1056
|
EETSPageBtnID["clientFutureActions"] = "PCFA23";
|
|
1057
1057
|
})(EETSPageBtnID || (EETSPageBtnID = {}));
|
|
1058
1058
|
|
|
1059
|
+
// import '../prototypes/prototypes';
|
|
1060
|
+
/**
|
|
1061
|
+
* Represents a basic route item with path generation capabilities.
|
|
1062
|
+
* Handles route path construction with optional parameters.
|
|
1063
|
+
*/
|
|
1064
|
+
class RouteItem {
|
|
1065
|
+
/**
|
|
1066
|
+
* Creates a new RouteItem instance.
|
|
1067
|
+
* @param base - The base route segment
|
|
1068
|
+
* @param parentPub - The parent public path (defaults to empty string)
|
|
1069
|
+
* @param params - Optional route parameters to append
|
|
1070
|
+
*/
|
|
1071
|
+
constructor(base, parentPub = '', ...params) {
|
|
1072
|
+
// console.log(params);
|
|
1073
|
+
this._ = base + (params?.length ? '/:' + params.join('/:') : '');
|
|
1074
|
+
this.__ = base;
|
|
1075
|
+
this.pub = parentPub + '/' + base;
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
/**
|
|
1079
|
+
* Extended route class that provides common application routes and utility methods.
|
|
1080
|
+
* Creates a standard set of routes for CRUD operations and navigation.
|
|
1081
|
+
*/
|
|
1082
|
+
class AppRouteBase extends RouteItem {
|
|
1083
|
+
/**
|
|
1084
|
+
* Creates a new AppRouteBase with standard child routes.
|
|
1085
|
+
* @param base - The base route segment
|
|
1086
|
+
* @param parentPub - The parent public path (defaults to empty string)
|
|
1087
|
+
* @param params - Optional route parameters to append
|
|
1088
|
+
*/
|
|
1089
|
+
constructor(base, parentPub = '', ...params) {
|
|
1090
|
+
super(base, parentPub, ...params);
|
|
1091
|
+
this.all = new RouteItem('all', this.pub);
|
|
1092
|
+
this.clone = new RouteItem('clone', this.pub, 'id');
|
|
1093
|
+
this.create = new CreateRoute('create', this.pub);
|
|
1094
|
+
this.edit = new RouteItem('edit', this.pub, 'id');
|
|
1095
|
+
this.find = new FindRoute('find', this.pub);
|
|
1096
|
+
this.index = new RouteItem('index', this.pub);
|
|
1097
|
+
this.overview = new RouteItem('overview', this.pub);
|
|
1098
|
+
this.show = new RouteItem('show', this.pub, 'id');
|
|
1099
|
+
this.start = new RouteItem('start', this.pub);
|
|
1100
|
+
}
|
|
1101
|
+
//#region funcs
|
|
1102
|
+
/**
|
|
1103
|
+
* Combines a route with a parent ID.
|
|
1104
|
+
* @param route - The base route
|
|
1105
|
+
* @param prtID - The parent ID to append
|
|
1106
|
+
* @returns The combined route string or null if route is falsy
|
|
1107
|
+
*/
|
|
1108
|
+
routeIdPipe(route, prtID) {
|
|
1109
|
+
return route ? route + '/' + prtID : null;
|
|
1110
|
+
}
|
|
1111
|
+
/**
|
|
1112
|
+
* Creates a route with ID and formatted title.
|
|
1113
|
+
* @param route - The base route
|
|
1114
|
+
* @param id - The item ID
|
|
1115
|
+
* @param title - Optional title to format and append
|
|
1116
|
+
* @returns The formatted route string
|
|
1117
|
+
*/
|
|
1118
|
+
routeIdTitlePipe(route, id, title) {
|
|
1119
|
+
return route + '/' + id + '/' + this.routeNamer(title);
|
|
1120
|
+
}
|
|
1121
|
+
/**
|
|
1122
|
+
* Creates a route with parent ID, item ID, and formatted title.
|
|
1123
|
+
* @param route - The base route
|
|
1124
|
+
* @param parentID - The parent item ID
|
|
1125
|
+
* @param id - The item ID
|
|
1126
|
+
* @param title - Optional title to format and append
|
|
1127
|
+
* @returns The formatted route string
|
|
1128
|
+
*/
|
|
1129
|
+
routePIdIdTitlePipe(route, parentID, id, title) {
|
|
1130
|
+
return route + '/' + parentID + '/' + id + '/' + this.routeNamer(title);
|
|
1131
|
+
}
|
|
1132
|
+
/**
|
|
1133
|
+
* Creates a route with parent ID, sub-item ID, item ID, and formatted title.
|
|
1134
|
+
* @param route - The base route
|
|
1135
|
+
* @param parentID - The parent item ID
|
|
1136
|
+
* @param subID - The sub-item ID
|
|
1137
|
+
* @param id - The item ID
|
|
1138
|
+
* @param title - Optional title to format and append
|
|
1139
|
+
* @returns The formatted route string
|
|
1140
|
+
*/
|
|
1141
|
+
routePidSidIdTitlePipe(route, parentID, subID, id, title) {
|
|
1142
|
+
return (route +
|
|
1143
|
+
'/' +
|
|
1144
|
+
parentID +
|
|
1145
|
+
'/' +
|
|
1146
|
+
subID +
|
|
1147
|
+
'/' +
|
|
1148
|
+
id +
|
|
1149
|
+
'/' +
|
|
1150
|
+
this.routeNamer(title));
|
|
1151
|
+
}
|
|
1152
|
+
/**
|
|
1153
|
+
* Formats a title for use in a URL.
|
|
1154
|
+
* Trims, removes special characters, converts to lowercase, and replaces spaces with hyphens.
|
|
1155
|
+
* @param title - The title to format
|
|
1156
|
+
* @returns The URL-friendly formatted title or empty string if no title provided
|
|
1157
|
+
*/
|
|
1158
|
+
routeNamer(title) {
|
|
1159
|
+
return title
|
|
1160
|
+
? title
|
|
1161
|
+
.substr(0, 30)
|
|
1162
|
+
.unChar('/')
|
|
1163
|
+
.trim()
|
|
1164
|
+
.toLowerCase()
|
|
1165
|
+
.split(' ')
|
|
1166
|
+
.filter((x) => x)
|
|
1167
|
+
.join('-')
|
|
1168
|
+
: '';
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Specialized route for creation operations with different entity types.
|
|
1173
|
+
*/
|
|
1174
|
+
class CreateRoute extends RouteItem {
|
|
1175
|
+
constructor() {
|
|
1176
|
+
super(...arguments);
|
|
1177
|
+
/** Route for corporate entity creation */
|
|
1178
|
+
this.corporate = new RouteItem('corporate', this.pub);
|
|
1179
|
+
/** Route for group entity creation */
|
|
1180
|
+
this.group = new RouteItem('group', this.pub);
|
|
1181
|
+
/** Route for individual entity creation */
|
|
1182
|
+
this.individual = new RouteItem('individual', this.pub);
|
|
1183
|
+
/** Route for provider entity creation with sub-routes */
|
|
1184
|
+
this.provider = new CreateProviderRoute('provider', this.pub);
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
/**
|
|
1188
|
+
* Specialized route for provider creation operations.
|
|
1189
|
+
*/
|
|
1190
|
+
class CreateProviderRoute extends RouteItem {
|
|
1191
|
+
constructor() {
|
|
1192
|
+
super(...arguments);
|
|
1193
|
+
/** Index route for provider creation */
|
|
1194
|
+
this.index = new RouteItem('index', this.pub);
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1197
|
+
/**
|
|
1198
|
+
* Specialized route for find/search operations.
|
|
1199
|
+
*/
|
|
1200
|
+
class FindRoute extends RouteItem {
|
|
1201
|
+
constructor() {
|
|
1202
|
+
super(...arguments);
|
|
1203
|
+
/** Route for search results list */
|
|
1204
|
+
this.searchList = new RouteItem('search-list', this.pub);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1059
1208
|
var EVFunctions;
|
|
1060
1209
|
(function (EVFunctions) {
|
|
1061
1210
|
/**
|
|
@@ -1605,154 +1754,6 @@ var prototypes = /*#__PURE__*/Object.freeze({
|
|
|
1605
1754
|
__proto__: null
|
|
1606
1755
|
});
|
|
1607
1756
|
|
|
1608
|
-
/**
|
|
1609
|
-
* Represents a basic route item with path generation capabilities.
|
|
1610
|
-
* Handles route path construction with optional parameters.
|
|
1611
|
-
*/
|
|
1612
|
-
class RouteItem {
|
|
1613
|
-
/**
|
|
1614
|
-
* Creates a new RouteItem instance.
|
|
1615
|
-
* @param base - The base route segment
|
|
1616
|
-
* @param parentPub - The parent public path (defaults to empty string)
|
|
1617
|
-
* @param params - Optional route parameters to append
|
|
1618
|
-
*/
|
|
1619
|
-
constructor(base, parentPub = '', ...params) {
|
|
1620
|
-
// console.log(params);
|
|
1621
|
-
this._ = base + (params?.length ? '/:' + params.join('/:') : '');
|
|
1622
|
-
this.__ = base;
|
|
1623
|
-
this.pub = parentPub + '/' + base;
|
|
1624
|
-
}
|
|
1625
|
-
}
|
|
1626
|
-
/**
|
|
1627
|
-
* Extended route class that provides common application routes and utility methods.
|
|
1628
|
-
* Creates a standard set of routes for CRUD operations and navigation.
|
|
1629
|
-
*/
|
|
1630
|
-
class AppRouteBase extends RouteItem {
|
|
1631
|
-
/**
|
|
1632
|
-
* Creates a new AppRouteBase with standard child routes.
|
|
1633
|
-
* @param base - The base route segment
|
|
1634
|
-
* @param parentPub - The parent public path (defaults to empty string)
|
|
1635
|
-
* @param params - Optional route parameters to append
|
|
1636
|
-
*/
|
|
1637
|
-
constructor(base, parentPub = '', ...params) {
|
|
1638
|
-
super(base, parentPub, ...params);
|
|
1639
|
-
this.all = new RouteItem('all', this.pub);
|
|
1640
|
-
this.clone = new RouteItem('clone', this.pub, 'id');
|
|
1641
|
-
this.create = new CreateRoute('create', this.pub);
|
|
1642
|
-
this.edit = new RouteItem('edit', this.pub, 'id');
|
|
1643
|
-
this.find = new FindRoute('find', this.pub);
|
|
1644
|
-
this.index = new RouteItem('index', this.pub);
|
|
1645
|
-
this.overview = new RouteItem('overview', this.pub);
|
|
1646
|
-
this.show = new RouteItem('show', this.pub, 'id');
|
|
1647
|
-
this.start = new RouteItem('start', this.pub);
|
|
1648
|
-
}
|
|
1649
|
-
//#region funcs
|
|
1650
|
-
/**
|
|
1651
|
-
* Combines a route with a parent ID.
|
|
1652
|
-
* @param route - The base route
|
|
1653
|
-
* @param prtID - The parent ID to append
|
|
1654
|
-
* @returns The combined route string or null if route is falsy
|
|
1655
|
-
*/
|
|
1656
|
-
routeIdPipe(route, prtID) {
|
|
1657
|
-
return route ? route + '/' + prtID : null;
|
|
1658
|
-
}
|
|
1659
|
-
/**
|
|
1660
|
-
* Creates a route with ID and formatted title.
|
|
1661
|
-
* @param route - The base route
|
|
1662
|
-
* @param id - The item ID
|
|
1663
|
-
* @param title - Optional title to format and append
|
|
1664
|
-
* @returns The formatted route string
|
|
1665
|
-
*/
|
|
1666
|
-
routeIdTitlePipe(route, id, title) {
|
|
1667
|
-
return route + '/' + id + '/' + this.routeNamer(title);
|
|
1668
|
-
}
|
|
1669
|
-
/**
|
|
1670
|
-
* Creates a route with parent ID, item ID, and formatted title.
|
|
1671
|
-
* @param route - The base route
|
|
1672
|
-
* @param parentID - The parent item ID
|
|
1673
|
-
* @param id - The item ID
|
|
1674
|
-
* @param title - Optional title to format and append
|
|
1675
|
-
* @returns The formatted route string
|
|
1676
|
-
*/
|
|
1677
|
-
routePIdIdTitlePipe(route, parentID, id, title) {
|
|
1678
|
-
return route + '/' + parentID + '/' + id + '/' + this.routeNamer(title);
|
|
1679
|
-
}
|
|
1680
|
-
/**
|
|
1681
|
-
* Creates a route with parent ID, sub-item ID, item ID, and formatted title.
|
|
1682
|
-
* @param route - The base route
|
|
1683
|
-
* @param parentID - The parent item ID
|
|
1684
|
-
* @param subID - The sub-item ID
|
|
1685
|
-
* @param id - The item ID
|
|
1686
|
-
* @param title - Optional title to format and append
|
|
1687
|
-
* @returns The formatted route string
|
|
1688
|
-
*/
|
|
1689
|
-
routePidSidIdTitlePipe(route, parentID, subID, id, title) {
|
|
1690
|
-
return (route +
|
|
1691
|
-
'/' +
|
|
1692
|
-
parentID +
|
|
1693
|
-
'/' +
|
|
1694
|
-
subID +
|
|
1695
|
-
'/' +
|
|
1696
|
-
id +
|
|
1697
|
-
'/' +
|
|
1698
|
-
this.routeNamer(title));
|
|
1699
|
-
}
|
|
1700
|
-
/**
|
|
1701
|
-
* Formats a title for use in a URL.
|
|
1702
|
-
* Trims, removes special characters, converts to lowercase, and replaces spaces with hyphens.
|
|
1703
|
-
* @param title - The title to format
|
|
1704
|
-
* @returns The URL-friendly formatted title or empty string if no title provided
|
|
1705
|
-
*/
|
|
1706
|
-
routeNamer(title) {
|
|
1707
|
-
return title
|
|
1708
|
-
? title
|
|
1709
|
-
.substr(0, 30)
|
|
1710
|
-
.unChar('/')
|
|
1711
|
-
.trim()
|
|
1712
|
-
.toLowerCase()
|
|
1713
|
-
.split(' ')
|
|
1714
|
-
.filter((x) => x)
|
|
1715
|
-
.join('-')
|
|
1716
|
-
: '';
|
|
1717
|
-
}
|
|
1718
|
-
}
|
|
1719
|
-
/**
|
|
1720
|
-
* Specialized route for creation operations with different entity types.
|
|
1721
|
-
*/
|
|
1722
|
-
class CreateRoute extends RouteItem {
|
|
1723
|
-
constructor() {
|
|
1724
|
-
super(...arguments);
|
|
1725
|
-
/** Route for corporate entity creation */
|
|
1726
|
-
this.corporate = new RouteItem('corporate', this.pub);
|
|
1727
|
-
/** Route for group entity creation */
|
|
1728
|
-
this.group = new RouteItem('group', this.pub);
|
|
1729
|
-
/** Route for individual entity creation */
|
|
1730
|
-
this.individual = new RouteItem('individual', this.pub);
|
|
1731
|
-
/** Route for provider entity creation with sub-routes */
|
|
1732
|
-
this.provider = new CreateProviderRoute('provider', this.pub);
|
|
1733
|
-
}
|
|
1734
|
-
}
|
|
1735
|
-
/**
|
|
1736
|
-
* Specialized route for provider creation operations.
|
|
1737
|
-
*/
|
|
1738
|
-
class CreateProviderRoute extends RouteItem {
|
|
1739
|
-
constructor() {
|
|
1740
|
-
super(...arguments);
|
|
1741
|
-
/** Index route for provider creation */
|
|
1742
|
-
this.index = new RouteItem('index', this.pub);
|
|
1743
|
-
}
|
|
1744
|
-
}
|
|
1745
|
-
/**
|
|
1746
|
-
* Specialized route for find/search operations.
|
|
1747
|
-
*/
|
|
1748
|
-
class FindRoute extends RouteItem {
|
|
1749
|
-
constructor() {
|
|
1750
|
-
super(...arguments);
|
|
1751
|
-
/** Route for search results list */
|
|
1752
|
-
this.searchList = new RouteItem('search-list', this.pub);
|
|
1753
|
-
}
|
|
1754
|
-
}
|
|
1755
|
-
|
|
1756
1757
|
/**
|
|
1757
1758
|
* Configuration class containing application-wide constants and settings
|
|
1758
1759
|
*/
|
|
@@ -2210,123 +2211,15 @@ class BtnService {
|
|
|
2210
2211
|
activityDescription: btn.extractText,
|
|
2211
2212
|
});
|
|
2212
2213
|
}
|
|
2213
|
-
/**
|
|
2214
|
-
* Validates forms associated with a button when the button is disabled
|
|
2215
|
-
* Marks all form controls as touched to display validation errors
|
|
2216
|
-
* @param btn - The button component associated with forms
|
|
2217
|
-
*/
|
|
2218
|
-
checkForm(btn) {
|
|
2219
|
-
// debugger;
|
|
2220
|
-
if (btn.isDisabled() && btn.form()) {
|
|
2221
|
-
btn.form().markAllAsTouched();
|
|
2222
|
-
const form = btn.form();
|
|
2223
|
-
console.log(form);
|
|
2224
|
-
if (form instanceof FormGroup) {
|
|
2225
|
-
console.log(Object.keys(form.controls)
|
|
2226
|
-
.filter((x) => !form.controls[x].valid)
|
|
2227
|
-
.map((x) => form.controls[x]));
|
|
2228
|
-
}
|
|
2229
|
-
}
|
|
2230
|
-
if (btn.isDisabled() && btn.forms()) {
|
|
2231
|
-
btn.forms().forEach((form) => form.markAllAsTouched());
|
|
2232
|
-
// this.cdr.detectChanges();
|
|
2233
|
-
console.log(btn.forms());
|
|
2234
|
-
}
|
|
2235
|
-
}
|
|
2236
2214
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnService, deps: [{ token: UserActivityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2237
2215
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnService, providedIn: 'root' }); }
|
|
2238
2216
|
}
|
|
2239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnService, decorators: [{
|
|
2240
|
-
type: Injectable,
|
|
2241
|
-
args: [{
|
|
2242
|
-
providedIn: 'root',
|
|
2243
|
-
}]
|
|
2244
|
-
}], ctorParameters: () => [{ type: UserActivityService }] });
|
|
2245
|
-
|
|
2246
|
-
/**
|
|
2247
|
-
* Service for handling reactive form inputs and form schema conversions.
|
|
2248
|
-
* @template TIFormSchema Type for form schema, defaults to IFormSchema
|
|
2249
|
-
* @template TFCInput Type for form control inputs, defaults to FCInput
|
|
2250
|
-
*/
|
|
2251
|
-
class ETSReactiveFormInputService {
|
|
2252
|
-
constructor() {
|
|
2253
|
-
/**
|
|
2254
|
-
* Binds form controls from a FormGroup to an array of input objects
|
|
2255
|
-
* @template TFCInput Type of form control inputs
|
|
2256
|
-
* @param inputs Array of input objects to bind controls to
|
|
2257
|
-
* @param form FormGroup containing the controls to bind
|
|
2258
|
-
* @returns void
|
|
2259
|
-
*/
|
|
2260
|
-
this.bindFormControlToInputs = (inputs, form) => {
|
|
2261
|
-
inputs.forEach((x) => {
|
|
2262
|
-
x.form = form;
|
|
2263
|
-
x.formControl = form.controls[x.name];
|
|
2264
|
-
});
|
|
2265
|
-
};
|
|
2266
|
-
}
|
|
2267
|
-
/**
|
|
2268
|
-
* Converts an array of form control inputs to a controls object for FormGroup
|
|
2269
|
-
* @template TFCInput Type of form control inputs
|
|
2270
|
-
* @param inputs Array of form control inputs
|
|
2271
|
-
* @returns Object with control names as keys and AbstractControls as values
|
|
2272
|
-
*/
|
|
2273
|
-
formFieldsFromFCInputsArr(inputs) {
|
|
2274
|
-
const controls = {};
|
|
2275
|
-
for (const inp of inputs) {
|
|
2276
|
-
controls[inp.name] = inp.formControl;
|
|
2277
|
-
}
|
|
2278
|
-
return controls;
|
|
2279
|
-
}
|
|
2280
|
-
/**
|
|
2281
|
-
* Converts a form schema array to form controls object
|
|
2282
|
-
* @template TIFormSchema Type of form schema
|
|
2283
|
-
* @param formFields Array of form schema objects
|
|
2284
|
-
* @returns Object with field names as keys and FormControls as values
|
|
2285
|
-
*/
|
|
2286
|
-
formSchemaToFormControls(formFields) {
|
|
2287
|
-
const controls = {};
|
|
2288
|
-
formFields?.forEach((inp) => {
|
|
2289
|
-
controls[inp.field?.toString()] = new FormControl(inp.value, inp.validators?.map((v) => v.bind(this)), inp.asyncValidators?.map((v) => v.bind(this)));
|
|
2290
|
-
});
|
|
2291
|
-
// controls['__rowID']=new FormControl('id'+Math.round(Math.random()*10000000))
|
|
2292
|
-
return controls;
|
|
2293
|
-
}
|
|
2294
|
-
/**
|
|
2295
|
-
* Adds form controls from a form schema array to an existing FormGroup
|
|
2296
|
-
* @template TIFormSchema Type of form schema
|
|
2297
|
-
* @param formFields Array of form schema objects
|
|
2298
|
-
* @param form Existing FormGroup to add controls to
|
|
2299
|
-
* @returns Updated FormGroup with added controls
|
|
2300
|
-
*/
|
|
2301
|
-
addFormSchemaToForm(formFields, form) {
|
|
2302
|
-
formFields?.forEach((inp) => {
|
|
2303
|
-
form.addControl(inp.field?.toString(), new FormControl(inp.value, inp.validators?.map((v) => v.bind(this)), inp.asyncValidators?.map((v) => v.bind(this))));
|
|
2304
|
-
});
|
|
2305
|
-
// controls['__rowID']=new FormControl('id'+Math.round(Math.random()*10000000))
|
|
2306
|
-
return form;
|
|
2307
|
-
}
|
|
2308
|
-
/**
|
|
2309
|
-
* Creates form controls from a plain object
|
|
2310
|
-
* @template T Type of the input object
|
|
2311
|
-
* @param obj Object with properties to convert to form controls
|
|
2312
|
-
* @returns Object with same keys as input and FormControls as values
|
|
2313
|
-
*/
|
|
2314
|
-
formFieldsFromObj(obj) {
|
|
2315
|
-
const controls = {};
|
|
2316
|
-
for (const inp in obj) {
|
|
2317
|
-
controls[inp] = new FormControl(obj[inp]);
|
|
2318
|
-
}
|
|
2319
|
-
return controls;
|
|
2320
|
-
}
|
|
2321
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2322
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, providedIn: 'root' }); }
|
|
2323
|
-
}
|
|
2324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, decorators: [{
|
|
2217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnService, decorators: [{
|
|
2325
2218
|
type: Injectable,
|
|
2326
2219
|
args: [{
|
|
2327
2220
|
providedIn: 'root',
|
|
2328
2221
|
}]
|
|
2329
|
-
}], ctorParameters: () => [] });
|
|
2222
|
+
}], ctorParameters: () => [{ type: UserActivityService }] });
|
|
2330
2223
|
|
|
2331
2224
|
class PageLoaderService extends PageLoader {
|
|
2332
2225
|
constructor() {
|
|
@@ -3184,8 +3077,6 @@ class UtilityService {
|
|
|
3184
3077
|
this.titleS = inject(Title);
|
|
3185
3078
|
/** Angular Location service for browser location management */
|
|
3186
3079
|
this.location = inject(Location);
|
|
3187
|
-
/** Service for handling form input operations */
|
|
3188
|
-
this.inputService = inject(ETSReactiveFormInputService);
|
|
3189
3080
|
/** Service for managing page loading states */
|
|
3190
3081
|
this.pS = inject(PageLoaderService);
|
|
3191
3082
|
/** Angular CurrencyPipe for currency formatting */
|
|
@@ -3602,11 +3493,6 @@ class UtilityService {
|
|
|
3602
3493
|
else
|
|
3603
3494
|
return `${item} - ${obj[labelField || 'title'] || obj[labelField || 'description']}`;
|
|
3604
3495
|
};
|
|
3605
|
-
this.formFieldsFromArr = this.inputService.formFieldsFromFCInputsArr;
|
|
3606
|
-
this.objToFormControls = this.inputService.formFieldsFromObj;
|
|
3607
|
-
this.formSchemaToFormControls = this.inputService.formSchemaToFormControls;
|
|
3608
|
-
this.addFormSchemaToForm = this.inputService.addFormSchemaToForm;
|
|
3609
|
-
this.bindFormControlToInputs = this.inputService.bindFormControlToInputs;
|
|
3610
3496
|
this.go = (value, extra) => {
|
|
3611
3497
|
this.router.navigate([value], extra);
|
|
3612
3498
|
};
|
|
@@ -4102,20 +3988,6 @@ class UtilityService {
|
|
|
4102
3988
|
form.addControl(key, new FormControl(data[key]));
|
|
4103
3989
|
return form;
|
|
4104
3990
|
};
|
|
4105
|
-
/**
|
|
4106
|
-
* Converts a form schema to a FormGroup
|
|
4107
|
-
* @param schema Form schema definition
|
|
4108
|
-
* @param data Optional initial data
|
|
4109
|
-
* @returns FormGroup built from the schema
|
|
4110
|
-
*/
|
|
4111
|
-
this.formSchemaToFormGroup = (schema, data) => {
|
|
4112
|
-
const form = new FormGroup({});
|
|
4113
|
-
for (const item of schema)
|
|
4114
|
-
form.addControl(item.field.toString(), new FormControl(data[item.field.toString()], item.isRequired
|
|
4115
|
-
? (item.validators || [])?.concat([Validators.required])
|
|
4116
|
-
: item.validators, item.asyncValidators));
|
|
4117
|
-
return form;
|
|
4118
|
-
};
|
|
4119
3991
|
/**
|
|
4120
3992
|
* Times the execution of a code block
|
|
4121
3993
|
* @param label Label for the timing log
|
|
@@ -6144,8 +6016,31 @@ class BtnComponent {
|
|
|
6144
6016
|
enable() {
|
|
6145
6017
|
this.disabled.set(false);
|
|
6146
6018
|
}
|
|
6019
|
+
/**
|
|
6020
|
+
* Validates forms associated with a button when the button is disabled
|
|
6021
|
+
* Marks all form controls as touched to display validation errors
|
|
6022
|
+
* @param btn - The button component associated with forms
|
|
6023
|
+
*/
|
|
6024
|
+
checkForm() {
|
|
6025
|
+
// debugger;
|
|
6026
|
+
if (this.isDisabled() && this.form()) {
|
|
6027
|
+
this.form().markAllAsTouched();
|
|
6028
|
+
const form = this.form();
|
|
6029
|
+
console.log(form);
|
|
6030
|
+
if (form instanceof FormGroup) {
|
|
6031
|
+
console.log(Object.keys(form.controls)
|
|
6032
|
+
.filter((x) => !form.controls[x].valid)
|
|
6033
|
+
.map((x) => form.controls[x]));
|
|
6034
|
+
}
|
|
6035
|
+
}
|
|
6036
|
+
if (this.isDisabled() && this.forms()) {
|
|
6037
|
+
this.forms().forEach((form) => form.markAllAsTouched());
|
|
6038
|
+
// this.cdr.detectChanges();
|
|
6039
|
+
console.log(this.forms());
|
|
6040
|
+
}
|
|
6041
|
+
}
|
|
6147
6042
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: BtnComponent, isStandalone: true, selector: "app-btn", inputs: { formSchema: { classPropertyName: "formSchema", publicName: "formSchema", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, centerBtn: { classPropertyName: "centerBtn", publicName: "centerBtn", isSignal: true, isRequired: false, transformFunction: null }, danger: { classPropertyName: "danger", publicName: "danger", isSignal: true, isRequired: false, transformFunction: null }, warning: { classPropertyName: "warning", publicName: "warning", isSignal: true, isRequired: false, transformFunction: null }, verbose: { classPropertyName: "verbose", publicName: "verbose", isSignal: true, isRequired: false, transformFunction: null }, translatorOptions: { classPropertyName: "translatorOptions", publicName: "translatorOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, _icon: { classPropertyName: "_icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, _rightIcon: { classPropertyName: "_rightIcon", publicName: "rightIcon", isSignal: false, isRequired: false, transformFunction: null }, _leftIcon: { classPropertyName: "_leftIcon", publicName: "leftIcon", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, _group: { classPropertyName: "_group", publicName: "group", isSignal: false, isRequired: false, transformFunction: null }, actionType: { classPropertyName: "actionType", publicName: "actionType", isSignal: true, isRequired: false, transformFunction: null }, animate: { classPropertyName: "animate", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, excludeLogging: { classPropertyName: "excludeLogging", publicName: "excludeLogging", isSignal: false, isRequired: false, transformFunction: booleanAttribute2 }, loggingValue: { classPropertyName: "loggingValue", publicName: "loggingValue", isSignal: false, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, customIcon: { classPropertyName: "customIcon", publicName: "customIcon", isSignal: false, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, forms: { classPropertyName: "forms", publicName: "forms", isSignal: true, isRequired: false, transformFunction: null }, help: { classPropertyName: "help", publicName: "help", isSignal: true, isRequired: false, transformFunction: null }, helpShowDelay: { classPropertyName: "helpShowDelay", publicName: "helpShowDelay", isSignal: true, isRequired: false, transformFunction: null }, _iconBtn: { classPropertyName: "_iconBtn", publicName: "iconBtn", isSignal: false, isRequired: false, transformFunction: booleanAttribute2 }, mclass: { classPropertyName: "mclass", publicName: "mclass", isSignal: true, isRequired: false, transformFunction: null }, showHelpIcon: { classPropertyName: "showHelpIcon", publicName: "showHelpIcon", isSignal: true, isRequired: false, transformFunction: null }, _rightCustomIcon: { classPropertyName: "_rightCustomIcon", publicName: "rightCustomIcon", isSignal: false, isRequired: false, transformFunction: null }, leftCustomIcon: { classPropertyName: "leftCustomIcon", publicName: "leftCustomIcon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: true, isRequired: false, transformFunction: null }, mini: { classPropertyName: "mini", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, onFormInvalid: { classPropertyName: "onFormInvalid", publicName: "onFormInvalid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loading: "loadingChange", leftCustomIcon: "leftCustomIconChange", mclick: "mclick", disabled: "disabledChange" }, viewQueries: [{ propertyName: "innerText", first: true, predicate: ["innerText"], descendants: true }], ngImport: i0, template: "@if (verbose()) {\n <div class=\"\">formState():{{ formState() | json }}</div>\n <div class=\"\">form():{{ form()?.getRawValue() | json }}</div>\n}\n<span\n class=\"{{ class() }} d-flex align-items-center justify-content-center\"\n [ngClass]=\"{ disabled: isDisabled(), mini: mini() }\"\n (click)=\"
|
|
6043
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: BtnComponent, isStandalone: true, selector: "app-btn", inputs: { formSchema: { classPropertyName: "formSchema", publicName: "formSchema", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, centerBtn: { classPropertyName: "centerBtn", publicName: "centerBtn", isSignal: true, isRequired: false, transformFunction: null }, danger: { classPropertyName: "danger", publicName: "danger", isSignal: true, isRequired: false, transformFunction: null }, warning: { classPropertyName: "warning", publicName: "warning", isSignal: true, isRequired: false, transformFunction: null }, verbose: { classPropertyName: "verbose", publicName: "verbose", isSignal: true, isRequired: false, transformFunction: null }, translatorOptions: { classPropertyName: "translatorOptions", publicName: "translatorOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, _icon: { classPropertyName: "_icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, _rightIcon: { classPropertyName: "_rightIcon", publicName: "rightIcon", isSignal: false, isRequired: false, transformFunction: null }, _leftIcon: { classPropertyName: "_leftIcon", publicName: "leftIcon", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, _group: { classPropertyName: "_group", publicName: "group", isSignal: false, isRequired: false, transformFunction: null }, actionType: { classPropertyName: "actionType", publicName: "actionType", isSignal: true, isRequired: false, transformFunction: null }, animate: { classPropertyName: "animate", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, excludeLogging: { classPropertyName: "excludeLogging", publicName: "excludeLogging", isSignal: false, isRequired: false, transformFunction: booleanAttribute2 }, loggingValue: { classPropertyName: "loggingValue", publicName: "loggingValue", isSignal: false, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, customIcon: { classPropertyName: "customIcon", publicName: "customIcon", isSignal: false, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, forms: { classPropertyName: "forms", publicName: "forms", isSignal: true, isRequired: false, transformFunction: null }, help: { classPropertyName: "help", publicName: "help", isSignal: true, isRequired: false, transformFunction: null }, helpShowDelay: { classPropertyName: "helpShowDelay", publicName: "helpShowDelay", isSignal: true, isRequired: false, transformFunction: null }, _iconBtn: { classPropertyName: "_iconBtn", publicName: "iconBtn", isSignal: false, isRequired: false, transformFunction: booleanAttribute2 }, mclass: { classPropertyName: "mclass", publicName: "mclass", isSignal: true, isRequired: false, transformFunction: null }, showHelpIcon: { classPropertyName: "showHelpIcon", publicName: "showHelpIcon", isSignal: true, isRequired: false, transformFunction: null }, _rightCustomIcon: { classPropertyName: "_rightCustomIcon", publicName: "rightCustomIcon", isSignal: false, isRequired: false, transformFunction: null }, leftCustomIcon: { classPropertyName: "leftCustomIcon", publicName: "leftCustomIcon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: true, isRequired: false, transformFunction: null }, mini: { classPropertyName: "mini", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, onFormInvalid: { classPropertyName: "onFormInvalid", publicName: "onFormInvalid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loading: "loadingChange", leftCustomIcon: "leftCustomIconChange", mclick: "mclick", disabled: "disabledChange" }, viewQueries: [{ propertyName: "innerText", first: true, predicate: ["innerText"], descendants: true }], ngImport: i0, template: "@if (verbose()) {\n <div class=\"\">formState():{{ formState() | json }}</div>\n <div class=\"\">form():{{ form()?.getRawValue() | json }}</div>\n}\n<span\n class=\"{{ class() }} d-flex align-items-center justify-content-center\"\n [ngClass]=\"{ disabled: isDisabled(), mini: mini() }\"\n (click)=\"checkForm()\">\n @if (showHelpIcon() && help()) {\n <i\n class=\"fa fa-info-circle me-2 text-primary\"\n [matTooltipShowDelay]=\"helpShowDelay()\"\n [matTooltip]=\"help() | appTranslate: translatorOptions() | async\"></i>\n }\n <button\n type=\"{{ actionType() }}\"\n class=\"{{ mclass() }} {{ _mclass() || 'btn' }} d-flex align-items-center \"\n [matBadge]=\"badge()\"\n [ngClass]=\"ngClass()\"\n [disabled]=\"isDisabled()\"\n (click)=\"click($event)\"\n [matTooltipShowDelay]=\"helpShowDelay()\"\n [matTooltip]=\"showHelpIcon() ? null : (help() | appTranslate: translatorOptions() | async)\">\n @if (showLeftDisabledIcon()) {\n <fa-icon [icon]=\"lockedIcon()\" />\n } @else if (showLeftCustomIcon()) {\n <i class=\"{{ leftCustomIcon() }}\"></i>\n } @else if (showLeftIcon()) {\n <fa-icon [icon]=\"leftIcon()\" />\n }\n\n @if (computedText()) {\n <span\n class=\"\"\n [ngClass]=\"{\n 'ms-1': leftIcon() || leftCustomIcon(),\n 'me-1': rightIcon() || rightCustomIcon(),\n }\">\n {{ computedText() | appTranslate: translatorOptions() | async }}\n </span>\n } @else {\n <span\n class=\" \"\n [ngClass]=\"{\n 'ms-1': innerText.innerText && (leftIcon() || leftCustomIcon()),\n 'me-1': innerText.innerText && (rightIcon() || rightCustomIcon()),\n }\"\n #innerText\n [debug]=\"debug()\"\n appTranslator>\n <ng-content></ng-content>\n </span>\n }\n\n @if (loading()) {\n <span class=\"fa fa-spinner ms-{{ iconBtn() ? '' : '2' }} fa-spin\"></span>\n } @else if (showRightDisabledIcon()) {\n <fa-icon [icon]=\"lockedIcon()\" />\n } @else if (showRightCustomIcon()) {\n <i class=\"{{ rightCustomIcon() }}\"></i>\n } @else if (showRightIcon()) {\n <fa-icon [icon]=\"rightIcon()\" />\n }\n </button>\n</span>\n", styles: [".lite{padding:0}.disabled{cursor:not-allowed}.invalid{border:3px solid var(--bs-danger)}.mini button{height:auto!important;min-height:unset;padding:2px 5px}@keyframes animateDanger{0%{background-color:red;border-color:red;background-image:none;color:#fff}50%{background-color:red;border-color:red;background-image:none;color:#fff}}@keyframes animateWarning{0%{background-color:#ff8107;border-color:#ff8107;background-image:none;color:#000}50%{background-color:#ff8107;border-color:#ff8107;background-image:none;color:#000}}.isDanger{animation-name:animateDanger;animation-duration:1s;animation-iteration-count:infinite}.isWarning{animation-name:animateWarning;animation-duration:1s;animation-iteration-count:infinite}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: TranslatorDirective, selector: "[appTranslator]", inputs: ["appTranslator", "debug", "translateOptions"] }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
6149
6044
|
}
|
|
6150
6045
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BtnComponent, decorators: [{
|
|
6151
6046
|
type: Component,
|
|
@@ -6158,7 +6053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
6158
6053
|
TranslatorDirective,
|
|
6159
6054
|
AsyncPipe,
|
|
6160
6055
|
SDKTranslatePipe,
|
|
6161
|
-
], template: "@if (verbose()) {\n <div class=\"\">formState():{{ formState() | json }}</div>\n <div class=\"\">form():{{ form()?.getRawValue() | json }}</div>\n}\n<span\n class=\"{{ class() }} d-flex align-items-center justify-content-center\"\n [ngClass]=\"{ disabled: isDisabled(), mini: mini() }\"\n (click)=\"
|
|
6056
|
+
], template: "@if (verbose()) {\n <div class=\"\">formState():{{ formState() | json }}</div>\n <div class=\"\">form():{{ form()?.getRawValue() | json }}</div>\n}\n<span\n class=\"{{ class() }} d-flex align-items-center justify-content-center\"\n [ngClass]=\"{ disabled: isDisabled(), mini: mini() }\"\n (click)=\"checkForm()\">\n @if (showHelpIcon() && help()) {\n <i\n class=\"fa fa-info-circle me-2 text-primary\"\n [matTooltipShowDelay]=\"helpShowDelay()\"\n [matTooltip]=\"help() | appTranslate: translatorOptions() | async\"></i>\n }\n <button\n type=\"{{ actionType() }}\"\n class=\"{{ mclass() }} {{ _mclass() || 'btn' }} d-flex align-items-center \"\n [matBadge]=\"badge()\"\n [ngClass]=\"ngClass()\"\n [disabled]=\"isDisabled()\"\n (click)=\"click($event)\"\n [matTooltipShowDelay]=\"helpShowDelay()\"\n [matTooltip]=\"showHelpIcon() ? null : (help() | appTranslate: translatorOptions() | async)\">\n @if (showLeftDisabledIcon()) {\n <fa-icon [icon]=\"lockedIcon()\" />\n } @else if (showLeftCustomIcon()) {\n <i class=\"{{ leftCustomIcon() }}\"></i>\n } @else if (showLeftIcon()) {\n <fa-icon [icon]=\"leftIcon()\" />\n }\n\n @if (computedText()) {\n <span\n class=\"\"\n [ngClass]=\"{\n 'ms-1': leftIcon() || leftCustomIcon(),\n 'me-1': rightIcon() || rightCustomIcon(),\n }\">\n {{ computedText() | appTranslate: translatorOptions() | async }}\n </span>\n } @else {\n <span\n class=\" \"\n [ngClass]=\"{\n 'ms-1': innerText.innerText && (leftIcon() || leftCustomIcon()),\n 'me-1': innerText.innerText && (rightIcon() || rightCustomIcon()),\n }\"\n #innerText\n [debug]=\"debug()\"\n appTranslator>\n <ng-content></ng-content>\n </span>\n }\n\n @if (loading()) {\n <span class=\"fa fa-spinner ms-{{ iconBtn() ? '' : '2' }} fa-spin\"></span>\n } @else if (showRightDisabledIcon()) {\n <fa-icon [icon]=\"lockedIcon()\" />\n } @else if (showRightCustomIcon()) {\n <i class=\"{{ rightCustomIcon() }}\"></i>\n } @else if (showRightIcon()) {\n <fa-icon [icon]=\"rightIcon()\" />\n }\n </button>\n</span>\n", styles: [".lite{padding:0}.disabled{cursor:not-allowed}.invalid{border:3px solid var(--bs-danger)}.mini button{height:auto!important;min-height:unset;padding:2px 5px}@keyframes animateDanger{0%{background-color:red;border-color:red;background-image:none;color:#fff}50%{background-color:red;border-color:red;background-image:none;color:#fff}}@keyframes animateWarning{0%{background-color:#ff8107;border-color:#ff8107;background-image:none;color:#000}50%{background-color:#ff8107;border-color:#ff8107;background-image:none;color:#000}}.isDanger{animation-name:animateDanger;animation-duration:1s;animation-iteration-count:infinite}.isWarning{animation-name:animateWarning;animation-duration:1s;animation-iteration-count:infinite}\n"] }]
|
|
6162
6057
|
}], ctorParameters: () => [], propDecorators: { _icon: [{
|
|
6163
6058
|
type: Input,
|
|
6164
6059
|
args: ['icon']
|
|
@@ -6493,44 +6388,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
6493
6388
|
standalone: true,
|
|
6494
6389
|
}]
|
|
6495
6390
|
}] });
|
|
6496
|
-
/**
|
|
6497
|
-
* Converts an object to an array of labels for display
|
|
6498
|
-
*/
|
|
6499
|
-
class ObjectToLabelsPipe {
|
|
6500
|
-
/**
|
|
6501
|
-
* Converts an object to an array of labels with optional custom field mapping
|
|
6502
|
-
* @param value The source object to convert
|
|
6503
|
-
* @param customFieldMap Optional mapping of object keys to ITextCase2 properties
|
|
6504
|
-
* @param exclusionList Optional map of field names to exclude
|
|
6505
|
-
* @returns Array of ITextCase2 objects representing the object's fields
|
|
6506
|
-
*/
|
|
6507
|
-
transform(value, customFieldMap, exclusionList) {
|
|
6508
|
-
// debugger;
|
|
6509
|
-
const _exclusionList = {
|
|
6510
|
-
id: true,
|
|
6511
|
-
...exclusionList,
|
|
6512
|
-
};
|
|
6513
|
-
return Object.keys(value || {})
|
|
6514
|
-
.filter((x) => !_exclusionList[x])
|
|
6515
|
-
.map((f) => ({
|
|
6516
|
-
...customFieldMap?.[f],
|
|
6517
|
-
label: customFieldMap?.[f]?.label || this.uS.formatField(f),
|
|
6518
|
-
value: value[f],
|
|
6519
|
-
}));
|
|
6520
|
-
}
|
|
6521
|
-
constructor(uS) {
|
|
6522
|
-
this.uS = uS;
|
|
6523
|
-
}
|
|
6524
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, deps: [{ token: UtilityService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
6525
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, isStandalone: true, name: "objectToLabels" }); }
|
|
6526
|
-
}
|
|
6527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, decorators: [{
|
|
6528
|
-
type: Pipe,
|
|
6529
|
-
args: [{
|
|
6530
|
-
name: 'objectToLabels',
|
|
6531
|
-
standalone: true,
|
|
6532
|
-
}]
|
|
6533
|
-
}], ctorParameters: () => [{ type: UtilityService }] });
|
|
6534
6391
|
/**
|
|
6535
6392
|
* Retrieves a label for a value from a list of options
|
|
6536
6393
|
*/
|
|
@@ -7235,42 +7092,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
7235
7092
|
standalone: true,
|
|
7236
7093
|
}]
|
|
7237
7094
|
}] });
|
|
7238
|
-
/**
|
|
7239
|
-
* Converts a form.value to string
|
|
7240
|
-
*/
|
|
7241
|
-
class FormValuePipe {
|
|
7242
|
-
transform(formValue, formSchema) {
|
|
7243
|
-
// debugger;
|
|
7244
|
-
return formValue
|
|
7245
|
-
? (formSchema?.length && typeof formSchema[0] != 'string'
|
|
7246
|
-
? formSchema.map((field) => {
|
|
7247
|
-
// debugger;
|
|
7248
|
-
const val = field.type == 'select' || field.type == 'autocomplete'
|
|
7249
|
-
? field.selectedOptionLabel || formValue[field.field]
|
|
7250
|
-
: formValue[field.field];
|
|
7251
|
-
return val != null ? `${field.label}: ${val}` : null;
|
|
7252
|
-
})
|
|
7253
|
-
: (formSchema || Object.keys(formValue)).map((x) => {
|
|
7254
|
-
const val = formValue[x];
|
|
7255
|
-
return `${this.uS.formatField(x)}: ${val != null ? val : '-'}`;
|
|
7256
|
-
}))
|
|
7257
|
-
.filter((x) => x)
|
|
7258
|
-
.join('\n')
|
|
7259
|
-
: '';
|
|
7260
|
-
}
|
|
7261
|
-
constructor(uS) {
|
|
7262
|
-
this.uS = uS;
|
|
7263
|
-
}
|
|
7264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, deps: [{ token: UtilityService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
7265
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, isStandalone: true, name: "formValue" }); }
|
|
7266
|
-
}
|
|
7267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, decorators: [{
|
|
7268
|
-
type: Pipe,
|
|
7269
|
-
args: [{
|
|
7270
|
-
name: 'formValue',
|
|
7271
|
-
standalone: true,
|
|
7272
|
-
}]
|
|
7273
|
-
}], ctorParameters: () => [{ type: UtilityService }] });
|
|
7274
7095
|
/**
|
|
7275
7096
|
* Converts a field name to a formatted label
|
|
7276
7097
|
*/
|
|
@@ -7462,25 +7283,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
7462
7283
|
type: Pipe,
|
|
7463
7284
|
args: [{ name: 'objectToArray', standalone: true }]
|
|
7464
7285
|
}] });
|
|
7465
|
-
/**
|
|
7466
|
-
* Converts form schema to table columns
|
|
7467
|
-
*/
|
|
7468
|
-
class FormSchemaToTableColumnsPipe {
|
|
7469
|
-
/**
|
|
7470
|
-
* Converts form schema to table columns configuration
|
|
7471
|
-
* @param value Array of form schema definitions
|
|
7472
|
-
* @returns Array of table column configurations
|
|
7473
|
-
*/
|
|
7474
|
-
transform(value) {
|
|
7475
|
-
return value?.map((x) => ({ f: x.field, t: x.label })) || [];
|
|
7476
|
-
}
|
|
7477
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
7478
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, isStandalone: true, name: "formSchemaToCols" }); }
|
|
7479
|
-
}
|
|
7480
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, decorators: [{
|
|
7481
|
-
type: Pipe,
|
|
7482
|
-
args: [{ name: 'formSchemaToCols', standalone: true }]
|
|
7483
|
-
}] });
|
|
7484
7286
|
/**
|
|
7485
7287
|
* Provides responsive values based on screen size
|
|
7486
7288
|
*/
|
|
@@ -7526,8 +7328,6 @@ const comps$3 = [
|
|
|
7526
7328
|
FilterArrayPipe,
|
|
7527
7329
|
FilterFormArrayGroupPipe,
|
|
7528
7330
|
FormInvalidClassPipe,
|
|
7529
|
-
FormSchemaToTableColumnsPipe,
|
|
7530
|
-
FormValuePipe,
|
|
7531
7331
|
FunctionCaller,
|
|
7532
7332
|
FunctionCaller1,
|
|
7533
7333
|
FunctionCaller2,
|
|
@@ -7563,7 +7363,7 @@ const comps$3 = [
|
|
|
7563
7363
|
const modules = [];
|
|
7564
7364
|
class UtilityPipesModule {
|
|
7565
7365
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7566
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: UtilityPipesModule, imports: [CommonModule, ArraySplitter, CustomDatePipe, FieldToLabelPipe, FilterArrayByStringPipe, FilterArrayPipe, FilterFormArrayGroupPipe, FormInvalidClassPipe,
|
|
7366
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: UtilityPipesModule, imports: [CommonModule, ArraySplitter, CustomDatePipe, FieldToLabelPipe, FilterArrayByStringPipe, FilterArrayPipe, FilterFormArrayGroupPipe, FormInvalidClassPipe, FunctionCaller, FunctionCaller1, FunctionCaller2, FunctionCaller3, GenderPipe, GetValueLabel, HasFormValuePipe, HasValuePipe, CodeTitleDescPipe, HttpListCaller, HttpListCaller1, HttpListCaller2, IsClonePage, IsShowPage, ObjectToArrayPipe, RefresherPipe, RemoveUsedOptionsPipe, ReplaceAllPipe, ResponsiveValPipe, RoundPipe, SecondsToTimePipe, SortPipe, StrConcatenatorPipe, ToAnyArrayPipe, ToAnyPipe, SDKTranslatePipe, TrimPipe, TrimTextPipe, ValueFormatterPipe, ValueOrXPipe, XOrYPipe], exports: [ArraySplitter, CustomDatePipe, FieldToLabelPipe, FilterArrayByStringPipe, FilterArrayPipe, FilterFormArrayGroupPipe, FormInvalidClassPipe, FunctionCaller, FunctionCaller1, FunctionCaller2, FunctionCaller3, GenderPipe, GetValueLabel, HasFormValuePipe, HasValuePipe, CodeTitleDescPipe, HttpListCaller, HttpListCaller1, HttpListCaller2, IsClonePage, IsShowPage, ObjectToArrayPipe, RefresherPipe, RemoveUsedOptionsPipe, ReplaceAllPipe, ResponsiveValPipe, RoundPipe, SecondsToTimePipe, SortPipe, StrConcatenatorPipe, ToAnyArrayPipe, ToAnyPipe, SDKTranslatePipe, TrimPipe, TrimTextPipe, ValueFormatterPipe, ValueOrXPipe, XOrYPipe] }); }
|
|
7567
7367
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityPipesModule, imports: [CommonModule, modules] }); }
|
|
7568
7368
|
}
|
|
7569
7369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityPipesModule, decorators: [{
|
|
@@ -8298,6 +8098,7 @@ class ValidationMessageComponent {
|
|
|
8298
8098
|
/** Whether to show validation errors regardless of the control's dirty state */
|
|
8299
8099
|
this.ignoreDirtiness = input(...(ngDevMode ? [undefined, { debugName: "ignoreDirtiness" }] : []));
|
|
8300
8100
|
/** InputBasicComponent that contains the control to validate */
|
|
8101
|
+
// readonly input = input<InputBasicComponent | undefined>();
|
|
8301
8102
|
this.input = input(...(ngDevMode ? [undefined, { debugName: "input" }] : []));
|
|
8302
8103
|
/** Label for the input field */
|
|
8303
8104
|
this.label = model(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
@@ -8394,7 +8195,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
8394
8195
|
SDKTranslatePipe,
|
|
8395
8196
|
forwardRef(() => ErrorMessagePipe),
|
|
8396
8197
|
MatTooltipModule,
|
|
8397
|
-
SDKTranslateNoLoaderPipe
|
|
8198
|
+
SDKTranslateNoLoaderPipe,
|
|
8398
8199
|
], template: "<div class=\"text-danger\" [class.applyMargin]=\"applyMargin()\" (click)=\"logErrors()\" [ngClass]=\"{ hideOverflow: hideOverflow() }\" #el>\n @for (error of computedErrors(); track error) {\n <div class=\"d-flex gap-1\">\n <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\n <span\n class=\"me-2 errormssg\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"\n ele.scrollHeight <= ele.offsetHeight && ele.scrollWidth <= ele.offsetWidth\n \"\n [innerHTML]=\"error | appTranslateNL: translationConfig | async\"\n #ele></span>\n </div>\n }\n</div>\n", styles: [".text-danger{min-height:25px;position:relative}.applyMargin{margin-top:5px}.errormssg{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:.8rem}.hideOverflow{height:25px;overflow:hidden}\n"] }]
|
|
8399
8200
|
}] });
|
|
8400
8201
|
/**
|
|
@@ -10258,11 +10059,6 @@ const InputSharedModules = [
|
|
|
10258
10059
|
MatSelectModule,
|
|
10259
10060
|
MatTooltipModule,
|
|
10260
10061
|
NgClass,
|
|
10261
|
-
NgFor,
|
|
10262
|
-
NgIf,
|
|
10263
|
-
NgSwitch,
|
|
10264
|
-
NgSwitchCase,
|
|
10265
|
-
NgSwitchDefault,
|
|
10266
10062
|
ReactiveFormsModule,
|
|
10267
10063
|
ToAnyPipe,
|
|
10268
10064
|
SDKTranslatePipe,
|
|
@@ -16232,7 +16028,134 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
16232
16028
|
template: '',
|
|
16233
16029
|
standalone: false
|
|
16234
16030
|
}]
|
|
16235
|
-
}], ctorParameters: () => [] });
|
|
16031
|
+
}], ctorParameters: () => [] });
|
|
16032
|
+
|
|
16033
|
+
/**
|
|
16034
|
+
* Component for displaying information dialogs with customizable content and actions.
|
|
16035
|
+
* Supports different status types (success, info, danger, warning) and configurable buttons.
|
|
16036
|
+
*/
|
|
16037
|
+
class InfoDialogComponent {
|
|
16038
|
+
/**
|
|
16039
|
+
* @param data Configuration data for the dialog
|
|
16040
|
+
* @param data.text Main content text to display
|
|
16041
|
+
* @param data.heading Dialog title/heading
|
|
16042
|
+
* @param data.status Status code determining the dialog's visual style (0=danger, 1=success, 2=info, 3=warning)
|
|
16043
|
+
* @param data.btns Array of button configurations to display
|
|
16044
|
+
* @param dialogRef Reference to the dialog instance
|
|
16045
|
+
*/
|
|
16046
|
+
constructor(data, dialogRef) {
|
|
16047
|
+
this.data = data;
|
|
16048
|
+
this.dialogRef = dialogRef;
|
|
16049
|
+
/**
|
|
16050
|
+
* Handles custom button actions
|
|
16051
|
+
* @param event The pointer event that triggered the action
|
|
16052
|
+
* @param item The button configuration
|
|
16053
|
+
*/
|
|
16054
|
+
this.handleAction = (event, item) => {
|
|
16055
|
+
item?.action(event);
|
|
16056
|
+
if (item?.closeBoxOnClick)
|
|
16057
|
+
this.dialogRef.close();
|
|
16058
|
+
};
|
|
16059
|
+
/**
|
|
16060
|
+
* Returns the CSS class name based on the status code
|
|
16061
|
+
* @param status Status code (0=danger, 1=success, 2=info, 3=warning)
|
|
16062
|
+
* @returns CSS class name corresponding to the status
|
|
16063
|
+
*/
|
|
16064
|
+
this.cls = (status = this.data.status) => {
|
|
16065
|
+
switch (status) {
|
|
16066
|
+
case 1:
|
|
16067
|
+
return 'success';
|
|
16068
|
+
case 2:
|
|
16069
|
+
return 'info';
|
|
16070
|
+
case 0:
|
|
16071
|
+
return 'danger';
|
|
16072
|
+
case 3:
|
|
16073
|
+
return 'warning';
|
|
16074
|
+
default:
|
|
16075
|
+
return '';
|
|
16076
|
+
}
|
|
16077
|
+
};
|
|
16078
|
+
}
|
|
16079
|
+
/** Lifecycle hook that is called after data-bound properties are initialized */
|
|
16080
|
+
ngOnInit() { }
|
|
16081
|
+
/**
|
|
16082
|
+
* Handles the affirmative action for the dialog
|
|
16083
|
+
* @param btn Optional button configuration that triggered this action
|
|
16084
|
+
*/
|
|
16085
|
+
yes(btn) {
|
|
16086
|
+
if (btn && btn.closeBoxOnClick === false)
|
|
16087
|
+
return;
|
|
16088
|
+
this.dialogRef.close(true);
|
|
16089
|
+
}
|
|
16090
|
+
/**
|
|
16091
|
+
* Handles the negative action for the dialog
|
|
16092
|
+
* Closes the dialog with a false result
|
|
16093
|
+
*/
|
|
16094
|
+
no() {
|
|
16095
|
+
this.dialogRef.close(false);
|
|
16096
|
+
}
|
|
16097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16098
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\">\n <i class=\"material-icons\">close</i>\n </button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text | appTranslate | async\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn\n [type]=\"item.type || 'secondary'\"\n text=\"{{ item.value || item.label }}\"\n [icon]=\"item.icon\"\n (mclick)=\"item.action($event); yes(item)\"></app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
16099
|
+
}
|
|
16100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogComponent, decorators: [{
|
|
16101
|
+
type: Component,
|
|
16102
|
+
args: [{ imports: [MatButtonModule, BtnComponent, AsyncPipe, SDKTranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\">\n <i class=\"material-icons\">close</i>\n </button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text | appTranslate | async\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn\n [type]=\"item.type || 'secondary'\"\n text=\"{{ item.value || item.label }}\"\n [icon]=\"item.icon\"\n (mclick)=\"item.action($event); yes(item)\"></app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"] }]
|
|
16103
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
16104
|
+
type: Inject,
|
|
16105
|
+
args: [MAT_DIALOG_DATA]
|
|
16106
|
+
}] }, { type: i1$3.MatDialogRef }] });
|
|
16107
|
+
|
|
16108
|
+
class InfoDialogService {
|
|
16109
|
+
constructor(dialog) {
|
|
16110
|
+
this.dialog = dialog;
|
|
16111
|
+
this.overrideDialogConfig = {};
|
|
16112
|
+
this.errorReporterService = inject(ErrorReporterService);
|
|
16113
|
+
this.info = (text, status = 1, heading, btns, disableClose = false) => {
|
|
16114
|
+
if (status == 0)
|
|
16115
|
+
if (typeof text != 'string') {
|
|
16116
|
+
console.error(text);
|
|
16117
|
+
this.errorReporterService.reportError(text);
|
|
16118
|
+
text = 'An error occurred';
|
|
16119
|
+
}
|
|
16120
|
+
else
|
|
16121
|
+
this.errorReporterService.reportMessage(text);
|
|
16122
|
+
return this.dialog
|
|
16123
|
+
.open(InfoDialogComponent, {
|
|
16124
|
+
data: {
|
|
16125
|
+
text,
|
|
16126
|
+
status: +status,
|
|
16127
|
+
heading: heading || (status ? 'Success!' : 'Oops!'),
|
|
16128
|
+
btns: btns?.filter((b) => b),
|
|
16129
|
+
},
|
|
16130
|
+
height: 'auto',
|
|
16131
|
+
minWidth: '450px',
|
|
16132
|
+
maxWidth: '90vw',
|
|
16133
|
+
maxHeight: '90vh',
|
|
16134
|
+
autoFocus: false,
|
|
16135
|
+
disableClose,
|
|
16136
|
+
...this.overrideDialogConfig,
|
|
16137
|
+
})
|
|
16138
|
+
.afterClosed()
|
|
16139
|
+
.toPromise()
|
|
16140
|
+
.then((r) => {
|
|
16141
|
+
if (r) {
|
|
16142
|
+
return true;
|
|
16143
|
+
}
|
|
16144
|
+
else {
|
|
16145
|
+
return false;
|
|
16146
|
+
}
|
|
16147
|
+
});
|
|
16148
|
+
};
|
|
16149
|
+
}
|
|
16150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, deps: [{ token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16151
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, providedIn: 'root' }); }
|
|
16152
|
+
}
|
|
16153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, decorators: [{
|
|
16154
|
+
type: Injectable,
|
|
16155
|
+
args: [{
|
|
16156
|
+
providedIn: 'root',
|
|
16157
|
+
}]
|
|
16158
|
+
}], ctorParameters: () => [{ type: i1$3.MatDialog }] });
|
|
16236
16159
|
|
|
16237
16160
|
/**
|
|
16238
16161
|
* Form Generator Component
|
|
@@ -16283,6 +16206,7 @@ class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
16283
16206
|
}
|
|
16284
16207
|
constructor() {
|
|
16285
16208
|
super();
|
|
16209
|
+
this.infoDialogService = inject(InfoDialogService);
|
|
16286
16210
|
/** Determines which field to use as the key - 'field' or 'label' */
|
|
16287
16211
|
this.keyField = 'field';
|
|
16288
16212
|
/** Whether to preset value for single option */
|
|
@@ -16515,11 +16439,11 @@ class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
16515
16439
|
try {
|
|
16516
16440
|
this.submissionResponse = await this.submitFunc(formVal);
|
|
16517
16441
|
if (this.submitSuccessText())
|
|
16518
|
-
this.
|
|
16442
|
+
this.infoDialogService.info(this.submitSuccessText(), 1);
|
|
16519
16443
|
this.saved.emit(this.submissionResponse);
|
|
16520
16444
|
}
|
|
16521
16445
|
catch (error) {
|
|
16522
|
-
this.
|
|
16446
|
+
this.infoDialogService.info(error, 0);
|
|
16523
16447
|
}
|
|
16524
16448
|
this._loading.set(false);
|
|
16525
16449
|
btn?.setLoader(false);
|
|
@@ -17702,7 +17626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
17702
17626
|
TextCase2Component,
|
|
17703
17627
|
ToAnyPipe,
|
|
17704
17628
|
ValidationMessageComponent,
|
|
17705
|
-
ValueOrXPipe
|
|
17629
|
+
ValueOrXPipe,
|
|
17706
17630
|
], providers: [ListOptionFinderPipe], template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{\n gridLGStyle()\n }} row-cols-xxl-{{ gridXXLStyle() }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedListValue(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n #inputTag />\n } \n @default {\n <div class=\"\">\n <div class=\"text-primary\">\n {{ scheme.label }}\n </div>\n <div class=\" \">\n {{ scheme.formattedValue | valueOrX: '-' }}\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n </form>\n</loader>\n\n<ng-template #labelValue let-obj>\n <div class=\"\">\n <div class=\"text-primary\">\n {{ obj.scheme.label }}\n </div>\n <div class=\" \">\n {{ formatValue | functionCaller2: obj.scheme : obj.value | valueOrX: '-' }}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep input:not([type=checkbox]),:host ::ng-deep .control-bg-gray.form-control,:host ::ng-deep textarea{border:none!important;background-color:transparent!important;padding:0!important;height:auto!important}\n"] }]
|
|
17707
17631
|
}], ctorParameters: () => [] });
|
|
17708
17632
|
|
|
@@ -17764,135 +17688,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
17764
17688
|
type: Output
|
|
17765
17689
|
}] } });
|
|
17766
17690
|
|
|
17767
|
-
/**
|
|
17768
|
-
* Component for displaying information dialogs with customizable content and actions.
|
|
17769
|
-
* Supports different status types (success, info, danger, warning) and configurable buttons.
|
|
17770
|
-
*/
|
|
17771
|
-
class InfoDialogComponent {
|
|
17772
|
-
/**
|
|
17773
|
-
* @param data Configuration data for the dialog
|
|
17774
|
-
* @param data.text Main content text to display
|
|
17775
|
-
* @param data.heading Dialog title/heading
|
|
17776
|
-
* @param data.status Status code determining the dialog's visual style (0=danger, 1=success, 2=info, 3=warning)
|
|
17777
|
-
* @param data.btns Array of button configurations to display
|
|
17778
|
-
* @param dialogRef Reference to the dialog instance
|
|
17779
|
-
*/
|
|
17780
|
-
constructor(data, dialogRef) {
|
|
17781
|
-
this.data = data;
|
|
17782
|
-
this.dialogRef = dialogRef;
|
|
17783
|
-
/**
|
|
17784
|
-
* Handles custom button actions
|
|
17785
|
-
* @param event The pointer event that triggered the action
|
|
17786
|
-
* @param item The button configuration
|
|
17787
|
-
*/
|
|
17788
|
-
this.handleAction = (event, item) => {
|
|
17789
|
-
item?.action(event);
|
|
17790
|
-
if (item?.closeBoxOnClick)
|
|
17791
|
-
this.dialogRef.close();
|
|
17792
|
-
};
|
|
17793
|
-
/**
|
|
17794
|
-
* Returns the CSS class name based on the status code
|
|
17795
|
-
* @param status Status code (0=danger, 1=success, 2=info, 3=warning)
|
|
17796
|
-
* @returns CSS class name corresponding to the status
|
|
17797
|
-
*/
|
|
17798
|
-
this.cls = (status = this.data.status) => {
|
|
17799
|
-
switch (status) {
|
|
17800
|
-
case 1:
|
|
17801
|
-
return 'success';
|
|
17802
|
-
case 2:
|
|
17803
|
-
return 'info';
|
|
17804
|
-
case 0:
|
|
17805
|
-
return 'danger';
|
|
17806
|
-
case 3:
|
|
17807
|
-
return 'warning';
|
|
17808
|
-
default:
|
|
17809
|
-
return '';
|
|
17810
|
-
}
|
|
17811
|
-
};
|
|
17812
|
-
}
|
|
17813
|
-
/** Lifecycle hook that is called after data-bound properties are initialized */
|
|
17814
|
-
ngOnInit() { }
|
|
17815
|
-
/**
|
|
17816
|
-
* Handles the affirmative action for the dialog
|
|
17817
|
-
* @param btn Optional button configuration that triggered this action
|
|
17818
|
-
*/
|
|
17819
|
-
yes(btn) {
|
|
17820
|
-
if (btn && btn.closeBoxOnClick === false)
|
|
17821
|
-
return;
|
|
17822
|
-
this.dialogRef.close(true);
|
|
17823
|
-
}
|
|
17824
|
-
/**
|
|
17825
|
-
* Handles the negative action for the dialog
|
|
17826
|
-
* Closes the dialog with a false result
|
|
17827
|
-
*/
|
|
17828
|
-
no() {
|
|
17829
|
-
this.dialogRef.close(false);
|
|
17830
|
-
}
|
|
17831
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17832
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\">\n <i class=\"material-icons\">close</i>\n </button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text | appTranslate | async\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn\n [type]=\"item.type || 'secondary'\"\n text=\"{{ item.value || item.label }}\"\n [icon]=\"item.icon\"\n (mclick)=\"item.action($event); yes(item)\"></app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
17833
|
-
}
|
|
17834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogComponent, decorators: [{
|
|
17835
|
-
type: Component,
|
|
17836
|
-
args: [{ imports: [MatButtonModule, BtnComponent, AsyncPipe, SDKTranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\">\n <i class=\"material-icons\">close</i>\n </button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text | appTranslate | async\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn\n [type]=\"item.type || 'secondary'\"\n text=\"{{ item.value || item.label }}\"\n [icon]=\"item.icon\"\n (mclick)=\"item.action($event); yes(item)\"></app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"] }]
|
|
17837
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
17838
|
-
type: Inject,
|
|
17839
|
-
args: [MAT_DIALOG_DATA]
|
|
17840
|
-
}] }, { type: i1$3.MatDialogRef }] });
|
|
17841
|
-
|
|
17842
17691
|
const InfoDialogModule = [InfoDialogComponent];
|
|
17843
17692
|
|
|
17844
|
-
class InfoDialogService {
|
|
17845
|
-
constructor(dialog) {
|
|
17846
|
-
this.dialog = dialog;
|
|
17847
|
-
this.overrideDialogConfig = {};
|
|
17848
|
-
this.errorReporterService = inject(ErrorReporterService);
|
|
17849
|
-
this.info = (text, status = 1, heading, btns, disableClose = false) => {
|
|
17850
|
-
if (status == 0)
|
|
17851
|
-
if (typeof text != 'string') {
|
|
17852
|
-
console.error(text);
|
|
17853
|
-
this.errorReporterService.reportError(text);
|
|
17854
|
-
text = 'An error occurred';
|
|
17855
|
-
}
|
|
17856
|
-
else
|
|
17857
|
-
this.errorReporterService.reportMessage(text);
|
|
17858
|
-
return this.dialog
|
|
17859
|
-
.open(InfoDialogComponent, {
|
|
17860
|
-
data: {
|
|
17861
|
-
text,
|
|
17862
|
-
status: +status,
|
|
17863
|
-
heading: heading || (status ? 'Success!' : 'Oops!'),
|
|
17864
|
-
btns: btns?.filter((b) => b),
|
|
17865
|
-
},
|
|
17866
|
-
height: 'auto',
|
|
17867
|
-
minWidth: '450px',
|
|
17868
|
-
maxWidth: '90vw',
|
|
17869
|
-
maxHeight: '90vh',
|
|
17870
|
-
autoFocus: false,
|
|
17871
|
-
disableClose,
|
|
17872
|
-
...this.overrideDialogConfig,
|
|
17873
|
-
})
|
|
17874
|
-
.afterClosed()
|
|
17875
|
-
.toPromise()
|
|
17876
|
-
.then((r) => {
|
|
17877
|
-
if (r) {
|
|
17878
|
-
return true;
|
|
17879
|
-
}
|
|
17880
|
-
else {
|
|
17881
|
-
return false;
|
|
17882
|
-
}
|
|
17883
|
-
});
|
|
17884
|
-
};
|
|
17885
|
-
}
|
|
17886
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, deps: [{ token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17887
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, providedIn: 'root' }); }
|
|
17888
|
-
}
|
|
17889
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: InfoDialogService, decorators: [{
|
|
17890
|
-
type: Injectable,
|
|
17891
|
-
args: [{
|
|
17892
|
-
providedIn: 'root',
|
|
17893
|
-
}]
|
|
17894
|
-
}], ctorParameters: () => [{ type: i1$3.MatDialog }] });
|
|
17895
|
-
|
|
17896
17693
|
/**
|
|
17897
17694
|
* @deprecated The method should not be used. Use app-input-td-rf instead
|
|
17898
17695
|
*
|
|
@@ -19047,46 +18844,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
19047
18844
|
args: [{ required: true }]
|
|
19048
18845
|
}] } });
|
|
19049
18846
|
|
|
19050
|
-
class NotificationsService {
|
|
19051
|
-
constructor(dialog) {
|
|
19052
|
-
this.dialog = dialog;
|
|
19053
|
-
}
|
|
19054
|
-
open() {
|
|
19055
|
-
Promise.resolve().then(function () { return notifications_component; }).then((c) => {
|
|
19056
|
-
this.dialog.open(c.NotificationsComponent, {
|
|
19057
|
-
width: '350px',
|
|
19058
|
-
position: { right: '-10px', top: '80px', bottom: '50px' },
|
|
19059
|
-
height: '100vh',
|
|
19060
|
-
hasBackdrop: false,
|
|
19061
|
-
});
|
|
19062
|
-
});
|
|
19063
|
-
}
|
|
19064
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotificationsService, deps: [{ token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19065
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
19066
|
-
}
|
|
19067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotificationsService, decorators: [{
|
|
19068
|
-
type: Injectable,
|
|
19069
|
-
args: [{ providedIn: 'root' }]
|
|
19070
|
-
}], ctorParameters: () => [{ type: i1$3.MatDialog }] });
|
|
19071
|
-
|
|
19072
|
-
class NotificationsComponent {
|
|
19073
|
-
constructor(nS, dialogRef) {
|
|
19074
|
-
this.nS = nS;
|
|
19075
|
-
this.dialogRef = dialogRef;
|
|
19076
|
-
}
|
|
19077
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotificationsComponent, deps: [{ token: NotificationsService }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19078
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: NotificationsComponent, isStandalone: true, selector: "notifications", ngImport: i0, template: "<modal-header header=\"Notifications\" [dialogRef]=\"dialogRef\"/>\n\n<div class=\"notif-case\" mat-dialog-content >\n\n</div>", styles: [""], dependencies: [{ kind: "component", type: ModalHeaderComponent, selector: "modal-header", inputs: ["dialogRef", "header", "onCloseValue"], outputs: ["close"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
|
|
19079
|
-
}
|
|
19080
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotificationsComponent, decorators: [{
|
|
19081
|
-
type: Component,
|
|
19082
|
-
args: [{ selector: 'notifications', imports: [ModalHeaderComponent, MatDialogModule], template: "<modal-header header=\"Notifications\" [dialogRef]=\"dialogRef\"/>\n\n<div class=\"notif-case\" mat-dialog-content >\n\n</div>" }]
|
|
19083
|
-
}], ctorParameters: () => [{ type: NotificationsService }, { type: i1$3.MatDialogRef }] });
|
|
19084
|
-
|
|
19085
|
-
var notifications_component = /*#__PURE__*/Object.freeze({
|
|
19086
|
-
__proto__: null,
|
|
19087
|
-
NotificationsComponent: NotificationsComponent
|
|
19088
|
-
});
|
|
19089
|
-
|
|
19090
18847
|
class PageCenterBodyComponent {
|
|
19091
18848
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PageCenterBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19092
18849
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: PageCenterBodyComponent, isStandalone: true, selector: "page-center-body", ngImport: i0, template: "<div class=\"page-height center\">\n <div class=\"w-100\">\n <ng-content>\n\n </ng-content>\n </div>\n</div>", styles: [".page-height{height:calc(100vh - 245px)}\n"] }); }
|
|
@@ -19921,60 +19678,159 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
19921
19678
|
*/
|
|
19922
19679
|
class TableToStringPipe {
|
|
19923
19680
|
/**
|
|
19924
|
-
* Transforms table data into a string representation.
|
|
19925
|
-
* @param arr - Array of column configurations
|
|
19926
|
-
* @param obj - The data object to format
|
|
19927
|
-
* @returns Promise resolving to a formatted string representation of the table data
|
|
19681
|
+
* Transforms table data into a string representation.
|
|
19682
|
+
* @param arr - Array of column configurations
|
|
19683
|
+
* @param obj - The data object to format
|
|
19684
|
+
* @returns Promise resolving to a formatted string representation of the table data
|
|
19685
|
+
*/
|
|
19686
|
+
async transform(arr, obj) {
|
|
19687
|
+
// console.log(arr)
|
|
19688
|
+
if (!arr?.length)
|
|
19689
|
+
return '';
|
|
19690
|
+
return (await Promise.all(arr.map(async (col) => {
|
|
19691
|
+
let res = this.cfS.transform(obj, col);
|
|
19692
|
+
// const val1 = typeof res == 'object';
|
|
19693
|
+
// if (res) {
|
|
19694
|
+
// const val2 = await lastValueFrom(res as any);
|
|
19695
|
+
// }
|
|
19696
|
+
const val = typeof res == 'object' && res != null ? await lastValueFrom(res) : res;
|
|
19697
|
+
// console.log('tableToString',val);
|
|
19698
|
+
return `${col.t}: ${val == null ? '-' : val}`;
|
|
19699
|
+
})))?.join('\n');
|
|
19700
|
+
}
|
|
19701
|
+
/**
|
|
19702
|
+
* @param cfS - Injected GetColFormattedPipe for formatting column values
|
|
19703
|
+
*/
|
|
19704
|
+
constructor(cfS) {
|
|
19705
|
+
this.cfS = cfS;
|
|
19706
|
+
}
|
|
19707
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TableToStringPipe, deps: [{ token: GetColFormattedPipe }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
19708
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: TableToStringPipe, isStandalone: true, name: "tableToString" }); }
|
|
19709
|
+
}
|
|
19710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TableToStringPipe, decorators: [{
|
|
19711
|
+
type: Pipe,
|
|
19712
|
+
args: [{
|
|
19713
|
+
name: 'tableToString',
|
|
19714
|
+
standalone: true,
|
|
19715
|
+
}]
|
|
19716
|
+
}], ctorParameters: () => [{ type: GetColFormattedPipe }] });
|
|
19717
|
+
/** Collection of all table-related pipes */
|
|
19718
|
+
const pipes = [GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe];
|
|
19719
|
+
/**
|
|
19720
|
+
* Module that bundles all table-related pipes for easy import.
|
|
19721
|
+
*/
|
|
19722
|
+
class TablePipesModule {
|
|
19723
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
19724
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, imports: [CommonModule, GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe], exports: [GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe] }); }
|
|
19725
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, providers: [GetColFormattedPipe], imports: [CommonModule] }); }
|
|
19726
|
+
}
|
|
19727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, decorators: [{
|
|
19728
|
+
type: NgModule,
|
|
19729
|
+
args: [{
|
|
19730
|
+
exports: pipes,
|
|
19731
|
+
imports: [CommonModule, ...pipes],
|
|
19732
|
+
providers: [GetColFormattedPipe],
|
|
19733
|
+
}]
|
|
19734
|
+
}] });
|
|
19735
|
+
|
|
19736
|
+
/**
|
|
19737
|
+
* Service for handling reactive form inputs and form schema conversions.
|
|
19738
|
+
* @template TIFormSchema Type for form schema, defaults to IFormSchema
|
|
19739
|
+
* @template TFCInput Type for form control inputs, defaults to FCInput
|
|
19740
|
+
*/
|
|
19741
|
+
class ETSReactiveFormInputService {
|
|
19742
|
+
constructor() {
|
|
19743
|
+
/**
|
|
19744
|
+
* Binds form controls from a FormGroup to an array of input objects
|
|
19745
|
+
* @template TFCInput Type of form control inputs
|
|
19746
|
+
* @param inputs Array of input objects to bind controls to
|
|
19747
|
+
* @param form FormGroup containing the controls to bind
|
|
19748
|
+
* @returns void
|
|
19749
|
+
*/
|
|
19750
|
+
this.bindFormControlToInputs = (inputs, form) => {
|
|
19751
|
+
inputs.forEach((x) => {
|
|
19752
|
+
x.form = form;
|
|
19753
|
+
x.formControl = form.controls[x.name];
|
|
19754
|
+
});
|
|
19755
|
+
};
|
|
19756
|
+
/**
|
|
19757
|
+
* Converts a form schema to a FormGroup
|
|
19758
|
+
* @param schema Form schema definition
|
|
19759
|
+
* @param data Optional initial data
|
|
19760
|
+
* @returns FormGroup built from the schema
|
|
19761
|
+
*/
|
|
19762
|
+
this.formSchemaToFormGroup = (schema, data) => {
|
|
19763
|
+
const form = new FormGroup({});
|
|
19764
|
+
for (const item of schema)
|
|
19765
|
+
form.addControl(item.field.toString(), new FormControl(data[item.field.toString()], item.isRequired
|
|
19766
|
+
? (item.validators || [])?.concat([Validators.required])
|
|
19767
|
+
: item.validators, item.asyncValidators));
|
|
19768
|
+
return form;
|
|
19769
|
+
};
|
|
19770
|
+
}
|
|
19771
|
+
/**
|
|
19772
|
+
* Converts an array of form control inputs to a controls object for FormGroup
|
|
19773
|
+
* @template TFCInput Type of form control inputs
|
|
19774
|
+
* @param inputs Array of form control inputs
|
|
19775
|
+
* @returns Object with control names as keys and AbstractControls as values
|
|
19776
|
+
*/
|
|
19777
|
+
formFieldsFromFCInputsArr(inputs) {
|
|
19778
|
+
const controls = {};
|
|
19779
|
+
for (const inp of inputs) {
|
|
19780
|
+
controls[inp.name] = inp.formControl;
|
|
19781
|
+
}
|
|
19782
|
+
return controls;
|
|
19783
|
+
}
|
|
19784
|
+
/**
|
|
19785
|
+
* Converts a form schema array to form controls object
|
|
19786
|
+
* @template TIFormSchema Type of form schema
|
|
19787
|
+
* @param formFields Array of form schema objects
|
|
19788
|
+
* @returns Object with field names as keys and FormControls as values
|
|
19789
|
+
*/
|
|
19790
|
+
formSchemaToFormControls(formFields) {
|
|
19791
|
+
const controls = {};
|
|
19792
|
+
formFields?.forEach((inp) => {
|
|
19793
|
+
controls[inp.field?.toString()] = new FormControl(inp.value, inp.validators?.map((v) => v.bind(this)), inp.asyncValidators?.map((v) => v.bind(this)));
|
|
19794
|
+
});
|
|
19795
|
+
// controls['__rowID']=new FormControl('id'+Math.round(Math.random()*10000000))
|
|
19796
|
+
return controls;
|
|
19797
|
+
}
|
|
19798
|
+
/**
|
|
19799
|
+
* Adds form controls from a form schema array to an existing FormGroup
|
|
19800
|
+
* @template TIFormSchema Type of form schema
|
|
19801
|
+
* @param formFields Array of form schema objects
|
|
19802
|
+
* @param form Existing FormGroup to add controls to
|
|
19803
|
+
* @returns Updated FormGroup with added controls
|
|
19928
19804
|
*/
|
|
19929
|
-
|
|
19930
|
-
|
|
19931
|
-
|
|
19932
|
-
|
|
19933
|
-
|
|
19934
|
-
|
|
19935
|
-
// const val1 = typeof res == 'object';
|
|
19936
|
-
// if (res) {
|
|
19937
|
-
// const val2 = await lastValueFrom(res as any);
|
|
19938
|
-
// }
|
|
19939
|
-
const val = typeof res == 'object' && res != null ? await lastValueFrom(res) : res;
|
|
19940
|
-
// console.log('tableToString',val);
|
|
19941
|
-
return `${col.t}: ${val == null ? '-' : val}`;
|
|
19942
|
-
})))?.join('\n');
|
|
19805
|
+
addFormSchemaToForm(formFields, form) {
|
|
19806
|
+
formFields?.forEach((inp) => {
|
|
19807
|
+
form.addControl(inp.field?.toString(), new FormControl(inp.value, inp.validators?.map((v) => v.bind(this)), inp.asyncValidators?.map((v) => v.bind(this))));
|
|
19808
|
+
});
|
|
19809
|
+
// controls['__rowID']=new FormControl('id'+Math.round(Math.random()*10000000))
|
|
19810
|
+
return form;
|
|
19943
19811
|
}
|
|
19944
19812
|
/**
|
|
19945
|
-
*
|
|
19813
|
+
* Creates form controls from a plain object
|
|
19814
|
+
* @template T Type of the input object
|
|
19815
|
+
* @param obj Object with properties to convert to form controls
|
|
19816
|
+
* @returns Object with same keys as input and FormControls as values
|
|
19946
19817
|
*/
|
|
19947
|
-
|
|
19948
|
-
|
|
19818
|
+
formFieldsFromObj(obj) {
|
|
19819
|
+
const controls = {};
|
|
19820
|
+
for (const inp in obj) {
|
|
19821
|
+
controls[inp] = new FormControl(obj[inp]);
|
|
19822
|
+
}
|
|
19823
|
+
return controls;
|
|
19949
19824
|
}
|
|
19950
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type:
|
|
19951
|
-
static { this.ɵ
|
|
19952
|
-
}
|
|
19953
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TableToStringPipe, decorators: [{
|
|
19954
|
-
type: Pipe,
|
|
19955
|
-
args: [{
|
|
19956
|
-
name: 'tableToString',
|
|
19957
|
-
standalone: true,
|
|
19958
|
-
}]
|
|
19959
|
-
}], ctorParameters: () => [{ type: GetColFormattedPipe }] });
|
|
19960
|
-
/** Collection of all table-related pipes */
|
|
19961
|
-
const pipes = [GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe];
|
|
19962
|
-
/**
|
|
19963
|
-
* Module that bundles all table-related pipes for easy import.
|
|
19964
|
-
*/
|
|
19965
|
-
class TablePipesModule {
|
|
19966
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
19967
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, imports: [CommonModule, GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe], exports: [GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, TableToStringPipe, GetColFormattedEPipe] }); }
|
|
19968
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TablePipesModule, providers: [GetColFormattedPipe], imports: [CommonModule] }); }
|
|
19825
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19826
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, providedIn: 'root' }); }
|
|
19969
19827
|
}
|
|
19970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type:
|
|
19971
|
-
type:
|
|
19828
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ETSReactiveFormInputService, decorators: [{
|
|
19829
|
+
type: Injectable,
|
|
19972
19830
|
args: [{
|
|
19973
|
-
|
|
19974
|
-
imports: [CommonModule, ...pipes],
|
|
19975
|
-
providers: [GetColFormattedPipe],
|
|
19831
|
+
providedIn: 'root',
|
|
19976
19832
|
}]
|
|
19977
|
-
}] });
|
|
19833
|
+
}], ctorParameters: () => [] });
|
|
19978
19834
|
|
|
19979
19835
|
/**
|
|
19980
19836
|
* Base component for table functionality with selection, pagination, sorting, and customization options.
|
|
@@ -19983,6 +19839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
19983
19839
|
class TableBaseComponent {
|
|
19984
19840
|
constructor() {
|
|
19985
19841
|
this.cdr = inject(ChangeDetectorRef);
|
|
19842
|
+
this.reactiveFormInputService = inject(ETSReactiveFormInputService);
|
|
19986
19843
|
/** Options for actions that can be performed on each row */
|
|
19987
19844
|
this._rowOptions = input(null, ...(ngDevMode ? [{ debugName: "_rowOptions", alias: 'rowOptions' }] : [{ alias: 'rowOptions' }]));
|
|
19988
19845
|
/** Function that returns row-specific options based on the row data */
|
|
@@ -20837,6 +20694,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
20837
20694
|
type: Input
|
|
20838
20695
|
}] } });
|
|
20839
20696
|
|
|
20697
|
+
/**
|
|
20698
|
+
* Converts form schema to table columns
|
|
20699
|
+
*/
|
|
20700
|
+
class FormSchemaToTableColumnsPipe {
|
|
20701
|
+
/**
|
|
20702
|
+
* Converts form schema to table columns configuration
|
|
20703
|
+
* @param value Array of form schema definitions
|
|
20704
|
+
* @returns Array of table column configurations
|
|
20705
|
+
*/
|
|
20706
|
+
transform(value) {
|
|
20707
|
+
return value?.map((x) => ({ f: x.field, t: x.label })) || [];
|
|
20708
|
+
}
|
|
20709
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
20710
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, isStandalone: true, name: "formSchemaToCols" }); }
|
|
20711
|
+
}
|
|
20712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormSchemaToTableColumnsPipe, decorators: [{
|
|
20713
|
+
type: Pipe,
|
|
20714
|
+
args: [{ name: 'formSchemaToCols', standalone: true }]
|
|
20715
|
+
}] });
|
|
20716
|
+
/**
|
|
20717
|
+
* Converts a form.value to string
|
|
20718
|
+
*/
|
|
20719
|
+
class FormValuePipe {
|
|
20720
|
+
transform(formValue, formSchema) {
|
|
20721
|
+
// debugger;
|
|
20722
|
+
return formValue
|
|
20723
|
+
? (formSchema?.length && typeof formSchema[0] != 'string'
|
|
20724
|
+
? formSchema.map((field) => {
|
|
20725
|
+
// debugger;
|
|
20726
|
+
const val = field.type == 'select' || field.type == 'autocomplete'
|
|
20727
|
+
? field.selectedOptionLabel || formValue[field.field]
|
|
20728
|
+
: formValue[field.field];
|
|
20729
|
+
return val != null ? `${field.label}: ${val}` : null;
|
|
20730
|
+
})
|
|
20731
|
+
: (formSchema || Object.keys(formValue)).map((x) => {
|
|
20732
|
+
const val = formValue[x];
|
|
20733
|
+
return `${this.uS.formatField(x)}: ${val != null ? val : '-'}`;
|
|
20734
|
+
}))
|
|
20735
|
+
.filter((x) => x)
|
|
20736
|
+
.join('\n')
|
|
20737
|
+
: '';
|
|
20738
|
+
}
|
|
20739
|
+
constructor(uS) {
|
|
20740
|
+
this.uS = uS;
|
|
20741
|
+
}
|
|
20742
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, deps: [{ token: UtilityService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
20743
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, isStandalone: true, name: "formValue" }); }
|
|
20744
|
+
}
|
|
20745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FormValuePipe, decorators: [{
|
|
20746
|
+
type: Pipe,
|
|
20747
|
+
args: [{
|
|
20748
|
+
name: 'formValue',
|
|
20749
|
+
standalone: true,
|
|
20750
|
+
}]
|
|
20751
|
+
}], ctorParameters: () => [{ type: UtilityService }] });
|
|
20752
|
+
|
|
20840
20753
|
/**
|
|
20841
20754
|
* Component representing a row in a table with input capabilities.
|
|
20842
20755
|
* Extends FormGeneratorComponent to provide form functionality within table rows.
|
|
@@ -21206,7 +21119,7 @@ class TableInputComponent extends FormGeneratorComponent {
|
|
|
21206
21119
|
this.singleFormStructure?.controls[scheme.field]?.hasValidator(Validators.required);
|
|
21207
21120
|
}
|
|
21208
21121
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TableInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, classFunction: { classPropertyName: "classFunction", publicName: "classFunction", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, noWrap: { classPropertyName: "noWrap", publicName: "noWrap", isSignal: true, isRequired: false, transformFunction: null }, filterLikeMatch: { classPropertyName: "filterLikeMatch", publicName: "filterLikeMatch", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, borderedInput: { classPropertyName: "borderedInput", publicName: "borderedInput", isSignal: true, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterFormschema()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm()\"\n [formSchema]=\"filterFormschema()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm().reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border(), noWrap: noWrap() }\">\n <div class=\" \">\n <table\n class=\" {{ tableClass() }} {{ inputClass() }} \"\n [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead
|
|
21122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, classFunction: { classPropertyName: "classFunction", publicName: "classFunction", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, noWrap: { classPropertyName: "noWrap", publicName: "noWrap", isSignal: true, isRequired: false, transformFunction: null }, filterLikeMatch: { classPropertyName: "filterLikeMatch", publicName: "filterLikeMatch", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, borderedInput: { classPropertyName: "borderedInput", publicName: "borderedInput", isSignal: true, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterFormschema()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm()\"\n [formSchema]=\"filterFormschema()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm().reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border(), noWrap: noWrap() }\">\n <div class=\" \">\n <table\n class=\" {{ tableClass() }} {{ inputClass() }} \"\n [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead>\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th\n class=\"{{ item.cls }}\"\n [ngClass]=\"{ stickyColumn: item.sticky }\"\n [style.minWidth]=\"item.width\"\n id=\"th_{{ item.field }}\"\n [style.left.px]=\"item.sticky ? thEl.offsetLeft : null\"\n #thEl\n (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n @if (!hideAdd()) {\n <th class=\"w-1\"></th>\n }\n @if (!hideDelete()) {\n <th class=\"w-1\"></th>\n }\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th class=\"w-1\"></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [hideDelete]=\"hideDelete()\"\n [hideAdd]=\"hideAdd()\"\n [borderedInput]=\"borderedInput()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n class=\"{{ subForm.form | tableInputClassFunction: classFunction() | async }}\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn,\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}:host ::ng-deep .noWrap{display:block;max-width:100%;width:100%;overflow:auto}:host ::ng-deep .noWrap th,:host ::ng-deep .noWrap td{white-space:nowrap}:host ::ng-deep table tr{position:relative}:host ::ng-deep .stickyColumn{position:sticky;left:0;z-index:100}:host ::ng-deep .plainInput input,:host ::ng-deep .plainInput .control-bg-gray,:host ::ng-deep .plainInput .form-control{border:none!important;border-radius:0!important}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => BtnComponent), selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: i0.forwardRef(() => FormGeneratorComponent), selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => FormsModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatExpansionModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatTabsModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatTooltipModule) }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i0.forwardRef(() => PaginatorComponent), selector: "paginator", inputs: ["arrayLength", "pageSize", "pageIndex", "resetIndexFunc", "pageSizeOptions"], outputs: ["pageSizeChange", "pageIndexChange", "pageChanged"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "component", type: i0.forwardRef(() => TableInputRowComponent), selector: "tr[table-input-row]", inputs: ["isShow", "hideAdd", "hideDelete", "borderedInput", "actionBtns", "childrenFormSchemaMap"], outputs: ["onDeleteRowFunc", "onAddRowFunc", "onActionButtonClick"] }, { kind: "pipe", type: i0.forwardRef(() => AsyncPipe), name: "async" }, { kind: "pipe", type: i0.forwardRef(() => SDKTranslatePipe), name: "appTranslate" }, { kind: "pipe", type: i0.forwardRef(() => TableInputClassFunctionPipe), name: "tableInputClassFunction" }] }); }
|
|
21210
21123
|
}
|
|
21211
21124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TableInputComponent, decorators: [{
|
|
21212
21125
|
type: Component,
|
|
@@ -21224,7 +21137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
21224
21137
|
TableInputRowComponent,
|
|
21225
21138
|
SDKTranslatePipe,
|
|
21226
21139
|
forwardRef(() => TableInputClassFunctionPipe),
|
|
21227
|
-
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterFormschema()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm()\"\n [formSchema]=\"filterFormschema()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm().reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border(), noWrap: noWrap() }\">\n <div class=\" \">\n <table\n class=\" {{ tableClass() }} {{ inputClass() }} \"\n [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead
|
|
21140
|
+
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterFormschema()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm()\"\n [formSchema]=\"filterFormschema()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm().reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border(), noWrap: noWrap() }\">\n <div class=\" \">\n <table\n class=\" {{ tableClass() }} {{ inputClass() }} \"\n [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead>\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th\n class=\"{{ item.cls }}\"\n [ngClass]=\"{ stickyColumn: item.sticky }\"\n [style.minWidth]=\"item.width\"\n id=\"th_{{ item.field }}\"\n [style.left.px]=\"item.sticky ? thEl.offsetLeft : null\"\n #thEl\n (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n @if (!hideAdd()) {\n <th class=\"w-1\"></th>\n }\n @if (!hideDelete()) {\n <th class=\"w-1\"></th>\n }\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th class=\"w-1\"></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [hideDelete]=\"hideDelete()\"\n [hideAdd]=\"hideAdd()\"\n [borderedInput]=\"borderedInput()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n class=\"{{ subForm.form | tableInputClassFunction: classFunction() | async }}\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn,\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}:host ::ng-deep .noWrap{display:block;max-width:100%;width:100%;overflow:auto}:host ::ng-deep .noWrap th,:host ::ng-deep .noWrap td{white-space:nowrap}:host ::ng-deep table tr{position:relative}:host ::ng-deep .stickyColumn{position:sticky;left:0;z-index:100}:host ::ng-deep .plainInput input,:host ::ng-deep .plainInput .control-bg-gray,:host ::ng-deep .plainInput .form-control{border:none!important;border-radius:0!important}\n"] }]
|
|
21228
21141
|
}], propDecorators: { _pageSize: [{
|
|
21229
21142
|
type: Input,
|
|
21230
21143
|
args: ['pageSize']
|
|
@@ -21295,7 +21208,7 @@ class TablePlainComponent extends TableBaseComponent {
|
|
|
21295
21208
|
*/
|
|
21296
21209
|
set _filterFields(v) {
|
|
21297
21210
|
const _v = v || [];
|
|
21298
|
-
this.
|
|
21211
|
+
this.reactiveFormInputService.addFormSchemaToForm(_v, this.filterForm);
|
|
21299
21212
|
this.filterFields.set(_v);
|
|
21300
21213
|
for (const scheme of _v)
|
|
21301
21214
|
scheme.optionsInitFunc?.subscribe((r) => (this.cellOptions[scheme.field?.toString()] = r));
|
|
@@ -22460,6 +22373,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
22460
22373
|
}]
|
|
22461
22374
|
}], ctorParameters: () => [] });
|
|
22462
22375
|
|
|
22376
|
+
/**
|
|
22377
|
+
* Component that displays an idle timeout dialog to the user.
|
|
22378
|
+
* Shows remaining time before session expiration and allows user interaction.
|
|
22379
|
+
*/
|
|
22380
|
+
class IdlerComponent {
|
|
22381
|
+
/**
|
|
22382
|
+
* Creates an instance of IdlerComponent.
|
|
22383
|
+
* @param dialogRef - Reference to the dialog opened by the Material Dialog service
|
|
22384
|
+
* @param uS - Utility service for time formatting and other helper functions
|
|
22385
|
+
*/
|
|
22386
|
+
constructor(dialogRef, uS, data) {
|
|
22387
|
+
this.dialogRef = dialogRef;
|
|
22388
|
+
this.uS = uS;
|
|
22389
|
+
this.data = data;
|
|
22390
|
+
/**
|
|
22391
|
+
* Computed property that formats the remaining time into hours, minutes, and seconds.
|
|
22392
|
+
* Uses the utility service to convert seconds to a formatted object.
|
|
22393
|
+
*/
|
|
22394
|
+
this.timeLeftFormatted = computed(() => this.uS.secondsToHourMinSec(this.data.timeLeft()), ...(ngDevMode ? [{ debugName: "timeLeftFormatted" }] : []));
|
|
22395
|
+
/**
|
|
22396
|
+
* Computed property that creates a human-readable string of the remaining time.
|
|
22397
|
+
* @returns A formatted string representation of the time remaining (e.g. "2hrs 30min 15s")
|
|
22398
|
+
*/
|
|
22399
|
+
this.timeLeftString = computed(() => {
|
|
22400
|
+
const { hours, mins, secs } = this.timeLeftFormatted() || {};
|
|
22401
|
+
return `${hours ? hours + 'hrs' : ''} ${mins ? mins + 'min' : ''} ${secs ? secs + 's' : ''}`;
|
|
22402
|
+
}, ...(ngDevMode ? [{ debugName: "timeLeftString" }] : []));
|
|
22403
|
+
}
|
|
22404
|
+
/**
|
|
22405
|
+
* Closes the idle timeout dialog.
|
|
22406
|
+
* This typically indicates user activity and resets the idle timer.
|
|
22407
|
+
*/
|
|
22408
|
+
close() {
|
|
22409
|
+
this.dialogRef.close();
|
|
22410
|
+
}
|
|
22411
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IdlerComponent, deps: [{ token: i1$3.MatDialogRef }, { token: UtilityService }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22412
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: IdlerComponent, isStandalone: true, selector: "app-idler", ngImport: i0, template: "@if (timeLeftString(); as timeLeft) {\n<div class=\"center h-100 text-center caution\">\n You will be logged out in {{timeLeft}}\n</div>\n}\n", styles: [""] }); }
|
|
22413
|
+
}
|
|
22414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IdlerComponent, decorators: [{
|
|
22415
|
+
type: Component,
|
|
22416
|
+
args: [{ selector: 'app-idler', imports: [], template: "@if (timeLeftString(); as timeLeft) {\n<div class=\"center h-100 text-center caution\">\n You will be logged out in {{timeLeft}}\n</div>\n}\n" }]
|
|
22417
|
+
}], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: UtilityService }, { type: undefined, decorators: [{
|
|
22418
|
+
type: Optional
|
|
22419
|
+
}, {
|
|
22420
|
+
type: Inject,
|
|
22421
|
+
args: [MAT_DIALOG_DATA]
|
|
22422
|
+
}] }] });
|
|
22423
|
+
|
|
22463
22424
|
/**
|
|
22464
22425
|
* Service that manages user idle state detection and timeout warnings.
|
|
22465
22426
|
*
|
|
@@ -22562,8 +22523,9 @@ class IdlerService {
|
|
|
22562
22523
|
*/
|
|
22563
22524
|
openTimeWarningModal() {
|
|
22564
22525
|
this.idlerModal = this.dialog.open(IdlerComponent, {
|
|
22565
|
-
|
|
22566
|
-
|
|
22526
|
+
// height: 'auto',
|
|
22527
|
+
// width: 'auto',
|
|
22528
|
+
data: { timeLeft: this.timeLeft },
|
|
22567
22529
|
});
|
|
22568
22530
|
}
|
|
22569
22531
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IdlerService, deps: [{ token: i1$8.Idle }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -22573,50 +22535,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
22573
22535
|
type: Injectable
|
|
22574
22536
|
}], ctorParameters: () => [{ type: i1$8.Idle }, { type: i1$3.MatDialog }] });
|
|
22575
22537
|
|
|
22576
|
-
/**
|
|
22577
|
-
* Component that displays an idle timeout dialog to the user.
|
|
22578
|
-
* Shows remaining time before session expiration and allows user interaction.
|
|
22579
|
-
*/
|
|
22580
|
-
class IdlerComponent {
|
|
22581
|
-
/**
|
|
22582
|
-
* Creates an instance of IdlerComponent.
|
|
22583
|
-
* @param dialogRef - Reference to the dialog opened by the Material Dialog service
|
|
22584
|
-
* @param idlerService - Service that tracks idle time and manages the timeout
|
|
22585
|
-
* @param uS - Utility service for time formatting and other helper functions
|
|
22586
|
-
*/
|
|
22587
|
-
constructor(dialogRef, idlerService, uS) {
|
|
22588
|
-
this.dialogRef = dialogRef;
|
|
22589
|
-
this.idlerService = idlerService;
|
|
22590
|
-
this.uS = uS;
|
|
22591
|
-
/**
|
|
22592
|
-
* Computed property that formats the remaining time into hours, minutes, and seconds.
|
|
22593
|
-
* Uses the utility service to convert seconds to a formatted object.
|
|
22594
|
-
*/
|
|
22595
|
-
this.timeLeftFormatted = computed(() => this.uS.secondsToHourMinSec(this.idlerService.timeLeft()), ...(ngDevMode ? [{ debugName: "timeLeftFormatted" }] : []));
|
|
22596
|
-
/**
|
|
22597
|
-
* Computed property that creates a human-readable string of the remaining time.
|
|
22598
|
-
* @returns A formatted string representation of the time remaining (e.g. "2hrs 30min 15s")
|
|
22599
|
-
*/
|
|
22600
|
-
this.timeLeftString = computed(() => {
|
|
22601
|
-
const { hours, mins, secs } = this.timeLeftFormatted() || {};
|
|
22602
|
-
return `${hours ? hours + 'hrs' : ''} ${mins ? mins + 'min' : ''} ${secs ? secs + 's' : ''}`;
|
|
22603
|
-
}, ...(ngDevMode ? [{ debugName: "timeLeftString" }] : []));
|
|
22604
|
-
}
|
|
22605
|
-
/**
|
|
22606
|
-
* Closes the idle timeout dialog.
|
|
22607
|
-
* This typically indicates user activity and resets the idle timer.
|
|
22608
|
-
*/
|
|
22609
|
-
close() {
|
|
22610
|
-
this.dialogRef.close();
|
|
22611
|
-
}
|
|
22612
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IdlerComponent, deps: [{ token: i1$3.MatDialogRef }, { token: IdlerService }, { token: UtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22613
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: IdlerComponent, isStandalone: true, selector: "app-idler", providers: [IdlerService], ngImport: i0, template: "@if (timeLeftString(); as timeLeft) {\n<div class=\"center h-100 text-center caution\">\n You will be logged out in {{timeLeft}}\n</div>\n}\n", styles: [""] }); }
|
|
22614
|
-
}
|
|
22615
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IdlerComponent, decorators: [{
|
|
22616
|
-
type: Component,
|
|
22617
|
-
args: [{ selector: 'app-idler', imports: [], providers: [IdlerService], template: "@if (timeLeftString(); as timeLeft) {\n<div class=\"center h-100 text-center caution\">\n You will be logged out in {{timeLeft}}\n</div>\n}\n" }]
|
|
22618
|
-
}], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: IdlerService }, { type: UtilityService }] });
|
|
22619
|
-
|
|
22620
22538
|
/**
|
|
22621
22539
|
* Directive that formats numbers with commas in input fields.
|
|
22622
22540
|
*
|
|
@@ -22903,6 +22821,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
22903
22821
|
}]
|
|
22904
22822
|
}], ctorParameters: () => [{ type: i1$1.DecimalPipe }, { type: UtilityService }] });
|
|
22905
22823
|
|
|
22824
|
+
/**
|
|
22825
|
+
* Converts an object to an array of labels for display
|
|
22826
|
+
*/
|
|
22827
|
+
class ObjectToLabelsPipe {
|
|
22828
|
+
/**
|
|
22829
|
+
* Converts an object to an array of labels with optional custom field mapping
|
|
22830
|
+
* @param value The source object to convert
|
|
22831
|
+
* @param customFieldMap Optional mapping of object keys to ITextCase2 properties
|
|
22832
|
+
* @param exclusionList Optional map of field names to exclude
|
|
22833
|
+
* @returns Array of ITextCase2 objects representing the object's fields
|
|
22834
|
+
*/
|
|
22835
|
+
transform(value, customFieldMap, exclusionList) {
|
|
22836
|
+
// debugger;
|
|
22837
|
+
const _exclusionList = {
|
|
22838
|
+
id: true,
|
|
22839
|
+
...exclusionList,
|
|
22840
|
+
};
|
|
22841
|
+
return Object.keys(value || {})
|
|
22842
|
+
.filter((x) => !_exclusionList[x])
|
|
22843
|
+
.map((f) => ({
|
|
22844
|
+
...customFieldMap?.[f],
|
|
22845
|
+
label: customFieldMap?.[f]?.label || this.uS.formatField(f),
|
|
22846
|
+
value: value[f],
|
|
22847
|
+
}));
|
|
22848
|
+
}
|
|
22849
|
+
constructor(uS) {
|
|
22850
|
+
this.uS = uS;
|
|
22851
|
+
}
|
|
22852
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, deps: [{ token: UtilityService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
22853
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, isStandalone: true, name: "objectToLabels" }); }
|
|
22854
|
+
}
|
|
22855
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ObjectToLabelsPipe, decorators: [{
|
|
22856
|
+
type: Pipe,
|
|
22857
|
+
args: [{
|
|
22858
|
+
name: 'objectToLabels',
|
|
22859
|
+
standalone: true,
|
|
22860
|
+
}]
|
|
22861
|
+
}], ctorParameters: () => [{ type: UtilityService }] });
|
|
22862
|
+
|
|
22906
22863
|
/**
|
|
22907
22864
|
* Core application service that manages system state, navigation menus, and UI theming.
|
|
22908
22865
|
* @template TESystem - The system enum type (defaults to ESystem)
|
|
@@ -25896,5 +25853,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
25896
25853
|
* Generated bundle index. Do not edit.
|
|
25897
25854
|
*/
|
|
25898
25855
|
|
|
25899
|
-
export { AddItemComponent, ApiService, AppRouteBase, AppRouteService, AppRouteState, AppService, ArraySplitter, AuthenticationInterceptorService, AutocompleteComponent, AutocompleteModule, AutocompleteService, AutocompleteTdRfComponent, BaseFormGenerator, BaseNativeEventListenerDirective, BlinkingBlocksComponent, BouncingBallComponent, Btn, BtnComponent, BtnLg, BtnLgComponent, BtnLinkComponent, BtnModule, BtnService, ButtonComponent, CETSInput, CacheService, CacheUpdaterService, CardComponent, CardComponent as CardModule, CodeTitleDescPipe, CommafyNumberDirective, ButtonComponent as ComponentsModule, Config, ConfirmDialogComponent, ConfirmDialogComponent as ConfirmDialogModule, Constant, CustomDatePipe, DEFAULT_TIMEOUT, DateInputComponent, Day, DayHourMinInputComponent, DebouncerService, DesktopClassDirective, DetailsBtnComponent, DetailsBtnComponent as DetailsBtnModule, DirectivesModule, DocumentsNameDisplayComponent, DocumentsNameDisplayComponent as DocumentsNameDisplayModule, DragDropFileUploadDirective, EETSPageBtnID, ELanguage, EMenuLocation, EMenuType, EPageType, ESubSystem, ESystem, ESystemBusLine, ETSCheckForUpdateService, ETSConfirmDialogService, ETSExtraPagesModule, ETSFKVP, ETSForms, ETSHandleUnrecoverableStateService, ETSKVP, ETSLogUpdateService, ETSLoggerModule, ETSMenuItem, ETSMenuItemDivider, ETSPageNotFoundComponent, ETSPromptUpdateService, ETSReactiveFormInputService, ETSResetModule, ETSResponsivenessDirectiveModule, ETSRobotModule, ETSServiceWorkerService, ETSStorageService, ETSThemeService, ETSTimeoutTesterModule, ETSVersionModule, ETSWindowSecurityService, EUA, EVFunctions, EValidationType, EditableTextCaseComponent, EditableTextCaseComponent as EditableTextCaseModule, SDKEnvironment as Environment, EqualChildrenDirective, ErrorMessagePipe, ErrorReporterService, ExportTableComponent, ExportTableComponent as ExportTableModule, FCInput, FadingBarsComponent, FadingCirclesComponent, FieldToLabelPipe, FieldsToDisplayComponent, FileUploadComponent, FilterArrayByStringPipe, FilterArrayPipe, FilterFormArrayControlPipe, FilterFormArrayGroupPipe, FilterOptions, FindItemComponent, FormErrorComponent, FormGeneratedValueComponent, FormGeneratorComponent, FormGeneratorComponent as FormGeneratorModule, FormGeneratorService, FormInvalidClassDirective, FormInvalidClassPipe, FormLinkComponent, FormLinkComponent as FormLinkModule, FormSchemaToTableColumnsPipe, FormTabHeadersComponent, FormTabHeadersComponent as FormTabHeadersModule, FormValuePipe, FunctionCaller, FunctionCaller1, FunctionCaller2, FunctionCaller3, GenderPipe, GetColFormattedEPipe, GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, GetValueLabel, GlobalErrorHandlerService, HasFormValuePipe, HasValuePipe, HideDesktopDirective, HideMobileDirective, HtmlerService, HttpListCaller, HttpListCaller1, HttpListCaller2, IdlerComponent, IdlerService, ImageLoaderDirective, ImageUpload, IndexCompLayoutComponent, InfoDialogComponent, InfoDialogModule, InfoDialogService, InfoIconComponent, InfoIconComponent as InfoIconModule, InputBasicComponent, InputClassPipe, InputComponent, InputComponents, InputControlComponent, InputFormatDirective, InputFormatService, InputLabelComponent, InputModule, InputNGModelComponent, InputNGModelComponent as InputNGModelModule, InputPipesModule, InputService, InputTD_RFComponent, InputTableComponent, InputTableService, IntegerOnlyDirective, IsClonePage, IsShowPage, LabelComponent, LabelComponent as LabelModule, Lbl, ListOptionFinderPipe, LoaderComponent, LoaderComponent as LoaderModule, LoaderService, LocalCacheService, Log, LoggerComponent, LoggerInterceptorService, LoggerRoutingModule, LoggerService, MHrefDirective, MobileClassDirective, ModalBodyDirective, ModalComponent, ModalComponents, ModalFooterDirective, ModalFormComponent, ModalFormComponent as ModalFormModule, ModalHeaderComponent, ModalHeaderComponent as ModalHeaderModule, ModalComponent as ModalModule, MouseClickListenerDirective, MouseEnterListenerDirective, MouseLeaveListenerDirective, MrouterLinkirective, NELEventName, NarrationHistoryCompComponent, NativeEventListenerDirectives, NegativeNumberOnlyDirective,
|
|
25856
|
+
export { AddItemComponent, ApiService, AppRouteBase, AppRouteService, AppRouteState, AppService, ArraySplitter, AuthenticationInterceptorService, AutocompleteComponent, AutocompleteModule, AutocompleteService, AutocompleteTdRfComponent, BaseFormGenerator, BaseNativeEventListenerDirective, BlinkingBlocksComponent, BouncingBallComponent, Btn, BtnComponent, BtnLg, BtnLgComponent, BtnLinkComponent, BtnModule, BtnService, ButtonComponent, CETSInput, CacheService, CacheUpdaterService, CardComponent, CardComponent as CardModule, CodeTitleDescPipe, CommafyNumberDirective, ButtonComponent as ComponentsModule, Config, ConfirmDialogComponent, ConfirmDialogComponent as ConfirmDialogModule, Constant, CustomDatePipe, DEFAULT_TIMEOUT, DateInputComponent, Day, DayHourMinInputComponent, DebouncerService, DesktopClassDirective, DetailsBtnComponent, DetailsBtnComponent as DetailsBtnModule, DirectivesModule, DocumentsNameDisplayComponent, DocumentsNameDisplayComponent as DocumentsNameDisplayModule, DragDropFileUploadDirective, EETSPageBtnID, ELanguage, EMenuLocation, EMenuType, EPageType, ESubSystem, ESystem, ESystemBusLine, ETSCheckForUpdateService, ETSConfirmDialogService, ETSExtraPagesModule, ETSFKVP, ETSForms, ETSHandleUnrecoverableStateService, ETSKVP, ETSLogUpdateService, ETSLoggerModule, ETSMenuItem, ETSMenuItemDivider, ETSPageNotFoundComponent, ETSPromptUpdateService, ETSReactiveFormInputService, ETSResetModule, ETSResponsivenessDirectiveModule, ETSRobotModule, ETSServiceWorkerService, ETSStorageService, ETSThemeService, ETSTimeoutTesterModule, ETSVersionModule, ETSWindowSecurityService, EUA, EVFunctions, EValidationType, EditableTextCaseComponent, EditableTextCaseComponent as EditableTextCaseModule, SDKEnvironment as Environment, EqualChildrenDirective, ErrorMessagePipe, ErrorReporterService, ExportTableComponent, ExportTableComponent as ExportTableModule, FCInput, FadingBarsComponent, FadingCirclesComponent, FieldToLabelPipe, FieldsToDisplayComponent, FileUploadComponent, FilterArrayByStringPipe, FilterArrayPipe, FilterFormArrayControlPipe, FilterFormArrayGroupPipe, FilterOptions, FindItemComponent, FormErrorComponent, FormGeneratedValueComponent, FormGeneratorComponent, FormGeneratorComponent as FormGeneratorModule, FormGeneratorService, FormInvalidClassDirective, FormInvalidClassPipe, FormLinkComponent, FormLinkComponent as FormLinkModule, FormSchemaToTableColumnsPipe, FormTabHeadersComponent, FormTabHeadersComponent as FormTabHeadersModule, FormValuePipe, FunctionCaller, FunctionCaller1, FunctionCaller2, FunctionCaller3, GenderPipe, GetColFormattedEPipe, GetColFormattedPipe, GetHeadersPipe, GetRawFieldsPipe, GetValueLabel, GlobalErrorHandlerService, HasFormValuePipe, HasValuePipe, HideDesktopDirective, HideMobileDirective, HtmlerService, HttpListCaller, HttpListCaller1, HttpListCaller2, IdlerComponent, IdlerService, ImageLoaderDirective, ImageUpload, IndexCompLayoutComponent, InfoDialogComponent, InfoDialogModule, InfoDialogService, InfoIconComponent, InfoIconComponent as InfoIconModule, InputBasicComponent, InputClassPipe, InputComponent, InputComponents, InputControlComponent, InputFormatDirective, InputFormatService, InputLabelComponent, InputModule, InputNGModelComponent, InputNGModelComponent as InputNGModelModule, InputPipesModule, InputService, InputTD_RFComponent, InputTableComponent, InputTableService, IntegerOnlyDirective, IsClonePage, IsShowPage, LabelComponent, LabelComponent as LabelModule, Lbl, ListOptionFinderPipe, LoaderComponent, LoaderComponent as LoaderModule, LoaderService, LocalCacheService, Log, LoggerComponent, LoggerInterceptorService, LoggerRoutingModule, LoggerService, MHrefDirective, MobileClassDirective, ModalBodyDirective, ModalComponent, ModalComponents, ModalFooterDirective, ModalFormComponent, ModalFormComponent as ModalFormModule, ModalHeaderComponent, ModalHeaderComponent as ModalHeaderModule, ModalComponent as ModalModule, MouseClickListenerDirective, MouseEnterListenerDirective, MouseLeaveListenerDirective, MrouterLinkirective, NELEventName, NarrationHistoryCompComponent, NativeEventListenerDirectives, NegativeNumberOnlyDirective, NumberFormatService, NumberPipe, ObjectToArrayPipe, ObjectToLabelsPipe, OnClickDirective, OptionLabeller, OptionerPipe, OptionsFormatter, PSDirective, PageCenterBodyComponent, PageLoader, PageLoaderService, PageModal, PageService, PageTemplateComponent, PageTemplateComponent as PageTemplateModule, PageToComponentComponent, PageToComponentDirective, PageToComponentComponent as PageToComponentModule, PageToComponentService, PaginatorComponent, PaginatorPipe, PhoneNumberComponent, PhoneNumberService, PointerMoveListenerDirective, prototypes as Prototypes, RefresherPipe, RemoveUsedOptionsPipe, RemoveUsedOptionsReactivePipe, ReplaceAllPipe, RequestLoggerInterceptorService, RequestTimeoutInterceptorService, ResizeGridPipe, ResponsiveValPipe, ResponsivenessDirective, ReverseTranslateSingleNLPipe, RichTextEditorComponent, RichTextEditorRFComponent, RingRipplesComponent, RoundPipe, RouteItem, RowActionsComponent, RowActionsComponent as RowActionsModule, BaseEffect as SDKBaseEffect, BaseFacadeService as SDKBaseFacadeService, BaseService as SDKBaseService, SDKTranslateNoLoaderPipe, SDKTranslatePipe, SDKTranslateSingleNoLoaderPipe, SDKTranslateSinglePipe, SaverClass, SaverService, SecondsToTimePipe, SharedModule, SortPipe, SpinnerComponent, StorageClass, StrConcatenatorPipe, SvgIconComponent, SvgIconService, TableBaseComponent, TableCol, TableHttpsComponent, TableInputClassFunctionPipe, TableInputComponent, TableInputRowComponent, TablePipesModule, TablePlainComponent, TableService, TableToStringPipe, TextAreaModalComponent, TextAreaModalService, TextCase1Component, TextCase2Component, TextCase2ForObject, TextCaseInputComponent, TextCaseService, TextComponent, ToAnyArrayPipe, ToAnyPipe, ToggleInputFormComponent, TranslatePipeModule, TranslationService, TranslatorCaseComponent, TranslatorDirective, TrimPipe, TrimTextPipe, TyperPipe, UserActivity, UserActivityService, UtilityPipesModule, UtilityService, ValidationMessageComponent, ValidationMessageNgmodelComponent, ValidationMsg, Validator, ValueFormatterPipe, ValueOrXPipe, VersionService, VerticalNavComponent, ViewFormButtonsComponent, ViewFormButtonsComponent as ViewFormButtonsModule, WatermarkComponent, WebUserAuthenticationService, WebUserForgotPasswordComponent, WebUserLoginComponent, WebUserResetPasswordComponent, WebcamMediaComponent, XOrYPipe, YearMonthTdRfComponent, _SharedModule, configForms, configPatterns, configValidationMessages, environment, pageErrorRouter, webUserAuthenticationGuard, webUserAuthenticationInterceptor, widthOffsetPipe };
|
|
25900
25857
|
//# sourceMappingURL=ets-fe-ng-sdk.mjs.map
|