@bootkit/ng0 0.0.0-alpha.14 → 0.0.0-alpha.16

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.
Files changed (64) hide show
  1. package/common/index.d.ts +2 -2
  2. package/components/modal/index.d.ts +21 -3
  3. package/components/table/index.d.ts +24 -18
  4. package/data/index.d.ts +5 -44
  5. package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
  6. package/fesm2022/bootkit-ng0-components-accordion.mjs +13 -13
  7. package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
  8. package/fesm2022/bootkit-ng0-components-backdrop.mjs +4 -4
  9. package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
  10. package/fesm2022/bootkit-ng0-components-button.mjs +11 -11
  11. package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
  12. package/fesm2022/bootkit-ng0-components-card.mjs +11 -11
  13. package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
  14. package/fesm2022/bootkit-ng0-components-code.mjs +9 -9
  15. package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
  16. package/fesm2022/bootkit-ng0-components-collapse.mjs +14 -14
  17. package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
  18. package/fesm2022/bootkit-ng0-components-confirmation.mjs +13 -13
  19. package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
  20. package/fesm2022/bootkit-ng0-components-form-field.mjs +13 -13
  21. package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
  22. package/fesm2022/bootkit-ng0-components-modal.mjs +40 -23
  23. package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
  24. package/fesm2022/bootkit-ng0-components-nav.mjs +26 -26
  25. package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
  26. package/fesm2022/bootkit-ng0-components-offcanvas.mjs +9 -9
  27. package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
  28. package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
  29. package/fesm2022/bootkit-ng0-components-pagination.mjs +14 -14
  30. package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
  31. package/fesm2022/bootkit-ng0-components-popover.mjs +10 -10
  32. package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
  33. package/fesm2022/bootkit-ng0-components-sidenav.mjs +20 -20
  34. package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
  35. package/fesm2022/bootkit-ng0-components-stepper.mjs +12 -12
  36. package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
  37. package/fesm2022/bootkit-ng0-components-table.mjs +114 -109
  38. package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
  39. package/fesm2022/bootkit-ng0-components-toast.mjs +6 -6
  40. package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
  41. package/fesm2022/bootkit-ng0-components-tooltip.mjs +8 -8
  42. package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
  43. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +24 -24
  44. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
  45. package/fesm2022/bootkit-ng0-data.mjs +72 -102
  46. package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
  47. package/fesm2022/bootkit-ng0-date.mjs.map +1 -1
  48. package/fesm2022/bootkit-ng0-file.mjs.map +1 -1
  49. package/fesm2022/bootkit-ng0-form.mjs +24 -24
  50. package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
  51. package/fesm2022/bootkit-ng0-http.mjs +3 -3
  52. package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
  53. package/fesm2022/bootkit-ng0-localization-locales.mjs +13 -0
  54. package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -1
  55. package/fesm2022/bootkit-ng0-localization.mjs +39 -42
  56. package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
  57. package/fesm2022/bootkit-ng0-platform-browser.mjs +7 -7
  58. package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
  59. package/fesm2022/bootkit-ng0-script.mjs +3 -3
  60. package/fesm2022/bootkit-ng0-script.mjs.map +1 -1
  61. package/fesm2022/bootkit-ng0-security.mjs +15 -15
  62. package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
  63. package/localization/index.d.ts +8 -3
  64. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-vertical-menu.mjs","sources":["../../../projects/ng0/components/vertical-menu/item-arrow.directive.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.html","../../../projects/ng0/components/vertical-menu/item-children.component.ts","../../../projects/ng0/components/vertical-menu/item-children.component.html","../../../projects/ng0/components/vertical-menu/item.component.ts","../../../projects/ng0/components/vertical-menu/item.component.html","../../../projects/ng0/components/vertical-menu/item-content.component.ts","../../../projects/ng0/components/vertical-menu/item-content.component.html","../../../projects/ng0/components/vertical-menu/vertical-menu.module.ts","../../../projects/ng0/components/vertical-menu/bootkit-ng0-components-vertical-menu.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ng0VerticalMenuArrow], [ng0VmenuArrow]',\n exportAs: 'ng0VerticalMenuArrow',\n standalone: true,\n})\nexport class VerticalMenuArrowDirective {\n constructor(public readonly templateRef: TemplateRef<any>) { }\n}\n","import { Component, ContentChild, input } from '@angular/core';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\n\n@Component({\n selector: 'ng0-vertical-menu, ng0-vmenu',\n templateUrl: './vertical-menu.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [],\n})\nexport class VerticalMenuComponent {\n public toggleByItemClick = input(true);\n \n public collapseTimings = input<string | number>('0.15s');\n\n @ContentChild(VerticalMenuArrowDirective, { descendants: false }) public readonly arrowDirective?: VerticalMenuArrowDirective;\n\n constructor() {\n }\n}\n\n","<ng-content></ng-content>","import { Component, ContentChild, model } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { CollapseDirective } from '@bootkit/ng0/components/collapse';\n\n@Component({\n selector: 'ng0-vertical-menu-item-children, ng0-vmenu-item-children, ng0-vmenu-children',\n templateUrl: './item-children.component.html',\n exportAs: 'ng0VmenuItemChildren',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule, CollapseDirective],\n host: {\n '[class.isc-expanded]': 'expanded()'\n }\n})\nexport class VerticalMenuItemChildrenComponent {\n public expanded = model(false);\n\n @ContentChild(VerticalMenuItemComponent, { descendants: false }) protected _items?: VerticalMenuItemComponent;\n\n constructor(public menuItem: VerticalMenuItemComponent, protected _menu: VerticalMenuComponent,) { }\n}\n","<div ng0Collapse\n [collapsed]=\"!expanded()\"\n [timings]=\"_menu.collapseTimings()\">\n <ng-content></ng-content>\n</div>\n","import { Component, ContentChild, ElementRef, HostBinding, input, model, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item, ng0-vmenu-item',\n templateUrl: './item.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule],\n host: {\n }\n})\nexport class VerticalMenuItemComponent {\n public toggleByClick = input(true);\n public active = model(false);\n\n @ContentChild(VerticalMenuItemChildrenComponent, { descendants: false }) public readonly children?: VerticalMenuItemChildrenComponent;\n\n constructor(private _renderer: Renderer2, private _el: ElementRef, protected _menu: VerticalMenuComponent) {\n }\n\n @HostBinding('class.ng0-has-children')\n public get hasChildren(): boolean {\n return this.children != null;\n }\n\n @HostBinding('class.ng0-expanded')\n public get isExpanded(): boolean {\n return this.children != null && this.children.expanded();\n }\n}\n\n","<ng-content></ng-content>","import { Component, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemComponent } from './item.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item-content, ng0-vmenu-item-content, ng0-vmenu-content',\n templateUrl: './item-content.component.html',\n standalone: true,\n styles: `:host {display: flex; align-items: center; }`,\n imports: [CommonModule]\n})\nexport class VerticalMenuItemContentComponent {\n constructor(\n public menuItem: VerticalMenuItemComponent,\n private _renderer: Renderer2,\n private _el: ElementRef,\n protected _menu: VerticalMenuComponent,\n ) {\n // _renderer.addClass(_el.nativeElement, '')\n }\n\n @HostListener('click', ['$event'])\n private _onClick() {\n if (this._menu.toggleByItemClick() && this.menuItem.hasChildren) {\n this.menuItem.children?.expanded.update(x => !x);\n }\n }\n}\n","<ng-content></ng-content>\n\n@defer {\n@if(_menu.arrowDirective && menuItem.hasChildren) {\n<ng-container *ngTemplateOutlet=\"_menu.arrowDirective?.templateRef!; context: {$implicit: menuItem}\"></ng-container>\n}\n}","import { NgModule } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\nimport { VerticalMenuItemContentComponent } from './item-content.component';\n\nconst items = [\n VerticalMenuComponent,\n VerticalMenuItemComponent,\n VerticalMenuItemChildrenComponent,\n VerticalMenuItemContentComponent,\n VerticalMenuArrowDirective,\n];\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class VerticalMenuModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VerticalMenuItemComponent","i2.VerticalMenuComponent","i1.VerticalMenuComponent"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-components-vertical-menu.mjs","sources":["../../../projects/ng0/components/vertical-menu/item-arrow.directive.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.html","../../../projects/ng0/components/vertical-menu/item-children.component.ts","../../../projects/ng0/components/vertical-menu/item-children.component.html","../../../projects/ng0/components/vertical-menu/item.component.ts","../../../projects/ng0/components/vertical-menu/item.component.html","../../../projects/ng0/components/vertical-menu/item-content.component.ts","../../../projects/ng0/components/vertical-menu/item-content.component.html","../../../projects/ng0/components/vertical-menu/vertical-menu.module.ts","../../../projects/ng0/components/vertical-menu/bootkit-ng0-components-vertical-menu.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ng0VerticalMenuArrow], [ng0VmenuArrow]',\n exportAs: 'ng0VerticalMenuArrow',\n standalone: true,\n})\nexport class VerticalMenuArrowDirective {\n constructor(public readonly templateRef: TemplateRef<any>) { }\n}\n","import { Component, ContentChild, input } from '@angular/core';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\n\n@Component({\n selector: 'ng0-vertical-menu, ng0-vmenu',\n templateUrl: './vertical-menu.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [],\n})\nexport class VerticalMenuComponent {\n public toggleByItemClick = input(true);\n \n public collapseTimings = input<string | number>('0.15s');\n\n @ContentChild(VerticalMenuArrowDirective, { descendants: false }) public readonly arrowDirective?: VerticalMenuArrowDirective;\n\n constructor() {\n }\n}\n\n","<ng-content></ng-content>","import { Component, ContentChild, model } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { CollapseDirective } from '@bootkit/ng0/components/collapse';\n\n@Component({\n selector: 'ng0-vertical-menu-item-children, ng0-vmenu-item-children, ng0-vmenu-children',\n templateUrl: './item-children.component.html',\n exportAs: 'ng0VmenuItemChildren',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule, CollapseDirective],\n host: {\n '[class.isc-expanded]': 'expanded()'\n }\n})\nexport class VerticalMenuItemChildrenComponent {\n public expanded = model(false);\n\n @ContentChild(VerticalMenuItemComponent, { descendants: false }) protected _items?: VerticalMenuItemComponent;\n\n constructor(public menuItem: VerticalMenuItemComponent, protected _menu: VerticalMenuComponent,) { }\n}\n","<div ng0Collapse\n [collapsed]=\"!expanded()\"\n [timings]=\"_menu.collapseTimings()\">\n <ng-content></ng-content>\n</div>\n","import { Component, ContentChild, ElementRef, HostBinding, input, model, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item, ng0-vmenu-item',\n templateUrl: './item.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule],\n host: {\n }\n})\nexport class VerticalMenuItemComponent {\n public toggleByClick = input(true);\n public active = model(false);\n\n @ContentChild(VerticalMenuItemChildrenComponent, { descendants: false }) public readonly children?: VerticalMenuItemChildrenComponent;\n\n constructor(private _renderer: Renderer2, private _el: ElementRef, protected _menu: VerticalMenuComponent) {\n }\n\n @HostBinding('class.ng0-has-children')\n public get hasChildren(): boolean {\n return this.children != null;\n }\n\n @HostBinding('class.ng0-expanded')\n public get isExpanded(): boolean {\n return this.children != null && this.children.expanded();\n }\n}\n\n","<ng-content></ng-content>","import { Component, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemComponent } from './item.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item-content, ng0-vmenu-item-content, ng0-vmenu-content',\n templateUrl: './item-content.component.html',\n standalone: true,\n styles: `:host {display: flex; align-items: center; }`,\n imports: [CommonModule]\n})\nexport class VerticalMenuItemContentComponent {\n constructor(\n public menuItem: VerticalMenuItemComponent,\n private _renderer: Renderer2,\n private _el: ElementRef,\n protected _menu: VerticalMenuComponent,\n ) {\n // _renderer.addClass(_el.nativeElement, '')\n }\n\n @HostListener('click', ['$event'])\n private _onClick() {\n if (this._menu.toggleByItemClick() && this.menuItem.hasChildren) {\n this.menuItem.children?.expanded.update(x => !x);\n }\n }\n}\n","<ng-content></ng-content>\n\n@defer {\n@if(_menu.arrowDirective && menuItem.hasChildren) {\n<ng-container *ngTemplateOutlet=\"_menu.arrowDirective?.templateRef!; context: {$implicit: menuItem}\"></ng-container>\n}\n}","import { NgModule } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\nimport { VerticalMenuItemContentComponent } from './item-content.component';\n\nconst items = [\n VerticalMenuComponent,\n VerticalMenuItemComponent,\n VerticalMenuItemChildrenComponent,\n VerticalMenuItemContentComponent,\n VerticalMenuArrowDirective,\n];\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class VerticalMenuModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VerticalMenuItemComponent","i2.VerticalMenuComponent","i1.VerticalMenuComponent"],"mappings":"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"}
@@ -46,7 +46,7 @@ class DataResult {
46
46
  * This class provides a common interface for loading data from various sources.
47
47
  */
48
48
  class DataSource {
49
- loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
49
+ loading = signal(false);
50
50
  constructor() {
51
51
  }
52
52
  /**
@@ -79,73 +79,6 @@ class AsyncDataSource extends DataSource {
79
79
  }
80
80
  }
81
81
 
82
- /**
83
- * Converts a data source like an array, function, or DataSource into a DataSource instance.
84
- * @param source The data source to convert.
85
- * @returns A DataSource instance.
86
- */
87
- function convertToDataSource(source) {
88
- if (Array.isArray(source)) {
89
- return new ArrayDataSource(source);
90
- }
91
- else if (typeof source == 'function') {
92
- return new AsyncDataSource(source);
93
- }
94
- else if (source instanceof DataSource) {
95
- return source;
96
- }
97
- else if (source === undefined || source === null) {
98
- return new ArrayDataSource([]);
99
- }
100
- else {
101
- throw new Error('Invalid source parameter.');
102
- }
103
- }
104
- /**
105
- * StandardFilterOperators is an enumeration of standard filter operators
106
- * that can be used in data requests to filter data.
107
- * It includes operators like Contains, StartsWith, EndsWith, and Equals.
108
- */
109
- var StandardFilterOperators;
110
- (function (StandardFilterOperators) {
111
- /**
112
- * A filter that matches items that contain the specified value.
113
- */
114
- StandardFilterOperators["Contains"] = "contains";
115
- /**
116
- * A filter that matches items that start with the specified value.
117
- */
118
- StandardFilterOperators["StartsWith"] = "startsWith";
119
- /**
120
- * A filter that matches items that end with the specified value.
121
- */
122
- StandardFilterOperators["EndsWith"] = "endsWith";
123
- /**
124
- * A filter that matches items that are equal to the specified value.
125
- */
126
- StandardFilterOperators["Equals"] = "equals";
127
- /**
128
- * A filter that matches items that are not equal to the specified value.
129
- */
130
- StandardFilterOperators["NotEquals"] = "notEquals";
131
- /**
132
- * A filter that matches items that are greater than the specified value.
133
- */
134
- StandardFilterOperators["GreaterThan"] = "greaterThan";
135
- /**
136
- * A filter that matches items that are greater than or equal to the specified value.
137
- */
138
- StandardFilterOperators["GreaterThanOrEqual"] = "greaterThanOrEqual";
139
- /**
140
- * A filter that matches items that are less than the specified value.
141
- */
142
- StandardFilterOperators["LessThan"] = "lessThan";
143
- /**
144
- * A filter that matches items that are less than or equal to the specified value.
145
- */
146
- StandardFilterOperators["LessThanOrEqual"] = "lessThanOrEqual";
147
- })(StandardFilterOperators || (StandardFilterOperators = {}));
148
-
149
82
  /**
150
83
  * An implementation of DataSource that uses an array as the data source.
151
84
  * This is useful for static data or when you want to manage the data manually.
@@ -163,38 +96,42 @@ class ArrayDataSource extends DataSource {
163
96
  this.items = items;
164
97
  }
165
98
  load(request) {
166
- let items;
167
- if (request.page) {
168
- let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;
169
- items = this.items.slice(startItemIndex, startItemIndex + request.page.size);
170
- }
171
- else {
172
- items = [...this.items];
173
- }
99
+ let filteredValues = [...this.items];
100
+ let result;
101
+ // Filtering
174
102
  if (Array.isArray(request.filters) && request.filters.length > 0) {
175
- // Apply filters
176
103
  request.filters.forEach(filter => {
177
- let filterFunction = getFilterFunction(filter);
178
- for (let i = 0; i < items.length; i++) {
179
- let item = items[i];
180
- let value = filter.field ? item[filter.field] : item;
181
- if (!filterFunction(value, filter.value)) {
182
- items.splice(i, 1);
104
+ if (!filter.field) {
105
+ throw Error('DataRequestFilter "field" cannot be null.');
106
+ }
107
+ let isPassedByFilter = getFilterFunction(filter);
108
+ for (let i = 0; i < filteredValues.length; i++) {
109
+ let row = filteredValues[i];
110
+ if (!isPassedByFilter(row[filter.field], filter.value)) {
111
+ filteredValues.splice(i, 1);
183
112
  i--; // Adjust index after removal
184
113
  }
185
114
  }
186
115
  });
187
116
  }
117
+ // Pagination
118
+ if (request.page) {
119
+ let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;
120
+ result = filteredValues.slice(startItemIndex, startItemIndex + request.page.size);
121
+ }
122
+ else {
123
+ result = filteredValues;
124
+ }
125
+ // Sorting
188
126
  if (request.sort) {
189
- // Apply sorting
190
127
  }
191
- let result = new DataResult(items, this.items.length);
128
+ let dataResult = new DataResult(result, filteredValues.length);
192
129
  // this._loading = true;
193
130
  // return of(result).pipe(
194
131
  // delay(5000),
195
132
  // tap(x => this._loading = false)
196
133
  // );
197
- return of(result);
134
+ return of(dataResult);
198
135
  }
199
136
  remove(item) {
200
137
  let index = this.items.findIndex(x => x === item);
@@ -208,34 +145,44 @@ class ArrayDataSource extends DataSource {
208
145
  this._insertSubject.next({ items });
209
146
  }
210
147
  }
211
- function getFilterFunction(filter) {
212
- let operator = filter.operator || StandardFilterOperators.Contains;
213
- let caseSensitive = filter.caseSensitive || false;
214
- if (filter.value === undefined || filter.value === null) {
215
- return (item) => true; // No filter applied
216
- }
217
- switch (filter.operator) {
218
- case StandardFilterOperators.Contains:
148
+ function getFilterFunction(requestfilter) {
149
+ let operator = requestfilter.operator || 'contains';
150
+ let caseSensitive = requestfilter.caseSensitive || false;
151
+ // if (requestfilter.value === undefined || requestfilter.value === null) {
152
+ // return (item: any) => true; // No filter applied
153
+ // }
154
+ switch (requestfilter.operator) {
155
+ case 'contains':
219
156
  return caseSensitive ?
220
157
  (item, filter) => item.includes(filter) :
221
158
  (item, filter) => item.toLowerCase().includes(filter.toLowerCase());
222
- case StandardFilterOperators.StartsWith:
159
+ case 'startsWith':
223
160
  return caseSensitive ?
224
161
  (item, filter) => item.startsWith(filter) :
225
162
  (item, filter) => item.toLowerCase().startsWith(filter.toLowerCase());
226
- case StandardFilterOperators.EndsWith:
163
+ case 'endsWith':
227
164
  return caseSensitive ?
228
165
  (item, filter) => item.endsWith(filter) :
229
166
  (item, filter) => item.toLowerCase().endsWith(filter.toLowerCase());
230
- case StandardFilterOperators.Equals:
231
- if (typeof filter.value === 'string') {
167
+ case 'eq':
168
+ if (typeof requestfilter.value === 'string') {
232
169
  return caseSensitive ?
233
- (item, filter) => item === filter :
234
- (item, filter) => item.toLowerCase() === filter.toLowerCase();
170
+ (item, filter) => item == filter :
171
+ (item, filter) => item.toString().toLowerCase() === filter.toLowerCase();
235
172
  }
236
173
  else {
237
- return (item, filter) => item === filter.value;
174
+ return (item, filter) => item === filter;
238
175
  }
176
+ case 'lt':
177
+ return (item, filter) => item < filter;
178
+ case 'lte':
179
+ return (item, filter) => item <= filter;
180
+ case 'gt':
181
+ return (item, filter) => item > filter;
182
+ case 'gte':
183
+ return (item, filter) => item >= filter;
184
+ case 'ne':
185
+ return (item, filter) => item !== filter;
239
186
  default:
240
187
  throw new Error(`filter operator: ${operator} is not implemented in ArrayDataSource.`);
241
188
  }
@@ -259,9 +206,32 @@ function toDataResult(dr) {
259
206
  };
260
207
  }
261
208
 
209
+ /**
210
+ * Converts a data source like an array, function, or DataSource into a DataSource instance.
211
+ * @param source The data source to convert.
212
+ * @returns A DataSource instance.
213
+ */
214
+ function convertToDataSource(source) {
215
+ if (Array.isArray(source)) {
216
+ return new ArrayDataSource(source);
217
+ }
218
+ else if (typeof source == 'function') {
219
+ return new AsyncDataSource(source);
220
+ }
221
+ else if (source instanceof DataSource) {
222
+ return source;
223
+ }
224
+ else if (source === undefined || source === null) {
225
+ return new ArrayDataSource([]);
226
+ }
227
+ else {
228
+ throw new Error('Invalid source parameter.');
229
+ }
230
+ }
231
+
262
232
  /**
263
233
  * Generated bundle index. Do not edit.
264
234
  */
265
235
 
266
- export { ArrayDataSource, AsyncDataSource, DataRequest, DataResult, DataSource, StandardFilterOperators, convertToDataSource, toDataResult };
236
+ export { ArrayDataSource, AsyncDataSource, DataRequest, DataResult, DataSource, convertToDataSource, toDataResult };
267
237
  //# sourceMappingURL=bootkit-ng0-data.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-data.mjs","sources":["../../../projects/ng0/data/data-request.ts","../../../projects/ng0/data/data-result.ts","../../../projects/ng0/data/data-source.ts","../../../projects/ng0/data/async-data-source.ts","../../../projects/ng0/data/types.ts","../../../projects/ng0/data/array-data-source.ts","../../../projects/ng0/data/data-result-operator.ts","../../../projects/ng0/data/bootkit-ng0-data.ts"],"sourcesContent":["/**\n * DataRequest class represents a request for data with pagination, filtering, sorting, and field selection.\n * It is used to encapsulate the parameters needed to fetch data from a data source.\n * It can be used with various data sources such as HTTP services, in-memory arrays, etc.\n * \n */\nexport class DataRequest {\n public page?: DataRequestPage;\n public filters?: DataRequestFilter[];\n public sort?: DataRequestSort;\n public select?: string[];\n public computeTotal?: boolean;\n\n constructor(options?: {\n page?: DataRequestPage,\n filters?: DataRequestFilter[],\n sort?: DataRequestSort,\n select?: string[],\n computeTotal?: boolean,\n }) {\n this.page = options?.page;\n this.filters = options?.filters;\n this.sort = options?.sort;\n this.select = options?.select;\n this.computeTotal = options?.computeTotal;\n }\n}\n\n/**\n * Represents a data request page.\n */\nexport interface DataRequestPage {\n /**\n * Index of the page.\n * If zeroBased is true, the index starts from 0.\n */\n index: number;\n\n /**\n * Size of the page, i.e., number of items in each page.\n */\n size: number;\n\n /**\n * Indicates if the index is zero-based.\n */\n zeroBased: boolean;\n}\n\n/**\n * Represents a sorting option in a DataRequest.\n * @property field The field to sort by.\n * @property asc Whether to sort in ascending order.\n */\nexport interface DataRequestSort {\n field: string;\n asc?: boolean\n}\n\n/**\n * Represents a filter in a DataRequest.\n */\nexport interface DataRequestFilter {\n /**\n * The field to filter by.\n * It can be a string representing the property name of the data items.\n */\n field?: string;\n\n /**\n * The value to filter by.\n * It can be a string, number, or any other type depending on the field.\n */\n value?: string;\n\n /**\n * The operator to use for filtering.\n * It can be one of the standard filter operators like Contains, StartsWith, EndsWith, Equals, etc.\n */\n operator?: string;\n\n /**\n * Indicates if the filter is case-sensitive.\n * Default is false.\n */\n caseSensitive?: boolean;\n}\n\n// export enum DataRequestFilterOperator {\n// EQ = 0,\n// NEQ = 1,\n// LT = 2,\n// LTE = 3,\n// GT = 4,\n// GTE = 5,\n// LI = 6,\n// SW = 7,\n// }\n","export class DataResult<T = any> {\n constructor(\n public readonly data: T[],\n public readonly total?: number) {\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { DataRequest } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { signal } from \"@angular/core\";\n\n/**\n * Abstract base class for data sources.\n * This class provides a common interface for loading data from various sources.\n */\nexport abstract class DataSource<T=any> {\n protected loading = signal(false);\n\n constructor() {\n }\n\n /**\n * Indicates whether the data source is currently loading data.\n */\n public isLoading = this.loading.asReadonly();\n\n /**\n * Loads data from the data source.\n * @param request The data request object containing pagination, sorting, and filtering information.\n */\n abstract load(request: DataRequest): Observable<DataResult>;\n}\n\n","import { catchError, Observable, tap } from \"rxjs\";\nimport { DataRequest } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { DataSource } from \"./data-source\";\n\n/**\n * DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.\n * It is used by AsyncDataSource to load data asynchronously.\n */\nexport type DataLoader<T=any> = (request: DataRequest) => Observable<DataResult<T>>;\n\n\n/**\n * AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.\n * It is used to fetch data from a remote source, such as an API.\n */\nexport class AsyncDataSource extends DataSource {\n constructor(private readonly loader: DataLoader) {\n super();\n\n if (typeof loader !== 'function') {\n throw 'Invalid data loader';\n }\n }\n\n load(request: DataRequest) {\n this.loading.set(true);\n\n return this.loader(request).pipe(\n catchError(err => {\n this.loading.set(false);\n throw err;\n }),\n tap(res => {\n this.loading.set(false);\n })\n )\n }\n}\n","import { ArrayDataSource } from \"./array-data-source\";\nimport { AsyncDataSource, DataLoader } from \"./async-data-source\";\nimport { DataSource } from \"./data-source\";\n\n/**\n * DataSourceLike is a type that can be used to represent any data source\n * that can be used with the table, autocomplete, dropdown and any component that requires data.\n * It can be an array of data, a function that returns an observable of data,\n * or an instance of DataSource.\n */\nexport type DataSourceLike<T = any> = Array<any> | DataLoader<T> | DataSource<T> | undefined | null;\n\n\n/**\n * Converts a data source like an array, function, or DataSource into a DataSource instance.\n * @param source The data source to convert.\n * @returns A DataSource instance.\n */\nexport function convertToDataSource<T>(source: DataSourceLike): DataSource<T> {\n if (Array.isArray(source)) {\n return new ArrayDataSource(source);\n } else if (typeof source == 'function') {\n return new AsyncDataSource(source);\n } else if (source instanceof DataSource) {\n return source;\n } else if (source === undefined || source === null) {\n return new ArrayDataSource([]);\n } else {\n throw new Error('Invalid source parameter.');\n }\n}\n\n/**\n * StandardFilterOperators is an enumeration of standard filter operators\n * that can be used in data requests to filter data.\n * It includes operators like Contains, StartsWith, EndsWith, and Equals.\n */\nexport enum StandardFilterOperators {\n /**\n * A filter that matches items that contain the specified value.\n */\n Contains = 'contains',\n\n /**\n * A filter that matches items that start with the specified value.\n */\n StartsWith = 'startsWith',\n\n /**\n * A filter that matches items that end with the specified value.\n */\n EndsWith = 'endsWith',\n\n /**\n * A filter that matches items that are equal to the specified value.\n */\n Equals = 'equals',\n\n /**\n * A filter that matches items that are not equal to the specified value.\n */\n NotEquals = 'notEquals',\n\n /**\n * A filter that matches items that are greater than the specified value.\n */\n GreaterThan = 'greaterThan',\n\n /**\n * A filter that matches items that are greater than or equal to the specified value.\n */\n GreaterThanOrEqual = 'greaterThanOrEqual',\n\n /**\n * A filter that matches items that are less than the specified value.\n */\n LessThan = 'lessThan',\n\n /**\n * A filter that matches items that are less than or equal to the specified value.\n */\n LessThanOrEqual = 'lessThanOrEqual',\n\n \n}","import { delay, of, Subject, tap } from \"rxjs\";\nimport { DataRequest, DataRequestFilter } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { DataSource } from \"./data-source\";\nimport { StandardFilterOperators } from \"./types\";\n\n/**\n * An implementation of DataSource that uses an array as the data source.\n * This is useful for static data or when you want to manage the data manually.\n */\nexport class ArrayDataSource extends DataSource {\n private _insertSubject = new Subject<{ items: any[] }>();\n private _updateSubject = new Subject<{ item: any, index: number }>();\n private _removeSubject = new Subject<{ item: any, index: number }>();\n\n public readonly inserted = this._insertSubject.asObservable();\n public readonly removed = this._removeSubject.asObservable();\n public readonly updated = this._updateSubject.asObservable();\n\n constructor(private items: any[]) {\n super();\n }\n\n load(request: DataRequest) {\n let items: Array<any>;\n\n if (request.page) {\n let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;\n items = this.items.slice(startItemIndex, startItemIndex + request.page.size);\n } else {\n items = [...this.items];\n }\n\n if (Array.isArray(request.filters) && request.filters.length > 0) {\n // Apply filters\n\n request.filters.forEach(filter => {\n let filterFunction = getFilterFunction(filter);\n\n for (let i = 0; i < items.length; i++) {\n let item = items[i];\n let value = filter.field ? item[filter.field] : item;\n if (!filterFunction(value, filter.value)) {\n items.splice(i, 1);\n i--; // Adjust index after removal\n }\n }\n });\n }\n\n if (request.sort) {\n // Apply sorting\n }\n\n let result = new DataResult(items, this.items.length);\n\n // this._loading = true;\n // return of(result).pipe(\n // delay(5000),\n // tap(x => this._loading = false)\n // );\n return of(result);\n }\n\n public remove(item: any) {\n let index = this.items!.findIndex(x => x === item);\n if (index > -1) {\n this.items.splice(index, 1);\n this._removeSubject.next({ item, index });\n }\n }\n\n public insert(...items: any[]) {\n this.items.push(items);\n this._insertSubject.next({ items });\n }\n\n // public set(items: any[]) {\n // this.items = items;\n // // this._removeSubject.next(0);\n // }\n}\n\nfunction getFilterFunction(filter: DataRequestFilter): (item: any, filter: any) => boolean {\n let operator = filter.operator || StandardFilterOperators.Contains;\n let caseSensitive = filter.caseSensitive || false;\n\n if(filter.value === undefined || filter.value === null) {\n return (item: any) => true; // No filter applied\n }\n\n switch (filter.operator) {\n case StandardFilterOperators.Contains:\n return caseSensitive ?\n (item: string, filter: string) => item.includes(filter) :\n (item: string, filter: string) => item.toLowerCase().includes(filter.toLowerCase());\n\n case StandardFilterOperators.StartsWith:\n return caseSensitive ?\n (item: string, filter: string) => item.startsWith(filter) :\n (item: string, filter: string) => item.toLowerCase().startsWith(filter.toLowerCase());\n\n case StandardFilterOperators.EndsWith:\n return caseSensitive ?\n (item: string, filter: string) => item.endsWith(filter) :\n (item: string, filter: string) => item.toLowerCase().endsWith(filter.toLowerCase());\n\n case StandardFilterOperators.Equals:\n if (typeof filter.value === 'string') {\n return caseSensitive ?\n (item: string, filter: string) => item === filter :\n (item: string, filter: string) => item.toLowerCase() === filter.toLowerCase();\n } else {\n return (item: any, filter: any) => item === filter.value;\n }\n\n default:\n throw new Error(`filter operator: ${operator} is not implemented in ArrayDataSource.`);\n }\n}","import { Observable } from \"rxjs\";\nimport { DataResult } from \"./data-result\";\nimport { DataRequest } from \"./data-request\";\n\nexport function toDataResult<T=any>(dr: DataRequest) {\n return function (source: Observable<any>): Observable<DataResult<T>> {\n return new Observable(subscriber => {\n source.subscribe({\n next(event) {\n subscriber.next(new DataResult(event));\n },\n error(error) {\n subscriber.error(error);\n },\n complete() {\n subscriber.complete();\n }\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-data.mjs","sources":["../../../projects/ng0/data/data-request.ts","../../../projects/ng0/data/data-result.ts","../../../projects/ng0/data/data-source.ts","../../../projects/ng0/data/async-data-source.ts","../../../projects/ng0/data/array-data-source.ts","../../../projects/ng0/data/data-result-operator.ts","../../../projects/ng0/data/types.ts","../../../projects/ng0/data/bootkit-ng0-data.ts"],"sourcesContent":["/**\n * DataRequest class represents a request for data with pagination, filtering, sorting, and field selection.\n * It is used to encapsulate the parameters needed to fetch data from a data source.\n * It can be used with various data sources such as HTTP services, in-memory arrays, etc.\n * \n */\nexport class DataRequest {\n public page?: DataRequestPage;\n public filters?: DataRequestFilter[];\n public sort?: DataRequestSort;\n public select?: string[];\n public computeTotal?: boolean;\n\n constructor(options?: {\n page?: DataRequestPage,\n filters?: DataRequestFilter[],\n sort?: DataRequestSort,\n select?: string[],\n computeTotal?: boolean,\n }) {\n this.page = options?.page;\n this.filters = options?.filters;\n this.sort = options?.sort;\n this.select = options?.select;\n this.computeTotal = options?.computeTotal;\n }\n}\n\n/**\n * Represents a data request page.\n */\nexport interface DataRequestPage {\n /**\n * Index of the page.\n * If zeroBased is true, the index starts from 0.\n */\n index: number;\n\n /**\n * Size of the page, i.e., number of items in each page.\n */\n size: number;\n\n /**\n * Indicates if the index is zero-based.\n */\n zeroBased: boolean;\n}\n\n/**\n * Represents a sorting option in a DataRequest.\n * @property field The field to sort by.\n * @property asc Whether to sort in ascending order.\n */\nexport interface DataRequestSort {\n field: string;\n asc?: boolean\n}\n\n/**\n * Represents a filter in a DataRequest.\n */\nexport interface DataRequestFilter {\n /**\n * The field to filter by.\n * It can be a string representing the property name of the data items.\n */\n field?: string;\n\n /**\n * The value to filter by.\n * It can be a string, number, or any other type depending on the field.\n */\n value?: string;\n\n /**\n * The operator to use for filtering.\n * It can be one of the standard filter operators like Contains, StartsWith, EndsWith, Equals, etc.\n */\n operator?: string;\n\n /**\n * Indicates if the filter is case-sensitive. only for text columns.\n * Default is false.\n */\n caseSensitive?: boolean;\n}\n\n// export enum DataRequestFilterOperator {\n// EQ = 0,\n// NEQ = 1,\n// LT = 2,\n// LTE = 3,\n// GT = 4,\n// GTE = 5,\n// LI = 6,\n// SW = 7,\n// }\n","export class DataResult<T = any> {\n constructor(\n public readonly data: T[],\n public readonly total?: number) {\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { DataRequest } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { signal } from \"@angular/core\";\n\n/**\n * Abstract base class for data sources.\n * This class provides a common interface for loading data from various sources.\n */\nexport abstract class DataSource<T=any> {\n protected loading = signal(false);\n\n constructor() {\n }\n\n /**\n * Indicates whether the data source is currently loading data.\n */\n public isLoading = this.loading.asReadonly();\n\n /**\n * Loads data from the data source.\n * @param request The data request object containing pagination, sorting, and filtering information.\n */\n abstract load(request: DataRequest): Observable<DataResult>;\n}\n\n","import { catchError, Observable, tap } from \"rxjs\";\nimport { DataRequest } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { DataSource } from \"./data-source\";\n\n/**\n * DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.\n * It is used by AsyncDataSource to load data asynchronously.\n */\nexport type DataLoader<T=any> = (request: DataRequest) => Observable<DataResult<T>>;\n\n\n/**\n * AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.\n * It is used to fetch data from a remote source, such as an API.\n */\nexport class AsyncDataSource extends DataSource {\n constructor(private readonly loader: DataLoader) {\n super();\n\n if (typeof loader !== 'function') {\n throw 'Invalid data loader';\n }\n }\n\n load(request: DataRequest) {\n this.loading.set(true);\n\n return this.loader(request).pipe(\n catchError(err => {\n this.loading.set(false);\n throw err;\n }),\n tap(res => {\n this.loading.set(false);\n })\n )\n }\n}\n","import { delay, of, Subject, tap } from \"rxjs\";\nimport { DataRequest, DataRequestFilter } from \"./data-request\";\nimport { DataResult } from \"./data-result\";\nimport { DataSource } from \"./data-source\";\n\n/**\n * An implementation of DataSource that uses an array as the data source.\n * This is useful for static data or when you want to manage the data manually.\n */\nexport class ArrayDataSource extends DataSource {\n private _insertSubject = new Subject<{ items: any[] }>();\n private _updateSubject = new Subject<{ item: any, index: number }>();\n private _removeSubject = new Subject<{ item: any, index: number }>();\n\n public readonly inserted = this._insertSubject.asObservable();\n public readonly removed = this._removeSubject.asObservable();\n public readonly updated = this._updateSubject.asObservable();\n\n constructor(private items: any[]) {\n super();\n }\n\n load(request: DataRequest) {\n let filteredValues = [...this.items];\n let result: any[];\n\n // Filtering\n if (Array.isArray(request.filters) && request.filters.length > 0) {\n request.filters.forEach(filter => {\n if (!filter.field) {\n throw Error('DataRequestFilter \"field\" cannot be null.');\n }\n\n let isPassedByFilter = getFilterFunction(filter);\n\n for (let i = 0; i < filteredValues.length; i++) {\n let row = filteredValues[i];\n if (!isPassedByFilter(row[filter.field], filter.value)) {\n filteredValues.splice(i, 1);\n i--; // Adjust index after removal\n }\n }\n });\n }\n\n // Pagination\n if (request.page) {\n let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;\n result = filteredValues.slice(startItemIndex, startItemIndex + request.page.size);\n } else {\n result = filteredValues;\n }\n\n // Sorting\n if (request.sort) {\n\n }\n\n let dataResult = new DataResult(result, filteredValues.length);\n\n // this._loading = true;\n // return of(result).pipe(\n // delay(5000),\n // tap(x => this._loading = false)\n // );\n return of(dataResult);\n }\n\n public remove(item: any) {\n let index = this.items!.findIndex(x => x === item);\n if (index > -1) {\n this.items.splice(index, 1);\n this._removeSubject.next({ item, index });\n }\n }\n\n public insert(...items: any[]) {\n this.items.push(items);\n this._insertSubject.next({ items });\n }\n\n // public set(items: any[]) {\n // this.items = items;\n // // this._removeSubject.next(0);\n // }\n}\n\nfunction getFilterFunction(requestfilter: DataRequestFilter): (cellValue: any, filterValue: any) => boolean {\n let operator = requestfilter.operator || 'contains';\n let caseSensitive = requestfilter.caseSensitive || false;\n\n // if (requestfilter.value === undefined || requestfilter.value === null) {\n // return (item: any) => true; // No filter applied\n // }\n\n switch (requestfilter.operator) {\n case 'contains':\n return caseSensitive ?\n (item: string, filter: string) => item.includes(filter) :\n (item: string, filter: string) => item.toLowerCase().includes(filter.toLowerCase());\n\n case 'startsWith':\n return caseSensitive ?\n (item: string, filter: string) => item.startsWith(filter) :\n (item: string, filter: string) => item.toLowerCase().startsWith(filter.toLowerCase());\n\n case 'endsWith':\n return caseSensitive ?\n (item: string, filter: string) => item.endsWith(filter) :\n (item: string, filter: string) => item.toLowerCase().endsWith(filter.toLowerCase());\n\n case 'eq':\n if (typeof requestfilter.value === 'string') {\n return caseSensitive ?\n (item: string, filter: string) => item == filter :\n (item: string, filter: string) => item.toString().toLowerCase() === filter.toLowerCase();\n } else {\n return (item: any, filter: any) => item === filter;\n }\n\n case 'lt':\n return (item: any, filter: any) => item < filter;\n\n case 'lte':\n return (item: any, filter: any) => item <= filter;\n\n case 'gt':\n return (item: any, filter: any) => item > filter;\n\n case 'gte':\n return (item: any, filter: any) => item >= filter;\n\n case 'ne':\n return (item: any, filter: any) => item !== filter;\n\n default:\n throw new Error(`filter operator: ${operator} is not implemented in ArrayDataSource.`);\n }\n}","import { Observable } from \"rxjs\";\nimport { DataResult } from \"./data-result\";\nimport { DataRequest } from \"./data-request\";\n\nexport function toDataResult<T=any>(dr: DataRequest) {\n return function (source: Observable<any>): Observable<DataResult<T>> {\n return new Observable(subscriber => {\n source.subscribe({\n next(event) {\n subscriber.next(new DataResult(event));\n },\n error(error) {\n subscriber.error(error);\n },\n complete() {\n subscriber.complete();\n }\n });\n });\n }\n}\n","import { ArrayDataSource } from \"./array-data-source\";\nimport { AsyncDataSource, DataLoader } from \"./async-data-source\";\nimport { DataSource } from \"./data-source\";\n\n/**\n * DataSourceLike is a type that can be used to represent any data source\n * that can be used with the table, autocomplete, dropdown and any component that requires data.\n * It can be an array of data, a function that returns an observable of data,\n * or an instance of DataSource.\n */\nexport type DataSourceLike<T = any> = Array<any> | DataLoader<T> | DataSource<T> | undefined | null;\n\n\n/**\n * Converts a data source like an array, function, or DataSource into a DataSource instance.\n * @param source The data source to convert.\n * @returns A DataSource instance.\n */\nexport function convertToDataSource<T>(source: DataSourceLike): DataSource<T> {\n if (Array.isArray(source)) {\n return new ArrayDataSource(source);\n } else if (typeof source == 'function') {\n return new AsyncDataSource(source);\n } else if (source instanceof DataSource) {\n return source;\n } else if (source === undefined || source === null) {\n return new ArrayDataSource([]);\n } else {\n throw new Error('Invalid source parameter.');\n }\n}\n\n/**\n * LogicalOperator is a list of predefined logical operators that can be used in data requests to filter data.\n */\nexport type LogicalOperator =\n | 'contains'\n | 'endsWith'\n | 'startsWith'\n | 'like'\n | 'eq'\n | 'ne'\n | 'gt'\n | 'gte'\n | 'lt'\n | 'lte';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-date.mjs","sources":["../../../projects/ng0/date/time-span.ts","../../../projects/ng0/date/bootkit-ng0-date.ts"],"sourcesContent":["const f = Math.floor;\n\n/**\n * Represents a time span in months, days, hours, minutes, seconds, and milliseconds.\n * Provides methods to create a TimeSpan from a total number of milliseconds.\n * @example\n * const span = TimeSpan.fromMilliseconds(123456789);\n * console.log(span); // TimeSpan { months: 0, days: 1, hours: 10, minutes: 17, seconds: 36, milliseconds: 789 }\n */\nexport class TimeSpan {\n /** Milliseconds per second */\n public static readonly msPerSecond = 1000;\n\n /** Milliseconds per minute */\n public static readonly msPerMinute = this.msPerSecond * 60;\n\n /** Milliseconds per hour */\n public static readonly msPerHour = this.msPerMinute * 60;\n\n /** Milliseconds per day */\n public static readonly msPerDay = this.msPerHour * 24;\n\n /** Milliseconds per month */\n public static readonly msPerMonth = this.msPerDay * 30;\n\n constructor(\n public readonly months: number = 0,\n public readonly days: number = 0,\n public readonly hours: number = 0,\n public readonly minutes: number = 0,\n public readonly seconds: number = 0,\n public readonly milliseconds: number = 0) {\n }\n\n /**\n * Creates a TimeSpan from a total number of milliseconds.\n * @param ms The total number of milliseconds.\n * @returns A TimeSpan representing the equivalent time span.\n */\n static fromMilliseconds(ms: number): TimeSpan {\n const months = f(ms / TimeSpan.msPerMonth),\n days = f((ms % TimeSpan.msPerMonth) / TimeSpan.msPerDay),\n hours = f((ms % TimeSpan.msPerDay) / TimeSpan.msPerHour),\n minutes = f((ms % TimeSpan.msPerHour) / TimeSpan.msPerMinute),\n seconds = f((ms % TimeSpan.msPerMinute) / TimeSpan.msPerSecond),\n milliseconds = (ms % TimeSpan.msPerSecond);\n return new TimeSpan(months, days, hours, minutes, seconds, milliseconds);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AAEpB;;;;;;AAMG;MACU,QAAQ,CAAA;AAiBD,IAAA,MAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,YAAA;;AApBX,IAAA,OAAgB,WAAW,GAAG,IAAI;;IAGlC,OAAgB,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGnD,OAAgB,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGjD,OAAgB,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;;IAG9C,OAAgB,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AAEtD,IAAA,WAAA,CACkB,SAAiB,CAAC,EAClB,IAAA,GAAe,CAAC,EAChB,KAAA,GAAgB,CAAC,EACjB,OAAA,GAAkB,CAAC,EACnB,OAAA,GAAkB,CAAC,EACnB,eAAuB,CAAC,EAAA;QALxB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC9B;AAEA;;;;AAIG;IACH,OAAO,gBAAgB,CAAC,EAAU,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EACxC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,EACxD,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,EACxD,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,EAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,EAC/D,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;AAC5C,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC;IAC1E;;;AC/CF;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-date.mjs","sources":["../../../projects/ng0/date/time-span.ts","../../../projects/ng0/date/bootkit-ng0-date.ts"],"sourcesContent":["const f = Math.floor;\n\n/**\n * Represents a time span in months, days, hours, minutes, seconds, and milliseconds.\n * Provides methods to create a TimeSpan from a total number of milliseconds.\n * @example\n * const span = TimeSpan.fromMilliseconds(123456789);\n * console.log(span); // TimeSpan { months: 0, days: 1, hours: 10, minutes: 17, seconds: 36, milliseconds: 789 }\n */\nexport class TimeSpan {\n /** Milliseconds per second */\n public static readonly msPerSecond = 1000;\n\n /** Milliseconds per minute */\n public static readonly msPerMinute = this.msPerSecond * 60;\n\n /** Milliseconds per hour */\n public static readonly msPerHour = this.msPerMinute * 60;\n\n /** Milliseconds per day */\n public static readonly msPerDay = this.msPerHour * 24;\n\n /** Milliseconds per month */\n public static readonly msPerMonth = this.msPerDay * 30;\n\n constructor(\n public readonly months: number = 0,\n public readonly days: number = 0,\n public readonly hours: number = 0,\n public readonly minutes: number = 0,\n public readonly seconds: number = 0,\n public readonly milliseconds: number = 0) {\n }\n\n /**\n * Creates a TimeSpan from a total number of milliseconds.\n * @param ms The total number of milliseconds.\n * @returns A TimeSpan representing the equivalent time span.\n */\n static fromMilliseconds(ms: number): TimeSpan {\n const months = f(ms / TimeSpan.msPerMonth),\n days = f((ms % TimeSpan.msPerMonth) / TimeSpan.msPerDay),\n hours = f((ms % TimeSpan.msPerDay) / TimeSpan.msPerHour),\n minutes = f((ms % TimeSpan.msPerHour) / TimeSpan.msPerMinute),\n seconds = f((ms % TimeSpan.msPerMinute) / TimeSpan.msPerSecond),\n milliseconds = (ms % TimeSpan.msPerSecond);\n return new TimeSpan(months, days, hours, minutes, seconds, milliseconds);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AAEpB;;;;;;AAMG;MACU,QAAQ,CAAA;AAiBD,IAAA,MAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,YAAA;;AApBX,IAAA,OAAgB,WAAW,GAAG,IAAI;;IAGlC,OAAgB,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGnD,OAAgB,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGjD,OAAgB,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;;IAG9C,OAAgB,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AAEtD,IAAA,WAAA,CACkB,SAAiB,CAAC,EAClB,IAAe,GAAA,CAAC,EAChB,KAAgB,GAAA,CAAC,EACjB,OAAA,GAAkB,CAAC,EACnB,OAAA,GAAkB,CAAC,EACnB,eAAuB,CAAC,EAAA;QALxB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAG9B;;;;AAIG;IACH,OAAO,gBAAgB,CAAC,EAAU,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EACxC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,EACxD,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,EACxD,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,EAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,EAC/D,YAAY,IAAI,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;AAC5C,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC;;;;AC9C5E;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-file.mjs","sources":["../../../projects/ng0/file/utils.ts","../../../projects/ng0/file/bootkit-ng0-file.ts"],"sourcesContent":["\n/**\n * Saves a Blob as a file in the user's browser.\n * This function is only available in browsers that support the Blob API.\n * @param blob \n * @param fileName \n * \n */\nexport function saveBlob(blob: Blob, fileName: string): void {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n}\n\n/**\n * Triggers downloading a file from a given URL.\n * @param url \n * @param fileName \n */\nexport function downloadFile(url: string, fileName: string): void {\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * Converts a File object to a Base64 string.\n * @param file The File object to convert.\n * @return A Promise that resolves to the Base64 string representation of the file.\n */\nexport function convertFileToBase64(file: File): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AACA;;;;;;AAMG;AACG,SAAU,QAAQ,CAAC,IAAU,EAAE,QAAgB,EAAA;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,EAAE;IACT,CAAC,CAAC,MAAM,EAAE;AACV,IAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AACjC;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,GAAW,EAAE,QAAgB,EAAA;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,EAAE;IACT,CAAC,CAAC,MAAM,EAAE;AACZ;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,IAAU,EAAA;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AACzC,IAAA,CAAC,CAAC;AACJ;;AC7CA;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-file.mjs","sources":["../../../projects/ng0/file/utils.ts","../../../projects/ng0/file/bootkit-ng0-file.ts"],"sourcesContent":["\n/**\n * Saves a Blob as a file in the user's browser.\n * This function is only available in browsers that support the Blob API.\n * @param blob \n * @param fileName \n * \n */\nexport function saveBlob(blob: Blob, fileName: string): void {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n}\n\n/**\n * Triggers downloading a file from a given URL.\n * @param url \n * @param fileName \n */\nexport function downloadFile(url: string, fileName: string): void {\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * Converts a File object to a Base64 string.\n * @param file The File object to convert.\n * @return A Promise that resolves to the Base64 string representation of the file.\n */\nexport function convertFileToBase64(file: File): Promise<string | ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AACA;;;;;;AAMG;AACa,SAAA,QAAQ,CAAC,IAAU,EAAE,QAAgB,EAAA;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,EAAE;IACT,CAAC,CAAC,MAAM,EAAE;AACV,IAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AACjC;AAEA;;;;AAIG;AACa,SAAA,YAAY,CAAC,GAAW,EAAE,QAAgB,EAAA;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,EAAE;IACT,CAAC,CAAC,MAAM,EAAE;AACZ;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,IAAU,EAAA;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AACzC,KAAC,CAAC;AACJ;;AC7CA;;AAEG;;;;"}
@@ -24,12 +24,12 @@ class EqualWithValidatorDirective {
24
24
  validate(control) {
25
25
  return equalWithValidator(this.targetValue, this.inequalityMessage)(control);
26
26
  }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: EqualWithValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: EqualWithValidatorDirective, isStandalone: true, selector: "[ng0EqualWith]", inputs: { targetValue: ["ng0EqualWith", "targetValue"], inequalityMessage: "inequalityMessage" }, providers: [
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EqualWithValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: EqualWithValidatorDirective, isStandalone: true, selector: "[ng0EqualWith]", inputs: { targetValue: ["ng0EqualWith", "targetValue"], inequalityMessage: "inequalityMessage" }, providers: [
29
29
  { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }
30
30
  ], exportAs: ["ng0EqualWith"], ngImport: i0 });
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: EqualWithValidatorDirective, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EqualWithValidatorDirective, decorators: [{
33
33
  type: Directive,
34
34
  args: [{
35
35
  selector: '[ng0EqualWith]',
@@ -69,10 +69,10 @@ class UrlValidatorDirective {
69
69
  validate(control) {
70
70
  return urlValidator()(control);
71
71
  }
72
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UrlValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: UrlValidatorDirective, isStandalone: true, selector: "input[ng0Url]", inputs: { iscUrl: "iscUrl" }, providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }], exportAs: ["ng0Url"], ngImport: i0 });
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UrlValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: UrlValidatorDirective, isStandalone: true, selector: "input[ng0Url]", inputs: { iscUrl: "iscUrl" }, providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }], exportAs: ["ng0Url"], ngImport: i0 });
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UrlValidatorDirective, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UrlValidatorDirective, decorators: [{
76
76
  type: Directive,
77
77
  args: [{
78
78
  selector: 'input[ng0Url]',
@@ -85,17 +85,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
85
85
  }] } });
86
86
 
87
87
  class CustomValidatorDirective {
88
- validator = input.required(...(ngDevMode ? [{ debugName: "validator", alias: 'ng0CustomValidator' }] : [{ alias: 'ng0CustomValidator' }]));
88
+ validator = input.required({ alias: 'ng0CustomValidator' });
89
89
  constructor() { }
90
90
  validate(control) {
91
91
  return this.validator()(control);
92
92
  }
93
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: CustomValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
94
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: CustomValidatorDirective, isStandalone: true, selector: "[ng0CustomValidator]", inputs: { validator: { classPropertyName: "validator", publicName: "ng0CustomValidator", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
93
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CustomValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
94
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: CustomValidatorDirective, isStandalone: true, selector: "[ng0CustomValidator]", inputs: { validator: { classPropertyName: "validator", publicName: "ng0CustomValidator", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
95
95
  { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }
96
96
  ], exportAs: ["ng0CustomValidator"], ngImport: i0 });
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: CustomValidatorDirective, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CustomValidatorDirective, decorators: [{
99
99
  type: Directive,
100
100
  args: [{
101
101
  selector: '[ng0CustomValidator]',
@@ -116,8 +116,8 @@ const items = [
116
116
  CustomValidatorDirective,
117
117
  ];
118
118
  class ValidationModule {
119
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
120
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: ValidationModule, imports: [
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
120
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, imports: [
121
121
  // ErrorDirective,
122
122
  // FirstErrorDirective,
123
123
  // Validators
@@ -130,9 +130,9 @@ class ValidationModule {
130
130
  EqualWithValidatorDirective,
131
131
  UrlValidatorDirective,
132
132
  CustomValidatorDirective] });
133
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ValidationModule });
133
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule });
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ValidationModule, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ValidationModule, decorators: [{
136
136
  type: NgModule,
137
137
  args: [{
138
138
  imports: items,
@@ -167,10 +167,10 @@ class FocusDirective {
167
167
  }
168
168
  }
169
169
  }
170
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
171
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: FocusDirective, isStandalone: true, selector: "[ng0Focus]", inputs: { focusOnLoad: "focusOnLoad", focusWhen: "focusWhen" }, exportAs: ["ng0Focus"], usesOnChanges: true, ngImport: i0 });
170
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
171
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: FocusDirective, isStandalone: true, selector: "[ng0Focus]", inputs: { focusOnLoad: "focusOnLoad", focusWhen: "focusWhen" }, exportAs: ["ng0Focus"], usesOnChanges: true, ngImport: i0 });
172
172
  }
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FocusDirective, decorators: [{
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FocusDirective, decorators: [{
174
174
  type: Directive,
175
175
  args: [{
176
176
  selector: '[ng0Focus]',
@@ -199,10 +199,10 @@ class NumberDirective {
199
199
  el;
200
200
  renderer;
201
201
  /** */
202
- minFractionDigits = input(3, ...(ngDevMode ? [{ debugName: "minFractionDigits" }] : []));
203
- maxFractionDigits = input(10, ...(ngDevMode ? [{ debugName: "maxFractionDigits" }] : []));
204
- useGrouping = input(false, ...(ngDevMode ? [{ debugName: "useGrouping" }] : []));
205
- numberType = input('integer', ...(ngDevMode ? [{ debugName: "numberType" }] : []));
202
+ minFractionDigits = input(3);
203
+ maxFractionDigits = input(10);
204
+ useGrouping = input(false);
205
+ numberType = input('integer');
206
206
  onChange = (_) => { };
207
207
  onTouched = () => { };
208
208
  decimalSeparator;
@@ -377,8 +377,8 @@ class NumberDirective {
377
377
  }
378
378
  return false;
379
379
  }
380
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NumberDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
381
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: NumberDirective, isStandalone: true, selector: "[ng0Number]", inputs: { minFractionDigits: { classPropertyName: "minFractionDigits", publicName: "minFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: "maxFractionDigits", publicName: "maxFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: "useGrouping", publicName: "useGrouping", isSignal: true, isRequired: false, transformFunction: null }, numberType: { classPropertyName: "numberType", publicName: "numberType", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "input": "onInput($event.target.value)", "blur": "onBlur()", "paste": "onPaste($event)" } }, providers: [
380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumberDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
381
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: NumberDirective, isStandalone: true, selector: "[ng0Number]", inputs: { minFractionDigits: { classPropertyName: "minFractionDigits", publicName: "minFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: "maxFractionDigits", publicName: "maxFractionDigits", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: "useGrouping", publicName: "useGrouping", isSignal: true, isRequired: false, transformFunction: null }, numberType: { classPropertyName: "numberType", publicName: "numberType", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "input": "onInput($event.target.value)", "blur": "onBlur()", "paste": "onPaste($event)" } }, providers: [
382
382
  {
383
383
  provide: NG_VALUE_ACCESSOR,
384
384
  useExisting: forwardRef(() => NumberDirective),
@@ -386,7 +386,7 @@ class NumberDirective {
386
386
  }
387
387
  ], ngImport: i0 });
388
388
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NumberDirective, decorators: [{
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NumberDirective, decorators: [{
390
390
  type: Directive,
391
391
  args: [{
392
392
  selector: '[ng0Number]',